编程教程

   编程问答  ACM与蓝桥杯竞赛入门  C语言教程  C++教程  数据结构教程  单片机教程  Python教程  JAVA教程  编译器教程  C语言函数库  更多教程
Dotcpp  >   编程教程  >   定时器  >  呼吸灯

呼吸灯

点击打开 在线编译器,边学边练

1.双定时器呼吸灯实现

呼吸灯的实现原理就是让小灯的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;

效果图如下

双定时器呼吸灯实现1

······

双定时器呼吸灯实现2


2.代码

#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文件目录结构

为什么计算机只能识别二进制?

单片机教程
第一章 单片机入门
  • 1. 单片机简介
  • 2. 开发板选择
  • 3. 前期准备
第二章 LED及入门
  • 1. 初识原理图
  • 2. 程序点灯
  • 3. 实际LED硬件连接
  • 4. 点亮LED
  • 5. 闪烁的LED
  • 6. 软件调试查看运行时间
  • 7. 延时1秒
  • 8. 函数封装
  • 9. 函数传参调用
  • 10. 流水灯
  • 11. 数组与移位
第三章 蜂鸣器
  • 1. 蜂鸣器原理
  • 2. 无源蜂鸣器鸣叫
  • 3. 无源蜂鸣器题目
  • 4. 无源蜂鸣器+LED
第四章 数码管
  • 1. 数码管原理
  • 2. 数组&数码管
  • 3. 数码管&LED
  • 4. 多个数码管显示
  • 5. 同时显示不同的数字
  • 6. 高位不显示0
  • 7. 数码管小数点
  • 8. 分钟秒表
第五章 独立按键
  • 1. 按键入门
  • 2. 按键&蜂鸣器&数码管
  • 3. 按键猜想
  • 4. 按键用法
  • 5. 按键模式
  • 6. 不支持连按
  • 7. 静态变量
  • 8. 支持连按与全局变量
  • 9. 再次优化不支持连按的代码
  • 10. 流水灯的优化解说
  • 11. 代码对比
  • 12. 双模式函数封装
  • 13. 第一阶段综合例程(上)
  • 14. 第一阶段综合例程(下)
  • 15. 第一阶段的总结
第六章 多文件编程
  • 1. 多文件编写
  • 2. 模块初始化
  • 3. 数码管显示函数
  • 4. 多文件编程首次测试
  • 5. 带返回值的函数
  • 6. 新按键程序
  • 7. 最终按键程序
  • 8. 最终的function文件
第七章 外部中断
  • 1. 寄存器
  • 2. 中断函数
  • 3. 进一步理解中断函数
  • 4. 中断的实验现象
  • 5. 外部中断测脉冲个数
第八章 定时器
  • 1. 定时器概念
  • 2. 定时器工作模式
  • 3. 定时时长的做法
  • 4. 定时器简单运用
  • 5. 定时器工作模式2
  • 6. 定时器中断函数的使用
  • 7. 定时器初始化新写法
  • 8. 隐形漏洞
  • 9. 代码参考
  • 10. 微调定时精确时间
  • 11. 单独文件封装
  • 12. 输入捕获
  • 13. 数据类型强制转换
  • 14. 定时器&数码管扫描显示
  • 15. 呼吸灯
第九章 舵机与超声波模块
  • 1. 舵机入门
  • 2. 舵机与按键
  • 3. 超声波模块
第十章 串口通信
  • 1. 串口通信入门
  • 2. 简洁式串口通信
  • 3. 详细理解ASCII码
  • 4. 串口printf系列函数
第十一章 1602液晶屏
  • 1. 液晶屏代码讲解
  • 2. 指向数组的指针
  • 3. 液晶屏代码单独文件
  • 4. 各功能代码的运用
第十二章 IIC通信
  • 1. IIC入门代码讲解
  • 2. EEPROM简单使用
  • 3. IIC&EEPROM合成文件
第十三章 红外遥控与温度传感器
  • 1. 红外遥控
  • 2. 代码文件和测试
  • 3. 温度传感器代码解析Ⅰ
  • 4. 温度传感器代码解析Ⅱ
  • 5. 温度传感器代码独立文件
第十四章 AD与DA
  • 1. AD与DA合成文件
第十五章 混合例程
  • 1. 电位器控制舵机
  • 2. 遥控器控制舵机
  • 3. 温度传感器与串口
  • 4. 模拟倒车雷达报警
  • 5. 再次熟悉串口
  • 6. 串口&液晶屏Ⅰ
  • 7. 串口&液晶屏Ⅱ
  • 8. 串口&液晶屏Ⅲ
  • 9. 串口&EEPROM
  • 10. 实践操作
第十六章 完结
  • 1. 结束语
Dotcpp在线编译      (登录可减少运行等待时间)

	

聚圣源秋天的深处优秀作文大全光棍推荐手机在线现看做a视频汉堡王朱姓起名女孩凤临天下王妃13岁李氏小说安卓手机排行榜旅店起什么名字卖香纸烛店铺起名心动的信号第四季免费观看完整版汗马功劳的意思潘结方式方法凤凰卫视香港台许起什么名字好财务公司名字起名大全金石良缘剧情介绍狐假虎威续写足疗会馆起名字大全集辽宁卫视直播在线观看给姓马男孩起取名大全餐饮会所起名字 高端大气的机关作风建设快递单号查询软件猪年张姓孩子起名济南新闻频道黄姓男孩起名字姓刘男宝起名字淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化