AT89C51单片机的多音阶电子琴.ppt

上传人:豆**** 文档编号:23840914 上传时间:2022-07-02 格式:PPT 页数:46 大小:3.50MB
返回 下载 相关 举报
AT89C51单片机的多音阶电子琴.ppt_第1页
第1页 / 共46页
AT89C51单片机的多音阶电子琴.ppt_第2页
第2页 / 共46页
点击查看更多>>
资源描述

《AT89C51单片机的多音阶电子琴.ppt》由会员分享,可在线阅读,更多相关《AT89C51单片机的多音阶电子琴.ppt(46页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

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

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

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

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

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

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

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

8、周期,定义为状态,用S S表示表示一个状态包含两个节拍一个状态包含两个节拍机器周期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 saomiao()void sa

11、omiao() uchar Key_Temp1, Key_Temp2; /uchar Key_Temp1, Key_Temp2; /* *读出的键值读出的键值* */ /Key_Temp1 = Keyscan(); /Key_Temp1 = Keyscan(); /* *读入按键读入按键* */ / if(Key_Temp1 != 16) /if(Key_Temp1 != 16) /* *有键按下有键按下* */ /delay_ms(5); /delay_ms(5); /* *延时消抖延时消抖* */ /Key_Temp2 = Keyscan(); /Key_Temp2 = Keyscan()

12、; /* *再读一次再读一次* */ /if (Key_Temp1 = Key_Temp2) /if (Key_Temp1 = Key_Temp2) /* *两次相等两次相等* */ / Key_Value = Key_Temp1; / Key_Value = Key_Temp1; /* *就确认下来就确认下来* */ / FreqTemp = FreqtabKey_Value; /FreqTemp = FreqtabKey_Value; /* *根据键值,取出定时半周期的初始值根据键值,取出定时半周期的初始值* */ /TR0 = 1; /TR0 = 1; /* *启动定时器,发音启动定时器

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

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

15、括两位)我们一般称为显示器。双位们一般称为显示器。双位LEDLED显示器是把两只数码管显示器是把两只数码管封装成一体,它亮度均匀,一致性好,光衰低,可封装成一体,它亮度均匀,一致性好,光衰低,可靠性高而且结构紧凑、成本比较低(与两只一位的靠性高而且结构紧凑、成本比较低(与两只一位的数码管相比较)。数码管相比较)。显示模块工作过程本次设计采用的是七段多位的数码显示器,通过矩阵键盘控制显示每个键的键值,当没有键按下时,显示00,当按下第一个按键时,显示01,、当按下第16个按键时 ,显示16.数码管显示原理接线图74als573芯片说明该芯片相当于一个具有三态输出的八路该芯片相当于一个具有三态输出

16、的八路D D型透型透明锁存器,它的电源工作电压范围为明锁存器,它的电源工作电压范围为4.5v-4.5v-5.5v5.5v,在工作电压为,在工作电压为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,

17、0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,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=0 x00; shiwei=0;P0=tabledu(Key_Value+1)/1

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

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

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

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

22、脚16:脉冲信号输出端,对应:脉冲信号输出端,对应1脚信号输入端脚信号输入端四、软件设计本系统主要是要实现由单片机控本系统主要是要实现由单片机控制的简单的音乐发生器,矩阵键制的简单的音乐发生器,矩阵键盘代表盘代表1616个不同的音阶,用户可个不同的音阶,用户可以根据乐谱在键盘上弹奏出音乐以根据乐谱在键盘上弹奏出音乐,通过蜂鸣器将音乐播放出来。,通过蜂鸣器将音乐播放出来。音乐发声程序流程图音乐发声程序流程图 主主程程序序流流程程图图T0中中断断服服务务程程序序流流程程图图#include #include #define uint unsigned int #define uchar unsig

23、ned charsbit SPK = P37; /*P3.7外接扬声器*/sbit shiwei = P26;sbit gewei = P27;uint 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*/

24、64524,64580,64684,64777, /*低音7,中音1 2 3*/ 64820,64898,64968,65030, /*中音4 5 6 7*/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,

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

26、_Value+1)%10;delay_ms(5);gewei=1;P0=0 x00;void saomiao()uchar Key_Temp1, Key_Temp2; /*读出的键值*/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

