《基于STC15F104W的互补PWM输出器》
1.所需器件:
(1)单片机:STC15F104W。
①最小系统板链接:【淘宝】https://m.tb.cn/h.5WnLl9X?tk=qSGrdCWm0PW「STC15F104W STC15W204S单片机模块 系统板 核心板 学习板 开发板」点击链接直接打开 或者 淘宝搜索直接打开
②系统板:LED接P3.3,按键接P3.2
(2)微秒B转TTL调试线或者模块。
2.烧录方式:
(1)板载TTL电平串口,RXD(连接至P3.0)及TXD(连接至P3.1),5V供电,GND接GND
(2)使用STC系列烧录软件:软件在项目文件夹中
3.功能需求:
(1)输出一对频率为20KHz,占空比为50%的互补PWM波
4.代码说明:
(1)均在代码注释中
(2)算法说明:
周期(秒)= 1 / 频率(赫兹)
周期(毫秒)= 周期(秒) * 1000
1.频率为20KHz,占空比为:50%
20KHz对应的周期是0.00005秒 = 0.05毫秒,当占空比为50%的时候说明高低电平分别持续了0.025毫秒 = 25微秒。
所以我们只需要让定时器每隔25微秒中断一次就行。
把以上红框这俩行复制粘贴到源代码中即可。
2.频率为15KHz,占空比为:50%
15KHz对应的周期是0.00006667秒 =0.0667毫秒,当占空比为50%的时候说明高低电平分别持续了0.03335毫秒 ≈ 33微秒。
所以我们只需要让定时器每隔33微秒中断一次就行。
把以上红框这俩行复制粘贴到源代码中即可。
3.频率为15KHz,占空比为:45%
15KHz对应的周期是0.00006667秒 =0.0667毫秒
当占空比为45%的时候说明:
高电平持续了0.030015毫秒 ≈ 30微秒。
低电平持续了0.036685毫秒 ≈ 36微秒。
30与36的最大公约数为:6
所以我们只需要让定时器每隔6微秒中断一次就行。
用一个变量来记录进入中断的次数,一个中断就代表时间过去6微秒。
在中断里判断:
当计数值小于等与4(0~4是5个计数,56=30微秒),引脚拉高。
当计数值大于4时,引脚拉低。
当计数值大于10(总过是11个计数,116=66微秒),一个PWM周期已过,重新计数。
说明:
成品设计不易,详情关注闲鱼店铺:数字梦想家,查看评论区。