10级可调的STC11F01单片机控制的led

2019-07-15 13:19发布

#include <REG51.H>
//#include <absacc.H>
#define uint unsigned int
#define uchar unsigned char

char t0_val=0;
unsigned  char code tabltl0[] ={0x18,0x04,0x18,0x0c
};
unsigned  char code tablth0[] ={0xc7,0xd1,0xc0,0xf0
};
unsigned  char code tabltl1[] ={0x18,0x0c,0x18,0x04
};
unsigned  char code tablth1[] ={0xf9,0xf0,0xc0,0xd1
};
sbit  key_h = P3^2;
sbit  key_l = P3^3;
sbit  output = P1^7;

void my_delay10nms(unsigned int n)         //延时函数
{
        unsigned i,j;
        while(n --)
        {
                for(i = 128;i > 0;i --)
                for(j = 10;j > 0;j --);
        }
}



void  tcosrv (void)  interrupt  3
{         TR1=0;TR0=1;
     TH1=tablth1[t0_val];
     TL1=tabltl1[t0_val];
     output=1;
}


void tc0_srv(void) interrupt 1   
{          TR0=1;TR1=1;
      TH0=tablth0[t0_val];
      TL0=tabltl0[t0_val];
      output=0;
}   



void main()
{
    TMOD=0X00;
    TH1=tablth1[t0_val];
    TL1=tabltl1[t0_val];

    TH0=tablth0[t0_val];
    TL0=tabltl0[t0_val];
    ET1=1;
    ET0 = 1;
        TR0 = 1;  
    TR1=1;
    EA=1;

    while(1)
    {
       if(key_h==0)
       {
        my_delay10nms(10);
        if(key_h==0)
        {

        while(key_h==0);
        t0_val++;
        if( t0_val>3)
        t0_val=3;
        }
       }
      if(key_l==0)
       {
        my_delay10nms(10);
        if(key_l==0)
        {
        while(key_l==0);
        t0_val--;
        if(t0_val<0)
        t0_val=0;
        }
       }  
    }
}     

不知道对不对

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
chenwei6991627
1楼-- · 2019-07-15 13:40
用PWM的占空比比较好吧
wjz01002
2楼-- · 2019-07-15 18:36
chenwei6991627 发表于 2016-7-29 17:23
用PWM的占空比比较好吧

这个我不太懂,刚接触这玩意。您能具体讲下嘛?
wjz01002
3楼-- · 2019-07-15 19:55
wjz01002 发表于 2016-8-1 08:07
这个我不太懂,刚接触这玩意。您能具体讲下嘛?

我说具体点,现在这个板子上大概有70几个LED,一个船型开关控制他的亮度,接通电源后是最亮,然后按开关由亮变暗,总共有十级。片子用的11F01
chenwei6991627
4楼-- · 2019-07-16 00:03
没有免费的午餐
keil-uvision4
5楼-- · 2019-07-16 05:18
 精彩回答 2  元偷偷看……
keil-uvision4
6楼-- · 2019-07-16 06:56
keil-uvision4 发表于 2016-8-6 20:31
提一点建议:可以用串口来模拟PWM。用方式1,可以产生占空比10%~90%、以10%递进的PWM信号,发送0x00占空比为10%(最后一位停止位为1,其余9位为0),发送0x01为20%,0x03为30%,发送0x07为40%,发送0x0f为50%,发送0x1f为60%,发送0x3f为70%,发送0x7f为80%,发送0xff为90%。如果想要0%或100%,就关闭串口,直接写P3^1 = 0或P ...

TH1 = TL1 = 100,写错了

一周热门 更多>