找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

这个单片机按键程序是哪里错了

查看数: 2592 | 评论数: 16 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-4-28 15:53

正文摘要:

请问想实现独立键盘k4(sbit k4=P1^3)按下,会从“欢迎使用”画面进入“IC”数据画面,但是在烧写程序时,单片机不会等待按键按下或者按键按下TFT屏幕出错。请问是哪里错了。

回复

ID:323345 发表于 2018-5-6 11:41
可能是语法错误吧
ID:319538 发表于 2018-5-6 09:33
无法进入while(1)这个循环,说明问题出在前面的语句,你需要把你的显示语句welcome()检查一下。不过正常来说,编译通过的话应该不是一些死循环这种逻辑错误
ID:319538 发表于 2018-5-6 09:30
sacredyy 发表于 2018-5-3 10:39
请问,欢迎界面放在了循环外边,但是按键按下,没有反应,一直是欢迎界面。是什么问题

那就要分析了,按键检测模块没有问题,但是按键没有反应,说明你这个延时模块有问题。Delay(1000)这句有问题
ID:321043 发表于 2018-5-3 10:40
进不了判断程序
ID:302865 发表于 2018-5-3 10:39
许三少天 发表于 2018-5-1 12:14
你发出来的都没问题啊,欢迎界面如果能显示的话,按键按下去再出错说明错误有冲突,你把欢迎放在清屏语句后 ...

请问,欢迎界面放在了循环外边,但是按键按下,没有反应,一直是欢迎界面。是什么问题
ID:302865 发表于 2018-5-3 09:39
wenzedong 发表于 2018-5-1 11:59
我来说一下为什么单片机不会等待按键按下,你在键值按下前有个延时1000,就会对按键判断产生影响,而且软件 ...

网上说消抖时间一般是10-20ms,那如果是按下松开应该怎么写程序
ID:301728 发表于 2018-5-1 14:50
while(1)
{
   welcome();
   Delay(1000);
   judge1();
  if(start==1)
   break;
}
clear();
Ic();
Delay(1000);
如果把welcome放在while(1)里面,就算是start=1也会显示welcome
ID:319538 发表于 2018-5-1 12:15
因为你延时之后马上又继续循环,那就会在没有清屏的时候直接出现欢迎这个语句,导致屏幕出错
ID:319538 发表于 2018-5-1 12:14
你发出来的都没问题啊,欢迎界面如果能显示的话,按键按下去再出错说明错误有冲突,你把欢迎放在清屏语句后面,不放在循环里面试试看
ID:319344 发表于 2018-5-1 11:59
我来说一下为什么单片机不会等待按键按下,你在键值按下前有个延时1000,就会对按键判断产生影响,而且软件延时消抖根本用不了那么长时间,10~20us就可以了,如果你是按下就松开,不建议你设置成这样,除非你是按下后直到执行了相应功能再松开
ID:302865 发表于 2018-5-1 09:51
cj52 发表于 2018-4-29 14:37
等待按键按下之前就调用welcom ()了

先调用welcome,然后等待子函数,按键按下会让start=1,再判断start==1,调用IC函数
ID:302865 发表于 2018-5-1 09:49
devcang 发表于 2018-4-28 16:26
子函数是一直等待的,主函数中,怎么能判断得到start==1呢

~~~~~~~~~~

那请问应该怎么改
ID:319019 发表于 2018-4-29 17:32
welcome放到按键函数里去
ID:318910 发表于 2018-4-29 14:37
等待按键按下之前就调用welcom ()了
ID:318910 发表于 2018-4-29 14:36
等待按键按下前不就调用了welcom()吗
ID:277550 发表于 2018-4-28 16:26
子函数是一直等待的,主函数中,怎么能判断得到start==1呢

~~~~~~~~~~

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表