找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3382|回复: 4
收起左侧

数码管显示流水灯速度

[复制链接]
ID:101925 发表于 2016-1-5 15:33 | 显示全部楼层 |阅读模式
首先是流水灯按照设定速度运行,设定值通过按键进行修改。这个是否是使用改变延时的方法设定


其次通过数码管显示流水灯流水速度,这个应该怎么编写程序???
回复

使用道具 举报

ID:1 发表于 2016-1-5 21:19 来自手机 | 显示全部楼层
如果是,单一的流水灯,要改变速度的话,是很简单的,只需要修改延时的知识即可

如果要用数码管来显示,流水灯的速度的话,这个会,稍微有一点难度,因为一个单片机要同时进行动态扫描和流水灯,实现起来会稍微麻烦一点
回复

使用道具 举报

ID:102114 发表于 2016-1-6 20:57 | 显示全部楼层
本帖最后由 青山外 于 2016-1-6 21:17 编辑

用中断,主程序:

while(1)
{ 点亮第n个灯
   动态扫描数码管  //扫描时有延时
   延时计数加1
   if(延时计数到 num)//num根据流水速度定
   {
      点亮下个灯
    }
}
中断程序:
        改变num
        改变数码管要显示的数
         if(num到某个数)num回到初值


可能有疏漏,结构基本这样
      
回复

使用道具 举报

ID:102073 发表于 2016-1-7 10:06 | 显示全部楼层
简单点就是通过延时
比如:
unsigned int de = 10000;
…………
delay(de){
if(p1^0 == 0)   假设p1^0 是按键减速
  de - = 500;
if(p1^1 == 0)   假设p1^1 是按键加速
  de + = 500;
}

意思就是这样
回复

使用道具 举报

ID:102114 发表于 2016-1-7 14:56 来自手机 | 显示全部楼层
ckpcmpkun 发表于 2016-1-7 10:06
简单点就是通过延时
比如:
unsigned int de = 10000;

要动态扫描数码管,如果点亮一个灯就直接用延时函数延时到点亮下一个灯的话是不行的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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