AT89C51单片机的多音阶电子琴_第1页
AT89C51单片机的多音阶电子琴_第2页
AT89C51单片机的多音阶电子琴_第3页
AT89C51单片机的多音阶电子琴_第4页
AT89C51单片机的多音阶电子琴_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、多音阶电子琴设计报告成员:肖毅成员:肖毅 李为民李为民 杨芳杨芳 何燕何燕 鉴于单片机强大的控制功能和灵鉴于单片机强大的控制功能和灵活的编程实现特性,本设计以活的编程实现特性,本设计以AT89S51AT89S51单片机为核心控制元件,单片机为核心控制元件,设计一个由设计一个由4 X 44 X 4组成组成1616个按键矩个按键矩阵,构成阵,构成1616个音阶,可以随意弹个音阶,可以随意弹奏想要表达的音乐的多音阶电子奏想要表达的音乐的多音阶电子琴。琴。 目录单片机单片机电子琴组成框图电子琴组成框图电路原理图电路原理图各模块的简单介绍各模块的简单介绍软件设计软件设计硬件及软件的调试硬件及软件的调试总

2、结总结多音阶电子琴的主要电路主要由4 X 4按键矩阵电路、蜂鸣器、LED显示、复位电路、晶振电路、电源电路几部分组成。一、一、单片机电子琴组成框图单片机电子琴组成框图二、电路原理图二、电路原理图工作原理:工作原理:根据方案的要求,将程序写入STC89C51单片机芯片。利用不同的音阶的频率不一样,用单片机来模拟电子琴,可以使单片机的定时器工作在计数器模式下,工作方式设为方式1,改变TH0和TL0来产生不同的频率,从而产生不同的音阶。 P1口接4*4矩阵键盘行和列,用行扫描法读取P1口外接的键盘,若有键按下:双位数码显示管显示0116;若没有键按下则显示00,当按下复位键的开关后,双位数码显示管显

3、示00。单片机P3.7作为音频放大电路的输入。电电子子琴琴最小系统最小系统电源电路电源电路控制系统控制系统矩阵按键矩阵按键独立独立按键按键显示系统显示系统LED显示显示发声系统发声系统蜂鸣器蜂鸣器时钟电路时钟电路复位电路复位电路AT89S51 AT89S51 是一个低功耗,是一个低功耗,高性能高性能CMOS CMOS 8 8 位单片机,片内含位单片机,片内含 4kB4kB的的可擦可擦 除的除的Flash ROMFlash ROM,兼容兼容标准标准 MCS-51 MCS-51 指令系统及指令系统及 80C5180C51引脚结引脚结构构,功能功能强大的强大的微型计算微型计算AT89S51 AT89

4、S51 可为许多嵌入式控制应用系统提供可为许多嵌入式控制应用系统提供高性价比的解决方案。高性价比的解决方案。 AT89S51 AT89S51 具有如下特点:具有如下特点:40 40 个引个引脚,脚,4kB 4kB Flash Flash 片内程序存储器,片内程序存储器,128B128B的的随机存取数据随机存取数据存储器存储器,32,32个个外部外部I/OI/O口口,5,5个中断优先级个中断优先级,2 ,2 层中层中断嵌套中断,断嵌套中断,2 2 个个16 16 位可编程定位可编程定时计数器时计数器,2 ,2 个全双工串行个全双工串行通信口通信口, ,片片内时钟振荡器。内时钟振荡器。 VCC:供

5、电电压 GND:接地 P0 口: P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH 编程时,P0 口作为原码输入口,当FIASH 进行校验时,P0 输出原码,此时P0 外部必须被拉高。 P1 口: P1 口管脚写入1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH 编程和校验时,P1 口作为第八位地址接收。 P2 口: 当P2 口被写1时,其管脚被内部上拉电阻拉高,且作为输入。 P2 口当用于外部程序存储器或16 位地址外部数据存储器进行存取时,P2 口输出地址的高八位。P2 口在 FLASH 编程

6、和校验时接收高八位地址信号和控制信号。 P3 口:P3 口管脚是8 个带内部上拉电阻的双向I/O 口,可接收输出4 个TTL 门电流。当P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。 电源电路电源电路工作过程:工作过程:本设计,开发板采用5v12v的直流电,当按下电源开关,发光二极管有电流通过,二极管发光,使整个电路板通电,为了防止电流反灌,加了一个二极管,保护三端稳压器。时钟电路时钟信号的产生在在MCS-51MCS-51系列单片机内部有一个高增益反相放大电路,系列单片机内部有一个高增益反相放大电路,其

