51单片机实现呼吸灯
一、概述
使用51单片机控制LED,实现其由暗变亮,再由亮变暗的渐变过程。
二、程序
#include <STC15F2K60S2.H>
#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 0static 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();}
}
51单片机实现呼吸灯相关推荐
- 51单片机心形灯实现旋转呼吸灯流水编程
51单片机心形灯--实现旋转呼吸灯流水编程 其他心形灯类型编码请看我的其他博文~ 心形灯效果图 如果是静态效果请刷新页面哦 心形灯原理图 编译软件:Keil uVision5 (如有需要可点此链接下载 ...
- 基于51单片机十字路口交通灯_5s黄灯闪烁
基于51单片机十字路口交通灯_5s黄灯闪烁 目录标题 基于51单片机十字路口交通灯_5s黄灯闪烁 功能要求 仿真图 程序 主要程序代码 程序讲解 倒计时的产生 红黄绿灯状态处理 倒计时显示处理 资料清 ...
- 基于51单片机十字路口交通灯_只显示绿灯时间+黄灯5s
基于51单片机十字路口交通灯_只显示绿灯时间+黄灯5s (程序+仿真+参考报告) 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 编号J011 目录标题 基于5 ...
- 51单片机:流水灯蜂鸣器控制
//51单片机:流水灯&蜂鸣器控制 //bglei@nuaa.edu.cn 2022/8/28<流水灯&蜂鸣器控制> #include<reg52.h> #in ...
- 【019】基于51单片机的交通灯Proteus仿真设计
一.资料内容 (1).基于51单片机的交通灯proteus仿真设计一份: (2).基于51单片机的交通灯proteus仿真设计keli源代码一份: (3).基于51单片机的交通灯proteus仿真设计 ...
- 51单片机心形灯实现每次点亮两个灯编程
51单片机心形灯--实现每次点亮两个灯编程 其他心形灯类型编码请看我的其他博文~ 心形灯效果图 如果是静态效果请刷新页面哦 心形灯原理图 编译软件:Keil uVision5 (如有需要可点此链接下载 ...
- STM32F030C8T6单片机PWM呼吸灯寄存器配置
STM32F030C8T6单片机PWM呼吸灯寄存器配置: TIM3_CR1:控制寄存器 BIT8~BIT9:CKD 与外部输入时钟有关,不使用外部时钟输入,所以不操作BIT8~BIT9,设置为00 B ...
- 51单片机STM32交通灯红绿灯十字路口信号灯类设计功能要求汇总
51单片机STM32交通灯红绿灯十字路口信号灯类设计功能要求汇总 浏览必读: 使用关键词搜索可以达到事半功倍的效果. 电脑浏览器CTRL+F可以使用搜索查找 设计编号J000 功能说明: 1.四路交通 ...
- 声控灯程序C语言,基于51单片机的声控灯设计设计-包含完整设计与指导文件.doc...
基于51单片机的声控灯设计设计-包含完整设计与指导文件 工 学 院 毕 业 设 计(论文) 题 目:基于单片机的智能光控路灯的设计 专 业: 机电技术教育 班 级: *** 姓 名: *** 学 号: ...
最新文章
- HALCON检测字符日期
- ai驱动数据安全治理_JupyterLab中的AI驱动的代码完成
- 经典面试题(14):关于delete 操作符,以下代码将输出什么?
- 我的HTML学习之路03
- IDEA 2020下载与安装
- 【字体分享】适合寒露闪屏设计的字体有哪些?
- java架构师职责_架构师的主要职责
- 树莓派4B设置USB启动
- Android 6.0 Marshmallow
- ugui 转轮_(转)unity3D的FingerGestures插件
- Win11图片打开为Windows照片查看器
- UML与Java-- UML类图于Java的基本实现
- 2018年10大流行Python库
- GameFramework篇:框架基本理解以及源码下载
- 虚拟专用网的技术分析
- decorators 参数_Django中decorators装饰器的使用
- AMD GPU的断点指令
- NVMe系列专题之二:队列(Queue)管理
- 青龙面板-简单获取京东CK
- Altium Designer绘制stm32最小系统PCB
热门文章
- 打造企业数智化管理新引擎,中国首份指标中台市场研究报告重磅发布!
- Kaggle项目之PUBG Finish Placement Prediction(一)——探索性分析
- 联通2g信号显示无服务器,换新手机吧!联通关闭2G3G信号 手机显示无信号竟然是这个原因!...
- 机器学习python下数据分类方法
- 新魔百盒M304A_增强版2+16G_S905系列_UWE5621DS_卡刷/线刷固件包-当贝桌面
- linux vim 复制粘贴代码
- python3长整型怎么用_python3有长整型吗
- 枪火重生灵界狂潮攻略(八)雀哥流派
- 【记录LVM挂载磁盘错误】Devices have inconsistent logical block sizes (512 and 4096).
- 两种查看表空间使用情况的方法