完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include
#include #include"lcd.h" ***it k1=P1^0; ***it k2=P1^1; ***it k3=P1^2; typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; static flag =3; //标记 void delay(u16 i) //延时 { while(i--); } void menu0 () { Lcd1602_Write_Cmd(0x01); LcdShowStr(0,0," welcome ") ; } void menu1 () { Lcd1602_Write_Cmd(0x01); LcdShowStr(0,0," nihao ") ; } void keyvalue() { if(k1==0) { delay(1000); if(k1==0) { flag=0; } } else { flag=3; } while(!k1); if(k2==0) { delay(1000) ; if(k2==0) { flag=1; } } else { flag=3; } while(!k2); } void key() { keyvalue(); switch(flag) { case 0: { menu0(); if(k3==0) { delay(1000); if(k3==0) { flag=3 ; } } while(!k3); break; } case 1: { menu1(); if(k3==0) { delay(1000); if(k3==0) { flag=3 ; } } while(!k3); break; } case 3: { u8 i; for(;i<10;i++) { Lcd1602_Write_Data('C'); } break; } } } void main(void) { InitLcd1602(); while(1) { key(); } } 这是我写的一个程序,没有加lcd.h文件。就看主程序的话为什么不能实现按第一个键进入第一个菜单,按第二个键入第二个按第三个返回呢? |
|
相关推荐
2个回答
|
|
flag赋值错了,你现在可能的情况是,按下第一个键,flag赋了对应的值,检测到按键释放才退出扫键程序,显示第一个菜单,显示完后又开始扫键,这时没有按键按下,flag=3,退出扫键程序,进行显示,估计你现在是一直显示字符C吧,不过没看到显示地址的设置命令,所以不确定你现在显示什么。flag的赋值条件判断有问题。
|
|
|
|
人中狼 发表于 2017-4-18 11:15 改好了,谢谢大神orz。我的switch语句有问题所以显示有问题的#include #include #include"lcd.h" ***it k1=P1^0; ***it k2=P1^1; ***it k3=P1^2; typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; static int flag =0; //标记 void delay(u16 i) //延时 { while(i--); } void menu0 () { Lcd1602_Write_Cmd(0x01); LcdShowStr(0,0," hello ") ; delay(1000); } void menu1 () { Lcd1602_Write_Cmd(0x01); LcdShowStr(0,0," welcome ") ; delay(1000); } void menu2 () { Lcd1602_Write_Cmd(0x01); LcdShowStr(0,0," nihao ") ; delay(1000); } void keyscan() { if(k1==0) { delay(1000); if(k1==0) { flag=1; } } if(k2==0) { delay(1000); if(k2==0) { flag=2; } } if(k3==0) { delay(1000); if(k3==0) { flag=0; } } } void menu() { keyscan(); switch(flag) { case 0: { menu0(); } break; case 1: { menu1(); break; } case 2: { menu2(); break; } } } void main(void) { InitLcd1602(); while(1) { menu(); delay(5000); } } |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
298 浏览 1 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
309 浏览 0 评论
826 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1911 浏览 2 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
1427 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12031 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 02:43 , Processed in 0.526305 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号