HT合泰单片机入门教程(第五章 PWM)

news/2025/2/12 7:52:45/

文章目录

  • 系列文章目录
  • 前言
  • 一、新建工程
  • 二、PWM相关了解
    • 1.PWM了解
    • 2.硬件电路了解
  • 三、PWM实现
    • 1.代码实现
  • 总结


系列文章目录

第一章 HT单片机环境搭建

第二章 点亮第一个LED灯

第三章 按键

第四章 定时器

第五章 PWM

第六章 时基中断

第七章 LCD


前言

PWM 信号把模拟信号转化为数字电路所需要的编码,现在基本是采用数字电路,因此在很多场合都采用 PWM 信号,我们经常见到的就是交流调光电路,也可以说是无级调速,高电平占多一点,也就是占空比大一点亮度就亮一点,占空比小一点亮度就没有那么亮,前提是 PWM 的频率要大于我们人眼识别频率,要不然会出现闪烁现象。(ps:明基出的护眼灯ScreenBar Plus就是用PWM调光外加一个档光板实现的,卖999。)除了在调光电路应用,还有在无源蜂鸣器驱动、电机驱动、逆变电路、加湿机雾化量等都会有应用。

一、新建工程

请参照第二章第一节新建工程
——》第二章 点亮第一个LED灯

二、PWM相关了解

1.PWM了解

PWM指脉冲宽度调制(Pulse Width Modulation),,它是通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编码,也就是说通过调节占空比的变化来调节信号、能量等的变化,占空比就是指在一个周期内,信号处于高电平的时间占据整个信号周期的百分比,例如方波的占空比就是 50%。

1)PWM方波的周期是固定的。无论我们使用单片机、树莓派或者PLC,在让其产生PWM波形之前,都首先要设置波形的周期。比如可以是100ms,也可以是50us等等。一旦该时间值确定,其波形的周期就确定了,不会在波形的产生过程中发生更改,除非你停止PWM功能再次更改周期值;

2)PWM方波的宽度是可以调节的。这里的宽度,是指方波中高电平持续的时间,显然,这个时间的范围是0方波的周期,也就是周期时间的0100%。这种改变方波脉冲宽度的技术,就是脉冲宽度调制(PWM)技术。

比如下面这张图:T是波形的周期,它是固定值;在一个周期中,脉冲的宽度是不同的,有三种:25%、50%和75%,这就是通过PWM技术产生不同脉冲宽度的波形。
PWM

2.硬件电路了解

本章我们将用PWM驱动无源蜂鸣器。无源蜂鸣器利用电磁感应现象,为音圈接入交变电流后形成的电磁铁与永磁铁相吸或相斥而推动振膜发声,接入直流电只能持续推动振膜而无法产生声音,只能在接通或断开时产生声音。
无源蜂鸣器的优点是:
  1.制作成本低
  2.声音频率范围宽,可以做出“多来米发索拉西”的效果(ps:很带音乐播放的小玩具,基本都用PWM驱动无源蜂鸣器实现)
以下为我的开发板硬件电路。
无源蜂鸣器

三、PWM实现

1.代码实现

我们实现的功能:0.5s无源蜂鸣器鸣叫一声。假如你想改变音调,可以尝试改变_tm1rpl 和_tm1al寄存器的值。

