【51单片机编写占空比按秒渐亮与渐暗】2023-10-2

昨天刚在W10上安装CH340驱动,又下载到板子上LCD1602定时器时钟程序,为了调试,调用了一个LED观察控制蜂鸣器按秒响的变量,几经调试才发觉该开发板用的是有源蜂鸣器,不用IO取反操作,直接控制IO的高低电平即可,之前论述了用51单片机定时器做时钟不准产生的原因是由于采用了阻塞式延时引起的,其实使用定时器做时钟比时钟芯片精度高一个数量级,今经下载到板子上,通过一天的观察的确走时很准确,同电脑上时钟做对比,不过应注意的是电脑时钟开自动同步功能会产生几十秒的误差,但是从早上到晚上十几个小时每小时核对都是准确的,电脑自动同步造成的差异不算。

开发板上程序调试完成后,遂产生编写占空比按秒渐亮与渐暗的念头,因为论坛上有提问不少,遂编写了如下呼吸灯程序,按秒渐亮,按秒渐灭,对这段呼吸灯程序每句都加以详细论述,一应国庆发文,二为初学铺路,请看程序:

cpp 复制代码
void fanbo()
{//占空比按秒渐亮与渐灭
	static unsigned char t=0;
	static bit k=1;
	led=k?(Js<t?0:1):(Js>t?0:1);
	if(++t==50)t=0;
	if(Js==0)k=!k;
}

占空比之前有篇博文也写比较详细,今天再次详细论述,作为前篇补充。实现占空比要素一是频率范围即多少时间内占空比从0到100或从100到0,这里由于定时器已经开启并设定了20毫秒,因此1秒的范围就是50即定时器计数50次为1秒,这样就确定了第一个参数;二要素是生成占空比的变量对比,如当比值大于或小于时是1还是0的比例多少就是占空比,比如当两个变量进行对比,当一个变量小于另一个变量时值为0否则为1,这样就能实现占空比的调节,这样讲好似很空洞的样子,没关系,我们把值代入代码进行分析就很具体了,如上程序种的Js和t两个变量就是用来对比并实现占空比输出的,设当Js=0且t=0时三目运算符输出1赋值给LED,20毫秒时间内当t变化1到50时都不会小与Js因此一直输出1;要说明的是fanbo()函数调用是在主函数主循环内,由于主函数主循环运行时间是微秒级别的,因此t的自增比Js的20毫秒要快一个数量级,因此当t从0到50是不停变化的,在t无数个变化周期内占空比都是一样的,只有当Js发生变化时占空比才发生变化,当Js从0到50变化过程种占空比就实现了100到0的对比变化,当Js=50时则t都小于Js从而实现了一直输出0的占空比;分析到这里或许有人要问那相同的占空比不是有很多个?的确如此,相同的占空比脉冲确实有很多个,如占空比为7的有很多个且频率很高送给LED然由于其占空比不变因此LED亮度也不变,从而实现了对LED亮度的占空比调节看起来就是渐亮和渐暗的表现,当然本荔枝对占空比脉冲的频率是不加控制的,其频率会随着程序不同而不同,如主循环内程序占用时间多则调用函数的时间就长频率就低,请注意当调用函数的频率低于20毫秒时按理推导是会发生问题的。由于5M大小的限制只能录制4秒左右的呼吸灯运行也就看个大概实物运行效果。

上面程序声明了静态变量两个,t是实现占空比的对比变量,k是切换渐亮与渐暗的布尔变量按秒转换不同三目运算式来实现,这里必须使用静态变量,勿谓言之不予。Js是定时器公共计数变量,在我博客中常见中断设置与中断计数简练代码中,我的定时器中断代码不多写多余的代码,就是Js计数和定时器赋值,只有这样才能保证计数准确用于时钟。博文仓促间仅凭思路一挥而就是有描述不到之处,讨论不妨,或可在讨论中不断完善。

相关推荐
电子科技圈31 分钟前
SmartDV展示完整的边缘与连接IP解决方案,以高速和低功耗特性赋能移动、物联网和媒体处理设备创新
人工智能·嵌入式硬件·mcu·物联网·智能家居·智能硬件·iot
疏星浅月8 小时前
虚拟内存三大核心作用详解
linux·c语言·arm开发·嵌入式硬件
Aaron158812 小时前
RFSOC+VU13P+RK3588的核心优势与应用场景分析
嵌入式硬件·算法·matlab·fpga开发·信息与通信·信号处理·基带工程
blevoice12 小时前
JL杰理AC696N开发板常见问题FAQ-问题6:为什么提示“key 不匹配”?杰理的蓝牙芯片的key是什么?以及该如何添加key? 杰理key文件原理?
单片机·嵌入式硬件·物联网·jl杰理蓝牙音频芯片·ac696n·蓝牙音箱方案开发
编程之升级打怪12 小时前
常见电路的引脚代号
嵌入式硬件
三佛科技-1873661339714 小时前
辉芒微FT62FC1x低成本小体积定时器触摸MCU芯片选型深度解析
单片机·嵌入式硬件
独小乐14 小时前
018.使用I2C总线EEPROM|千篇笔记实现嵌入式全栈/裸机篇
linux·笔记·单片机·嵌入式硬件·arm·信息与通信
C^h14 小时前
rtthread控制达妙4310电机
数据库·单片机·嵌入式硬件
三佛科技-1873661339715 小时前
LP3717BSL 12V1A隔离型极简化自供电充电器适配器电源方案测试报告
单片机·嵌入式硬件
一路往蓝-Anbo15 小时前
第二章:STM32 bxCAN 控制器详解:从内存到总线的“中转站”
stm32·单片机·嵌入式硬件·软件工程