完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#include #define uchar unsigned char #define uint unsigned int uchar dis_buf; //显示缓存 uchar temp; uchar key; //键顺序吗 void delay0(uchar x); //x*0.14MS ***it LCD_RW = P0^6; ***it LCD_RS = P0^5; ***it LCD_EN = P0^7; #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();}; void delay(uchar x) { uchar j; while((x--)!=0) { for(j=0;j<125;j++) {;} } } bit lcd_busy() { bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP(); result = (bit)(P2&0x80); LCD_EN = 0; return(result); } void lcd_wcmd(uchar cmd) { while(lcd_busy()); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P2 = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; } void lcd_wdat(uchar dat) { while(lcd_busy()); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P2 = dat; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; } void lcd_init() { LCD_EN=0; lcd_wcmd(0x38); lcd_wcmd(0x0c); //显示开,关光标 lcd_wcmd(0x06); //移动光标 lcd_wcmd(0x01); //清除LCD的显示内容 } void lcd_pos(uchar pos) { lcd_wcmd(pos | 0x80+0x40); //数据指针=80+地址变量 } void keyscan(void) { temp = 0; P1=0xF0; //高四位输入 行为高电平 列为低电平 delay(1); temp=P1; //读P1口 temp=temp&0xF0; //屏蔽低四位 temp=~((temp>>4)|0xF0); if(temp==1) // p1.4 被拉低 key=0; else if(temp==2) // p1.5 被拉低 key=1; else if(temp==4) // p1.6 被拉低 key=2; else if(temp==8) // p1.7 被拉低 key=3; else key=16; P1=0x0F; //低四位输入 列为高电平 行为低电平 delay(1); temp=P1; //读P1口 temp=temp&0x0F; temp=~(temp|0xF0); if(temp==1) // p1.1 被拉低 key=key+0; else if(temp==2) // p1.2 被拉低 key=key+4; else if(temp==4) // p1.3 被拉低 key=key+8; else if(temp==8) key=key+12; else key=16; dis_buf = key; //键值入显示缓存 dis_buf = dis_buf & 0x0f; if(dis_buf>9) //转换为ASCII码 dis_buf = dis_buf+0x37; else dis_buf = dis_buf+0x30; } void keydown(void) { P1=0xF0; if(P1!=0xF0) //判断按键是否按下 如果按钮按下 会拉低P1其中的一个端口 { keyscan(); } } main() { uchar i,j; P0=0xFF; //置P0口 P1=0xFF; //置P1口 delay(10); //延时 lcd_init(); //初始化LCD while(1) { keydown(); lcd_pos(0x80+0x40+i); lcd_wdat(dis_buf); i++; if(i==17) { i=0; lcd_pos(0x80+0x40); for(j=0;j<16;j++) { lcd_wdat(dis_buf); } i=1; } } } 怎样1602随按键逐个显示数字并且右移呢???现在的情况是如图!!!
|
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【xG24 Matter开发套件试用体验】Silicon Labs 基于 EFR32MG24 Explorer Kit 开发板 开箱试用体验
429 浏览 0 评论
嵌入式设备在远端运行,会有偶发性代码跑飞的情况,无法到现场调试的情况下如何检查出问题?
1409 浏览 3 评论
写一个程序控制像图上这样控制电磁阀 但是没什么头绪 请各位大神帮帮忙
1405 浏览 1 评论
749 浏览 0 评论
【xG24 Matter开发套件试用体验】开箱+开发板资料说明+开发环境搭建
1229 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
10423 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-7-31 14:33 , Processed in 0.677027 second(s), Total 70, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号