历史上的今天
今天是:2025年12月26日(星期五)
2022年12月26日 | 单片机开发系统学习LED亮度控制原理
2022-12-26 来源:zhihu
早期控制LED亮度的方法一般是采用模拟电路来调节LED的工作电流来实现,这种方式灵活性较差,很难达到智能控制的效果。本文将介绍如何通过一个普通MCS51单片机来产生PWM信号,达到调节LED的亮度的目的。
一、硬件的简单介绍:
该实验在“ME300B型51/AVR单片机学习开发系统”上完成(本刊2005年第11期和2006年第1期上分别有ME300B的功能与使用介绍),实验中用到了开发系统上的8个发光二极管、独立按键和蜂鸣器,现将这三部分的电路工作原理进行简单的介绍:
发光二极管驱动电路
ME300B上的8个发光二极管接在单片机的P0端口上。由于51系列单片机的P0端口输出高电平时的推电流能力弱,而输出低电平时的灌电流能力强,所以ME300B开发板上的8个发光二极管设计成输出低电平时点亮,输出高电平时熄灭,如图1所示。

图1 发光二极管驱动电路
独立键盘电路
独立键盘是直接用I/O口线构成的单个按键电路。每个独立键盘单独占有一根I/O口线。
开发板设有4个独立按键,分别对应接于P1.4-P1.7端口上,如图2所示。

图2 独立键盘电路
在正常状况下,与键盘所连接的单片机I/O端口先被置为高电平,即“1”状态(输入状态)。当有键按下时,与之相连的单片机I/O端口将被拉成低电平,即“0”状态。所以直接依据每个I/O口线的状态来判断按键是否按下。
蜂鸣器驱动电路

图3 蜂鸣器驱动电路
由于ME300B开发系统使用的是交流蜂鸣器,不能使用直流电平控制方式,必须使用交变脉冲控制方式来驱动,这一点请大家注意。
二、PWM的工作原理
PWM 是脉冲宽度调制(Pulse Width Modulation)的简称,PWM是一种周期一定而高低电平的占空比可以调制的方波信号,当输出脉冲周期一定时,输出脉冲的占空比越大,相对应的输出有效电压越大。

图4 PWM波形图
在一个周期内的脉冲宽度(导通时间)为T1,周期为T,波形如图4所示。
则输出电压的平均值为: U=Vcc×T1/ T=αVcc
其中,α=T1/T(正脉冲的持续时间与脉冲周期的比值)称为占空比,α的变化范围为0≤α≤1,Vcc为电源电压。
当电源电压Vcc不变的情况下,输出电压的平均值U取决于占空比α的大小,改变α的大小就可以改变输出电压的平均值,这就是PWM的工作原理。
发光二极管的亮度与加在发光二极管两端的电压成比例,而发光二极管两端的电压与PWM信号的占空比成正比。因此,占空比越大,发光二极管越亮,当占空比α=1时,发光二极管的亮度最高。
三、 演示软件的编程方法
由于大多数51系列单片机没有PWM信号输出功能,所以我们在这里采用单片机定时器配合软件的方法来实现PWM信号的输出。
确定改变占空比的值的方法
有几种方法都可以改变占空比的值。
定宽调频法
保持T1不变,只改变T2,这样使周期(或频率)也随之改变。
调频调宽法
保持T2不变,而改变T1,这样使周期(或频率)也随之改变。
1.3 定频调宽法
周期T(或频率)保持不变,而同时改变T1和T2。
我们选用定频调宽的方法来改变占空比的值。
2、确定PWM的占空比输出方式

