当前位置:文档之家› lcd1602显示及测试程序

lcd1602显示及测试程序


");
switch(line) { case 0: Write_com(0x80); case 1: Write_com(0x80+0x40); default : break; } } void Clear_all() {
Write_com(0x01); Write_com(0x80); } /**********文件Lcd1602.h**************/ #define uchar unsigned char #define uint unsigned int #ifndef Lcd1602_h #define Lcd1602_h extern Lcd_init(); extern Write_data(uchar dat); extern Write_char(uchar x,uchar y,uchar dat); extern Write_string(uchar x,uchar y,uchar *dat); extern Clear_line(uchar line); extern Clefine uint unsigned int #define Nop _nop_() #define Lcd_data P0 #define busy 0x80 sbit rs = P2^4; sbit rw = P2^5; sbit en = P2^6; void delay(uchar x) { uchar i,j; for(i=0;i<x;i++) for(j=0;j<125;j++); } /*写命令*/ void Write_com(uchar com) { rs = 0; delay(5); rw = 0; delay(5); Lcd_data = com; delay(5); en = 0; delay(10); en =1; delay(10); } /*写数据*/ void Write_data(uchar dat) { rs = 1; /*数据口*/ /*检 如有错误欢迎指出 547886405@ ^_^
本程序共分为三个文件:Main.c Lcd1602.c Lcd1602.h /************文件Main.c*************/ #include<reg52.h> #include<Lcd1602.h> #define uchar unsigned char #define uint unsigned int void delay_ms(uint x) { uint i,j; for(i=0;i<x;i++) for(j=0;j<120;j++); } void main() { Lcd_init(); Write_char(0,10,'a'); Write_string(1,0,"b b"); delay_ms(1000); Clear_line(0); Write_string(0,0,"clear 0 line OK!"); delay_ms(1000); Clear_line(1); Write_string(1,0,"clear 1 line OK!"); delay_ms(1000); Clear_all(); Write_string(0,1,"Clear all Ok!") ; while(1); } /********文件Lcd1602.c**************/ #include<reg52.h> #include<intrins.h> #define uchar unsigned char
delay(5); rw = 0; delay(5); Lcd_data = dat; delay(10); en =0; delay(5); en = 1; delay(10); } /*初始化*/ void Lcd_init() { Lcd_data = 0x00; delay(15); Write_com(0x38); delay(5); Write_com(0x38); delay(5); Write_com(0x38); delay(5); Write_com(0x38); Write_com(0x08); Write_com(0x01); Write_com(0x06); Write_com(0x0c); } void Write_char(uchar x,uchar y,uchar dat) { x &=0x1; /*限制x不能大于1*/ y &=0xf; /*限制y不能大于15*/ if(x) /*显示模式设置*/ /*显示关闭*/ /*显示清屏*/ /*显示光标移动设置*/ /*显示开及光标设置*/
y |= 0x40 ; /*如果y大于1,则在第二行显示*/ y |= 0x80; Write_com(y); Write_data(dat); } void Write_string(uchar x,uchar y,uchar *str) { uchar length = 0; x &=0x1; /*限制x不能大于1*/ y &=0xf; /*限制y不能大于15*/ while(*str!='\0') { Write_char(x,y,*str); y++; str++; } } void Clear_line(uchar line) { Write_string(line,0,"
相关主题