请教51单片机利用PWM控制灯的亮度的程序
答案:2 悬赏:30 手机版
解决时间 2021-04-07 00:21
- 提问者网友:書生途
- 2021-04-06 00:49
请教51单片机利用PWM控制灯的亮度的程序
最佳答案
- 五星知识达人网友:山河有幸埋战骨
- 2021-04-06 01:36
#include<REG52.h>
typedef unsigned char int8;
typedef unsigned int int16;
sbit led=P1^0;//P1^0口控制LED灯
int16 t,a;int8 b; //电平宽度变化控制变量,控制电平宽度,b=0变长,b=1变短
void InitTimer(void)//定时器初始化
{
TMOD = 0x11;
EA = 1; //总中断:开
TH0 = 0xff; //T1计时器计数器初始化
TL0 = 0xce;
TH1 = 0xb1; //T1计时器计数器初始化
TL1 = 0xe0;
ET0 = 1; //T0中断:开
ET1 = 1; //T1中断:开
TR0 = 1; //T0计时:启动
TR1 = 1; //T1计时:启动
}
void main()
{
t=0;
a=0;
b=0;//使用变量前的初始化
InitTimer();
while(1)
{
if(t<a)//t<a时打开LED灯
led=0;
else led=1;//关灯
f(t>80)t=0;//t置零,要改呼吸频率就改掉“80”这个数还有下面的一个“80”也一起改
}
}
void Timer0Interrupt(void) interrupt 1 //T0中断,用来控制PWM电平,每50微秒,t自加一次
{
TH0 = 0xff;
TL0 = 0xce;
t++;
}
void Timer1Interrupt(void) interrupt 3//T1中断,控制PWM电平宽度,使电平宽度由短变长,又由长变短循环,造成呼吸效果
{
TH1 = 0xb1;
TL1 = 0xe0; //每20毫秒增加1个单位的呼吸长度
if(b==0)
{
a++;
if(a==80) //改掉可以改呼吸频率
b=1;
} else {
a--;
if(a==0)b=0;
}
}
typedef unsigned char int8;
typedef unsigned int int16;
sbit led=P1^0;//P1^0口控制LED灯
int16 t,a;int8 b; //电平宽度变化控制变量,控制电平宽度,b=0变长,b=1变短
void InitTimer(void)//定时器初始化
{
TMOD = 0x11;
EA = 1; //总中断:开
TH0 = 0xff; //T1计时器计数器初始化
TL0 = 0xce;
TH1 = 0xb1; //T1计时器计数器初始化
TL1 = 0xe0;
ET0 = 1; //T0中断:开
ET1 = 1; //T1中断:开
TR0 = 1; //T0计时:启动
TR1 = 1; //T1计时:启动
}
void main()
{
t=0;
a=0;
b=0;//使用变量前的初始化
InitTimer();
while(1)
{
if(t<a)//t<a时打开LED灯
led=0;
else led=1;//关灯
f(t>80)t=0;//t置零,要改呼吸频率就改掉“80”这个数还有下面的一个“80”也一起改
}
}
void Timer0Interrupt(void) interrupt 1 //T0中断,用来控制PWM电平,每50微秒,t自加一次
{
TH0 = 0xff;
TL0 = 0xce;
t++;
}
void Timer1Interrupt(void) interrupt 3//T1中断,控制PWM电平宽度,使电平宽度由短变长,又由长变短循环,造成呼吸效果
{
TH1 = 0xb1;
TL1 = 0xe0; //每20毫秒增加1个单位的呼吸长度
if(b==0)
{
a++;
if(a==80) //改掉可以改呼吸频率
b=1;
} else {
a--;
if(a==0)b=0;
}
}
全部回答
- 1楼网友:duile
- 2021-04-06 03:13
51用定时器输出pwm波 哦 我这有一个用pwm控制led亮度的程序,你可以看看哈,触类旁通哦~ // 利用定时器控制产生占空比可变的 pwm 波 // 按k1,pwm值增加,则占空比减小,led 灯渐暗。 // 按k2,pwm值减小,则占空比增加,led 灯渐亮。 // 当pwm值增加到最大值或减小到最小值时,蜂鸣器将报警。
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3233547&bbs_page_no=1&search_mode=3&search_text=elan94&bbs_id=9999
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