#include "HT66F0185.h"/******************************************************************************** @fn		delayMs	* @brief	延时函数* @param	延时时间 单位为ms* @return	无*******************************************************************************/
void delayMs(unsigned long int ms){while(ms--)GCC_DELAY(2000);//主频8Mhz,执行一条指令为0.5us。一条指令周期等于四条机器周期——》 1/8Mhz * 4 = 0.5us
}/******************************************************************************** @fn		pwmInit	* @brief	pwm初始化* @param	无* @return	无*******************************************************************************/
void pwmInit(void){/*设置PA7端口复用功能*/	_pac7 = 0;//设置PA7口为输出_pa7 = 1; //PA7输出高电平_t1cp = 1;//设置引脚为TIM1端口/*设置TM1C1寄存器*/_t1m1 = 1;_t1m0 = 0;//设置为PWM输出模式_t1io1 = 1;_t1io0 = 0;//设置TIM1引脚为PWM输出_t1oc = 1;//引脚输出高电平有效_t1pol = 0;//引脚输出同相_t1cclr = 0;//TIM1使用比较器P/**	其中细心的朋友发现少一个T1DPX的配置。	*	T1DPX:TM1 PWM周期/占空比控制位*		0:CCRP - 周期;CCRA - 占空比*		1:CCRP - 占空比;CCRA - 周期*	我们一般采用默认0。CCRP控制周期 CCRA控制占空比**	以上对TM1C1寄存的配置简写为==》_tm1c1 = 0b10101000*	*//*设置TIM1时钟 = fH / 16 = 500KHz = 2us*/_t1ck2 = 0;_t1ck1 = 1;_t1ck2 = 0;/*设置周期 = fsys / 16 / 125 = 4KHz*/_tm1rpl = 125;_tm1rph = 0;/*设置占空比 = 62 / 125 = 49.6%*/_tm1al = 62;_tm1ah = 0;/*使能定时器*/_t1on = 1;}/******************************************************************************** @fn		main	* @brief	主函数* @param	无* @return	无*******************************************************************************/
void main(){_wdtc = 0b10101000;//关闭看门狗。直接配置看门狗寄存器,0b代表二进制。_acerl=0;//模拟端口关闭/*PWM初始化*/	pwmInit();/*循环*/while(1){_t1on = 0;/*延时500ms*/delayMs(500);_t1on = 1;/*延时500ms*/delayMs(500);}}

工程链接—》PWM


总结

这是定时器的常用功能之一,假如有做电源的小伙伴可得特别注意了。

http://www.ppmy.cn/news/880841.html

相关文章

S5PV210开发 -- 驱动开发相关硬件简介

如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/78485355 到此,开发板已经是算跑起来了。系统移植部分稍后再讲。我们先举两个例子,让LED亮起来、蜂鸣器响起来。 一、LED亮起来 (1)LED 正负…

【STC单片机学习】第十一课:蜂鸣器

【朱老师课程总结 侵删】 第一部分、章节目录 1.11.1.蜂鸣器的原理​​ 1.11.2.让蜂鸣器响起来 1.11.3.用定时器控制蜂鸣器音调 1.11.4.蜂鸣器发出滴滴声 1.11.5.让蜂鸣器唱歌1 1.11.6.让蜂鸣器唱歌2 第二部分、章节介绍 1.11.1.…

stc89c51单片机音乐盒系统设计_基于单片机的音乐盒设计资料 含PCB与原理图,源程序和报告...

1 选题的背景 本次课设是应用单片机原理和控制理论设计音乐演奏控制器的硬件电路,并利用C语言进行程序设计。通过控制单片机内部的定时器来产生不同频率的方波,驱动喇叭发出不同的音调的音乐,在利用延迟来控制发音时间的长短。把乐谱转化成相应的定时常数就可以从发音设备中…

总务部竞赛部联合培训(硬件)

文章目录 一.按键(1)按键介绍(2)上拉输入和下拉输入(2)上拉输入和下拉输入(3)按键抖动和消抖硬件消抖:软件消抖: 二.蜂鸣器&#xff0…

10. 从0学ARM-基于Exynos4412的pwm详解

十一、PWM详解 一、什么是PWM PWM,英文名Pulse Width Modulation,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编码…

AIRS Opencat机器猫

Nybble程序注意事项 (1)串口监视器换行问题 程序框图 (1)WriteInstinct工程框架 主框图 下面是代码块与上述程序流程图中功能对应: writeConst()函数向片上EEPROM写数据(a)(具体的代码在(a)文…

如何用五千块的电脑弹奏出价值十万钢琴的效果

如何用五千块的电脑弹奏出价值十万钢琴的效果 免责声明:本文所涉及资源包括采样器,音源等仅供个人学习交流,商业用途请自行购买正式版本,否则后果自负,本文概不承担一切责任 五千块的电脑?不用纠结&#…

STC学习:可切换内容的电子音乐

程序设计目标及程序运行效果说明 程序设计目标:通过无源蜂鸣器与按键key1、按键key2两外接模块实现电子音乐的播放、暂停、切换功能。 程序运行效果说明:下载程序后,通过按下key1来进行音乐的播放,通过再次按下key1可以暂停音乐的…