呼吸灯的实现原理就是让小灯的IO端口在一段时间里PWM由大到小变化的占空比输出,接着又由小到大的占空比输出,小灯显示效果就是时亮时暗地交替闪烁。
首先我们用定时器0定时0.1ms,全局变量pwm在其中断函数里执行简单的从0到99的循环自加,这样周期就是10ms。
假如主函数里我们这样执行
if(pwm<90)P0=0xFF; else P0=0x00;
那么IO端口输出的一直是周期为10ms占空比为90%的波形,这样8盏小灯一直是处于较暗的显示状态不变,要想实现呼吸灯,就要不停改变PWM波形的占空比。
所以我们使用定时器1来做间隔10ms地改变占空比,我们再定义一个全局变量highval,这个变量每隔10ms就会在定时器1中断函数中实现加1或者减1,加到99时又从99减回到0,减回到0又从0开始加到99的这样循环过程,大家回去研究左右往复循环流水灯的代码就会明白都是一样的思路。
然后主函数这样执行
if(pwm<highval)P0=0xFF;//highval每隔10ms就会变化加1或者减1 else P0=0x00;
效果图如下
······
#include <reg52.h> #include <function.h> //详见第六章第8讲 #include <timer.h> u8 pwm=0,highval=99; void main() { LED_Init(); //初始化LED硬件模块 EA = 1; //闭合总中断开关 TIM0_Init(100,9); //定时0.1ms,9是微调使定时时间更精确 TIM1_Init(10000,10); //定时10ms,10是微调使定时时间更精确 while(1) { if(pwm<highval)P0=0xFF; //highval每隔10ms就会变化加1或者减1 else P0=0x00; } } void TIM0_IRQHandler() interrupt 1 { TH0 = T0RH; //重新加载重载值 TL0 = T0RL; pwm++; if(pwm>=100)pwm=0; //pwm在0~99之间间隔0.1ms变化,周期就为10ms } void TIM1_IRQHandler() interrupt 3 { static u8 dir; TH1 = T1RH; //重新加载重载值 TL1 = T1RL; if(dir==1)highval--; //占空比逐渐减少,小灯逐渐变亮 if(highval==0)dir=0; if(dir==0)highval++; //占空比逐渐增加,小灯逐渐变暗 if(highval>=99)dir=1; }
本章内容就告一段落了,定时器功能几乎是开发中必不可少的模块,灵活使用会使执行效率更加高效,大家有时想出的一些原创题目多使用定时器来训练,加强对这个工具的利用。
本文固定URL: https://www.dotcpp.com/course/427
C语言网推出会员服务,提供C/C++/算法/Python等多套视频学练课程+源码资源社群答疑+私活推荐等资源,享受丰富的技术学习到变现的乐趣,以含金量和学习效果勇敢挑战同类辅导! 点击了解开通
选择排序算法C/C++代码图文讲解
JS window概述
Java内部类
Python正则表达式(2)
Java输入输出流
C语言scanf()函数:执行格式化输入
Code::Blocks下载和安装图文教程
Tkinter模块(2)-Frame和Button
从C到C++
什么是哈希表?
什么是指针数组
学C语言用什么编译器好?
编程命名规范之匈牙利命名法
十进制小数如何转换为二进制数?
四种基本的编程命名规范
try…catch…finally语句里return语句的执行顺序是怎样的?
RandomAccessFile流的常用方法有哪些?
什么是内存泄露
Linux文件目录结构
为什么计算机只能识别二进制?
聚圣源秋天的深处优秀作文大全光棍推荐手机在线现看做a视频汉堡王朱姓起名女孩凤临天下王妃13岁李氏小说安卓手机排行榜旅店起什么名字卖香纸烛店铺起名心动的信号第四季免费观看完整版汗马功劳的意思潘结方式方法凤凰卫视香港台许起什么名字好财务公司名字起名大全金石良缘剧情介绍狐假虎威续写足疗会馆起名字大全集辽宁卫视直播在线观看给姓马男孩起取名大全餐饮会所起名字 高端大气的机关作风建设快递单号查询软件猪年张姓孩子起名济南新闻频道黄姓男孩起名字姓刘男宝起名字淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费