AT89C51单片机的多音阶电子琴

上传人:枫** 文档编号:567996515 上传时间:2024-07-23 格式:PPT 页数:45 大小:3.41MB
返回 下载 相关 举报
AT89C51单片机的多音阶电子琴_第1页
第1页 / 共45页
AT89C51单片机的多音阶电子琴_第2页
第2页 / 共45页
AT89C51单片机的多音阶电子琴_第3页
第3页 / 共45页
AT89C51单片机的多音阶电子琴_第4页
第4页 / 共45页
AT89C51单片机的多音阶电子琴_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《AT89C51单片机的多音阶电子琴》由会员分享,可在线阅读,更多相关《AT89C51单片机的多音阶电子琴(45页珍藏版)》请在金锄头文库上搜索。

1、多音阶电子琴设计报告成成员:肖毅:肖毅 李李为民民 杨芳芳 何燕何燕设计方案目录单片机片机电子琴子琴组成框成框图电路原理路原理图各模各模块的的简单介介绍软件件设计硬件及硬件及软件的件的调试总结多音阶电子琴的主要电路主要由4 X 4按键矩阵电路、蜂鸣器、LED显示、复位电路、晶振电路、电源电路几部分组成。电子琴硬件电路部分设计一、一、单片机片机电子琴子琴组成框成框图二、二、电路原理路原理图工作原理:工作原理:根据方案的要求,将程序写入STC89C51单片机芯片。利用不同的音阶的频率不一样,用单片机来模拟电子琴,可以使单片机的定时器工作在计数器模式下,工作方式设为方式1,改变TH0和TL0来产生不

2、同的频率,从而产生不同的音阶。 P1口接4*4矩阵键盘行和列,用行扫描法读取P1口外接的键盘,若有键按下:双位数码显示管显示0116;若没有键按下则显示00,当按下复位键的开关后,双位数码显示管显示00。单片机作为音频放大电路的输入。三、各模块的简单介绍电子子琴琴最小系最小系统电源源电路路控制系控制系统矩矩阵按按键独立按独立按键显示系示系统LED显示示发声系声系统蜂蜂鸣器器时钟电路路复位复位电路路AT89S51单片机及其引脚的简单说明AT89S51 是一个低功耗,高性是一个低功耗,高性能能CMOS 8 位位单片机,片内含片机,片内含 4kB的可擦的可擦 除的除的Flash ROM,兼,兼容容标

3、准准 MCS-51 指令系指令系统及及 80C51引脚引脚结构,功能构,功能强大的微大的微型型计算算AT89S51 可可为许多嵌入多嵌入式控制式控制应用系用系统提供高性价比的提供高性价比的解决方案。解决方案。 AT89S51 具有如下特点:具有如下特点:40 个个引脚,引脚,4kB Flash 片内程序存片内程序存储器,器,128B的随机存取数据存的随机存取数据存储器器,32个外部个外部I/O口口,5个中断个中断优先先级,2 层中断嵌套中断,中断嵌套中断,2 个个16 位位可可编程定程定时计数器数器,2 个全双工串个全双工串行通信口行通信口,片内片内时钟振振荡器。器。 管脚说明 VCC:供电电

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

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

6、引脚为XTAL1其其输出引脚出引脚为XTAL2。只要在。只要在XTAL1和和XTAL2之之间跨接晶跨接晶体振体振荡器和微器和微调电容,容,就可以构成一个就可以构成一个稳定的自激震定的自激震荡器器时序概念有4个,分别为:时时 序序节拍拍状状态机器周期机器周期指令周期指令周期节拍把把振振荡脉冲得周期定脉冲得周期定义为节拍,用拍,用P表示,也就是晶振的表示,也就是晶振的频率率状态振振荡脉冲脉冲经过二分二分频后,就是后,就是单片机片机时钟信号的周期,定信号的周期,定义为状状态,用,用S表示表示一个状一个状态包含两个包含两个节拍拍机器周期MCS-51系列系列单片机采用定片机采用定时控制方式,有固有的机器

7、周期。控制方式,有固有的机器周期。规定一个定一个机器周期的机器周期的宽度度为6个状个状态指令周期一条指令所需要的一条指令所需要的时间称称为指令周期。是最大的指令周期。是最大的时序定序定时单位,它由若干个机器位,它由若干个机器周期周期组成,一般包含一个机器周期的指令叫周期指令,包含两个成,一般包含一个机器周期的指令叫周期指令,包含两个为双周期指令双周期指令RST(pin 9)引脚是复位信号的输入端。此引脚高电平有效,其有效时间应为二个机器周期。 复位信号及其产生 复位信号的复位信号的电路路逻辑图 复位操作 上电自动复位 按键手动复位 上电自动复位将外部复位电路的电容充电就可以实现上电自动复位了,

