欢迎来到天天文库
浏览记录
ID:58653853
大小:15.50 KB
页数:3页
时间:2020-10-16
《液晶1602显示矩阵键盘.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include#include#defineucharunsignedchar#defineuintunsignedintsbitlcd_RS=P2^5;sbitlcd_RW=P2^6;sbitlcd_en=P2^7;voiddelay(uintz){uinti,j;for(i=0;i<200;i++)for(j=0;j2、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的数据 * 输出 : 无void3、write_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;j<4;j++){P1=buffer[j];/*以下三个_nop_();作用为让P1口的状态稳定*/_nop_();_nop_();_nop_();temp=0x10;for(i=0;i<44、;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+lie5、-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==' ')break;write_data(*p);p++;}}voidmain(){ucharkey_data;lcd_init();L1602_string(1,1,"4*4KeyBoard");6、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);}}
2、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的数据 * 输出 : 无void
3、write_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;j<4;j++){P1=buffer[j];/*以下三个_nop_();作用为让P1口的状态稳定*/_nop_();_nop_();_nop_();temp=0x10;for(i=0;i<4
4、;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
5、-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==' ')break;write_data(*p);p++;}}voidmain(){ucharkey_data;lcd_init();L1602_string(1,1,"4*4KeyBoard");
6、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);}}
此文档下载收益归作者所有