如何用单片机PWM功能驱动扬声器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用单片机PWM功能驱动扬声器相关的知识,希望对你有一定的参考价值。
注意是用pwm功能驱动扬声器 重点是如何来驱动 说说驱动大体流程就行
如果你的单片机吸入电流强的话不妨用前面的一个,第二个图是肯定通用的,三极管嘛9013就可以了。PWM占空比50%,这里的占空比只是改变发生的强度,改变PWM的频率,其扬声器发出不同的声音,借此我们可以做一个音乐播放器~~
参考技术A PC机上的所有音频文件本来就是数字量,只不过格式不同罢了。PCM文件就是AD转换后得到的二进制数据文件,将PCM加上文件头和文件尾就成了WAV文件。所以PCM文件有两个途径得到:1、通过录音设备。声音经麦克风后得到模拟电流信号,此信号经过放大然后AD得到的数据文件即是PCM文件。2、通过其它格式的音频文件转换。使用一些转换软件可以将其它格式的音频文件转换为PCM文件。PWM信号可看作一个直流信号与锯齿波比较得到的信号,其占空比反映了直流信号的大小,所以PWM经低通滤波之后可以恢复直流信号,直流信号的大小由占空比决定。PWM做语音输出时,其频率是固定的(这个频率决定声调,一般的语音信号取11.025kHz。),然后将PCM文件中的数据作为占空比大小输出PWM波,经低通滤波后驱动扬声器即可得到声音。 参考技术B 将PWM信号加一级三极管驱动,就可以驱动大功率的了。
如何用STM32驱动诺基亚5110显示屏?
关注+星标公众号,不错过精彩内容
转自 | 嵌入式从0到1
早期诺基亚5110显示屏用51单片机驱动的比较多,今天分享一下用STM32驱动诺基亚5110显示屏的方法。
NOKIA 5110 屏
Nokia5110屏是一个非常经典的液晶显示模块,在作者玩单片机的时候,可选的液晶模块并不多,一般来说就是LCD1602、LCD12864,这个Nokia5110屏在我当时来看,是相当高级的一个液晶屏了。
Nokia/诺基亚5110 屏是用在5110、6150,6100 等系列移动电话上的液晶显示模块,国内厂家也生产有类似的兼容产品。
该产品除应用于移动电话外,也可广泛应用于各类便携式设备的显示系统。单片机控制显示,人机交互界面显示,数据采集显示等电子设计场合。
规格参数
工作电压:DC3.3-5.0V
屏幕颜色:单色
分辨率:84*48,字符:6*8字符的话,可以显示6行字符,每行14个字符
通信方式:串行SPI接口
液晶模块:LPH7366
运用场合:单片机检测信息显示,人机交互界面开发等电子设计
外形尺寸:45x43x1.6mm
管脚定义
名称 | 含义 |
---|---|
CLK | 串行时钟线 |
DIN | 串行数据线 |
DC | 数据/指令选择 |
CE | 片选 |
RST | 复位 |
VCC | 电源输入(3.3V和5V均可) |
BL | 背光控制端 |
GND | 地线 |
模块原理图
实际硬件连接
Nokia 5110端 | STM32端 |
---|---|
CLK | PC3 |
DIN | PC2 |
DC | PC1 |
CE | PC0 |
RST | PC5 |
VCC | 3.3V |
BL | 3.3V |
GND | GND |
模块尺寸
程序移植
作者之前用51单片机驱动过这个液晶屏,实际使用只需要五个IO引脚即可驱动。
我们今天就看看,如果网上找不到你所用芯片的例程,只有别的芯片的例程你怎么参考呢?下面咱们就来移植一下。
拷贝驱动文件
将液晶屏的驱动文件拷贝到STM32工程下的HARDWARE目录下,并在STM32的工程中添加文件。
添加GPIO初始化函数
void lcd_gpio_init(void)
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
修改GPIO操作的宏定义
//51单片机
//sbit LCD_RST=P0^0;
//sbit LCD_CE=P0^1;
//sbit LCD_DC=P0^2;
//sbit LCD_DIN=P0^3;
//sbit LCD_CLK=P0^4;
//STM32单片机
#define LCD_RST PCout(5)
#define LCD_CE PCout(0)
#define LCD_DC PCout(1)
#define LCD_DIN PCout(2)
#define LCD_CLK PCout(3)
修改1us的延时
#define Wait1us delay_us(1)
函数调用
//Nokia5110初始化
lcd_gpio_init();
lcd_init();
lcd_clear(); //清屏幕
lcd_string(0,0,"Time:");
编译程序,没有错误,下载程序,发现屏幕中可以正常显示预设内容,证明驱动已经移植成功了。
源码获取/素材获取
公众号后台回复关键字:Nokia5110,获取测试Demo源码。
结果展示
总结
这次测试用的杜邦线,杜邦线虽然方便,但是一碰,屏幕显示输出就没有了,只能重新插拔,复位单片机,很是无语。
另外还要注意,有的时候,杜邦线接触不是很好,在测试程序的时候,首先要保证杜邦线的接触良好,大家不确定的话,可以使用万用表蜂鸣器档,测测每个引脚的两端是否导通。
怎么样?还是挺简单的吧?如果你有STM32的代码,想转为51单片机的代码也是一样的。
------------ END ------------
欢迎关注我的公众号,回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。
欢迎关注我的视频号:
点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。
以上是关于如何用单片机PWM功能驱动扬声器的主要内容,如果未能解决你的问题,请参考以下文章
51单片机 L298驱动2路电机PWM调速+Proteus仿真
基于单片机的智能循迹避障小车STC89C52红外对管L298N驱动PWM波控制速度