8、如下图所示。按按键手手动复位复位 电平方式平方式 脉冲方式脉冲方式 按键电平复位通过RST端经电阻与电源Vcc接通而实现的利用RC微分电路产生的正脉冲来实现按键脉冲复位脉冲方式本系统的复位电路采用的是按键方式。电阻为10K,电容为10uF、晶振为12MHz,如下图:矩阵式键盘的概述本系统采用的是非编码键盘中的矩阵键盘。矩阵键盘也称为行列式键盘,一般用于按键数目较多的场合。它是由行和列组合而成,一组是行线,另一组是列线,按键就位于行和列的交叉点。如图8所示,一个4*4的矩阵键盘,有16个按键,我们分别用着16个键来模拟电子琴的按键:低音 3、 4、 5、 6、 7;中音 1、 2、 3、 4、

9、5、 6、 7 ;高音 1、 2、 3、 4 。较独立键盘而言,矩阵式键盘节省了I/O口线。扫描过程先把某一列置为低电平,其他的各列均为高电平,然后检查各行线的变化,若某行线为低电平,则可以确定被按下的键处于此行此列的交叉点上键盘控制电路(一):(一):4*4矩矩阵键盘原理接原理接线图4*4矩矩阵键盘模模块void saomiao()uchar Key_Temp1, Key_Temp2; /*读出的出的键值*/Key_Temp1 = Keyscan(); /*读入按入按键*/if(Key_Temp1 != 16) /*有有键按下按下*/delay_ms(5); /*延延时消抖消抖*/Key_T

10、emp2 = Keyscan(); /*再再读一次一次*/if (Key_Temp1 = Key_Temp2) /*两次相等两次相等*/ Key_Value = Key_Temp1; /*就确就确认下来下来*/FreqTemp = FreqtabKey_Value; /*根据根据键值,取出定,取出定时半周期的初始半周期的初始值*/TR0 = 1; /*启启动定定时器,器,发音音*/ while (Keyscan() 16); /*等待等待释放放*/ SPK = 1; /*停止停止发音音*TR0 = 0; /*暂不不发音音*/4*4矩阵键盘扫描软件模块数数码管管简介介数数码管能在低管能在低电压、

11、小、小电流流驱动下下发光,能光,能够与与CMOSCMOS、TTLTTL电路兼容。它的路兼容。它的发光响光响应时间非常短,通非常短,通常小于,其高常小于,其高频特性好,特性好,单色性好,亮度比色性好,亮度比较高。高。LEDLED使用寿命很使用寿命很长,通常在,通常在1010万小万小时以上,甚至可以以上,甚至可以达到达到100100万小万小时以上,且其成本很低。以上,且其成本很低。LEDLED数数码管已管已被广泛运用于被广泛运用于计算机的数算机的数显器件、数控装置等等器件、数控装置等等根据根据LEDLED数数码管管显示位数的多少,可以把数示位数的多少,可以把数码管划分管划分为一位、双位、多位一位、

12、双位、多位LEDLED数数码管管显示器。一位的示器。一位的LEDLED我我们通常称通常称为LEDLED数数码管,两位以上(包括两位)我管,两位以上(包括两位)我们一般称一般称为显示器。双位示器。双位LEDLED显示器是把两只数示器是把两只数码管管封装成一体,它亮度均匀,一致性好,光衰低,可封装成一体,它亮度均匀,一致性好,光衰低,可靠性高而且靠性高而且结构构紧凑、成本比凑、成本比较低(与两只一位的低(与两只一位的数数码管相比管相比较)。)。显示模块工作过程本次设计采用的是七段多位的数码显示器,通过矩阵键盘控制显示每个键的键值,当没有键按下时,显示00,当按下第一个按键时,显示01,、当按下第1

13、6个按键时 ,显示16.数码管显示原理接线图74als573芯片说明该芯片相当于一个具有三芯片相当于一个具有三态输出的八路出的八路D D型透型透明明锁存器,它的存器,它的电源工作源工作电压范范围为4.5v-4.5v-5.5v5.5v,在工作,在工作电压为5v5v时,该芯片的芯片的2020脚是脚是电源端,源端,绝对不能不能悬空,否空,否则该芯片不能正芯片不能正常工作常工作,如下如下图:VCC:电源端GND:接地端1D-8D/1Q-8Q:芯片输入与输出端口(I/O口)OE:输出允许信号端LE:锁存允许信号端显示模块程序ucharcodetabledu=ucharcodetabledu=0x3f,0

14、x06,0x5b,0x4f,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/0x39,0x5e,0x79,0x71;/建立数建立数码管管显示数据示数据voidDisplay()voidDisplay() shiwei=0;P0=tabledu(Key_Value+1)/10;delay_ms(5);shiwei=1;P0=0xshiwei=0;P0=tabledu(Key_Value+1)/10;del

