求各位大神帮忙写个程序,感激不尽

2019-03-24 18:21发布

我想用51单片机实现pwm控制led灯  主要功能是
1按下1键逐渐变亮   到达最亮保持最亮的亮度

2按下2键逐渐变暗   到达最暗保持最暗的亮度
3按下3按键亮度停止在按下按键的那个亮度
4显示时间  时间可以调节
5闹铃
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
365小灰灰
1楼-- · 2019-03-25 14:16
 精彩回答 2  元偷偷看……
gh131413
2楼-- · 2019-03-25 18:39
365小灰灰 发表于 2014-4-22 17:40
大哥帮忙给点其他的资料链接


直接给个以前我弄的51程序,用了两个中断模拟PWM,功能渐亮渐灭,供参考:
#include < reg51.h >
#include < intrins.h >
sbit  K1 =P0^0 ;                    //增加键
sbit  K2 =P0^1 ;                    //减少键
sbit  BEEP =P1^5 ;                //蜂鸣器
sbit  LED = P2^0;
unsigned char PWM=0x7f ;   //赋初值
void Beep();
void delayms(unsigned char ms);
void delay(unsigned char t);

void main()
{  
     P1=0xff;
    TMOD=0x21 ;
    TH0=0xfc ;             //1ms延时常数
    TL0=0x66 ;            //频率调节
    TH1=PWM ;            //脉宽调节
    TL1=0 ;
     EA=1;
     ET0=1;
     ET1=1;
   
     TR0=1 ;
   while(1)
   {
     do{
            if(PWM!=0xff)
           {PWM++ ;delayms(10);}
           else Beep() ;
         }
     while(K1==0);
     do{
           if(PWM!=0x02)
          {PWM-- ;delayms(10);}
           else Beep() ;
          }
     while(K2==0);
   }
}
/*********************************************************/
// 定时器0中断服务程序.
/*********************************************************/
void timer0() interrupt 1
{  
    TR1=0 ;
    TH0=0xfc ;
    TL0=0x66 ;
    TH1=PWM ;
    TR1=1 ;
    LED=0;      //启动输出
}
/*********************************************************/
// 定时器1中断服务程序
/*********************************************************/
void timer1() interrupt 3
{
    TR1=0 ;
    LED=1 ;     //结束输出
}
/*********************************************************/
//蜂鸣器子程序
/*********************************************************/
void Beep()     
  {
      unsigned char i  ;
      for (i=0  ;i<100  ;i++)
        {
          delay(100)  ;
          BEEP=!BEEP  ;                //Beep取反
        }
     BEEP=1  ;                            //关闭蜂鸣器
     delayms(100);
  }
/*********************************************************/
// 延时子程序
/*********************************************************/  
void delay(unsigned char t)
{
    while(t--)   ;
}
/*********************************************************/
// 延时子程序
/*********************************************************/
void delayms(unsigned char ms)
{
    unsigned char i ;
    while(ms--)
     {
        for(i = 0 ; i < 120 ; i++) ;
     }
}

365小灰灰
3楼-- · 2019-03-25 23:22
gh131413 发表于 2014-4-22 18:02
直接给个以前我弄的51程序,用了两个中断模拟PWM,功能渐亮渐灭,供参考:
#include < reg51.h >
#inc ...

谢谢
gh131413
4楼-- · 2019-03-25 23:40
 精彩回答 2  元偷偷看……
exiao
5楼-- · 2019-03-26 02:23
楼主加油
ncataa
6楼-- · 2019-03-26 05:47
控制LED??有前途么??

一周热门 更多>