打印

菜鸟问过循环内嵌循环的问题

[复制链接]
1592|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
灬风停了|  楼主 | 2011-5-10 19:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.74hc164驱动数码管闪烁数字20次后会固定显示。
     2.用按键来控制不同数字的闪烁。
     3.比如第一次按时闪烁"12",第二次按时闪烁“34”,然后返回循环。
     4.请问如何做到数字固定之前,变成闪烁另外的数字,然后就可以通过按键控制从新开始无限循环下去了。
     写程序时,闪烁需要一个循环,变数字显示也要在前一个循环内实现,关键是发觉仿真时从新开始循环就不行了,也就是说只能一次循环,不可以无限循环。
      哪位大虾给我指点下啊,我想了2天都不明白,是不是我程序思路有问题啊。

相关帖子

沙发
sysdriver| | 2011-5-10 23:38 | 只看该作者
你自己能理解你所描述得问题吗?描述问题都不清晰,思路肯定有问题,如果你能描述清楚,估计也就会了。

使用特权

评论回复
板凳
梅开二度| | 2011-5-10 23:44 | 只看该作者
按键程序产生一个闪烁标志,比如按键一次对应第一位,按键第二次对应第二位;
显示程序判断该位是否需要闪烁,需要,闪烁20次,否则,正常显示;

使用特权

评论回复
地板
lorkey_email| | 2011-5-10 23:44 | 只看该作者
程序不写; 给你思路.
数码管扫描函数:
1.判断第1位数码管是否需要闪烁。(用个闪烁标志变量实现).
2。需要闪烁则判断闪烁频率记时器是否达到数码管亮的数值(即亮的时间).
     在亮的时间内则可对此位数码管进行扫描.
     判断闪烁频率记时器达到灭的时间内, 则不对数码管进行扫描. 并退出扫描函数。
   注如果不对此位扫描, 则需要跳过其它数码管扫描, 不可对下位进行扫描; 否则闪烁时数码管亮度会不一样.
    例: if(n == 1) 如果需要闪烁.
           {
               if(Timer_Flash <= 30) 单位MS。 如果频率计时器小于等于30MS则, 对数码管1进行扫描.
               {
                    调用数码管1扫描程序.
               }
              else if(Timer_Flash > 60)单位MS。 如果频率计时器在31-一60之间, 则不对数码管1进行扫描(即数码管1是灭的).  且当大于60后重新循环
             {
                  Timer_Flash = 0;        Timer_Flash变量可放在定时器中, 这个决定闪烁快慢.
             }
            }
       else if(n == 2) ;第二位数码管 方法跟上面一样.
      else if(n == 3);  第三位数码管 方法一样.
      else if(n ==........
n的改变可以在键处理函数中完成, 跟据不同按键按下进行处理.

使用特权

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

本版积分规则

0

主题

16

帖子

0

粉丝