【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计数和定时器赋值,只有这样才能保证计数准确用于时钟。博文仓促间仅凭思路一挥而就是有描述不到之处,讨论不妨,或可在讨论中不断完善。

相关推荐
FreakStudio1 天前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
✎ ﹏梦醒͜ღ҉繁华落℘6 天前
单片机基础知识---stm32单片机的优先级
stm32·单片机·mongodb
u152109648496 天前
S.S.Audio PRO A2音频隔离器
嵌入式硬件·音视频·实时音视频·视频编解码·视频
zd8451015006 天前
RS485 总线详解
单片机·嵌入式硬件
半条-咸鱼6 天前
【STM32】I2C协议原理、HAL读写与OLED显示操作
嵌入式硬件·c·信息与通信
wohoo_wangzi6 天前
苏州晟雅泰电子:关于W25Q128JVSIQ这个芯片物料的参数,规格及应用领域
嵌入式硬件
✎ ﹏梦醒͜ღ҉繁华落℘6 天前
编程基础 --高内聚,低耦合
c语言·单片机
科芯创展6 天前
1A,1MHz,30VIN,XZ4115,降压恒流LED驱动芯片
单片机·嵌入式硬件
集芯微电科技有限公司6 天前
四通道2A输出集成功率电感降压模块专为紧凑型方案设计
人工智能·单片机·嵌入式硬件·生成对抗网络·计算机外设
踏着七彩祥云的小丑6 天前
嵌入式测试学习第 37 天:异常场景测试:断电、拔插、干扰、非法指令
单片机·嵌入式硬件·学习