找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求助:关于按键控制流水灯速度(频率)的问题

[复制链接]
跳转到指定楼层
楼主
我用的汇编,如果要添加P3.2和P3.3分别为一个按键控制增加流速(按一次固定增加多少ms,有最大值)和减少流速(按一次固定减少多少ms,有最小值),怎么设计?我用的两个灯一组循环移动,求大神解答一下,谢谢了!!!
ORG 0000H
LJMP START
ORG 0030H
START: MOV A,#0FCH ;LED灯初值,两个灯点亮(11111100)
LOOP:  MOV P1,A ;P1口送控制值
       LCALL DELAY ;延时
       RL A ;移位
       SJMP LOOP ;循环
DELAY: MOV R3,#200 ;延时大概100毫秒
DLY:   MOV R4,#250
       DJNZ R4,$
       DJNZ R3,DLY
       RET
       END

怎么添加对应的子程序按键控制~

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

使用道具 举报

沙发
ID:129768 发表于 2016-7-9 05:46 | 只看该作者
求大神解释!
回复

使用道具 举报

板凳
ID:111634 发表于 2016-7-9 07:41 | 只看该作者
本帖最后由 zl2168 于 2016-7-9 07:42 编辑

实例7  键控流水循环灯


Proteus仿真一下,确认有效。
实例7 键控流水循环灯.rar (36.04 KB, 下载次数: 231)



以上摘自张志良编著《80C51单片机Proteus仿真设计实例教程》清华大学出版社ISBN 978-7-302-41682-1


书中电路和程序设计有详细说明,程序语句条条有注解。


回复

使用道具 举报

地板
ID:123496 发表于 2016-7-9 11:50 | 只看该作者
非常感谢,仿真很成功,但是如果有程序就再好不过了,书的话我看看图书馆有没有?初学者就不知道怎么写按键控制流速的问题~
回复

使用道具 举报

5#
ID:123496 发表于 2016-7-9 11:52 | 只看该作者
zl2168 发表于 2016-7-9 07:41
实例7  键控流水循环灯

非常感谢~但是有程序就最好了~书的话看看图书馆有没有~就是键控流速不知道怎么写才好~
回复

使用道具 举报

6#
ID:123496 发表于 2016-7-9 12:26 | 只看该作者
zl2168 发表于 2016-7-9 07:41
实例7  键控流水循环灯

非常感谢,但是程序按键控制流速的程序怎么样写?
回复

使用道具 举报

7#
ID:123496 发表于 2016-7-9 12:37 | 只看该作者
zl2168 发表于 2016-7-9 07:41
实例7  键控流水循环灯

这个实例貌似要不就是一直按着不放,要不就看准在流水灯最后按才有增加和缩短的效果(每循环一次),能不能直接在中途任意时刻按一下就是增加和缩短的?
回复

使用道具 举报

8#
ID:111634 发表于 2016-7-9 12:57 | 只看该作者
az_noodle 发表于 2016-7-9 12:26
非常感谢,但是程序按键控制流速的程序怎么样写?

程序在书中
回复

使用道具 举报

9#
ID:111634 发表于 2016-7-9 12:57 | 只看该作者
az_noodle 发表于 2016-7-9 12:37
这个实例貌似要不就是一直按着不放,要不就看准在流水灯最后按才有增加和缩短的效果(每循环一次),能不 ...

任意时刻
回复

使用道具 举报

10#
ID:123496 发表于 2016-7-9 13:12 | 只看该作者

按了很多次反应不大啊,而且每循环一次才增加和缩短,要一直按着才变化明显,我想是按一下任意时刻直接加速减速(不是循环一次才加速减速)这样按键才起到最好的调控效果~就是这种不会弄~求教了~
回复

使用道具 举报

11#
ID:111634 发表于 2016-7-9 14:38 | 只看该作者
本帖最后由 zl2168 于 2016-7-9 14:54 编辑

① 8个发光二极管从上到下(K0断开)依次循环点亮,每次点亮时间约为0.5秒。
② 按下K0,流水方向从下至上滚动点亮。
③ 按下K1(K2断开),每循环一次后间隔时间缩短0.1秒,直至最短间隔0.1秒后保持不变。
④ 按下K2(K1断开),每循环一次后间隔时间增加0.1秒,直至最长间隔1秒后保持不变。
⑤ K1、K2同时断开或同时闭合,保持原滚动间隔时间不变。
初设0.5秒,以后是每循环一次后间隔时间缩短或增加0.1秒,注意“每循环一次”,然后变化。
缩短或增加0.1秒,你有感觉吗?
如果嫌慢,按住不放或锁定按键(点击按键右侧小红点)。
这是仿真,象征性的。你要什么效果,都可修改啊!你们学单片机,就是学修改,学好了,就自己能创造了!
例如,你要每次缩短或增加0.2秒,按2次就玩完了,有劲吗?按5次才稍稍有劲些。
再例如,你要每次缩短或增加0.05秒,那就更没感觉了。
脑子想想,什么叫仿真?什么叫象征性?
实际上,单片机都可做到,你怎么想,怎么实现,问题是有没有必要,好玩不好玩。
回复

使用道具 举报

12#
ID:129809 发表于 2016-7-9 14:46 | 只看该作者
回复

使用道具 举报

13#
ID:123289 发表于 2016-7-11 01:18 | 只看该作者
写程序,主要是构思!
速度取决于你的延时,
将延时时间做成活的,即可达成目的.
所以最好用中断做延时.在中断中改更延时的时常数.(在你需要改变速度的时候,如按下了键)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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