您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 国内外标准规范 > LCD1602显示程序-已定义显示字符、整数、字符串子函数
#includereg52.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedintucharcodedisp1[]=PORT;ucharcodedisp2[]=MOTORSPEEDTEST;ucharcodedisp3[]=motorspeed:;ucharcodedisp4[]=r/min;//LCD1602引脚定义//采用8位并行方式,DB0~DB7连接至P20~P27sbitRS=P1^2;sbitRW=P1^1;sbitCS=P1^0;#defineLCDDATAP2///////////////////////////功能:延时1毫秒////////////////////////////////voidDelay_xms(uintx){uinti,j;for(i=0;ix;i++)for(j=0;j122;j++);}//////////////////////////功能:12us延时////////////////////////////////voidDelay_xus(uintt){for(;t0;t--){_nop_();}}///////////////////////////控制LCD写时序,下降沿有效///////////////////////////voidLCD_en_write(void){CS=1;//EN端产生一个高电平脉冲,控制LCD写时序Delay_xus(20);CS=0;Delay_xus(20);}////////////////////////////////写指令函数/////////////////////////////////voidWrite_Instruction(ucharcommand){RS=0;RW=0;CS=1;LCDDATA=command;LCD_en_write();//写入指令数据,下降沿有效}///////////////////////////////写数据函数/////////////////////////////voidWrite_Data(ucharWdata){RS=1;RW=0;CS=1;LCDDATA=Wdata;LCD_en_write();//写入数据,下降沿有效}/////////////////////////字符显示初始地址设置///////////////////////////voidLCD_SET_XY(ucharX,ucharY){ucharaddress;if(Y==0)address=0x80+X;//Y=0,表示在第一行显示,地址基数为0x80elseaddress=0xc0+X;//Y非0时,表时在第二行显示,地址基数为0xC0Write_Instruction(address);//写指令,设置显示初始地址}//////////////////在第X列Y行开始显示,指针*S所指向的字符串///////////////////voidLCD_write_str(ucharX,ucharY,uchar*s){LCD_SET_XY(X,Y);//设置初始字符显示地址while(*s)//逐次写入显示字符,直到最后一个字符/0{Write_Data(*s);//写入当前字符并显示s++;//地址指针加1,指向下一个待写字符}}//////////////////在第X行Y列开始显示Wdata所对应的单个字符/////////////////voidLCD_write_char(ucharX,ucharY,ucharWdata){LCD_SET_XY(X,Y);//写地址Write_Data(Wdata);//写入当前字符并显示}///////////////////写一个无字符整数//////////////////////////////////////////voidLCD_write_int(ucharX,ucharY,uintintdat){unsignedchari=0,temp[5];while(intdat/10||intdat%10){temp[i]=intdat%10;intdat/=10;i++;}LCD_SET_XY(X,Y);while(i){i--;Write_Data(temp[i]+0x30);}}////////////////////////////清屏函数////////////////////////////////////////////voidLCD_clear(void){Write_Instruction(0x01);Delay_xms(5);}//显示屏初始化函数voidLCD_init(void){Write_Instruction(0x38);//8bitinterface,2line,5*7dotsDelay_xms(5);Write_Instruction(0x38);Delay_xms(5);Write_Instruction(0x38);Write_Instruction(0x08);//关显示,不显光标,光标不闪烁Write_Instruction(0x01);//清屏Delay_xms(5);Write_Instruction(0x04);//写一字符,整屏显示不移动//Write_Instruction(0x05);//写一字符,整屏右移//Write_Instruction(0x06);//写一字符,整屏显示不移动//Write_Instruction(0x07);//写一字符,整屏左移Delay_xms(5);//Write_Instruction(0x0B);//关闭显示(不显示字符,只有背光亮)Write_Instruction(0x0C);//开显示,光标、闪烁都关闭//Write_Instruction(0x0D);//开显示,不显示光标,但光标闪烁//Write_Instruction(0x0E);//开显示,显示光标,但光标不闪烁//Write_Instruction(0x0F);//开显示,光标、闪烁均显示}voidmain(void){uinta;uchari;Delay_xms(50);//等待系统稳定LCD_init();//LCD初始化LCD_clear();//清屏Delay_xms(50);LCD_write_str(0,0,disp1);//开机信息显示Delay_xms(2000);LCD_write_str(0,1,disp2);Delay_xms(10000);LCD_clear();//清屏while(1)//速度显示(a){for(a=1;a1000;a++){Delay_xms(50);LCD_write_str(0,0,disp3);LCD_write_int(0,1,a);LCD_write_str(8,1,disp4);Delay_xms(2000);}}}
本文标题:LCD1602显示程序-已定义显示字符、整数、字符串子函数
链接地址:https://www.777doc.com/doc-2103332 .html