请教 LED灯闪烁模式

789137   2008-7-25 09:45 楼主
现在有8个LED ,用51单片机的8个I/O控制,老大让闪烁200种模式

如果每种模式写一个函数实现,那就得200个函数,老大说200个函数太大了

他要像活字印刷那样,几个函数通过不同的组合就能实现这200种模式

唉,想得头都大了,不知道大家有没有什么好的方法能实现???

回复评论 (17)

你可以先试着写几个完整的函数,完了你就知道有哪些可以合并或者组合的了,实践出真知
点赞  2008-7-25 10:50
楼上说的很对,就像图像显示一样,先考虑怎么显示点,再显示线,面,接着就是组合的问题了
点赞  2008-7-25 13:24
其实就是一个函数:
void LED(char num); // num是LED的数字0-7,希望哪个亮就点哪个。

至于用这个函数怎么实现200种模式,就得看所谓的“模式”的需求了。

200种模式?没有具体的说明吗?那最简单的:2的8次方是256,就是二进制显示,每次加1,所以可以满足。
点赞  2008-7-25 13:47
可以用case 实现
点赞  2008-7-25 15:28
多大点事啊!
一个函数搞定,要255种都可以。
void LED(byte num)
{byte i;
  POTA=num;
}
num一个字节是二进制的,代表8个输出的输出,1是高电平,0是低电平,怎么组合楼主自己去考虑喽!~~
点赞  2008-7-25 15:56
再加上控制每一个LED点亮的时间长短就更完美了:
void LED(byte num,byte timeperiod)
{
}

点赞  2008-7-25 17:21
所以说,需求不明,案子就没法做。问题问的模糊,答案就会很多。
点赞  2008-7-25 17:32
8个灯的闪烁模式,可以是1237亮3秒,2468亮3秒,也可以是从1亮到8,或者从8亮到1.等等等等...

就算把200种闪烁模式放到一个函数里,最终还是得写200种模式啊
点赞  2008-7-28 11:43
有了明确的需求,才好做事。


既然需要200种,而且又都没有共性,那就得写200种。没有规律的东西做起来不是难,而是烦。
点赞  2008-7-28 12:51
引用: 引用 7 楼 shuiyan 的回复:
所以说,需求不明,案子就没法做。问题问的模糊,答案就会很多。
点赞  2008-7-28 14:53
有规律啊!你从0到FFH依次点亮,就有255种模式,如果加上时间变量,就无穷了
点赞  2008-7-28 20:12
我觉得应该可以结帖了
点赞  2008-7-28 20:30
我觉得你的设计要把这些LED的共性找出来,如何简化你的设计,通过这些共性,最佳参数,就可以进行控制了。自己好好想想吧
点赞  2008-7-28 21:36
有难度!
点赞  2008-7-29 00:11
8个函数
里面放延时跟置位还有个数
点赞  2008-8-1 18:19
还有就是一个一个的往里面套循环
点赞  2008-8-1 18:21
问题已经解决

void light(UINT pin1,UINT pin2,UINT pin3,UINT pin4,UINT pin5,UINT pin6,UINT pin7,UINT pin8)

哪个引脚直接用这个引脚数字表示就行了,不用直接用引脚做参数,如P1_6,给pin6赋值6
点赞  2008-8-20 09:04
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复