现在有8个LED ,用51单片机的8个I/O控制,老大让闪烁200种模式
如果每种模式写一个函数实现,那就得200个函数,老大说200个函数太大了
他要像活字印刷那样,几个函数通过不同的组合就能实现这200种模式
唉,想得头都大了,不知道大家有没有什么好的方法能实现???
你可以先试着写几个完整的函数,完了你就知道有哪些可以合并或者组合的了,实践出真知
楼上说的很对,就像图像显示一样,先考虑怎么显示点,再显示线,面,接着就是组合的问题了
其实就是一个函数:
void LED(char num); // num是LED的数字0-7,希望哪个亮就点哪个。
至于用这个函数怎么实现200种模式,就得看所谓的“模式”的需求了。
200种模式?没有具体的说明吗?那最简单的:2的8次方是256,就是二进制显示,每次加1,所以可以满足。
多大点事啊!
一个函数搞定,要255种都可以。
void LED(byte num)
{byte i;
POTA=num;
}
num一个字节是二进制的,代表8个输出的输出,1是高电平,0是低电平,怎么组合楼主自己去考虑喽!~~
再加上控制每一个LED点亮的时间长短就更完美了:
void LED(byte num,byte timeperiod)
{
}
所以说,需求不明,案子就没法做。问题问的模糊,答案就会很多。
8个灯的闪烁模式,可以是1237亮3秒,2468亮3秒,也可以是从1亮到8,或者从8亮到1.等等等等...
就算把200种闪烁模式放到一个函数里,最终还是得写200种模式啊
有了明确的需求,才好做事。
既然需要200种,而且又都没有共性,那就得写200种。没有规律的东西做起来不是难,而是烦。
有规律啊!你从0到FFH依次点亮,就有255种模式,如果加上时间变量,就无穷了
我觉得你的设计要把这些LED的共性找出来,如何简化你的设计,通过这些共性,最佳参数,就可以进行控制了。自己好好想想吧
问题已经解决
void light(UINT pin1,UINT pin2,UINT pin3,UINT pin4,UINT pin5,UINT pin6,UINT pin7,UINT pin8)
哪个引脚直接用这个引脚数字表示就行了,不用直接用引脚做参数,如P1_6,给pin6赋值6