?? pmlcd.c
字號:
}
}
/********************************************************
* 功能: 判斷LCM的左半屏或右半屏是否處于忙狀態 *
* 當LCM不忙時函數返回 *
* 輸入: choe1為左半屏選擇標志 *
* choe2為右半屏選擇標志 *
*********************************************************/
void chk_busy (uchar choe1,uchar choe2)
{
if(choe1==1)
{
lck = 0;//a0=0;
P1 = 0x09;//rw=1;
lck = 1;//e1=0;
while(P0&0x80==1)
delay(2);
/*cs1=1;
cs2=1;
cs3=0;
e1=1;*/
lck = 0;
P1 = 0x00;
lck = 1;
}
if(choe2==1)
{
lck = 0;//a0=0;
P1 = 0x0a;//rw=1;
lck = 1;//e2=1;
while(P0&0x80==1)
delay(2);
lck = 0; //e2=0;
P1 = 0x00;
lck = 1;
}
}
/********************************************************
* 功能: 根據輸入的參數進行延時 *
* 輸入: us為延時多少微秒 *
* 晶振為11.0592M,執行一條指令的時間約為1us *
*********************************************************/
void delay (unsigned int us) //delay time
{
while(us--);
}
/********************************************************
* 功能: 根據輸入的參數進行延時 *
* 輸入: us為延時多少毫秒 *
* 晶振為11.0592M,執行一條指令的時間約為1us *
* 1ms = 1000 * 1us *
*********************************************************/
void delay1 (unsigned int ms)
{
unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<1000;j++)
;
}
/********************************************************
* 功能: 初始化LCM *
* 輸入: 無須輸入參數 *
*********************************************************/
void init_lcd (void)
{
wr_lcd (1,1,comm,0xe2);
wr_lcd (1,1,comm,0xa4);
wr_lcd (1,1,comm,0xa9);
wr_lcd (1,1,comm,0xa0);
wr_lcd (1,1,comm,0xee);
wr_lcd (1,1,comm,0xaf);
}
/********************************************************
* 功能: 向LCM送16*16的漢字 *
* 輸入: *chn為存放漢字點陣的起始地址 *
*********************************************************/
void disphz (uchar code *chn)
{
uchar i,j,k;
for(k=0;k<3;k++)
{
for(j=0;j<4;j++)
{
wr_lcd (1,0,comm,f_page+j);
wr_lcd (1,0,comm,f_row);
wr_lcd (1,0,comm,f_line+12+k*16);
for(i=0;i<16;i++)
wr_lcd (1,0,dat,chn[k*64+j*16+i]);
}
}
for(k=3;k<6;k++)
{
for(j=0;j<4;j++)
{
wr_lcd (0,1,comm,f_page+j);
wr_lcd (0,1,comm,f_row);
wr_lcd (0,1,comm,f_line+k*16-48);
for(i=0;i<16;i++)
wr_lcd (0,1,dat,chn[k*64+j*16+i]);
}
}
}
/********************************************************
* 功能: 向LCM送8*16的字符 *
* 輸入: *img為存放字符點陣的起始地址 *
*********************************************************/
void dispzf (uchar code *eng)
{
uchar i,j,k;
for(k=0;k<7;k++)
{
for(j=0;j<4;j++)
{
wr_lcd (1,0,comm,f_page+j);
wr_lcd (1,0,comm,f_row);
wr_lcd (1,0,comm,f_line+5+k*8);
for(i=0;i<8;i++)
wr_lcd (1,0,dat,eng[k*32+j*8+i]);
}
}
for(k=7;k<14;k++)
{
for(j=0;j<4;j++)
{
wr_lcd (0,1,comm,f_page+j);
wr_lcd (0,1,comm,f_row);
wr_lcd (0,1,comm,f_line+k*8-56);
for(i=0;i<8;i++)
wr_lcd (0,1,dat,eng[k*32+j*8+i]);
}
}
}
//************顯示一幅圖象************
void disptu (uchar code *img)
{
uchar i,j;
for(j=0;j<4;j++)
{
wr_lcd (1,1,comm,f_page+j);
wr_lcd (1,1,comm,f_row);
wr_lcd (1,1,comm,f_line);
for(i=0;i<122;i++)
{
if(i<61)
{wr_lcd (1,0,comm,f_line+i);
wr_lcd (1,0,dat,img[j*122+i]);}
else
{wr_lcd (0,1,comm,f_line+i-61);
wr_lcd (0,1,dat,img[j*122+i]);}
}
}
}
/********************************************************
* 功能: 向LCM的左半屏和右半屏送點陣數據 *
* 輸入: data1,data2為待顯示數據 *
*********************************************************/
void wrlattice (uchar data1,uchar data2)
{
uchar i,j;
for(j=0;j<4;j++)
{
wr_lcd (1,1,comm,f_page+j);
wr_lcd (1,1,comm,f_row);
wr_lcd (1,1,comm,f_line);
for(i=0;i<61;i=i+2)
{
wr_lcd (1,1,dat,data1);
wr_lcd (1,1,dat,data2);
}
}
}
//**************清除數碼管顯示***********
/*void clr79disp()
{ unsigned char i;
cmd8279 = 0xd1;//清除8279
delay(2);
cmd8279 = 0x00;//左邊輸入 八位字符顯示,外部譯碼鍵掃描方式,雙鍵互鎖
delay(2);
cmd8279 = 0x2A;//10分頻,(ALE = 1/6 OSC)
delay(2);
cmd8279 = 0x60;//讀8279RAM不自動加1
delay(2);
cmd8279 = 0x90;//寫顯示RAM自動加1
delay(2);
for(i=0;i<8;i++)
dat8279 = 0x00;//緩沖區內容送數碼管顯示
}
*/
//*************主程序*************
void main ()
{
init_lcd (); //初始化LCD
// BUZ = 0;//關蜂鳴器
/* clr79disp();//關數碼管顯示
P0 = 0xff;
P2=0x00;
;
P2=0x08; //關跑馬燈*/
while (1)//主循環
{
wrlattice (0x00,0x00);
disphz (tab1);
delay1 (600);
wrlattice (0xff,0x00);
delay1 (600);
wrlattice (0x00,0x00);
dispzf (tab2);
delay1 (600);
wrlattice (0x33,0x33);
delay1 (600);
disptu (tab3);
delay1 (600);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -