历史上的今天
今天是:2025年04月15日(星期二)
2020年04月15日 | 51单片机实现呼吸灯
2020-04-15 来源:eefocus
一、概述
使用51单片机控制LED,实现其由暗变亮,再由亮变暗的渐变过程。
二、程序
#include #include "MacroAndConst.h" sbit LED = P1^5; #define LED_ON() LED = 0; //LED亮 #define LED_OFF() LED = 1; //LED灭 #define LED_PWM_LIMIT_MAX 99 #define LED_PWM_LIMIT_MIN 0 static u8 s_u8TimeCounter = 0; //中断计数 static u8 s_u8LedDirection = 0; //LED方向控制 0:渐亮 1:渐灭 static u8 s_u8LedPWMCounter = 0; //LED占空比 void Timer0Init(void) { AUXR |= 0x80; //定时器时钟1T模式 TMOD &= 0xF0; //设置定时器模式 TL0 = 0x5C; //设置定时初值 TH0 = 0xF7; //设置定时初值 TF0 = 0; //清除TF0标志 TR0 = 1; //定时器0开始计时 ET0 = 1; //使能定时器0中断 } void Timer0Isr(void) interrupt 1 { static int8 s_u8PWMCounter = 0; TH0 = 0xF7; //定时器初始值(200us中断1次) TL0 = 0x5C; if(++s_u8TimeCounter >= 100) //每20ms调整一次LED占空比 { s_u8TimeCounter = 0; //如果是渐亮方向变化,则占空比递增 if((s_u8LedPWMCounter <= LED_PWM_LIMIT_MAX)&&(s_u8LedDirection == 0)) { s_u8LedPWMCounter++; if(s_u8LedPWMCounter > LED_PWM_LIMIT_MAX) { s_u8LedDirection = 1; s_u8LedPWMCounter = LED_PWM_LIMIT_MAX; } } //如果是渐灭方向变化,则占空比递减 if((s_u8LedPWMCounter > LED_PWM_LIMIT_MIN)&&(s_u8LedDirection == 1)) //此处有坑,若写成“>=”,则达不到预期效果 { s_u8LedPWMCounter--; if(s_u8LedPWMCounter <= LED_PWM_LIMIT_MIN) { s_u8LedDirection = 0; s_u8LedPWMCounter = LED_PWM_LIMIT_MIN; } } s_u8PWMCounter = s_u8LedPWMCounter; //获取LED的占空比 } if(s_u8PWMCounter > 0) //占空比大于0,则点亮LED,否则熄灭 { LED_ON(); s_u8PWMCounter--; } else { LED_OFF(); } }
史海拾趣
|
想选择路径打开文件 将内容输出到编辑框 程序运行弹出一个对话框 显示叉号和乱码 void CTCPClientExDlg::Sendfile() { CFile MyFile; TCHAR str[100]; DWORD count; Updat ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 03:41 编辑 有人做过测量交流电压的吗?可以交流交流一下 。带宽太宽了不好测量啊 可以分享你们的经验吗? … 查看全部问答> |
|
通过译码来选通要采样的模拟量,比如有6路选通、即有六路模拟量;这样的话,需采样六次才能将所有模拟量采完,然后分别处理这六个量。 如果采样一路的话,感觉好处理一些,循环采样六路,应该如何用verilog HDL来写? 之前觉得AD采样一次本身可以 ...… 查看全部问答> |
|
【TI C2000的使用经验】+ 使用Energia开发C2000-LaunchPad应用 使用Energia开发C2000-LaunchPad应用Energia 是一个开源和社区驱动型集成开发环境 (IDE) 与软件框架。Energia 基于接线框架,为微控制器编程提供了直观的编码环境和由易于使用的功能 API 及库构成的可靠框架。Energia 支持多种 TI 处理器,主要包括 ...… 查看全部问答> |
|
用单片机系统控制,用中断的方法实现一段20s左右的语音播放,用语音芯片实现的话,AD转换要怎么弄,我要播放的内容怎么加进语音芯片的ram,是有专门的软件去生成吗? … 查看全部问答> |




