下面是LCD的電路,其中RD接P2^6;LCDE接P2^7,WR接P2^5。
#include#defineuintunsignedint#defineucharunsignedcharsbitlcd_E=P2^7;sbitlcd_RS=P2^6;sbitlcd_WR=P2^5;ucharcodetable_show1[]="Hello!";ucharcodetable_show2[]="IamChenLu!";voiddelay(uinttime);voidinit_lcd();voidwrite_lcd_command(ucharcomm);voidwrite_lcd_data(ucharlcdData);voidmain(){intflag1,flag2,flag3;init_lcd();//寫入緩存區(qū)write_lcd_command(0x80+0x10);for(flag1=0;flag1<6;flag1++){write_lcd_data(table_show1[flag1]);}//寫入緩存區(qū)write_lcd_command(0x80+0x50);for(flag2=0;flag2<12;flag2++){write_lcd_data(table_show2[flag2]);}//整個屏幕向左移動至最左端for(flag3=0;flag3<16;flag3++){write_lcd_command(0x18);}//停在這里,避免反復(fù)刷新while(1);}//初始化LCDvoidinit_lcd(){//初始化LCD的屬性//顯示模式write_lcd_command(0x38);//光標write_lcd_command(0x0f);write_lcd_command(0x06);//清屏write_lcd_command(0x01);//數(shù)據(jù)指針write_lcd_command(0x80);}//LCD寫命令voidwrite_lcd_command(ucharcomm){delay(5);//RS=LRW=LE=Hlcd_RS=0;delay(5);lcd_WR=0;//寫命令P0=comm;delay(5);lcd_E=1;delay(5);lcd_E=0;}//LCD寫數(shù)據(jù)voidwrite_lcd_data(ucharlcdData){delay(5);//RS=HRW=LE=Hlcd_RS=1;delay(5);lcd_WR=0;//寫數(shù)據(jù)P0=lcdData;delay(5);lcd_E=1;delay(5);lcd_E=0;}//延時函數(shù)voiddelay(uinttime){uinti,j;for(i=100;i>time;i--)for(j=0;j<100;j++);}
使用LCD主要是參考LCD數(shù)據(jù)手冊,基本的用法就是上面的程序,關(guān)鍵是要注意時序問題。
讀者可以在網(wǎng)上下載1602液晶資料,然后對著本程序琢磨。
注意:寫命令---可以理解為設(shè)置顯示屏的屬性;寫數(shù)據(jù)---可以理解成為你要讓顯示器顯示的數(shù)據(jù)。