7、输入引脚为其输入引脚为XTAL1XTAL1其输出引脚为其输出引脚为XTAL2XTAL2。只要在。只要在XTAL1XTAL1和和XTAL2XTAL2之间跨接晶体之间跨接晶体振荡器和微调电容,振荡器和微调电容,就可以构成一个稳定的自激震荡器就可以构成一个稳定的自激震荡器时序概念有4个,分别为:时时 序序节拍节拍状态状态机器周期机器周期指令周期指令周期节拍把把振荡脉冲得周期定义为节拍,用振荡脉冲得周期定义为节拍,用P P表示,也就是晶振的频率表示,也就是晶振的频率状态振荡脉冲经过二分频后,就是单片机时钟信号的周期,定义为状态,用振荡脉冲经过二分频后,就是单片机时钟信号的周期,定义为状态,用S S表示

8、表示一个状态包含两个节拍一个状态包含两个节拍机器周期MCS-51MCS-51系列单片机采用定时控制方式,有固有的机器周期。规定一个系列单片机采用定时控制方式,有固有的机器周期。规定一个机器周期的宽度为机器周期的宽度为6 6个状态个状态指令周期一条指令所需要的时间称为指令周期。是最大的时序定时单位,它由若干个机器一条指令所需要的时间称为指令周期。是最大的时序定时单位,它由若干个机器周期组成,一般包含一个机器周期的指令叫周期指令,包含两个为双周期指令周期组成,一般包含一个机器周期的指令叫周期指令,包含两个为双周期指令RST(pin 9)引脚是复位信号的输入端。此引脚高电平有效,其有效时间应为二个机

9、器周期。 复位信号及其产生 复位信号的电路逻辑图复位信号的电路逻辑图 复位操作 上电自动复位 按键手动复位 上电自动复位将外部复位电路的电容充电就可以实现上电自动复位了,如下图所示。按键手动复位按键手动复位 电平方式电平方式 脉冲方式脉冲方式 按键电平复位通过RST端经电阻与电源Vcc接通而实现的利用RC微分电路产生的正脉冲来实现按键脉冲复位脉冲方式本系统的复位电路采用的是按键方式。电阻为10K,电容为10uF、晶振为12MHz,如下图:本系统采用的是非编码键盘中的矩阵键盘。矩阵键盘也称为行列式键盘,一般用于按键数目较多的场合。它是由行和列组合而成,一组是行线,另一组是列线,按键就位于行和列的

10、交叉点。如图8所示,一个4*4的矩阵键盘,有16个按键,我们分别用着16个键来模拟电子琴的按键:低音 3、 4、 5、 6、 7;中音 1、 2、 3、 4、 5、 6、 7 ;高音 1、 2、 3、 4 。较独立键盘而言,矩阵式键盘节省了I/O口线。 扫描过程先把某一列置为低电平,其他的各列均为高电平,然后检查各行线的变化,若某行线为低电平,则可以确定被按下的键处于此行此列的交叉点上键盘控制电路(一):(一):4 4* *4 4矩阵键盘原理接线图矩阵键盘原理接线图4 4* *4 4矩阵键盘模块矩阵键盘模块void void saomiaosaomiao()() ucharuchar Key_

11、Temp1, Key_Temp2; / Key_Temp1, Key_Temp2; /* *读出的键值读出的键值* */ / Key_Temp1 = Key_Temp1 = KeyscanKeyscan(); /(); /* *读入按键读入按键* */ /if(Key_Temp1 != 16) /if(Key_Temp1 != 16) /* *有键按下有键按下* */ /delay_msdelay_ms(5); /(5); /* *延时消抖延时消抖* */ / Key_Temp2 = Key_Temp2 = KeyscanKeyscan(); /(); /* *再读一次再读一次* */ / i

12、f (Key_Temp1 = Key_Temp2) / if (Key_Temp1 = Key_Temp2) /* *两次相等两次相等* */ / Key_ValueKey_Value = Key_Temp1; / = Key_Temp1; /* *就确认下来就确认下来* */ /FreqTempFreqTemp = = FreqtabFreqtab Key_ValueKey_Value; /; /* *根据键值,取出定时半周期的初始值根据键值,取出定时半周期的初始值* */ /TR0 = 1; /TR0 = 1; /* *启动定时器,发音启动定时器,发音* */ / while ( whil

13、e (KeyscanKeyscan() 16); /() 16); /* *等待释放等待释放* */ / SPK = 1; SPK = 1; / /* *停止发音停止发音* *TR0 = 0; /TR0 = 0; /* *暂不发音暂不发音* */ / 4*4矩阵键盘扫描软件模块数码管能在低电压、小电流驱动下发光,能够与数码管能在低电压、小电流驱动下发光,能够与CMOSCMOS、TTLTTL电路兼容。它的发光响应时间非常短,通电路兼容。它的发光响应时间非常短,通常小于常小于0.1s0.1s,其高频特性好,单色性好,亮度比较,其高频特性好,单色性好,亮度比较高。高。LEDLED使用寿命很长,通常在

