51设置方法_51单片机汇编语言PWM呼吸灯程序

本文介绍了如何使用51单片机的汇编语言控制PWM波来实现呼吸灯效果。通过定时器1设定1kHz PWM频率,定时器0调整占空比,从而达到呼吸灯的渐明渐暗效果。程序中利用定时器中断,根据二进制位控制占空比变化方向,确保平滑过渡。附带了纯硬件定时的程序截图和源代码链接。
摘要由CSDN通过智能技术生成

今天回答了一个关于用汇编语言控制51单片机产生PWM波实现呼吸灯效果的问题。结果好久不写程序,一时手生,出了不少错误,索性记录一下,也为自己的知乎账号增加的内容。

要实现呼吸灯效果本质上是产生占空比可变的PWM波,大体思路如下:

  1. 用定时器1控制PWM的频率,我用的开发板板载晶振11.059MHz,近似为12MHz(因为51的定时频率是晶振的1/12,以12MHz计算比较容易),一个定时周期近似为1us,定时器初值设置为64536(16位模式,最大计数值65536),定时1000次,一个周期约为1ms,可生成1kHz频率的PWM。
  2. 用定时器0控制占空比,占空比从0到1再到0,周而复始。假设LED阳极通过限流电阻接VCC,阴极接单片机P2.7引脚,实现过程大致为:定时器1中断程序将P2.7置1,并启动定时器0,定时器0中断程序中将P2.7复位,并停止定时器0。
  3. 通过一个二进制位(20H.0)控制占空比变化方向,0减小,1增大,每次进入定时器0中断,首先判断20H.0,若为0,将定时器0的计数初值加1,若为1,将定时器0计数初值减1。加减操作后判断是否加到最大值(65535)或减到最小值(64536),若到达最大或最小值,20H.0取反。

(也可以只用一个定时器产生1ms的时间基准,然后设一个变量进行计数,通过软硬结合的定时方法产生PWM)

以下为用两个定时器纯硬件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值