270 likes | 421 Views
项目三 简易电子琴的制作. [ 项目学习目标 ]. 一、知识目标 1. 了解令蜂鸣器产生声音的方法,理解硬件设计的思路与工作原理。 2. 学习利用汇编语言编写简单发声、变频报警等程序的方法。 3. 了解电子琴程序设计中,决定延时参数的方法。 二、技能目标 1. 能独立完成利用单片机实验箱实现蜂鸣器简单发声、变频报警以及简 易电子琴制作调试。。. 任务一 利用软件延时的方法,使蜂鸣器发出 1KHz 的响声. 活动 1: 硬件设计. 1. 产生声音的方法.
E N D
项目三 简易电子琴的制作 [项目学习目标] 一、知识目标 1.了解令蜂鸣器产生声音的方法,理解硬件设计的思路与工作原理。 2.学习利用汇编语言编写简单发声、变频报警等程序的方法。 3.了解电子琴程序设计中,决定延时参数的方法。 二、技能目标 1.能独立完成利用单片机实验箱实现蜂鸣器简单发声、变频报警以及简 易电子琴制作调试。。
任务一 利用软件延时的方法,使蜂鸣器发出1KHz的响声 活动1:硬件设计 1.产生声音的方法 让蜂鸣器(Speaker)产生声音的方法很简单,只要让蜂鸣器通过会产生大小变化的电流(脉动电流或交流),就能使蜂鸣器发出声音。因此若以程序不断地输出1010……就可以使蜂鸣器发出声音。由于MCS-51系列单片机的输出端口(并口)的输出电流不够大,所以必须加上三极管的电流放大后,再驱动扬声器。
任务一 利用软件延时的方法,使蜂鸣器发出1KHz的响声 活动1:硬件设计 2.设计思路 可利用单片机并口P3的任意引脚(此处选用P3.4)通过限流电阻R(可选1KΩ)与三极管基极连接,三极管的集电极连接蜂鸣器,而三极管的发射极连接+5V电源。如图3-1-1简单发声电路所示。
任务一 利用软件延时的方法,使蜂鸣器发出1KHz的响声 活动1:硬件设计 3.工作原理 当单片机的P3.4引脚电平为低电平0时,三极管饱和导通(相当于开关闭合),蜂鸣器有电流流过。而当P3.4引脚为高电平1时,三极管截止(相当于开关断开)蜂鸣器就没有电流流过。此时,在蜂鸣器的两端就会产生高低变换波动的电流,如此波动的电流就会使蜂鸣器发声。 因此本活动可采用软件延时的方法,先使单片机产生1KHz的方波,然后通过P3.4引脚来控制三极管的导通或截止,使接在三极管上的蜂鸣器发出1KHz的响声。
任务一 利用软件延时的方法,使蜂鸣器发出1KHz的响声 活动2:程序设计 1.流程图 汇编语言程序流程如图3-1-2所示
任务一 利用软件延时的方法,使蜂鸣器发出1KHz的响声 活动2:程序设计 2.汇编语言源程序 汇编语言编写的简单发声源程序如下
任务一 利用软件延时的方法,使蜂鸣器发出1KHz的响声 活动3:用单片机实验箱进行仿真实验 1.使用单片机最小应用系统。关闭该模块电源,用数据线连接单片机P3.4口与蜂鸣器模块相连。如图3-1-3所示。
任务一 利用软件延时的方法,使蜂鸣器发出1KHz的响声 活动3:用单片机实验箱进行仿真实验 2.将仿真器的USB接口接入电脑,目的是给仿真器提供电源,此时仿真器上的POWER灯点亮。用串行数据通信线连接计算机与仿真器。 3.把仿真器插到模块锁紧插座中,注意仿真器的方向:缺口朝上。如图3-1-5所示。
任务一 利用软件延时的方法,使蜂鸣器发出1KHz的响声 活动3:用单片机实验箱进行仿真实验 4.打开KeiluVision2仿真软件,首先建立本项目的项目文件,接着添加简单发声的源程序,进行编译,直到编译无误。 5.右击“Target 1”点击Options for Target‘Target 1’进行软件设置,选择Debug选项。点击“Use Keil Monitor-51 Driver进行硬件仿真。点击Settings按扭,选择串行口,设置波特率为38400,点击OK按扭。 6.打开模块电源和总电源,点击开始调试按扭,点击RUN按钮运行程序,观察蜂鸣器模块的运行情况。 注意:做完本任务时记得养成一个好习惯,把实验箱上相应单元的短路帽和电源开关还原到原来的位置!
经验总结: 用单片机实现简单发声的原理很简单,只要使单片机I/O引脚不断地产生方波,三极管就会不断地导通和截止,使峰鸣器发出声音。本活动中,控制方波的频率就能控制蜂鸣器的发声频率。在本程序中,单片机I/O引脚产生方波的频率是由软件延时的时间决定的,读者也可改变一下延时时间再测试,注意体会延时时间与声音变化的关系。
技能拓展: 利用软件延时的方法,使P3.4端口输出1KHz与2KHz的变频信号,每隔1S交替变换1次,实现变频报警。 活动1:硬件设计(同上) 活动2:程序设计 1.流程图 汇编语言程序流程如下图所示
技能拓展: 活动2:程序设计 2.汇编语言源程序 汇编语言编写的简单发声源程序如下
技能拓展: 活动3:用单片机实验箱进行仿真实验(同上) 经验总结: 该程序语句不多,但循环程序使用较多。编程时要弄清每次循环的意图,以便更好地理解该程序。用单片机实验箱进行仿真实验时,应注意声音频率的变化以及频率变化的时间。本程序开始时是先发生1KHz的声音,持续1s,然后接着发生2KHz的声音,也持续1s,不断循环后产生了变频报警声。读者可以改变程序中延时子程序DELAY1或DELAY2的延时时间,观察声音的变化。或改变程序中R1、R3的值,观察发声长度的变化,从而加深对变频报警声产生原理的理解。
任务二 用按钮实现电子琴的制作 活动1:学习电子琴中各音阶频率所对应的延时参数的设定方法 1.各音阶频率表 电子琴中各音阶的频率如下表3-2-1所示,根据此频率表,读者可以计算出程序中所需的延时参数。
任务二 用按钮实现电子琴的制作 活动1:学习电子琴中各音阶频率所对应的延时参数的设定方法 2.中音DO的程序编写 中音DO的频率经查表可知为262HZ,所以周期 T=1/f=1/262S=3816us,半个周期若用t表示的话,t=T/2=1908us。
任务二 用按钮实现电子琴的制作 活动1:学习电子琴中各音阶频率所对应的延时参数的设定方法 特别注意: 其它音调所需的R6值,算法一样读者可自行练习计算。 公式为R6=(t-9us)/15。可将该公式继续推导得到R6=(500000/f-9)/15。 在设计电子琴的实际情况下,程序必须不断地去判断是哪一个键被按下,所以程序中还有其他的指令在消耗时间。因此实际采用的R6的值理论上应比上述的计算值要少一点,这样电子琴所产生的音阶才会更准确。但是要把R6计算的很准确而使音阶非常准确,非常浪费时间,除此之外判断按键的状态本身所耗的时间与周期T比起来实在微不足道,所以在电子琴的程序设计时,只采用上述公式计算出R6值即可,而利用程序判断按键所耗费的时间,我们可以忽略不计。
任务二 用按钮实现电子琴的制作 活动2:制作一个电子琴,共有11个按键,可产生低音 SO LA SI、中音DO RE MI FA SO LA Si以及高 音DO这11个音阶。 1.硬件设计 电路如下图3-2-2所示。
任务二 用按钮实现电子琴的制作 活动2:制作一个电子琴,共有11个按键,可产生低音 SO LA SI、中音DO RE MI FA SO LA Si以及高 音DO这11个音阶。 2.程序流程图 如下图3-2-3所示。
任务二 用按钮实现电子琴的制作 活动2:制作一个电子琴,共有11个按键,可产生低音 SO LA SI、中音DO RE MI FA SO LA Si以及高 音DO这11个音阶。 3.程序设计 如下图3-2-4所示。
任务二 用按钮实现电子琴的制作 活动2:制作一个电子琴,共有11个按键,可产生低音 SO LA SI、中音DO RE MI FA SO LA Si以及高 音DO这11个音阶。 程序说明: JNB为条件转移指令,它是依某种特定条件转移的指令。条件满足才转移(相当于执行一条相对转移指令),条件不满足时则顺序执行下面的指令。 JNB指令的格式为:JNB bit,rel。它的意思是如果直接寻址的位地址的值为0,则执行转移;如果直接寻址的位地址的值为1,则顺序执行下面的指令。
任务二 用按钮实现电子琴的制作 活动3:用单片机实验箱进行仿真实验 (1)使用单片机的最小应用系统。关闭该模块电源,用数据线连接单片机蜂鸣器的模块,同时用扁平数据线连接单片机的并口P1与P3。如图3-2-4所示。
任务二 用按钮实现电子琴的制作 活动3:用单片机实验箱进行仿真实验 (2)将仿真器的USB接口接入电脑,目的是给仿真器提供电源,此时仿真器上的POWER灯点亮。用串行数据通信线连接计算机与仿真器。(3)把仿真器插到模块锁紧插座中,注意仿真器的方向:缺口朝上。如图3-2-5所示。
任务二 用按钮实现电子琴的制作 活动3:用单片机实验箱进行仿真实验 (4)打开KeiluVision2仿真软件,首先建立本项目的项目文件,接着添加电子琴控制源程序,进行编译,直到编译无误。 (5)右击“Target 1”点击Options for Target‘Target 1’进行软件设置,选择Debug选项。点击“Use Keil Monitor-51 Driver进行硬件仿真。点击Settings按扭,选择串行口,设置波特率为38400,点击OK按扭。 (6)打开模块电源和总电源,点击开始调试按扭,点击RUN按钮运行程序,并参考下面生日快乐歌的乐谱,如图3-2-6所示进行演奏。
技能拓展: 当需要较大音量的电子琴时,可将上述单片机硬件电路图稍作修改如下图3-2-7所示。
项目小结 本项目以简易电子琴的制作为例介绍了如何利用AT89S51单片机实现蜂鸣器发声的基本方法以及结合单片机实验箱实现电子琴中各音阶发音的技巧,读者应注意以下几个方面: 1、蜂鸣器需通过变化的电流,才能使其发出声音,而单片机输出端口的输出电流不够大,必须加上三极管将电流放大后,再驱动扬声器。 2、单片机输出引脚产生脉冲的频率是由程序中软件延时的时间决定的,可改变延时时间再测试,体会延时时间与声音变化的关系。
思考与练习 1.简述用单片机产生声音的方法。 2.画出单片机简单发声电路图,并分析其工作原理。 3.写出各音阶所对应的高音、中音、低音的频率表。 4.画出具有11按键的电子琴单片机控制电路原理图。 5.当电子琴需要较大音量时,该如何处理?