图5 P0口输出波形
由于P0所接的8个发光二极管是用低电平驱动,所以要将PWM的实际输出波形按图5所示的P0口输出波形进行编程,即PWM的占空比输出方式为反向。
演示软件的编程
用T0定时器设置PWM输出的周期(或频率),T0定时器设置成工作方式1,16位定时器。
T0中断服务子程序主要任务是确定PWM输出的周期(或频率)和控制定时器1中断。
T0定时器的定时常数是一个固定值,这样就确定PWM输出的周期(或频率)。
用T1定时器设置PWM输出的占空比,T1定时器设置成工作方式2, 8位定时器,自动载入设定值。
T1中断服务子程序主要任务是调节PWM输出的占空比(或脉宽)
T1定时器的定时常数是一个变化值,用K1键或K2键来设定。
T0、T1中断服务子程序如下:
;====================================================
;T0中断服务子程序 周期(或频率)
;控制定时器1中断
;====================================================
INTT0:
CLR TR1
MOV TH0,#0FCH ;1ms延时常数
MOV TL0,#066H ;周期调节
MOV TH1,PWM_NUM
SETB TR1
MOV PWM_OUT,#00H ;输出低电平
RETI
;====================================================
;T1中断服务子程序 脉宽(或占空比)
;控制PWM脉冲宽度
;====================================================
INTT1:
CLR TR1
MOV PWM_OUT,#0FFH ;输出高电平
RETI
PWM_OUT 为外接LED的控制端口,PWM_NUM为按键设置的T1定时器定时值的存放单元。
4、演示软件的功能
由两个按键K1、K2来调节P0口输出脉冲的占空比,该脉冲直接驱动P0口所接的8个发光二极管,随着占空比的不同发光二极管的亮度不同,当按下K1键(不要松手)发光二极管逐渐变暗,当有蜂鸣器响时,说明输出脉冲的占空比已经达到最小值,发光二极管的亮度已处在最暗的状态。
当按下K2键(不要松手)发光二极管逐渐变亮,当有蜂鸣器响时,说明输出脉冲的占空比已经达到最大值,发光二极管的亮度已处在最亮的状态。
上一篇:74HC595走马灯演示程序
史海拾趣
|
向量中断简介 ARM7中断体系介绍 上一次活动中,我们介绍了ARM7的时钟系统,这次活动介绍中断系统。这个两个系统是在以后的活动中,有很多的应用,同时这两个系统,也是ARM甚至是所有MCU的基础模块。 arm的VIC中断体 ...… 查看全部问答> |
|
library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity decim_al2 isGeneric( num : integer range 0 to 1022 := 7; -- numerateur du rapport de decimatio ...… 查看全部问答> |
|
散分~系统启动速度提高一半了~俺用的是EP9315,64m的ram加32m的flash~,原来启动大概11秒,现在最多5秒~原因未明,待查找呵呵,心情不错,特来散分~… 查看全部问答> |
|
我刚开始上班,好多东西都不懂,经理把板子给我了.让我自己弄. 问其他同事,他们都说忙,好郁闷呀! 主机,ARM9开发板,ADS1.2集成开发环境,JTAG仿真器.都有了. 我下一步该做什么. 如果直接用Tornado 2.2 for pcPentium,然后和目标机这样连接可以吗? ...… 查看全部问答> |
|
只有一块空板,我什么芯片,元器件都没,书上有说哪里放什么器件,怎么放...开始买书的时候以为送的是完整的PCB开发板,还想照着书上的例子做做实验的,求大侠指点!!!… 查看全部问答> |
|
转让FREESCALE DSP56F807开发板 - 450元 去年在北京通特科技有限公司买的,我们公司是做电力系统保护的,本来是想把这款DSP好好研究下的,因为在电力系统中这款DSP用的比较多,后来因为赶上别的项目,换成了STM32F ARM7平台,所以就一直没时间弄了,只弄了不到一个星期,基本上是崭新的 ...… 查看全部问答> |
|
大惊喜!在EEWORLD的申请下,LaunchPad加送触摸板啦!! 各位参加“EEWORLD大学堂TI教室”认真学习并拿到LaunchPad的童鞋们,你们一定惊喜的发现还有一个触摸板在上面吧! 是个,这就是大惊喜! 由于你们的认真学习,不仅是我们能够看到的,反馈给TI同样也可以看得到!不仅我们感动,TI也很感动。 在EE ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 03:17 编辑 南华大学黄智伟 收集的一些电子竞赛竞赛的题目 包括历届国赛题,一些省赛题,TI赛题 也许对您有用。 … 查看全部问答> |




