打印

送一本好资料《从单片机初学者迈向单片机工程师》

[复制链接]
2040|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tangaoo|  楼主 | 2012-5-28 13:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
***********************************************************题目要求********************************************************************
用按键和数码管以及单片机定时器实现一
个简易的可以调整的时钟,要求如下:
8位数码管显示,显示格式如下
时-分-秒
XX-XX-XX
要求:系统有四个按键,功能分别是调整,加,减,确定。在按下调整键时候,显示时的
两位数码管以1 Hz 频率闪烁。如果再次按下调整键,则分开闪烁,依次循环,直到按下确
定键,恢复正常的显示。在数码管闪烁的时候,按下加或者减键可以调整相应的显示内容。
按键支持短按,和长按,即短按时,修改的内容每次增加一或者减小一,长按时候以一定速
率连续增加或者减少。

***********************************************************我遇到的问题******************************************************************
这是文档上提到的小题目,我的键盘驱动是按文档上上面的想法写着。但是遇到了问题。因为我要一个键位调整键(如KEY1),KEY1每按一下这计数器(Count++)一下。
那么我判断 if KEY1 = 1 是调整秒钟 时间停止走动
if KEY1 = 2 是调整分钟
if KEY1 = 3 是调整时钟
if KEY1 = 4 时恢复
但是我遇到的问题就是按文档上的思路写的驱动无法保证每次键按下时,不能保证Count每次只加1,只能用while(!KEY);, 阻止程序才能保证每次只加1, 但这是这篇**提到的禁忌。请问大家还有什么其他的办法,或者更好的键盘驱动程序的思路吗???
谢谢了!!!

从单片机初学者迈向单片机工程师.pdf (2.35 MB)

相关帖子

沙发
红金龙吸味| | 2012-5-28 19:12 | 只看该作者
肯定是按键驱动写的有问题。

使用特权

评论回复
板凳
linyugang| | 2012-6-1 20:39 | 只看该作者
我还是在研究这个  他没有给出定时器的函数   这里应该还有一个定时器对他的那个按键计时

使用特权

评论回复
地板
红金龙吸味| | 2012-6-1 21:26 | 只看该作者
我明天找找,看找不找的到,找到了贴出来。

使用特权

评论回复
5
jinyuewei| | 2012-6-1 22:00 | 只看该作者
按键驱动 大家有没好的驱动思路啊 要保证实时性的

使用特权

评论回复
6
linyugang| | 2012-6-2 09:12 | 只看该作者
他就是一个定时扫描的方式啊 最主要的定时那的程序都没有  悲剧

使用特权

评论回复
7
weihualong| | 2012-6-2 10:33 | 只看该作者
驱动:
if(F_50ms)
{   if(KEY1!=F_KEY1_Bak)
       {  F_KEY1_Bak=KEY1;
           if(F_KEY1_Bak==0)  F_Key1_Push=1;
       }
}


运用:
  if(F_Key1_Push==1)
    {F_Key1_Push=0;
     Count++;
    }

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

5

帖子

0

粉丝