27、; /*根据键值,取出定时半周期的初始值*/ TR0 = 1; /*启动定时器,发音*/ while (Keyscan() 8; SPK = SPK; /*发音*/ 硬件调试硬件的调试主要是把电路各种参数调整到符合设计要求。具体步骤如下:(1)先排除硬件电路故障,包括设计性错误和工艺性故障。一般原则是先静态后动态。(2)利用万用表或逻辑测试仪器,检查电路中的各器件以及引脚是否连接正确,是否有短路故障。(3)先要将单片机AT89S51芯片取下,对电路板进行通电检查,通过观察看是否有异常,然后用万用表测试各电源电压,若这些都没有问题,则接上仿真机进行联机调试观察各接口线路是否正常。 软件调试 软件

28、调试是利用仿真工具进行在线仿真调试,除发现和解决程序错误外也可以发现硬件故障。 单片机AT89S52是系统的核心,利用万用表检测单片机电源VCC是否为(40脚)+5V、晶振是否正常工作(可用示波器测试,用万用表检测时,两引脚一般为1.82.3V之间)、复位引脚RST是否正常(复位时为高电平,工作时为低电平)、EA是否为高电平,检查无误后单片机就能正常工作了。 心得体会 结束语确实在此过程中,我们对已学过知识进行了巩固,也学会了探究问题的能力和把理论运用到实际中去的能力,四个人的合作也让我们学会了妥协与谦让,是一次意义非凡的锻炼。俗话说读万卷书不如行万里路。整个过程我们也犯了一些低级的错误,但是

29、很快我们从错误中走出来,并开辟出一条清晰的道路,获益匪浅。谢谢观看!进入夏天,少不了一个热字当头,电扇空调陆续登场,每逢此时,总会进入夏天,少不了一个热字当头,电扇空调陆续登场,每逢此时,总会想起那一把蒲扇。蒲扇,是记忆中的农村,夏季经常用的一件物品。记想起那一把蒲扇。蒲扇,是记忆中的农村,夏季经常用的一件物品。记忆中的故乡,每逢进入夏天,集市上最常见的便是蒲扇、凉席,不论男女老忆中的故乡,每逢进入夏天,集市上最常见的便是蒲扇、凉席,不论男女老少,个个手持一把,忽闪忽闪个不停,嘴里叨叨着少,个个手持一把,忽闪忽闪个不停,嘴里叨叨着“怎么这么热怎么这么热”,于是三,于是三五成群,聚在大树下,或站

30、着,或随即坐在石头上,手持那把扇子,边唠嗑五成群,聚在大树下,或站着,或随即坐在石头上,手持那把扇子,边唠嗑边乘凉。孩子们却在周围跑跑跳跳,热得满头大汗,不时听到边乘凉。孩子们却在周围跑跑跳跳,热得满头大汗,不时听到“强子,别跑强子,别跑了,快来我给你扇扇了,快来我给你扇扇”。孩子们才不听这一套,跑个没完,直到累气喘吁吁,。孩子们才不听这一套,跑个没完,直到累气喘吁吁,这才一跑一踮地围过了,这时母亲总是,好似生气的样子,边扇边训,这才一跑一踮地围过了,这时母亲总是,好似生气的样子,边扇边训,“你你看热的,跑什么?看热的,跑什么?”此时这把蒲扇,是那么凉快,那么的温馨幸福,有母亲此时这把蒲扇,是

31、那么凉快,那么的温馨幸福,有母亲的味道!蒲扇是中国传统工艺品,在我国已有三千年多年的历史。取材的味道!蒲扇是中国传统工艺品,在我国已有三千年多年的历史。取材于棕榈树,制作简单,方便携带,且蒲扇的表面光滑,因而,古人常会在上于棕榈树,制作简单,方便携带,且蒲扇的表面光滑,因而,古人常会在上面作画。古有棕扇、葵扇、蒲扇、蕉扇诸名,实即今日的蒲扇,江浙称之为面作画。古有棕扇、葵扇、蒲扇、蕉扇诸名,实即今日的蒲扇,江浙称之为芭蕉扇。六七十年代,人们最常用的就是这种,似圆非圆,轻巧又便宜的蒲芭蕉扇。六七十年代,人们最常用的就是这种,似圆非圆,轻巧又便宜的蒲扇。蒲扇流传至今,我的记忆中,它跨越了半个世纪,也走过了我们的扇。蒲扇流传至今,我的记忆中,它跨越了半个世纪,也走过了我们的半个人生的轨迹,携带着特有的念想,一年年,一天天,流向长长的时间隧半个人生的轨迹,携带着特有的念想,一年年,一天天,流向长长的时间隧道,袅道,袅

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com