|
|
可以看別人的程序嘛,對(duì)照時(shí)序圖,再研究,可能好懂些。
給個(gè)別人的程序,你看看:
uchar LCD12864_Busy(void)//檢測LCD是否忙
{
uchar i = 0;
LCD12864_RS = 0; //選擇命令
LCD12864_RW = 1; //選擇讀取
LCD12864_EN = 1;
LCD12864_Delay1ms(1);
while((LCD12864_DATAPORT & 0x80) == 0x80) //檢測讀取到的值
{
i++;
if(i > 100)
{
LCD12864_EN = 0;
return 0; //超過等待時(shí)間返回0表示失敗
}
}
LCD12864_EN = 0;
return 1;
}
void LCD12864_WriteCmd(uchar cmd)//寫命令
{
uchar i;
i = 0;
while( LCD12864_Busy() == 0)
{
LCD12864_Delay1ms(1);
i++;
if( i>100)
{
return; //超過等待退出
}
}
LCD12864_RS = 0; //選擇命令
LCD12864_RW = 0; //選擇寫入
LCD12864_EN = 0; //初始化使能端
LCD12864_DATAPORT = cmd; //放置數(shù)據(jù)
LCD12864_EN = 1; //寫時(shí)序
LCD12864_Delay1ms(1);
LCD12864_EN = 0;
}
void LCD12864_WriteData(uchar dat)//寫數(shù)據(jù)
{
uchar i;
i = 0;
while( LCD12864_Busy() == 0)
{
LCD12864_Delay1ms(1);
i++;
if( i>100)
{
return; //超過等待退出
}
}
LCD12864_RS = 1; //選擇數(shù)據(jù)
LCD12864_RW = 0; //選擇寫入
LCD12864_EN = 0; //初始化使能端
LCD12864_DATAPORT = dat; //放置數(shù)據(jù)
LCD12864_EN = 1; //寫時(shí)序
LCD12864_Delay1ms(1);
LCD12864_EN = 0;
}
|
|