欢迎来到天天文库
浏览记录
ID:37710928
大小:15.38 KB
页数:4页
时间:2019-05-29
《LCD1602显示程序 已定义显示字符、整数、字符串子函数》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include#include#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
2、///////////////////////////功能:延时1毫秒////////////////////////////////voidDelay_xms(uintx){uinti,j;for(i=0;i0;t--){_nop_();}}///////////////////////////控制LCD写时序,下降沿有效////
3、///////////////////////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();//写入指令数据,下降沿有效}//////////////
4、/////////////////写数据函数/////////////////////////////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,表示在第一行显示,地址基数为0x80el
5、seaddress=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,指向下一个
6、待写字符}}//////////////////在第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,
7、temp[5];while(intdat/10
8、
9、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);}//显示屏初
此文档下载收益归作者所有