14、使用寿命很长,通常在1010万小时以上,甚至万小时以上,甚至可以达到可以达到100100万小时以上,且其成本很低。万小时以上,且其成本很低。LEDLED数码数码管已被广泛运用于计算机的数显器件、数控装置等管已被广泛运用于计算机的数显器件、数控装置等等等根据根据LEDLED数码管显示位数的多少,可以把数码管划分数码管显示位数的多少,可以把数码管划分为一位、双位、多位为一位、双位、多位LEDLED数码管显示器。一位的数码管显示器。一位的LEDLED我们通常称为我们通常称为LEDLED数码管,两位以上(包括两位)我数码管,两位以上(包括两位)我们一般称为显示器。双位们一般称为显示器。双位LEDLED

15、显示器是把两只数码管显示器是把两只数码管封装成一体,它亮度均匀,一致性好,光衰低,可封装成一体,它亮度均匀,一致性好,光衰低,可靠性高而且结构紧凑、成本比较低(与两只一位的靠性高而且结构紧凑、成本比较低(与两只一位的数码管相比较)。数码管相比较)。本次设计采用的是七段多位的数码显示器,通过矩阵键盘控制显示每个键的键值,当没有键按下时,显示00,当按下第一个按键时,显示01,、当按下第16个按键时 ,显示16.该芯片相当于一个具有三态输出的八路该芯片相当于一个具有三态输出的八路D D型透型透明锁存器,它的电源工作电压范围为明锁存器,它的电源工作电压范围为4.5v-4.5v-5.5v5.5v,在工

16、作电压为,在工作电压为5v5v时时,该,该芯片的芯片的2020脚是脚是电源端,绝对不能悬空,否则该芯片不能正电源端,绝对不能悬空,否则该芯片不能正常常工作工作, ,如下图:如下图:VCC:电源端GND:接地端1D-8D/1Q-8Q:芯片输入与输出端口(I/O口)OE:输出允许信号端LE:锁存允许信号端uchar code tabledu=uchar code tabledu=0 x3f,0 x06,0 x5b,0 x4f,0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x

17、77,0 x7c,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;/0 x39,0 x5e,0 x79,0 x71;/建立数码管显示数据建立数码管显示数据void Display()void Display() shiwei=0;P0=tabledu(Key_Value+1)/10;delay_ms(5);shiwei=1;P0=0shiwei=0;P0=tabledu(Key_Value+1)/10;delay_ms(5);shiwei=1;P0=0 x00;x00;gewei=0;P0=tabledu(Key_Value+1)%10;dela

18、y_ms(5);gewei=1;P0=0 x0gewei=0;P0=tabledu(Key_Value+1)%10;delay_ms(5);gewei=1;P0=0 x00;0;/使数码管从使数码管从0000显示到显示到1616发声系统发声系统用用蜂鸣器蜂鸣器来作为发声元件,用来作为发声元件,用达林顿管来达林顿管来驱动蜂鸣器发声。驱动蜂鸣器发声。达林顿管就是两个三极管接在一起,极性只认达林顿管就是两个三极管接在一起,极性只认前面的三极管。具体接法如下,以两个相同极前面的三极管。具体接法如下,以两个相同极性的三极管为例,前面三极管性的三极管为例,前面三极管集电极集电极跟后面三跟后面三极管集电极相

19、接,前面三极管发射极跟后面三极管集电极相接,前面三极管发射极跟后面三极管基极相接,前面极管基极相接,前面三极管三极管功率一般比后面三功率一般比后面三极管小,前面三极管基极为达林顿管基极,后极管小,前面三极管基极为达林顿管基极,后面三极管发射极为达林顿管发射极,用法跟三面三极管发射极为达林顿管发射极,用法跟三极管一样,放大倍数是两个三极管放大倍数的极管一样,放大倍数是两个三极管放大倍数的乘积。乘积。引脚引脚1:CPU脉冲输入端,端口对应一个信号输出端。脉冲输入端,端口对应一个信号输出端。引脚引脚2:CPU脉冲输入端。脉冲输入端。引脚引脚3:CPU脉冲输入端。脉冲输入端。引脚引脚4:CPU脉冲输入

