找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2995|回复: 11
打印 上一主题 下一主题
收起左侧

按键失去控制,不知道原因在哪,请各位大神赐教

[复制链接]
跳转到指定楼层
楼主
本帖最后由 小白帆 于 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仿真

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:288202 发表于 2018-4-27 17:23 | 只看该作者
论坛管理员,为什么我没设置附件下载需要黑币,它自动就有了,这样别人怎么会帮我解答问题呀?
回复

使用道具 举报

板凳
ID:288202 发表于 2018-4-27 17:25 | 只看该作者
这是程序和proteus仿真,请各位大神帮帮小弟

程序 仿真.rar

259.11 KB, 下载次数: 13

程序和proteus仿真

回复

使用道具 举报

地板
ID:1 发表于 2018-4-27 21:03 | 只看该作者
小白帆 发表于 2018-4-27 17:23
论坛管理员,为什么我没设置附件下载需要黑币,它自动就有了,这样别人怎么会帮我解答问题呀?

24小时必答区下载不用黑币的
回复

使用道具 举报

5#
ID:288202 发表于 2018-4-27 21:48 | 只看该作者
admin 发表于 2018-4-27 21:03
24小时必答区下载不用黑币的

谢谢管理员
回复

使用道具 举报

6#
ID:164602 发表于 2018-4-28 08:53 | 只看该作者
这种按键功能,特别是你的set功能键,一定要用外部中断,才能打断程序,进入设置程序。
你想想啊:一个程序正常执行在时间的读取和显示部分,就无法扫描你的键盘,你按键当然就不会有反应,而且扫描键盘的时间好短的,你按键只能碰运气——恰好让程序扫描到你在按键——那个机率太小了。
看了你的程序,就是没有发现外部中断的服务函数,所以,可以肯定,按键不起作用的原因——外部中断!!!

回复

使用道具 举报

7#
ID:288202 发表于 2018-4-28 23:30 | 只看该作者
HC6800-ES-V2.0 发表于 2018-4-28 08:53
这种按键功能,特别是你的set功能键,一定要用外部中断,才能打断程序,进入设置程序。
你想想啊:一个程 ...

您好,谢谢您的答复!
我试过您的方法,但是没有效果呀


微信截图_20180428231912.png (98.38 KB, 下载次数: 41)

微信截图_20180428231912.png

微信截图_20180428231942.png (113.66 KB, 下载次数: 40)

微信截图_20180428231942.png

微信截图_20180428232047.png (174.47 KB, 下载次数: 39)

微信截图_20180428232047.png

clock2.rar

121.8 KB, 下载次数: 2

更改后的程序

回复

使用道具 举报

8#
ID:288202 发表于 2018-4-28 23:34 | 只看该作者
HC6800-ES-V2.0 发表于 2018-4-28 08:53
这种按键功能,特别是你的set功能键,一定要用外部中断,才能打断程序,进入设置程序。
你想想啊:一个程 ...

您好,谢谢您的答复!
我试过您的方法,但是没有效果呀

微信截图_20180428231912.png (98.38 KB, 下载次数: 46)

微信截图_20180428231912.png

微信截图_20180428231942.png (113.66 KB, 下载次数: 44)

微信截图_20180428231942.png

微信截图_20180428232047.png (174.47 KB, 下载次数: 42)

微信截图_20180428232047.png

clock2.rar

121.8 KB, 下载次数: 2

更改后的程序

回复

使用道具 举报

9#
ID:288202 发表于 2018-4-29 21:30 | 只看该作者
HC6800-ES-V2.0 发表于 2018-4-28 08:53
这种按键功能,特别是你的set功能键,一定要用外部中断,才能打断程序,进入设置程序。
你想想啊:一个程 ...

我现在把自动控制LED的亮度的程序放在主程序main的while中了,这样就可以设置时间和闹钟了,但是后面再加手动控制LED亮度在主程序main的while中的时候,按键5的模式好像不起作用,无论按键5如何切换,自动控制和手动控制的LED无法再灭
回复

使用道具 举报

10#
ID:319499 发表于 2018-4-30 18:18 | 只看该作者
按键扫描不要放中断里,最好用分时扫描,又不用加延时,处理又不会卡滞
回复

使用道具 举报

11#
ID:288202 发表于 2018-5-2 08:26 | 只看该作者
kangkang99 发表于 2018-4-30 18:18
按键扫描不要放中断里,最好用分时扫描,又不用加延时,处理又不会卡滞

您好,没明白您的回答的意思是什么。
是“http://www.51hei.com/bbs/forum.php?mod=viewthread&tid=19357”这种按键的处理方法还是?
回复

使用道具 举报

12#
ID:320217 发表于 2018-5-2 09:44 | 只看该作者
线没接对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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