51单片机的Timer,运用PWM完成呼吸灯.doc

上传人:白大夫 文档编号:3244868 上传时间:2019-08-05 格式:DOC 页数:4 大小:20KB
返回 下载 相关 举报
51单片机的Timer,运用PWM完成呼吸灯.doc_第1页
第1页 / 共4页
亲,该文档总共4页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《51单片机的Timer,运用PWM完成呼吸灯.doc》由会员分享,可在线阅读,更多相关《51单片机的Timer,运用PWM完成呼吸灯.doc(4页珍藏版)》请在三一文库上搜索。

1、51单片机的Timer,运用PWM完成呼吸灯Pulse Width Modulation脉冲宽度调制,简称PWM。PWM(脉冲宽度调制)对模拟信号电平进行数字编码的方法,计算机只能输出0或5V的数字电压值而不能输出模拟电压,而我们如果想获得一个模拟电压值,则需通过使用高分辨率计数器,改变方波的占空比来对一个模拟信号的电平进行编码。仍输出数字信号,因为满幅值的直流供电只有5V(1)和0V(0)两种。电压是以一种连接(1)或断开(0)的重复脉冲序列被夹到模拟负载上去的,连接即是直流供电输出,断开即是直流供电断开。通过对连接和断开时间的控制,只要带宽足够,可以输出任意不大于最大电压值的模拟电压。输出

2、电压=(接通时间/脉冲时间)*最大电压值12二、51单片机的Timer作者用的单片机是STC89C52,其内部有3个16位Timer,分别为T/C0,T/C1,T/C2,通过配置相关寄存器即可实现Timer的功能控制。控制PWM需要用到定时器来生成不同占空比的波形,采用定时器中断的方式。相关寄存器:1.IE寄存器2. TCON寄存器3. TMOD寄存器控制Timer0/1的工作方式TL14. Timer0/1计数寄存器TL0TH0TH1当定时开启后,TL0(TL1)自动跟随机器周期加一。当TL0(TL1)满了后,自动清零同时向TH0(TH1)进一位,不需要手动操作.而当TL0(TL1)和TH0

3、(TH1)都满了以后,此时如果定时中断和总中断都已经打开,那么就会发生溢出中断,同时这两个寄存器清零三、运用PWM完成呼吸灯1. 硬件电路2. 软件驱动unsigned char PWM_COUNT; /计数unsigned int HUXI_COUNT; /占空比更新时间unsigned char PWM_VLAUE; /占空比比对值bit direc_flag; /占空比更新方向void timer0_init()TMOD=0x02; /模式设置,00010000,定时器0,工作于模式2(M1=1,M0=0)TH0=0x47; /定时器溢出值设置,每隔200us发起一次中断。TL0=0X4

4、7;TR0=1; /定时器0开始计时ET0=1; /开定时器0中断EA=1; /开总中断PWM_COUNT =0;void time0() interrupt 1 PWM_COUNT+;HUXI_COUNT+;if(PWM_COUNT = PWM_VLAUE) /判断是否到了点亮LED的时候LED = 1; /点亮LEDif(PWM_COUNT = 10) /当前周期结束LED = 0; /熄灭LEDPWM_COUNT = 0; /重新计时if(HUXI_COUNT = 600) /占空比增加10%HUXI_COUNT = 0;PWM_VLAUE+;if(PWM_VLAUE = 9) /占空比更改方向direc_flag = 1;if(HUXI_COUNT = 600) /占空比减少10%HUXI_COUNT = 0;PWM_VLAUE-;if(PWM_VLAUE = 1) /占空比更改方向direc_flag = 0; void main()HUXI_COUNT = 0;PWM_COUNT = 0;PWM_VLAUE = 5;direc_flag = 0;LED = 1; /默认LED熄灭 timer0_init(); /定时器0初始化while(1);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1