功用阐明:
16X2 的字符型LCD显现“LCD TEST OK”
电路阐明:
电路图如下图所示:
HT48R50A-1 的端口A接到字符型LCD的D0-D7(数据总线),运用字符型LCD的8位数据接口。
将HT48R50A-1的PC1接到LCD的读/写引脚。当LCD的读/写引脚为高电平常,表明将从LCD内部读取数据,当LCD的读/写引脚为低电平常,表明将数据写入LCD中。
将HT48R50A-1的PC2接到LCD的E引脚。当LCD的E引脚为高电平常,LCD的D0-D7引脚上的数据将会被写入LCD中,平常LCD的E引脚保持在低电平。
将HT48R50A-1的PC0接到LCD的RS引脚。当LCD的RS引脚为低电平并对LCD做读写操作时,能够把LCD的指令写入LCD的指令寄存器,若对LCD做读写操作,能够读取LCD的忙标志位及地址计数器。LCD的忙标志位为1位,地址计数器为7位,算计8位。当LCD的RS引脚为高电平常,能够对LCD的数据寄存器做读/写操作。
将字符型LCD的CO引脚接到GND。VO引脚是字符型LCD的亮度调整电压输入引脚,一般VO引脚接地时字符型LCD上的字符最明晰,也能够把VO引脚接一个可变电阻作为字符型LCD的对比度调整。
完好版别的程序源码下载地址:http://www.51hei.com/f/htlcd.rar,以下列出main.c文件:
#include "HT46F49E.H"#define lcd_en _pc1#define lcd_rs _pc0#define lcd_date _paunsigned char table1[]="LCD 1602";unsigned char table2[]="TEST IS OK!";unsigned char num;void delayms(unsigned int n)//ms 延时{while(n>0){_delay(984);n--; } }void write_com(unsigned char com)// 写指令{lcd_rs=0;//lcdrs=0 ,挑选写指令形式delayms(5);lcd_date=com;// 指令字送到数据总线delayms(5);lcd_en=1;//lcden=1 ,使能,init初始化中现已置低delayms(5);lcd_en=0;}void write_date(unsigned char date)// 写数据{lcd_rs=1;delayms(5); lcd_date=date;delayms(5);lcd_en=1;delayms(5);lcd_en=0;}void lcd_init(){ write_com(0x38);delayms(2);write_com(0x0c);delayms(2);write_com(0x06);deleyms(2);write_com(0x01);delayms(2);}void main(){ lcd_init();write_com(0x80);for(num=0;num<8;num++){write_date(table1[num]);delayms(2); }write_com(0x80+0x40);for(num=0;num<11;num++){write_date(table[num]);delayms(2); }while(1);}