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