LED 一般是恒流操作的,如何改变 LED 的亮度呢?答案就是 PWM 控制。在一定的 频率的方波中,调整高电平和低电平的占空比,即可实现。比如我们用低电平点亮一个 LED 灯,我们假设把一个频率周期分为 10 个时间等份,如果方波中的高低电平占空比是 9:1, 这是就是一个比较暗的亮度,如果方波中高低电平占空比是 10:0,这时,全部是高电平, 灯是灭的。如果占空比是 5:5,就是一个中间亮度,如果高低比是 1:9,是一个比较亮的 亮度,如果高低是 0:10,这时全部是低电平,就是最亮的。 实际上应用中,电视屏幕墙中的几十百万 LED 象素都是这样控制的,而且每一个象素 都有红绿蓝 3 个 LED,每个 LED 可以变化的亮度是几百到几万或者更多的级别,以实现真 彩色的显示。还有在您的手机中,背光灯的亮度如果是可以变化的,也应该是这种工作方式。 目前的城市彩灯也有很多都使用了 LED,需要控制亮度是也是 PWM 控制。 下面来分析我们的例程,在这个例程中,我们将定时器 2 溢出定为 1/1200 秒。每 10 次脉冲输出一个 120HZ 频率。这每 10 次脉冲再用来控制高低电平的 10 个比值。这样,在 每个 1/120 秒的方波周期中,我们都可以改变方波的输出占空比,从而控制 LED 灯的 10 个 级别的亮度。 为什么输出方波的频率要 120HZ 这么高?因为如果频率太低,人眼就会看到闪烁感 觉。一般起码要在 60HZ 以上才感觉好点,120HZ 就基本上看不到闪烁,只能看到亮度的变 化了。 下面请看程序,程序中有比较多的注释: ――――――――――――――――――――――― #define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsigned long #include <reg52.h> //包括一个 52 标准内核的头文件 sbit P10 = P1^0; //要控制的 LED 灯 sbit K1= P3^2; //按键 K1 uchar scale;//用于保存占空比的输出 0 的时间份额,总共 10 份 char code dx516[3] _at_ 0x003b;//这是为了仿真设置的 //模拟 PWM 输出控制灯的 10 个亮度级别 void main(void) // 主程序 { uint n; RCAP2H =0xF3; //赋 T2 的预置值,溢出 1 次是 1/1200 秒钟 RCAP2L =0x98; TR2=1; //启动定时器 ET2=1; //打开定时器 2 中断 EA=1; //打开总中断 while(1) //程序循环 { ;//主程序在这里就不断自循环,实际应用中,这里是做主要工作 for(n=0;n<50000;n++); //每过一会儿就自动加一个档次的亮度 scale++; if(scale==10)scale=0; } } //1/1200 秒定时器 2 中断 timer2() interrupt 5 { static uchar tt; //tt 用来保存当前时间在一秒中的比例位置 TF2=0; tt++; if(tt==10) //每 1/120 秒整开始输出低电平 { tt=0; if(scale!=0) //这里加这一句是为了消除灭灯状态产生的鬼影 P10=0; } if(scale==tt) //按照当前占空比切换输出高电平 P10=1; } ―――――――――――――――――― 在主程序中,每延时一段时间,就自动换一个占空比,以使亮度自动变化,方便观察。 编译,运行,看结果。 可以看到,LED 的亮度以每种亮度 1 秒左右不断变化,共有 10 个级别。
上传时间: 2017-11-06
上传用户:szcyclone
使用定时器输出控制LED灯呈呼吸效果,且可以使用RGB888颜色
上传时间: 2019-06-11
上传用户:ym331322001
AT89S52单片机应用及其仿真总结46个KEIL工程源码文件:001、闪烁灯002、流水灯003、跑马灯004、按键识别005、简单输入输出控制006、数码管静态显示007、数码管动态显示008、4X4矩阵键盘的应用009、按键中断识别应用---0~255计数器010、定时器 T0 的应用---9.9 秒计时设计011、利用定时器产生乐曲012、数模转换 ADC0809 的应用--数字电压表013、模数转换 DAC0832的应用--输出0~5V的锯齿波或三角波014、液晶1602的应用015、液晶128X64的应用016、360度天线显示带36指示灯带掉电保护--未完成017、占空比可调模拟仿真程序018、L297_L298芯片混合式步进电机控制器019、串行输入输出共阴极显示驱动器MAX7219应用020、看门狗应用021、舵机控制程序及其仿真022、L297配合场效应管步进电机023、密码锁024、74ls164串转并的数码管显示应用025、L298N控制步进电机026、PC与串口通信027、按键点动互锁程序028、按键点动与自锁029、单片机之间的串口通信实例030、位定义的输入输出控制031、8X8点阵应用演示程序032、四位数字频率计数码管显示033、DS18B20温度显示程序034、0~9999计数器035、DS1302的时钟电路(串行传输显示方式)036、DS1302的时钟电路(并行传输显示方式)037、ULN2003驱动步进电机038、MAX7221数码管动态显示039、设置产品的使用次数040、数字钟设计041、点阵042、DS1302测试程序043、DS1302时钟+1602液晶044、74HC573锁存器045、红外收发控制046、四位频率计
上传时间: 2021-11-09
上传用户:
使用的是STM32F030F4P6最小系统板,x宝上大概11块左右。功能有:LED闪烁灯、串口发送(没写接收)、定时器中断(设置的为500ms)、外部中断(PA7引脚)、看门狗。模板可直接复用,省去新建工程的步骤。
上传时间: 2022-05-03
上传用户:qdxqdxqdxqdx
LabVIEW编程中的定时
上传时间: 2013-04-15
上传用户:eeworm
GB/T 4728.08-2008 电气简图用图形符号 第08部分:测量仪表、灯和信号器件
上传时间: 2013-06-24
上传用户:eeworm
2012年半导体照明产品财政补贴推广项目(室外照明产品-LED路灯、LED隧道灯)招标文件
上传时间: 2013-04-15
上传用户:eeworm
0818、鱼塘LED捕蛾灯电路原理图
上传时间: 2013-06-17
上传用户:eeworm
定时器初值设定
上传时间: 2013-04-15
上传用户:eeworm
交通灯控制系统设计
上传时间: 2013-06-15
上传用户:eeworm