器进行操作,。 3.2 方案选择
上述两种方案相比,51单片机虽然价格便宜,但是其功能简单,I/O口少,并且仅仅只有5个中断源,而STM32f03C8T6共48个引脚,并且其定时器有PWM输出模式,可以更加方便的控制蜂鸣器的发音。本次设计包括了七个按键,数码管,蜂鸣器,因此至少需要17个I/O口。因此先比较而言选用I/O口较多的STM32f03C8T6来作为控制芯片。
四、系统设计
4.1 硬件结构设计
如图4-1所示,硬件系统主要由数码管显示电路、蜂鸣器驱动电路、按键电路、晶振、复位、电源指示、转压电路、控制芯片等组成。
图4-1 硬件系统图
4.1.1 核心控制器硬件电路
核心控制芯片的各个输出引脚如图4-2所示:
6
图4-2 STM32f103C8T6引脚图
核心控制器是由核心控制芯片以及相关的外围电路组成,包括了专业电路、外部晶振、滤波电路、按键复位电路、电源指示电路等,如图4-3所示。
图4-3核心控制器外围电路
4.1.2 蜂鸣器驱动电路
此次设计选用有源蜂鸣器。有源蜂鸣器的发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发音,因此需要一定的电流才能驱动它。单片机的I/O引脚的输出电流比较小输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路,如图4-4所示,选用NPN的三极管来达到电流放大的作用。
7
图4-4 蜂鸣器驱动电路
4.1.3 数码管电路:
设计中需要使用一位数码管,如图4-5所示,为四位数码管的驱动电路,在实际的运用中仅仅选用了com4位选端口以及5、6、7、8、9、10、11、接口作为段选。
图4-5 数码管显示电路
4.1.4按键电路:
按键都采用了上拉电阻,当按键处于不被按下的状态时,连接到单片机的一端的输入信号为高电平,当按键按下时,输入为低电平,如图4-6所示。
8
图4-6 按键电路
4.2 软件系统设计 4.2.1 软件系统框图
设计选用STM32F103C8T6芯片,相关的配置主要包括:,时钟配置、I/O口配置、定时器配置。主函数中进行显示参数以及PWM输出频率的改变,具体流程图如图4-7所示。
图4-7 软件流程图
4.2.2 数码管显示相关段选计算:
9
在此次设计中选用的是共阴极的数码管,段选为高电平有效,位选为低电平有效。选用STM32f103C8T6的PB0、1、2、.10、11、12、13、14作为段选位,分别对应数码管的h、g、f、e、d、c、b、a段,PB15对应数码管的位选。
图4-8 一位数码管
当数码管显示0时,选用a、b、c、d、e、f、.段,对应的十六进制为:0x7c04; 当数码管显示1时,选用b.、c.段,对应的十六进制为:0x7c04;
当数码管显示2时,选用a、b、g、e、d.段,对应的十六进制为:0x7c04; 当数码管显示3时,选用a、b、g、c、d.段,对应的十六进制为:0x7c04; 当数码管显示4时,选用f、g、b、c.段,对应的十六进制为:0x7c04; 当数码管显示5时,选用a、f、g、c、d段,对应的十六进制为:0x7c04; 当数码管显示6时,选a、f、e、g、d、c.段,对应的十六进制为:0x7c04; 当数码管显示7时,选用a、b、c.段,对应的十六进制为:0x7c04;
4.2.3 蜂鸣器发音音调改变原理
蜂鸣器分为有源蜂鸣器合无源蜂鸣器。有源蜂鸣器内部带震荡源,所以只要一通电就会叫,价格比无源贵。无源蜂鸣器必须用2K-5K的方波去驱动它。此次设计选用有源蜂鸣器。有源蜂鸣器的发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发音,因此需要一定的电流才能驱动它。单片机的I/O引脚的输出电流比较小输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。如图4-4所示蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻R1后由单片机引脚控制,当单片机引脚输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当单片机引脚输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序控制引脚的电平来使蜂鸣器发出声音和关闭。
蜂鸣器是的音调改变实际上是通过改变驱动蜂鸣的高低电平的翻转频率来决定,高
10