标题: 用定时器实现16个LED灯轮流点亮(流水灯),间隔时间为100ms [打印本页]

作者: 晴天2035    时间: 2016-6-12 17:55
标题: 用定时器实现16个LED灯轮流点亮(流水灯),间隔时间为100ms
以下是8个LED灯轮流点亮的程序,按照以下方法怎么把它改成16个LED流水灯?会的大神请帮忙改一下,谢谢,本人初学者

#include<reg51.h>
//#include"stc.h"
unsigned char i=0;
void main(void)
{TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TMOD=0X01;//sj
ET0=0x01;
EA=1;
TR0=1;
while(1)
{if(i>7)i=0;
}}
void timer0IRQ(void) interrupt 1
{TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
P2=1<<i;
i++;}


作者: 龚小四    时间: 2016-6-12 18:19
这种经典例题,课本上有吧
作者: 晴天2035    时间: 2016-6-12 18:50
龚小四 发表于 2016-6-12 18:19
这种经典例题,课本上有吧

没有啊

作者: kuanxin9    时间: 2016-6-12 18:54
应该将65536,50000修改一下就可以了吧
作者: 晴天2035    时间: 2016-6-12 19:19
kuanxin9 发表于 2016-6-12 18:54
应该将65536,50000修改一下就可以了吧

不可以啊

作者: 晴天2035    时间: 2016-6-12 22:04
没人解答一下吗
作者: 西塘乔巴    时间: 2016-6-12 23:16
流水灯你可以用移位啊
作者: 晴天2035    时间: 2016-6-13 10:27
西塘乔巴 发表于 2016-6-12 23:16
流水灯你可以用移位啊

8个可以移位啊,但是要16个就不会了
作者: zwk34    时间: 2016-6-13 10:34
每组输出口就只有8个,只能从外围电路下手,或是用两组输出口。
作者: benben_    时间: 2016-6-13 10:57
加个标志位判断是用P2口点亮led  还是用p0口点亮  然后其他不变  比如先轮流点亮po 的led之后  标志位为1  轮流点亮P2的  标志位清零
作者: mqwu    时间: 2016-6-14 19:01
最简单的办法是用两组8位的IO口去调用数组,当然数组可以写成n种组合, 从左到右, 从右到左, 中间到两边, 两边到中间, 间隔依次点亮, 等等
作者: 小扎托    时间: 2016-6-14 22:56

流水灯你可以用移位试试看,应该ok
作者: 晴天2035    时间: 2016-6-15 08:59
小扎托 发表于 2016-6-14 22:56
流水灯你可以用移位试试看,应该ok

您好,移位我只能弄8个灯,2组接口以上就不可以了
作者: zl2168    时间: 2016-6-15 21:53
给你介绍3个16灯案例
作者: zl2168    时间: 2016-6-15 21:53
本帖最后由 zl2168 于 2016-6-15 22:04 编辑

74HC164串入并出控制16循环灯

Proteus仿真一下,确认有效。


实例42 74HC164串行输出控制8-16循环灯.rar (53.19 KB, 下载次数: 107)








以上摘自张志良编著《单片机实验实训100例》 ISBN 978-7-5124-1603-1,北航社出版
书中电路和程序设计有详细说明,程序语句条条有注解。








作者: zl2168    时间: 2016-6-15 21:55
本帖最后由 zl2168 于 2016-6-15 22:05 编辑

74HC595串入并出控制16循环灯
Proteus仿真一下,确认有效。
实例44 74HC595串行输出控制8-16循环灯.rar (72.58 KB, 下载次数: 68)








以上摘自张志良编著《单片机实验实训100例》 ISBN 978-7-5124-1603-1,北航社出版
书中电路和程序设计有详细说明,程序语句条条有注解。








作者: zl2168    时间: 2016-6-15 21:57
本帖最后由 zl2168 于 2016-6-15 22:06 编辑




CC4094串入并出控制16循环灯
Proteus仿真一下,确认有效。


实例43 CC4094串行输出控制8-16循环灯.rar (67.45 KB, 下载次数: 54)









以上摘自张志良编著《单片机实验实训100例》 ISBN 978-7-5124-1603-1,北航社出版
书中电路和程序设计有详细说明,程序语句条条有注解。








作者: 晴天2035    时间: 2016-6-15 22:08
zl2168 发表于 2016-6-15 21:53
74HC164串入并出控制16循环灯

先Proteus仿真一下,确认有效。

已经做出来了,谢谢你
作者: 无罪之宾    时间: 2016-6-15 23:15
直接用单片机的IO口,用两组应该也可以吧
作者: zl2168    时间: 2016-6-16 11:19
对于单一计数案例,用两组IO共16条是可以的,不用也空着。但对于一个项目,计数仅是其数据处理的一个内容,花费16条IO口线,太浪费了。毕竟IO口线还要派其他用途。
作者: 落叶无痕23    时间: 2017-6-5 23:24
大神们,谁有16个灯循环亮,间隔时间用定时器可以调的单片机C51程序啊
作者: 落叶无痕23    时间: 2017-6-5 23:25
晴天2035 发表于 2016-6-15 22:08
已经做出来了,谢谢你

大神,怎么做的,能教我一下嘛
作者: 落叶无痕23    时间: 2017-6-5 23:56
zl2168 发表于 2016-6-15 21:53
74HC164串入并出控制16循环灯

先Proteus仿真一下,确认有效。

大神,有这个16路流水灯的程序吗,谢谢,我是新手,不怎么懂
作者: zl2168    时间: 2017-6-6 15:00
落叶无痕23 发表于 2017-6-5 23:56
大神,有这个16路流水灯的程序吗,谢谢,我是新手,不怎么懂

仿真电路和Hex文件能在清华出版社网站免费下载,程序源代码只能到书上看了。到图书馆借,或到新华书店翻阅,或到网上书店打折购买。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1