20、端。脉冲输入端。引脚引脚5:CPU脉冲输入端。脉冲输入端。引脚引脚6:CPU脉冲输入端。脉冲输入端。引脚引脚7:CPU脉冲输入端。脉冲输入端。引脚引脚8:接地。:接地。引脚引脚9:该脚是内部:该脚是内部7个续流二极管负极的公共端,各二极管的正极分别接个续流二极管负极的公共端,各二极管的正极分别接各达林顿管的集电极。用于感性负载时,该脚接负载电源正极,实现续流各达林顿管的集电极。用于感性负载时,该脚接负载电源正极,实现续流作用。如果该脚接地作用。如果该脚接地,实际上就是达林顿管的集电极对地接通。实际上就是达林顿管的集电极对地接通。引脚引脚10:脉冲信号输出端,对应:脉冲信号输出端,对应7脚信号输

21、入端。脚信号输入端。引脚引脚11:脉冲信号输出端,对应:脉冲信号输出端,对应6脚信号输入端。脚信号输入端。引脚引脚12:脉冲信号输出端,对应:脉冲信号输出端,对应5脚信号输入端。脚信号输入端。引脚引脚13:脉冲信号输出端,对应:脉冲信号输出端,对应4脚信号输入端。脚信号输入端。引脚引脚 14:脉冲信号输出端,对应:脉冲信号输出端,对应3脚信号输入端。脚信号输入端。引脚引脚15:脉冲信号输出端,对应:脉冲信号输出端,对应2脚信号输入端。脚信号输入端。引脚引脚16:脉冲信号输出端,对应:脉冲信号输出端,对应1脚信号输入端脚信号输入端本系统主要是要实现由单片机控本系统主要是要实现由单片机控制的简单的

22、音乐发生器,矩阵键制的简单的音乐发生器,矩阵键盘代表盘代表1616个不同的音阶,用户可个不同的音阶,用户可以根据乐谱在键盘上弹奏出音乐以根据乐谱在键盘上弹奏出音乐,通过蜂鸣器将音乐播放出来。,通过蜂鸣器将音乐播放出来。音乐发声程序流程图音乐发声程序流程图 主主程程序序流流程程图图T0中中断断服服务务程程序序流流程程图图#include #include #define uint unsigned int #define uchar unsigned charsbit SPK = P37; /*P3.7外接扬声器*/sbit shiwei = P26;sbit gewei = P27;uint

23、FreqTemp;char Key_Value=-1;uchar code tabledu=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;unsigned int code Freqtab = /*定时半周期的初始值*/ 64021,64103,64260,64400, /*低音3 4 5 6*/ 64524,64580,64684,64777, /*低音7,中音1 2 3*/ 64820,64898,64968,65030, /*中音4 5 6 7

24、*/65058,65110,65157,65178; /*高音1 2 3 4*/void delay_ms(uint z)uint x,y;for(x=z;x0;x-)for(y=123;y0;y-);电子琴源程序: /*函数功能 : 用扫描法读 P1 外接 44 键盘*/*函数返回 : 有按下键:返回115、如无键按下:返回00*/uchar Keyscan(void) uchar i, j, temp, Buffer4 = 0 xfe, 0 xfd, 0 xfb, 0 xf7; for(j = 0; j 4; j+) /*循环四次,扫描四行*/ P1 = Bufferj; /*在低四位分别

25、输出一个低电平*/_nop_(); temp = 0 x80; /*计划先读出P1.7位*for(i = 0; i = 1; return 16; /*没有键按下就返回00*/ /*函数功能 : 将参数分成十位、个位,分别显示到P2 */ void Display()shiwei=0;P0=tabledu(Key_Value+1)/10;delay_ms(5);shiwei=1;P0=0 x00;gewei=0;P0=tabledu(Key_Value+1)%10;delay_ms(5);gewei=1;P0=0 x00;void saomiao()uchar Key_Temp1, Key_T

26、emp2; /*读出的键值*/Key_Temp1 = Keyscan(); /*读入按键*/if(Key_Temp1 != 16) /*有键按下*/ delay_ms(5); /*延时消抖*/Key_Temp2 = Keyscan(); /*再读一次*/if (Key_Temp1 = Key_Temp2) /*两次相等*/ Key_Value = Key_Temp1; /*就确认下来*/FreqTemp = FreqtabKey_Value; /*根据键值,取出定时半周期的初始值* TR0 = 1; /*启动定时器,发音*/ while (Keyscan() 8; SPK = SPK; /*发音*/硬件的调试主要是把电路各

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论