欢迎来到天天文库
浏览记录
ID:42619159
大小:16.12 KB
页数:7页
时间:2019-09-18
《LCD1602驱动程序(C51)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、/Module:lcd1602_drv.hFunction:lcd1602显示屏驱动程序和中间接口Author:槐之林Version:2016-05-29/#ifndef_lcd1602_drv_h_#define_lcd1602_drv_h_#ifndefNULL#defineNULL((void)0L)#endiftypedefunsignedcharuchar;typedefunsignedintuint;//LCD1602显示IO#defineLCD_DATAP0sbitLCD_RS=P2^0;sbitLCD_RW=P2^1;sbitLCD_EP=P2
2、^2;#include"app_common.h"#defineLCD_CLEAR1#defineLCD_NORMER2#defineLCD_CURSOR_BLINK3//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//对外接口bitLcd_bz();//忙时判断,1表示忙voidLcd_cmd(ucharcmd);//写指令voidLcd_ctrl(ucharL,ucharC,ucharCC);//控制函数voidLcd_pos(ucharx,uchary);//定位voidLcd_ch(uc
3、harch);//写数据,单个字符并显示voidLcd_str(ucharstr,uintlen);//写入字符串并显示(用到Lcd_ch()函数)voidLcd_num(intnum);//显示整数voidLcd_init();voidLcd_flo(floats,uintn);//浮点显示,n<=8;#endif/Module:lcd1602_drv.cFunction:lcd1602显示屏驱动程序和中间接口Author:槐之林Version:2016-05-29/#include#include#include<
4、math.h>#include"lcd1602_drv.h"/函数名:bitLcd_bz()功能:测试是否为忙时,返回1为忙,0为闲说明:/bitLcd_bz()//判是否为忙时{bitresult;LCD_RS=0;LCD_RW=1;LCD_EP=1;delay_us(5);result=(bit)(LCD_DATA&0x80);LCD_EP=0;returnresult;}/函数名:voidLcd_cmd(ucharcmd)功能:写指令:cmd说明:指令库:清屏函数:0X01;1.64ms光标归位:0X02;1.64ms模式设置:DB2=1DB1=I/DD
5、B0=S;I/D=0---写入数据后,光标左移;I/D=1---写入数据后,光标右移;S=0-----写入数据后,显示屏不移动;S=1-----写入数据后,显示屏右移1;显示开关控制:DB3=1DB2=DDB1=CDB0=B;D=0显示功能关D=1显示功能开C=0无光标C=1有光标B=0光标无闪烁B=1光标闪烁设置光标/屏移动方向指令:DB4=1DB3=S/CDB2=R/LDB1=xDB0=x;S/CR/L对应指令00光标左移一格,AC减一01光标右移一格,AC加一10显示器上所有字符左移一格,光标不动11显示器上所有字符右移一格,光标不动功能设置:0X381
6、62显示,57点阵,8位数据/voidLcd_cmd(ucharcmd){while(Lcd_bz());LCD_RS=0;LCD_RW=0;LCD_EP=0;delay_us(5);LCD_DATA=cmd;delay_us(5);LCD_EP=1;delay_us(5);LCD_EP=0;delay_us(5);}//控制函数,比如清屏//L/C表示行/列(1~2)/(1~16)//CC表示控制指令,指令在.h文件中定义//有些指令没有用于参数C和L,可以赋值为0voidLcd_ctrl(ucharL,ucharC,ucharCC){switch(CC){
7、caseLCD_CLEAR:Lcd_cmd(0x01);delay_ms(3);break;caseLCD_CURSOR_BLINK:Lcd_pos(L,C);Lcd_cmd(0x0F);break;caseLCD_NORMER:Lcd_cmd(0x0C);Lcd_cmd(0x06);Lcd_cmd(0x01);break;default:break;}}/函数名:voidLcd_pos(ucharpos)功能:定位说明:x表示第x行(1~16)y表示第y列(1~2)/voidLcd_pos(ucharx,uchary){y=y-1;if(x==1){Lcd_
8、cmd(0x80+y);//表示第一行
此文档下载收益归作者所有