微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 10级可调的STC11F01单片机控制的led

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

时间:10-02 整理:3721RD 点击:
#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;
        }
       }  
    }
}     
不知道对不对

用PWM的占空比比较好吧

这个我不太懂,刚接触这玩意。您能具体讲下嘛?

我说具体点,现在这个板子上大概有70几个LED,一个船型开关控制他的亮度,接通电源后是最亮,然后按开关由亮变暗,总共有十级。片子用的11F01

没有免费的午餐

提一点建议:可以用串口来模拟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或P3^1 = 1;因为视觉暂留效应,PWM频率有30Hz肉眼就几乎看不出有闪烁了,所以对波特率的要求的不高(压根就没什么要求),用T1作波特率发生器的话,不管时钟频率是多少,直接在方式2下写一个TH1 = TH0 = 100就可以了。
希望对你有所帮助。

TH1 = TL1 = 100,写错了

嗯,现在调光用PWM确实是主流

谢谢~我再试试这个,找程序调出来了可是还不太懂

不错的文件,值得收藏

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top