标题: 按键失去控制,不知道原因在哪,请各位大神赐教 [打印本页]
作者: 小白帆 时间: 2018-4-27 17:15
标题: 按键失去控制,不知道原因在哪,请各位大神赐教
本帖最后由 小白帆 于 2018-4-27 17:22 编辑
各位大神,小白请指教!
我想实现的功能是万年历+模拟根据有人或没人以及环境的亮度控制LED灯的亮度+按键控制LED灯的亮度,我是先把这三个功能分别实现后再将程序组合起来的,现在可实现显示万年历,和根据有人或没人以及环境的亮度控制LED灯的亮度,但是按键没有反应,不知道这怎么回事?还有就是不知道为什么,如果是直接让LED由高电平驱动点亮的连接接法,执行仿真时,没有相应的LED驱动代码居然也能亮;而如果是低电平驱动点亮的方式连接的话,LED点亮的代码放在main函数里的while(1)外,无法看到LED点亮的效果,如果是放在while里面,是LED却是闪烁的,但如果按键按多了,它好像有又不亮也不闪了。如果是放在键按键扫描函数里按键判断程序外面,也是LED闪烁,且按键按多几次就不再亮也不再闪烁了。如果是放在某个按键判断按下后,按按键也是没有反应,这究竟问题出在哪了?之前没组合起来的时候按键是都有反应的
按键P3.0-P3.4功能分别是:set(设置),add(加),dec(减),seeNL_NZ(查看农历闹钟)、model(LED亮度控制模式的切换,即是自动控、按键控制进行切换)
操作说明:
1、直接运行仿真。可以看到显示项目分别是:年月日,星期,时分秒,温。
2、如需查看农历,按下seeNL_NZ(查看农历闹钟)键,即可看到农历,同时还会显示(ping/run)平/润年,再按一次此键,可查看闹钟时间。
设置说明:
1、 设置日期时间:按下set(设置)键,时间会暂停,蜂鸣器会长响一次,显示年位置会有光标闪烁,表示此时可以调节年份,如需调节年份,按add(加),dec(减)即可对年份进行调节。然后再按一次set(设置)键,显示月份位置会光标闪烁,同样的方法可以调节月,再按set键分别可设置日,时,分,秒。
2、 调整闹钟时间:将显示调至闹钟显示界面,再按下set(设置)键,即可对闹钟的时分秒进行调节。
3、整点报时,闹钟开启与关闭:同时按下set+add键,可开启或关闭整点报时,蜂鸣器会有提示,如响一声表示开,响两声表示关闭;同时按下set+dec键,可开启或关闭闹钟功能,同时蜂鸣器会有提示,响一声表示开,响两声表示关闭。
4、按键控制LED亮度,在切换到按键控制模式后,通过pwm的方式由按键控制LED的亮度,add是加大了LED亮度,dec是减小LED亮度。
-
-
程序 仿真.rar
259.11 KB, 下载次数: 6
这是程序和proteus仿真
作者: 小白帆 时间: 2018-4-27 17:23
论坛管理员,为什么我没设置附件下载需要黑币,它自动就有了,这样别人怎么会帮我解答问题呀?
作者: 小白帆 时间: 2018-4-27 17:25
这是程序和proteus仿真,请各位大神帮帮小弟
-
-
程序 仿真.rar
259.11 KB, 下载次数: 13
程序和proteus仿真
作者: admin 时间: 2018-4-27 21:03
24小时必答区下载不用黑币的
作者: 小白帆 时间: 2018-4-27 21:48
谢谢管理员
作者: HC6800-ES-V2.0 时间: 2018-4-28 08:53
这种按键功能,特别是你的set功能键,一定要用外部中断,才能打断程序,进入设置程序。
你想想啊:一个程序正常执行在时间的读取和显示部分,就无法扫描你的键盘,你按键当然就不会有反应,而且扫描键盘的时间好短的,你按键只能碰运气——恰好让程序扫描到你在按键——那个机率太小了。
看了你的程序,就是没有发现外部中断的服务函数,所以,可以肯定,按键不起作用的原因——外部中断!!!
作者: 小白帆 时间: 2018-4-28 23:30
您好,谢谢您的答复!
我试过您的方法,但是没有效果呀
-
微信截图_20180428231912.png
(98.38 KB, 下载次数: 41)
-
微信截图_20180428231942.png
(113.66 KB, 下载次数: 40)
-
微信截图_20180428232047.png
(174.47 KB, 下载次数: 39)
-
-
clock2.rar
121.8 KB, 下载次数: 2
更改后的程序
作者: 小白帆 时间: 2018-4-28 23:34
您好,谢谢您的答复!
我试过您的方法,但是没有效果呀
-
微信截图_20180428231912.png
(98.38 KB, 下载次数: 46)
-
微信截图_20180428231942.png
(113.66 KB, 下载次数: 44)
-
微信截图_20180428232047.png
(174.47 KB, 下载次数: 42)
-
-
clock2.rar
121.8 KB, 下载次数: 2
更改后的程序
作者: 小白帆 时间: 2018-4-29 21:30
我现在把自动控制LED的亮度的程序放在主程序main的while中了,这样就可以设置时间和闹钟了,但是后面再加手动控制LED亮度在主程序main的while中的时候,按键5的模式好像不起作用,无论按键5如何切换,自动控制和手动控制的LED无法再灭
作者: kangkang99 时间: 2018-4-30 18:18
按键扫描不要放中断里,最好用分时扫描,又不用加延时,处理又不会卡滞
作者: 小白帆 时间: 2018-5-2 08:26
您好,没明白您的回答的意思是什么。
是“http://www.51hei.com/bbs/forum.php?mod=viewthread&tid=19357”这种按键的处理方法还是?
作者: 面目全非xwzj 时间: 2018-5-2 09:44
线没接对
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |