51單片機驅動1602液晶的C程序
//********************************
//*******顯示一個字符函數*********
void LCD_disp_char(uchar x,uchar y,uchar dat)
{
uchar address;
if(y==1)
address=0x80+x;
else
address=0xc0+x;
LCD_write_command(address);
LCD_write_data(dat);
}
//********************************
/*******檢查忙函數*************
voidLCD_check_busy()
//實踐證明,在我的LCD1602上,檢查忙指令通
{LCD_E=0; //for循環作延時,普通指令只要1次循就可完成。清屏指令
LCD_RS=0; //要用200次循環便能完成。
LCD_RW=1;
LCD_DB=0xff;
LCD_E=1;
while(LCD_DB^7==1);
}
******************************/
//********延時函數***************
void delay_n40us(uint n)
{ uint i;
uchar j;
for(i=n;i>0;i--)
for(j=0;j<2;j++); //在這個延時循環函數中我只做了
2次循環,
} //實踐證明我的LCD1602上普
通的指令只需1次循環就能可靠完成。
//*******************************
//*********主函數*****************
void main(void)
{
LCD_init();
LCD_disp_char(0,1,"A");
while(1);
}
過率極低,以至于不能正常使用LCD。因此我沒有再用檢查忙函數。而使
do//用了延時的方法,延時還是非常好用的。我試了一下,用//
評論