发布时间 : 星期日 文章lcd1602头文件更新完毕开始阅读bf6068794693daef5ff73d51
****************************************/ void lcd_write_dat(unsigned char dat) {
lcd_busy(); e=0; port=dat; rs=1; rw=0; e=1; e=0; }
/**************************************** 向lcd写字符串
*****************************************/ void lcd_gets(char *dat) {
while(*dat!=0) {
lcd_write_dat(*dat); dat++; } }
/***************************************** 确定要写的位子即x y 坐标
******************************************/ void lcd_xy(unsigned char x,unsigned char y) {
switch(y) {
case 0:lcd_write_com(0x80+x);break;//第一行第X个位置
case 1:lcd_write_com(0xc0+x);break;//0xc0==0x80+0x50 第二行第X个位置
case 2:lcd_write_com(0x94+x);break;// case 3:lcd_write_com(0xd4+x);break;//4*20 } }
/**************************************************** 单行显示才有5*10 其他5*8 MODE=1 5*8 MODE=0 5*10 ****************************************************/
add_custom_word(unsigned char *dat,unsigned char len,unsigned char mode) {
unsigned char n,m; for(n=0;n lcd_write_com(0x40+8*n); for(m=0;m<8;m++) { lcd_write_dat(*dat); dat++; } } else { lcd_write_com(0x40+10*n); for(m=0;m<10;m++) { lcd_write_dat(*dat); dat++; } } } } /******************************************** 初始化lcd ********************************************/ void lcd_init() { lcd_write_com(0x01) ;//清屏 lcd_write_com(0x03) ; lcd_write_com(0x3c) ; lcd_write_com(0x40) ; lcd_write_com(0x0c) ; add_custom_word(ziku,4,1); //初始化自定义字符 } /******************************************** 1ms 为基本单位的延时函数 ********************************************/ void delay(unsigned char z) { unsigned char x,y,a; for(x=z;x>0;x--) for(y=110;y>0;y--) for(a=1;a>0;a--) ; } /****************************************** main.c 主文件 ******************************************/ #include lcd_init(); lcd_busy(); lcd_xy(6,0); lcd_write_dat('b'); while(1); }