• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

【讨论】有多少方法可以写出流水灯程序?

51单片机,硬件可以任意搭建。程序不论复杂简单,只要实现:8盏LED,每次点亮一盏,不断循环。

你能想到几种办法?

我先说一两个吧:

硬件为最小系统,灯接IO口

1.使用运算符<<或>>

2.使用循环移位指令(C51 intrind.h中有_cror_何_crol_)

3.通过加法运算。

4.通过乘法运算。

5.最死板的每个状态一条指令

6.查表法

7.区间点亮法

全部回复(17)
正序查看
倒序查看
001a
LV.3
2
2014-02-07 17:52
直接点亮,中断点亮,直接寻址寄存器,调用库函数等等吧,方法很多
0
回复
daylight
LV.4
3
2014-02-08 11:10
@001a
直接点亮,中断点亮,直接寻址寄存器,调用库函数等等吧,方法很多[图片]
中断点亮也不一定能实现这种流水灯,还是详细一点点比较好
0
回复
cloud7890
LV.2
4
2014-02-22 15:58
不知道流水灯怎么控制亮度
0
回复
金鱼1
LV.3
5
2014-02-22 16:08
移位还是比较容易想到的
0
回复
backin
LV.4
6
2014-02-22 16:09
随机函数 rand() 点亮
0
回复
candyman
LV.2
7
2014-02-22 16:12
@cloud7890
不知道流水灯怎么控制亮度
同样不知道,求路过大神指点
0
回复
vidas
LV.2
8
2014-02-22 16:13
我的办法是给接LED的端口赋初值  然后使用for循环移位 这样就可以达到功能  在for循环外面加一个while 就可以一直这样运行下去
0
回复
elio
LV.2
9
2014-02-22 16:15
可以用PWM模式,控制等的亮度~如果新片没有自带的PWM可以模拟嘛!
0
回复
ytwsdz
LV.7
10
2014-03-10 22:57
@elio
可以用PWM模式,控制等的亮度~如果新片没有自带的PWM可以模拟嘛!

一楼说依次点亮LED,有人就提亮度问题,你就跟着PWM,

本来简单的问题又要多事了哈。

设计让一个LED发光有那么难吗?蛋片机输出一个信号就是打开灯的意思,那个灯亮度有多亮是个问题吗?

一楼那点问题用汇编 几行就完成了。算了我不多讲了。没事倒腾自己。

0
回复
SKY丶辉煌
LV.10
11
2014-03-12 22:31
查表,循环,移位,延迟
0
回复
飞翔2004
LV.10
12
2014-03-18 23:35
@cloud7890
不知道流水灯怎么控制亮度
大型的LED屏幕基本上靠OE使能端的占空比来调节LED亮度的,你也可以选一些内置PWM的IC,只要写入响应的值就产生相应的亮度了。。
0
回复
208971
LV.7
13
2014-04-04 16:27
@cloud7890
不知道流水灯怎么控制亮度
PWM调光。
0
回复
2014-04-07 11:46
@SKY丶辉煌
查表,循环,移位,延迟
来,我也来发个C++写的,在基于cortex-M0的新塘MINI51上使用MDK自带操作系统RTX-kernerl来实现的LED闪烁工程GreatWall.zip
0
回复
2014-04-10 10:20

http://www.dianyuan.com/bbs/1484517.html  

我的帖子,里面有汇编和C语言的LED流水灯,空了去看看,相互交流!  

 

汇编语言我试过用10种不同的方法写流水灯的

直接赋值    查表    移位   加预算   减运算    CJNE 比较   JZ比较    这些都可以

0
回复
秋柳
LV.2
16
2014-04-10 22:07
可以直接用数字逻辑电路实现。
0
回复
joyban
LV.3
17
2014-04-25 14:03
哪里有详细的资料?
0
回复
山东大汉
LV.10
18
2014-04-27 23:57
@飞翔2004
大型的LED屏幕基本上靠OE使能端的占空比来调节LED亮度的,你也可以选一些内置PWM的IC,只要写入响应的值就产生相应的亮度了。。
还有什么参数需要考虑?
0
回复