利用定时器2模拟pwm控制led亮度变化

利用定时器2模拟pwm控制led亮度变化

ID:6640414

大小:59.50 KB

页数:4页

时间:2018-01-21

利用定时器2模拟pwm控制led亮度变化_第1页
利用定时器2模拟pwm控制led亮度变化_第2页
利用定时器2模拟pwm控制led亮度变化_第3页
利用定时器2模拟pwm控制led亮度变化_第4页
资源描述:

《利用定时器2模拟pwm控制led亮度变化》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、#include"delay.h"#include"com.h"#include"key.h"#include"beep.h"sfr T2MOD=0xC9;  //定时器2#define WM_COUST 20    //PWM细分数volatileunsignedcharPWM_H;   //PWM占空比调节volatileunsignedcharPWM_CNT=0;  //PWM自增值/****************************************************************      定时器

2、2中断程序***************************************************************/voidTimer2(void)interrupt5using1{ if(PWM_CNT=PWM_COUST) //PWM计数清零 {  WM_CNT=0; } else {  WM_CNT++;  //自增值加1 } }/**********

3、******************************************************      定时器2初始化***************************************************************/#defineMSB_reload_value0xDB //msbreloadvalueexemple高位重载值:延时10ms#defineLSB_reload_value0xF0 //lsbreloadvalueexemple低位重载值voidTimer2Init(void)

4、{ //T2OE=0;定时器2输出不允许  T2MOD=0x01; //DCEN=1;可以设置为向上/下计数:此程序中为向上达到0xff时溢出 T2CON=0;  //TF2EXF2RCLKTCLKEXEN2TR2C_T2CP_RL2 //EXF2=0; resetflag定时器2外部标志位清除 //TCLK=0;RCLK=0; disablebaudrategenerator不用于波特率发生器 //EXEN2=0;ignoreeventsonT2EX视T2EX(P1.1)端信号无效 //C_T2=0;timermode定时模式 //

5、CP_RL2=0; reloadmode重载模式 TH2   =MSB_reload_value;//Initmsb_value填入初始化值 TL2   =LSB_reload_value;//Initlsb_value  RCAP2H=MSB_reload_value;//reloadmsb_value重载值  RCAP2L=LSB_reload_value;//reloadlsb_value  ET2=1; //enabletimer2interrupt允许T2中断}/*******************************

6、*************************     系统初始化********************************************************/voidInitSys(void){ DelayMs(100);  //等待系统稳定  0=0xFF;   //初始化IO 1=0xFF; 2=0xFF; 3=0xFF;  InitSerial();  //串口初始化 Timer2Init();  //定时器2初始化 EA =1;     //开总中断 WM_H =5;  //初始占空比5 PWM_CN

7、T=0;  //初始化PWM自增值}/********************************************************      主函数********************************************************/ voidmain(void){ unsignedcharucKey; InitSys();  //初始化 TR2=1; //启动定时器2 while(1) {  ucKey=KeyScan();  //读取键盘值  if(ucKey!=ValNull) /

8、/如果不为空  {   if(ucKey==ValKey16) //如果等于key16   {    if(PWM_H<=PWM_COUST) //如果PWM_H在PWM范围内    {     PWM_H++;   /

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。