?? project based on embeded system(c51).txt
字號:
}
/*********************************************************************************************************
** 函數名稱: lcd1INT_1()
** 功能描述: lcd1初始化
**
** 輸 入: 無
** 輸 出: 無
** 全局變量: 無
** 調用模塊: lcd1PR1();
lcd1PR4();
**
** 作 者: 陳杰峰 wishercjf@163.com
** 日 期: 2004年5月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void lcd1INT_1()
{
lcd1com=reset; /* 復位*/
lcd1PR1(); /* 寫指令函數 */
lcd1PR4(); /* 寫指令函數 */
lcd1com=sleep_off;/* 關閉休閑狀態*/
lcd1PR1();
lcd1PR4();
lcd1com=duty32; /* 占空比為32DUTY*/
lcd1PR1();
lcd1PR4();
lcd1com=ADC_P; /* ADC=0正向順序 */
lcd1PR1();
lcd1PR4();
lcd1com=start_line0; /* 顯示起始行為0 */
lcd1PR1();
lcd1PR4();
lcd1com=display_on; /* 開顯示 */
lcd1PR1();
lcd1PR4();
}
/*********************************************************************************************************
** 函數名稱: lcd1CLEAR()
** 功能描述: lcd1 清屏函數
**
** 輸 入: 無
** 輸 出: 無
** 全局變量: 無
** 調用模塊: lcd1PR1();
lcd1PR4();
lcd1PR2();
lcd1PR5();
**
** 作 者: 陳杰峰 wishercjf@163.com
** 日 期: 2004年5月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void lcd1CLEAR()
{
unsigned int i;
for(count1=0xb8;count1!=0xbc;count1++) /*以頁地址作為循環量*/
{
lcd1com=count1; /* 頁面地址設置 */
lcd1PR1();
lcd1PR4();
lcd1com=0x00; /* 列地址設置為"0" */
lcd1PR1();
lcd1PR4();
for(i=0;i<62;i++) /*清除所有SED1520的內部RAM單元*/
{
dat1=0x00; /* 寫入數據為"0x00"*/
lcd1PR2();
lcd1PR5();
}
}
}
/*********************************************************************************************************
** 函數名稱: lcd2PR1()、lcd2PR4()
** 功能描述: 向lcd1模塊發送命令,因為使用的液晶為兩個部分,所以分別控制
**
** 輸 入: 無
** 輸 出: 無
** 全局變量: DATA2,以及lcd1有關的一些端口
** 調用模塊:
**
** 作 者: 陳杰峰 wishercjf@163.com
** 日 期: 2004年5月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void lcd2PR1()
{
lcd2RS=0;
lcd2RW=1;
do
{
DATA2=0xFF;
lcd2E1=1;
ACC=DATA2; /* 讀狀態字 */
lcd2E1=0;
} while (ACC_7==1); /* 判“忙”標志 */
lcd2RW=0;
DATA2=lcd2com;
lcd2E1=1;
lcd2E1=0;
}
void lcd2PR4()
{
lcd2RS=0;
lcd2RW=1;
do
{
DATA2=0xFF;
lcd2E2=1;
ACC=DATA2; /* 讀狀態字 */
lcd2E2=0;
} while (ACC_7==1); /* 判“忙”標志 */
lcd2RW=0;
DATA2=lcd2com;
lcd2E2=1;
lcd2E2=0;
}
/*********************************************************************************************************
** 函數名稱: lcd2PR2()、lcd2PR5()
** 功能描述: 向lcd1模塊發送數據,因為使用的液晶為兩個部分,所以分別控制
**
** 輸 入: 無
** 輸 出: 無
** 全局變量: DATA1,以及lcd1有關的一些端口
** 調用模塊:
**
** 作 者: 陳杰峰 wishercjf@163.com
** 日 期: 2004年5月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void lcd2PR2()
{
lcd2RS=0;
lcd2RW=1;
do
{
DATA2=0xFF;
lcd2E1=1;
ACC=DATA2; /* 讀狀態字 */
lcd2E1=0;
} while (ACC_7==1); /* 判“忙”標志 */
lcd2RS=1;
lcd2RW=0;
DATA2=dat2;
lcd2E1=1;
lcd2E1=0;
}
void lcd2PR5()
{
lcd2RS=0;
lcd2RW=1;
do
{
DATA2=0xFF;
lcd2E2=1;
ACC=DATA2; /* 讀狀態字 */
lcd2E2=0;
} while (ACC_7==1); /* 判“忙”標志 */
lcd2RS=1;
lcd2RW=0;
DATA2=dat2;
lcd2E2=1;
lcd2E2=0;
}
/*********************************************************************************************************
** 函數名稱: lcd2INT_1()
** 功能描述: lcd2初始化
**
** 輸 入: 無
** 輸 出: 無
** 全局變量: 無
** 調用模塊: lcd2PR1();
lcd2PR4();
**
** 作 者: 陳杰峰 wishercjf@163.com
** 日 期: 2004年5月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void lcd2INT_1()
{
lcd2com=reset; /* 復位*/
lcd2PR1(); /* 寫指令函數 */
lcd2PR4(); /* 寫指令函數 */
lcd2com=sleep_off;/* 關閉休閑狀態*/
lcd2PR1();
lcd2PR4();
lcd2com=duty32; /* 占空比為32DUTY*/
lcd2PR1();
lcd2PR4();
lcd2com=ADC_P; /* ADC=0正向順序 */
lcd2PR1();
lcd2PR4();
lcd2com=start_line0; /* 顯示起始行為0 */
lcd2PR1();
lcd2PR4();
lcd2com=display_on; /* 開顯示 */
lcd2PR1();
lcd2PR4();
}
/*********************************************************************************************************
** 函數名稱: lcd2CLEAR()
** 功能描述: lcd2 清屏函數
**
** 輸 入: 無
** 輸 出: 無
** 全局變量: 無
** 調用模塊: lcd2PR1();
lcd2PR4();
lcd2PR2();
lcd2PR5();
**
** 作 者: 陳杰峰 wishercjf@163.com
** 日 期: 2004年5月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void lcd2CLEAR()
{
unsigned int i;
for(count2=0xb8;count2!=0xbc;count2++) /*以頁地址作為循環量*/
{
lcd2com=count2; /* 頁面地址設置 */
lcd2PR1();
lcd2PR4();
lcd2com=0x00; /* 列地址設置為"0" */
lcd2PR1();
lcd2PR4();
for(i=0;i<62;i++) /*清除所有SED1520的內部RAM單元*/
{
dat2=0x00; /* 寫入數據為"0x00"*/
lcd2PR2();
lcd2PR5();
}
}
}
/*********************************************************************************************************
** 函數名稱: CW_PR1()
** 功能描述: lcd1 西文寫入函數
**
** 輸 入: 無
** 輸 出: 無
** 全局變量: lcd1com、lcd1O_X、lcd1O_Y
** 調用模塊: lcd1PR1();
lcd1PR4();
lcd1PR2();
lcd1PR5();
**
** 作 者: 陳杰峰 wishercjf@163.com
** 日 期: 2004年5月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void CW_PR1()
{
unsigned int i,j;
unsigned char k;
i=0;
j=para1;
loop: lcd1com=lcd1O_Y|0xb8; /* 設頁地址 */
lcd1PR1();
lcd1PR4();
if(lcd1O_X<j) /* 是否小于SED1520控制器寬度 */
{
lcd1com=lcd1O_X;
lcd1PR1(); /* 小于寫E1 */
k=1;
}
else
{
lcd1com=lcd1O_X-j;
lcd1PR4(); /* 不小于寫E2 */
k=0;
}
for(count1=i;count1<i+8;count1++)
{
dat1=CHTAB[code_1][count1]; /* 取數據 */
if(k==1)
{
lcd1PR2(); /* 寫E1 */
}
else
{
lcd1PR5(); /* 寫E2 */
}
lcd1com++; /* 計算列 */
if(j==lcd1com)
{
if(k==1) /* 判左屏出界還是右屏出界 */
{
lcd1com=0;
lcd1PR4(); /* 左屏出界寫右屏 */
k=0;
}
else
{
goto loop2;
}
}
}
loop2: if(i==0)
{
i=8;
lcd1O_Y++; /* 計算頁 */
if(lcd1O_Y==4)
{
return;
}
else
{
goto loop;
}
}
}
/*********************************************************************************************************
** 函數名稱: CW_PR1()
** 功能描述: lcd1 中文寫入函數
**
** 輸 入: 無
** 輸 出: 無
** 全局變量: lcd1com、lcd1O_X、lcd1O_Y
** 調用模塊: lcd1PR1();
lcd1PR4();
lcd1PR2();
lcd1PR5();
**
** 作 者: 陳杰峰 wishercjf@163
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -