51单片机花样流水灯求解

2019-07-15 09:02发布

P0,P1口直接驱动16路LED,定时时间到灭一路(定时器0假设5S,从P1.7开始到P0.0结束)而且灭的这路效果为渐灭。有一个按键有俩功能,选择整体亮度(高、中、低亮度),控制定时时间(假设5S、10S、30S)。只用51单片机直接做,求大牛指点迷津。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
wjz01002
1楼-- · 2019-07-15 18:55
 精彩回答 2  元偷偷看……
fight281
2楼-- · 2019-07-15 20:39
wjz01002 发表于 2018-1-10 11:46
慢慢变暗,现在用for循环做出了慢慢变暗的效果,用的STC11F08XE,而且后边加的有2803

这个片子有3路定时器 你用2路模拟PWM,随便用1路做定时效果。按键短按控制亮度,长按调定时时间。
wjz01002
3楼-- · 2019-07-15 23:45
fight281 发表于 2018-1-10 12:15
这个片子有3路定时器 你用2路模拟PWM,随便用1路做定时效果。按键短按控制亮度,长按调定时时间。

一步步来,P0P1口到时间灭一路且效果是渐灭,这个该怎么写下。渐灭我用的for循环,但只能赋值一个口。定时时间到灭是做了个表格,放在一起怎么写下
人中狼
4楼-- · 2019-07-16 01:18
用一个定时器做模拟的PWM,在这个定时器里控制该哪一路LED动作,按键用一个引脚就可以了,最好有两个LED用来指示当前处于哪一种功能设定,通过记录按键按下的次数来判断选择哪个功能。整体亮度看是指什么了,如果是16路LED的亮度的话,那也是由模拟PWM来控制,这样就需要区别控制渐灭LED和常亮LED了。
wjz01002
5楼-- · 2019-07-16 04:19
本帖最后由 wjz01002 于 2018-1-10 12:54 编辑
人中狼 发表于 2018-1-10 12:34
用一个定时器做模拟的PWM,在这个定时器里控制该哪一路LED动作,按键用一个引脚就可以了,最好有两个LED用来指示当前处于哪一种功能设定,通过记录按键按下的次数来判断选择哪个功能。整体亮度看是指什么了,如果是16路LED的亮度的话,那也是由模拟PWM来控制,这样就需要区别控制渐灭LED和常亮LED了。 ...

不太明白,void jmie0 ()
{
        for (pwm=time;pwm>0;pwm--)
                {
                        P05=1;
                        delay(pwm);
                        P05=0;
                        delay(time-pwm);
                }
}这是我某路渐灭程序


if (p==20)
                {
                        p=0;
                        sec++;
                        if (sec==2)//30秒定时到
                        {        
                                sec=0;
                                table++;
                                if (table>0&&table<9)
                                {
                                        P1=0xff;
                                        P0=play[table];
                                }
                                if (table>=9&&table<=16)
                                {
                                        P0=0X00;
                                        P1=play[table];               
                                }                                
                                if (table==16)
                                {
                                        table=0;
                                }
                        }                        
                }这是IO口到时灭一路。怎么个弄法啊
fight281
6楼-- · 2019-07-16 09:13
 精彩回答 2  元偷偷看……

一周热门 更多>