没有合适的资源?快使用搜索试试~ 我知道了~
首页(PWM)51单片机脉冲宽度调制控制LED灯亮度
(PWM)51单片机脉冲宽度调制控制LED灯亮度
需积分: 50 1.8k 浏览量
更新于2023-05-29
评论 5
收藏 27KB DOC 举报
介绍一个51系列单片机采用脉冲宽度调制(PWM)方式控制LED灯亮度的一个程序,大家都知道,51单片机本身是没有pwm接口的,这个程序是通过软件模拟pwm.在一定的频率的方波中,调整高电平和低电平的占空比,即可实现LED灯亮度控制。程序出自:单片机网http://www.51hei.com,如有问题可在论坛提出,程序中使用定时器0产生2.5ms周期脉冲,使用占空比控制变量scale控制占空比,在低电平期间使LED灯亮,在高电平期间使LED灯灭,改变scale就改变了高电平与低电平的时间,因此也就控制了LED灯的亮度。*/ #include "AT89X51.H" //模拟PWM输出控制灯的10个亮度级
资源详情
资源评论
资源推荐

51 单片机脉冲宽度调制(PWM)控制 LED 灯亮度
作者:来源:本站原创点击数: 576更新时间:2009 年 06 月 28 日
/*介绍一个 51 系列单片机采用脉冲宽度调制(PWM)方式控制 LED 灯亮度的一个程序,大
家都知道,51 单片机本身是没有 pwm 接口的,这个程序是通过软件模拟 pwm.在一定的频率
的方波中,调整高电平和低电平的占空比,即可实现 LED 灯亮度控制。程序出自:单片机网
http://www.51hei.com,如有问题可在论坛提出,程序中使用定时器 0 产生 2.5ms 周期脉
冲,使用占空比控制变量 scale 控制占空比,在低电平期间使 LED 灯亮,在高电平期间使 LED
灯灭,改变 scale 就改变了高电平与低电平的时间,因此也就控制了 LED 灯的亮度。*/
#include "AT89X51.H" //模拟 PWM 输出控制灯的 10 个亮度级
unsigned int scale; //占空比控制变量
void main(void) // 主程序
{ unsigned int n; //延时循环变量
TMOD=0x02; //定时器 0,工作模式 2(0000,0010),8 位定时模式
TH0=0x06; //写入预置初值 6 到定时器 0,使 250 微秒溢出一次(12MHz)
TL0=0x06; //写入预置值
TR0=1; //启动定时器
ET0=1; //允许定时器 0 中断
EA=1; //允许总中断
while(1) //无限循环,实际应用中,这里是做主要工作
{ for(n=0;n<50000;n++); //每过一段时间,就自动加一个档次的亮度
scale++; //占空比控制变量 scale 加 1
if(scale==10) scale=0; //如果 scale=10,使 scale 为 0
} }
timer0() interrupt 1 //定时器 0 中断服务程序
{ static unsigned int tt ; //tt 用来保存当前时间在一秒中的比例位置
tt++; //每 250 微秒增加 1
if(tt==10) //2.5 毫秒的时钟周期
















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0