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 效果图如下 ······ 2.代码 #include #include #include 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 } } 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; } 本章内容就告一段落了,定时器功能几乎是开发中必不可少的模块,灵活使用会使执行效率更加高效,大家有时想出的一些原创题目多使用定时器来训练,加强对这个工具的利用。
上一篇:51单片机-定时器&数码管扫描显示
下一篇:51单片机-舵机入门
推荐阅读
史海拾趣
ARBOR公司深知合作的重要性,积极与上下游企业建立紧密的合作关系。公司通过与供应商和客户建立长期稳定的战略合作关系,实现了资源共享和优势互补。这种合作模式不仅降低了公司的运营成本,也提高了产品的竞争力。同时,ARBOR公司还积极参与行业交流活动,推动整个电子产业的健康发展。
在追求商业成功的同时,First Switchtech公司(或类似公司)也始终关注可持续发展和社会责任。公司致力于环保产品的研发和生产,推出了多款符合国际环保标准的电子开关产品。同时,公司还积极参与公益事业,通过捐赠资金、技术支持等方式帮助贫困地区改善教育条件、提升医疗水平等。这些举措不仅提升了公司的社会形象,也促进了公司与社会的和谐共生。
需要注意的是,以上故事是基于电子行业普遍趋势和可能发展路径的构想,并非直接针对First Switchtech公司的具体事实。如需了解该公司的真实发展情况,建议直接访问其官方网站或查阅相关新闻报道。
在追求商业成功的同时,First Switchtech公司(或类似公司)也始终关注可持续发展和社会责任。公司致力于环保产品的研发和生产,推出了多款符合国际环保标准的电子开关产品。同时,公司还积极参与公益事业,通过捐赠资金、技术支持等方式帮助贫困地区改善教育条件、提升医疗水平等。这些举措不仅提升了公司的社会形象,也促进了公司与社会的和谐共生。
需要注意的是,以上故事是基于电子行业普遍趋势和可能发展路径的构想,并非直接针对First Switchtech公司的具体事实。如需了解该公司的真实发展情况,建议直接访问其官方网站或查阅相关新闻报道。
骏晔科技在无线通讯模块领域一直寻求创新。2019年,公司与硬之城达成战略合作,推出了高性能的FSK双向收发模块。这款模块采用了最新的FSK调制技术,极大地提高了数据传输的稳定性和效率。通过这一创新,骏晔科技在物联网设备通讯领域取得了显著的市场份额增长。
经过多年的发展,Crouzet已经成为全球知名的自动化产品供应商之一。公司在全球拥有20家工厂和5家研发中心,分布在欧洲、亚洲、北美洲等地区。同时,Crouzet还在全球17个国家设有销售网络,为全球客户提供优质的产品和服务。展望未来,Crouzet将继续秉承创新、卓越的理念,不断推动自动化技术的发展,为全球客户提供更加高效、可靠的自动化解决方案。
通过以上五个故事,我们可以看到Crouzet公司在电子行业发展的历程中,始终保持着对技术创新和市场需求的敏锐洞察,通过不断的产品创新和市场拓展,逐步发展成为全球知名的自动化产品供应商之一。
在电子行业的早期,Ceratech Corporation公司以其对滤波器技术的深入研究和不断创新而崭露头角。公司研发团队不断攻克技术难题,成功研发出一系列高性能的Ceratech滤波器,这些滤波器以其优异的性能和稳定性,迅速在市场中占据了一席之地。随着技术的不断积累和创新,Ceratech Corporation逐渐在滤波器领域树立起了自己的品牌和技术优势。
走进单片机世界(一)【普及单片机知识】 单片机基础知识一 数制 数制是人们利用符号进行计数的科学方法。数制有很多种,在计算机中常用的数制有:十进制,二进制和十六进制。 1.十进制数 人们通常使用的是十进制。它的特点有两个:有0,1,2…. ...… 查看全部问答∨ |
|
本人正在做一个可以输出正弦波和方波的DDS信号发生器,高频的,现在正在画电路图,有哪位高手做过?我用的是51和AD9833,25MHz的晶振,频率我想放大到100MHz,但幅度只有0.6V,有没有哪位高手推荐一块将幅度放大可调的集成运放……我是初学者,感激 ...… 查看全部问答∨ |
|
前段时间一直忙于安装CE6.0,现在开始熟悉新的开发环境,因为以前一直是使用CE5.0的,所以,在这里我的疑问是:在CE6.0中是如何导入BSP的? 在CE5.0中,有一项Manage Catalog Items...可以导入.CEC管理文件。而在CE6.0情况下是没有这个选项的,因 ...… 查看全部问答∨ |
|
DeviceIoControl导致蓝屏。。。 #define FILE_DEVICE_FILEMON 0x00008300 #define IOCTL_FILEMON_ADDPROTECTEDPATH (ULONG) CTL_CODE( FILE_DEVICE_FILEMON, 0x810, METHOD_BUFFERED, FILE_ANY_ACCESS ) #define IOCTL_FILEMON_DE ...… 查看全部问答∨ |
#include<lpc213x.h> #include<stdlib.h> #define Fosc 11059200 #define Fcclk Fosc*6 #define Fpclk Fcclk/4 #define Baud 9600 unsigned char i; unsign ...… 查看全部问答∨ |
任务:设计制作一个低频三相正弦信号发生器,能产生频率和相位可调的三相正弦波,并具有数字显示频率、相位和电压的功能 要求: (1)三相正弦波输出频率范围:10hz~100hz,相位差120°; (2) ...… 查看全部问答∨ |