液晶1602显示矩阵键盘

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

#includereg52.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedintsbitlcd_RS=P2^5;sbitlcd_RW=P2^6;sbitlcd_en=P2^7;voiddelay(uintz){uinti,j;for(i=0;i200;i++)for(j=0;jz;j++);}*名称:write_command(ucharcom)*功能:1602命令函数*输入:输入的命令值*输出:无voidwrite_command(ucharcom)/*LCD写命令*/{lcd_RS=0;lcd_RW=0;P0=com;delay(5);lcd_en=1;delay(5);lcd_en=0;}voidlcd_init()/*LCD初始化*/{write_command(0X38);write_command(0X0e);write_command(0X06);write_command(0X01);}*名称:write_data(number)*功能:1602写数据函数*输入:需要写入1602的数据*输出:无voidwrite_data(number)/*LCD写数据操作*/{lcd_RS=1;lcd_RW=0;P0=number;delay(5);lcd_en=1;delay(5);lcd_en=0;}ucharKeyscan()/*扫描子程序*/{uchari,j,temp,buffer[4]={0xfe,0xfd,0xfb,0xf7};for(j=0;j4;j++){P1=buffer[j];/*以下三个_nop_();作用为让P1口的状态稳定*/_nop_();_nop_();_nop_();temp=0x10;for(i=0;i4;i++){if(!(P1&temp)){return(i+j*4);}temp=1;}}}*名称:L1602_char(ucharhang,ucharlie,charsign)*功能:改变液晶中某位的值,如果要让第一行,第五个字符显示b,调用该函数如下L1602_char(1,5,'b')*输入:行,列,需要输入1602的数据*输出:无voidL1602_char(ucharhang,ucharlie,ucharsign){uchara;if(hang==1)a=0x80;if(hang==2)a=0xc0;a=a+lie-1;write_command(a);write_data(sign);}voidL1602_string(ucharhang,ucharlie,uchar*p){uchara;if(hang==1)a=0x80;if(hang==2)a=0xc0;a=a+lie-1;write_command(a);while(1){if(*p=='\0')break;write_data(*p);p++;}}voidmain(){ucharkey_data;lcd_init();L1602_string(1,1,4*4KeyBoard);L1602_string(2,1,YouPressThe);while(1){P1=0xf0;if(P1!=0xf0){delay(5);if(P1!=0xf0){key_data=Keyscan();}}L1602_char(2,15,key_data/10+48);L1602_char(2,16,key_data%10+48);}}

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功