15、ay_ms(5);shiwei=1;P0=0x00;00;gewei=0;P0=tabledu(Key_Value+1)%10;delay_ms(5);gewei=1;P0=0x00gewei=0;P0=tabledu(Key_Value+1)%10;delay_ms(5);gewei=1;P0=0x00; ;/使数使数码管从管从0000显示到示到1616发声系声系统用用蜂鸣器来作为发声元件,用达林顿管来驱蜂鸣器来作为发声元件,用达林顿管来驱动蜂鸣器发声。动蜂鸣器发声。达林达林顿顿管管简单简单介介绍绍达林达林顿管就是两个三极管接在一起,极性只管就是两个三极管接在一起,极性只认前前面的三极管。具

16、体接法如下,以两个相同极性的面的三极管。具体接法如下,以两个相同极性的三极管三极管为例,前面三极管例,前面三极管集集电极极跟后面三极管集跟后面三极管集电极相接,前面三极管极相接,前面三极管发射极跟后面三极管基极射极跟后面三极管基极相接,前面相接,前面三极管三极管功率一般比后面三极管小,前功率一般比后面三极管小,前面三极管基极面三极管基极为达林达林顿管基极,后面三极管管基极,后面三极管发射射极极为达林达林顿管管发射极,用法跟三极管一射极,用法跟三极管一样,放大,放大倍数是两个三极管放大倍数的乘倍数是两个三极管放大倍数的乘积。达林达林顿顿管引脚管引脚图图达林达林顿顿管引脚功能介管引脚功能介绍绍引脚

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

18、实际上就是达林上就是达林顿管的集管的集电极极对地接通。地接通。引脚引脚10:脉冲信号:脉冲信号输出端,出端,对应7脚信号脚信号输入端。入端。引脚引脚11:脉冲信号:脉冲信号输出端,出端,对应6脚信号脚信号输入端。入端。引脚引脚12:脉冲信号:脉冲信号输出端,出端,对应5脚信号脚信号输入端。入端。引脚引脚13:脉冲信号:脉冲信号输出端,出端,对应4脚信号脚信号输入端。入端。引脚引脚 14:脉冲信号:脉冲信号输出端,出端,对应3脚信号脚信号输入端。入端。引脚引脚15:脉冲信号:脉冲信号输出端,出端,对应2脚信号脚信号输入端。入端。引脚引脚16:脉冲信号:脉冲信号输出端,出端,对应1脚信号脚信号输入

19、端入端蜂鸣器接线图蜂鸣器接线图四、软件设计本系本系统主要是要主要是要实现由由单片机控片机控制的制的简单的音的音乐发生器,矩生器,矩阵键盘代表代表1616个不同的音个不同的音阶,用,用户可以根可以根据据乐谱在在键盘上上弹奏出音奏出音乐,通,通过蜂蜂鸣器将音器将音乐播放出来。播放出来。音音乐发声程序流程声程序流程图 主主程程序序流流程程图T0中中断断服服务程程序序流流程程图#include #include #define uint unsigned int #define uchar unsigned char外接扬声器*/sbit shiwei = P26;sbit gewei = P27;u

20、int FreqTemp;char Key_Value=-1;uchar code tabledu=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;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*/65058,6511

21、0,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 = 0xfe, 0xfd, 0xfb, 0xf7; for(j = 0; j 4; j+) /*循环四次,扫描四行*/ P1 = Bufferj; /*在低四位分别输出一个低电平*/_nop_()

22、; temp = 0x80; /*计划先读出位*/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=0x00;gewei=0;P0=tabledu(Key_Value+1)%10;delay_ms(5);gewei=1;P0=0x00;void saomiao()uchar Key_Temp1, Key_Temp2; /*读出的键值*/Key_Tem

23、p1 = 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; /*发音*/ 硬件调试硬件的调试主要是把电路各种

24、参数调整到符合设计要求。具体步骤如下:(1)先排除硬件电路故障,包括设计性错误和工艺性故障。一般原则是先静态后动态。(2)利用万用表或逻辑测试仪器,检查电路中的各器件以及引脚是否连接正确,是否有短路故障。(3)先要将单片机AT89S51芯片取下,对电路板进行通电检查,通过观察看是否有异常,然后用万用表测试各电源电压,若这些都没有问题,则接上仿真机进行联机调试观察各接口线路是否正常。 软件调试软件调试是利用仿真工具进行在线仿真调试,除发现和解决程序错误外也可以发现硬件故障。 单片机AT89S52是系统的核心,利用万用表检测单片机电源VCC是否为(40脚)+5V、晶振是否正常工作(可用示波器测试,用万用表检测时,两引脚一般为之间)、复位引脚RST是否正常(复位时为高电平,工作时为低电平)、EA是否为高电平,检查无误后单片机就能正常工作了。 心得体会 结束语确实在此过程中,我们对已学过知识进行了巩固,也学会了探究问题的能力和把理论运用到实际中去的能力,四个人的合作也让我们学会了妥协与谦让,是一次意义非凡的锻炼。俗话说读万卷书不如行万里路。整个过程我们也犯了一些低级的错误,但是很快我们从错误中走出来,并开辟出一条清晰的道路,获益匪浅。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号