导航:首页 > 操作系统 > 51单片机pwm波

51单片机pwm波

发布时间:2023-12-11 19:43:52

‘壹’ 如何利用51单片机输出PWM波

1、用定时器+编程
2、51系列单片机无PWM输出功能,可以采用定时器配合软件的方法输出。对精度要求不高的场合,非常实用
3、思路:定义一个静态变量,程序每次进入定时器的中断函数中时判断是否满足你说要求的占空比,没达到就继续对变量值进行累加直到满足条件后使输出PWM波的那个引脚电平反转

4、具体详见http://wenku..com/link?url=u82FHU5L--ZvMAabY2JKxCEajqxn_f5GPMl5GQRgrnji3hAGRBq11e

‘贰’ 如何利用51单片机输出PWM波

用两个定时器的方法是用定时器T0来控制频率,定时器T1来控制占空比。大致的的编程思路是这样的:T0定时器中断让一个I0口输出高电平,在这个定时器T0的中断当中起动定时器T1,而这个T1是让IO口输出低电平,这样改变定时器T0的初值就可以改变频率,改变定时器T1的初值就可以改变占空比。
用一个定时器时(如定时器T0),首先你要确定PWM的周期T和占空比D,确定了这些以后,你可以用定时器产生一个时间基准t,比如定时器溢出n次的时间是PWM的高电平的时间,则D*T=n*t,类似的可以求出PWM低电平时间需要多少个时间基准n'。
因为这里我们是产生周期为1ms(1000HZ)的PWM,所以可设置中断的时间基准为0.01ms,,然后中断100次即为1ms。在中断子程序内,可设置一个变量如time,在中断子程序内,有三条重要的语句:1、当time>=100时,time清零(此语句保证频率为1000HZ),2、当time>n时(n应该在0-100之间变化开),让单片相应的I/O口输出高电平,当time<n时,让单片相应的I/O口输出低电平,此时占空比就为%n。
参考资料:http://wenku..com/link?url=-Q74XVCQtStw6zJYtmlveX_O4_p3CkaHS-KIbWcgOIwQVMGTOGUi

‘叁’ 用51单片机同时实现四路PWM波,(C语言)

定个时间20ms周期的定时器,然后在定时器到达那些点的时候,让自己设的那些变量依次变化。 再根据自己的变量,付给输出端口就可以了。 看着像舵机的

看了你追问的,原来是四路每一路都产生变化的波形。那个也好办。可以通过计算,把这几个波形统一起来成一个周期,比如开始0.5ms到了,让定的值取反,再加19.5再取反,再加1.3Ms再取反,再加18.7ms再取反...然后一直这样把几个都写完。
还有种方法,来改变第一个pwm的设定值。比如放数组里一共5个设定值,分别代表你设定的高电平时间,依次替换第一个定时器里面的中端时间即可。
当然,前两种都差不多,还有一种方法供你扩展:就是用两个定时器,然后按照时间去匹配修改。当然,51单片机那精度就不说了,不太确信可以达标,一个定时器进中断了,另一个就要停一下。。
BTW,个人感觉51的单片机没有很好的pwm模块,这样写了Pwm程序,别的就干不了了。建议用用带epwm模块的mcu,直接调用epwm和epwm中断,节省cpu资源,可以多写很多程序。

阅读全文

与51单片机pwm波相关的资料

热点内容
应用市场下载在哪个文件夹 浏览:893
安卓上的谷歌地图怎么用 浏览:181
安卓命令行打包 浏览:514
编程文字与数字教学视频 浏览:815
如何看手机号码注册哪些app 浏览:411
linux查看总内存 浏览:850
python进程间共享 浏览:436
js如何获取本地服务器地址 浏览:68
gfx什么时候支持安卓十一系统 浏览:939
压缩机90兆帕 浏览:928
程序员调侃语句 浏览:579
不是php函数的是 浏览:998
压缩文件好处 浏览:785
3d266期神童三胆计算法 浏览:189
通过爱思助手怎么下载app 浏览:323
vi命令将文件创在桌面上 浏览:923
程序员做竞价 浏览:697
江苏中小学编程纳入课程 浏览:732
单纯形法包括动态规划算法 浏览:951
cpdf百度网盘 浏览:671