1.定时器中断实现间隔切换
在第六章第4讲的测试代码中提到过数码管微闪烁问题,这是由于三八译码器的IO端口切换的间隔时间不均匀导致,这部分的问题宋老师已经在《手把手教你学51单片机》文档6.4.2节有详细解释,并在6.5.2节里解决了这个问题。数码管扫描函数我们使用定时器0强制实现间隔1ms切换三八译码器的IO输出,这样保证了每个数码管被点亮的时间都是均匀的。我们在主函数里不停地执行数码管显示函数。这里是测试代码,用定时器1实现add间隔50ms自增1,数码管显示add的值。
#include #include #include u32 add=9999; void main() { LED_Init(); //初始化LED硬件模块 EA = 1; //闭合总中断开关 TIM0_Init(1000,33); //定时1ms,因为中断函数占用时间多一点,所以微调的值跨度比较大 TIM1_Init(50000,10); //定时50ms,10是微调使定时更精确 while(1) { ShowNumber(add); } } void TIM0_IRQHandler() interrupt 1 { TH0 = T0RH; //重新加载重载值 TL0 = T0RL; SEG_Scan(); //间隔1ms执行三八译码器的不同IO输出低电平 } void TIM1_IRQHandler() interrupt 3 { TH1 = T1RH; //重新加载重载值 TL1 = T1RL; add++; } 2.PWM简单入门 PWM概念在《手把手教你学51单片机》文档10.2节有很好的解释,这里笔者就不费笔墨讲解了,我们简单入门PWM来让8盏小灯实现较暗地点亮。P0端口输出如下 代码实现如下 #include #include #include u8 pwm=0; void main() { LED_Init(); //初始化LED硬件模块 EA = 1; //闭合总中断开关 TIM0_Init(1000,10); //定时1ms,10是微调使定时更精确 while(1) { if(pwm<=8)P0=0xFF; //pwm在0~8之间都会执行“P0=0xFF;”,也就是占空比为90%,小灯显示较暗 else P0=0x00; } } void TIM0_IRQHandler() interrupt 1 { TH0 = T0RH; //重新加载重载值 TL0 = T0RL; pwm++; if(pwm>=10)pwm=0; //pwm在0~9之间间隔1ms变化 } 3.浅谈例程代码 在宋老师的lesson10_2例程代码中的“void ConfigPWM(unsigned int fr, unsigned char dc)”函数里大家阅读起来可能有点吃力,这里笔者解析一下。 我们先再次复习一下知识,定时器每加1经过的时间是(12/11059200)秒,如果计数到11059200(多次溢出),时间也就过去了12秒。时间过去了1秒的时候计数值就是(11059200/12)。 “ConfigPWM(100, 10);”意味着tmp的数值周期是(1/100)秒,也就是频率为100Hz。这个周期里高电平定时持续的时间为“(1/100)*0.1”秒,低电平定时持续的时间为“(1/100)*0.9”秒。所以占空比为10%。 主函数里的延时就是让这个PWM波形持续一段时间,然后又到下一个占空比为40%的PWM波形持续一段时间。4个阶段的占空比不同,也就表现为小灯的显示亮度不同。 这里笔者做个效果图给大家理解吧
上一篇:51单片机-数据类型强制转换
下一篇:51单片机-呼吸灯
推荐帖子
- 电荷泵升压电路的输入电压高低对输出电压有什么影响?
- 升压芯片,例如MC34063,输入电压通常比较宽,有的达到5-30V,那么,输入5V和30V对输出电压有没有影响呢?我想,输入电压高一些,应该输出电压的纹波会小一些。因为内部电荷泵充电时间变短了。电荷泵升压电路的输入电压高低对输出电压有什么影响?输入电压的变化确实有影响,但影响可以通过设计改善。设计得当的话,在一定范围内影响可以忽略。电荷泵型升压开关电源对输入电压的变化会比电感储能型开关电源更敏感,只是MC34063并非电荷泵型的开关电源,而是常规电感储能型的开关电源。『输入电压高
- 飞絮 模拟电子
- F350的pwm配置不成功
- voidpwm_pin_config(void) { rcu_periph_clock_enable(RCU_GPIOA); gpio_mode_set(GPIOA,GPIO_MODE_AF,GPIO_PUPD_PULLDOWN, GPIO_PIN_6|GPIO_PIN_7); gpio_output_options_set(GPIOA,GPIO_OTYPE_PP,GPIO_OSPEED_10MHZ,
- tinnu GD32 MCU
- EMC问题三规律和三要素
- EMC(ElectromagneTIcCompatibility)即电磁兼容。它是研究电磁干扰的一门技术。电磁干扰是我们周边电磁能量使电子设备的运行产生不应有的响应。EMC的技术目的在于使电气装置或系统在共同的电磁环境条件下,既不受电磁环境的影响,也不会给环境以干扰。下面我们认识以下EMC领域的三个重要规律和EMC问题三个要素:一、EMC三个重要规律规律一、EMC费效比关系规律:EMC问题越早考虑、越早解决,费用越小、效果越好。在新产品研发阶段就进行
- fish001 模拟与混合信号
- 【Silicon Labs 开发套件评测08】_stateflow实现Uart调度
- 今天不玩外设,也没有调图形库,因为今天由工作任务,就简单顺手做个【SiliconLabs开发套件评测08】_stateflow实现Uart调度楼主这是要补充内容?还是发帖遇到问题啦?????楼主的内容呢??是用状态机吗stateflow状态流?期待发出来看看
- jone5 Silicon Labs 开发套件评测专区
- MPC850中复位逻辑和CPM协议切换的CPLD实现
- 摘要:介绍了用CPLD辅助设计在嵌入系统中进行曲MPU复杂逻辑功能设计的总体方案,给出了通过对XC95144中复用控制寄存器进行配置以实现MPU复位逻辑和CPM协议切换的实现方案和设计要点。关键词:MPUCPMCPLD复位逻辑性I/O口MPC8501引言近年来,微处理器(MPU)在嵌入式系统研发中所占地位越来越重要,很多应用场合对MPU的处理速度、集成密度也提出了更高的要求。PowerPC系列MPU是Motorola公司推出的面向嵌入式应用的专用MPU,它在片内集成
- maker FPGA/CPLD
- 推荐关于无线电入门的经典老书
- 推荐两本适合无线电入门的好书,小时候看过,非常适合业余爱好者diy,专业技术人员也可以参考。推荐关于无线电入门的经典老书一直以为无线电入门应该看,比如,业余无线电入门,元器件,初学无线电,之类的之前看过一本无线电讲手台的好像是日本翻译过来的,讲真很细很细,调试的各种都有。感谢分享感谢分享:victory:下载下来看了一下,这本书挺不错的,里面还介绍了无线电波和天线的基础知识,非常感谢楼主的分享!kan看介绍都是不错的书籍,下载了来看看,学习学习,感谢万
- liuxinxianbmw 模拟电子