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

下载本文档

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

文档简介

多音阶电子琴设计报告成员:肖毅李为民

杨芳

何燕设计方案

鉴于单片机强大的控制功能和灵活的编程实现特性,本设计以AT89S51单片机为核心控制元件,设计一个由4X4组成16个按键矩阵,构成16个音阶,可以随意弹奏想要表达的音乐的多音阶电子琴。

目录单片机电子琴组成框图电路原理图各模块的简单介绍软件设计硬件及软件的调试总结多音阶电子琴的主要电路主要由4X4按键矩阵电路、蜂鸣器、LED显示、复位电路、晶振电路、电源电路几局部组成。电子琴硬件电路局部设计一、单片机电子琴组成框图二、电路原理图工作原理:根据方案的要求,将程序写入STC89C51单片机芯片。利用不同的音阶的频率不一样,用单片机来模拟电子琴,可以使单片机的定时器工作在计数器模式下,工作方式设为方式1,改变TH0和TL0来产生不同的频率,从而产生不同的音阶。P1口接4*4矩阵键盘行和列,用行扫描法读取P1口外接的键盘,假设有键按下:双位数码显示管显示01~16;假设没有键按下那么显示00,当按下复位键的开关后,双位数码显示管显示00。单片机P3.7作为音频放大电路的输入。三、各模块的简单介绍

电子琴最小系统电源电路控制系统矩阵按键独立按键显示系统LED显示发声系统蜂鸣器时钟电路复位电路AT89S51单片机及其引脚的简单说明AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kB的可擦

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

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

当P2口被写1时,其管脚被内部上拉电阻拉高,且作为输入。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口的详细介绍P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流〔ILL〕这是由于上拉的缘故。电源电路工作过程:本设计,开发板采用5v~12v的直流电,当按下电源开关,发光二极管有电流通过,二极管发光,使整个电路板通电,为了防止电流反灌,加了一个二极管,保护三端稳压器。时钟电路时钟信号的产生在MCS-51系列单片机内部有一个高增益反相放大电路,其输入引脚为XTAL1其输出引脚为XTAL2。只要在XTAL1和XTAL2之间跨接晶体振荡器和微调电容,就可以构成一个稳定的自激震荡器时序概念有4个,分别为:时序节拍状态机器周期指令周期节拍把振荡脉冲得周期定义为节拍,用P表示,也就是晶振的频率状态振荡脉冲经过二分频后,就是单片机时钟信号的周期,定义为状态,用S表示一个状态包含两个节拍机器周期MCS-51系列单片机采用定时控制方式,有固有的机器周期。规定一个机器周期的宽度为6个状态指令周期一条指令所需要的时间称为指令周期。是最大的时序定时单位,它由假设干个机器周期组成,一般包含一个机器周期的指令叫周期指令,包含两个为双周期指令RST〔pin9〕引脚是复位信号的输入端。此引脚高电平有效,其有效时间应为二个机器周期。复位信号及其产生

复位信号的电路逻辑图复位操作上电自动复位

按键手动复位

上电自动复位将外部复位电路的电容充电就可以实现上电自动复位了,如以下图所示。按键手动复位电平方式脉冲方式按键电平复位通过RST端经电阻与电源Vcc接通而实现的利用RC微分电路产生的正脉冲来实现按键脉冲复位脉冲方式本系统的复位电路采用的是按键方式。电阻为10K,电容为10uF、晶振为12MHz,如以下图:矩阵式键盘的概述本系统采用的是非编码键盘中的矩阵键盘。矩阵键盘也称为行列式键盘,一般用于按键数目较多的场合。它是由行和列组合而成,一组是行线,另一组是列线,按键就位于行和列的交叉点。如图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矩阵键盘模块voidsaomiao(){ucharKey_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=Freqtab[Key_Value];/*根据键值,取出定时半周期的初始值*/TR0=1;/*启动定时器,发音*/

while(Keyscan()<16);/*等待释放*/

SPK=1;}/*停止发音*}

TR0=0;/*暂不发音*/

}4*4矩阵键盘扫描软件模块数码管简介数码管能在低电压、小电流驱动下发光,能够与CMOS、TTL电路兼容。它的发光响应时间非常短,通常小于0.1s,其高频特性好,单色性好,亮度比较高。LED使用寿命很长,通常在10万小时以上,甚至可以到达100万小时以上,且其本钱很低。LED数码管已被广泛运用于计算机的数显器件、数控装置等等根据LED数码管显示位数的多少,可以把数码管划分为一位、双位、多位LED数码管显示器。一位的LED我们通常称为LED数码管,两位以上〔包括两位〕我们一般称为显示器。双位LED显示器是把两只数码管封装成一体,它亮度均匀,一致性好,光衰低,可靠性高而且结构紧凑、本钱比较低〔与两只一位的数码管相比较〕。显示模块工作过程本次设计采用的是七段多位的数码显示器,通过矩阵键盘控制显示每个键的键值,当没有键按下时,显示00,当按下第一个按键时,显示01,、、、、、、、、当按下第16个按键时,显示16.数码管显示原理接线图74als573芯片说明该芯片相当于一个具有三态输出的八路D型透明锁存器,它的电源工作电压范围为4.5v-5.5v,在工作电压为5v时,该芯片的20脚是电源端,绝对不能悬空,否那么该芯片不能正常工作,如以下图:VCC:电源端GND:接地端1D-8D/1Q-8Q:芯片输入与输出端口〔I/O口〕OE:输出允许信号端LE:锁存允许信号端显示模块程序ucharcodetabledu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//建立数码管显示数据voidDisplay(){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;}//使数码管从00显示到16发声系统用蜂鸣器来作为发声元件,用达林顿管来驱动蜂鸣器发声。达林顿管简单介绍达林顿管就是两个三极管接在一起,极性只认前面的三极管。具体接法如下,以两个相同极性的三极管为例,前面三极管集电极跟后面三极管集电极相接,前面三极管发射极跟后面三极管基极相接,前面三极管功率一般比后面三极管小,前面三极管基极为达林顿管基极,后面三极管发射极为达林顿管发射极,用法跟三极管一样,放大倍数是两个三极管放大倍数的乘积。达林顿管引脚图达林顿管引脚功能介绍引脚1:CPU脉冲输入端,端口对应一个信号输出端。引脚2:CPU脉冲输入端。引脚3:CPU脉冲输入端。引脚4:CPU脉冲输入端。引脚5:CPU脉冲输入端。引脚6:CPU脉冲输入端。引脚7:CPU脉冲输入端。引脚8:接地。引脚9:该脚是内部7个续流二极管负极的公共端,各二极管的正极分别接各达林顿管的集电极。用于感性负载时,该脚接负载电源正极,实现续流作用。如果该脚接地,实际上就是达林顿管的集电极对地接通。引脚10:脉冲信号输出端,对应7脚信号输入端。引脚11:脉冲信号输出端,对应6脚信号输入端。引脚12:脉冲信号输出端,对应5脚信号输入端。引脚13:脉冲信号输出端,对应4脚信号输入端。引脚14:脉冲信号输出端,对应3脚信号输入端。引脚15:脉冲信号输出端,对应2脚信号输入端。引脚16:脉冲信号输出端,对应1脚信号输入端蜂鸣器接线图四、软件设计本系统主要是要实现由单片机控制的简单的音乐发生器,矩阵键盘代表16个不同的音阶,用户可以根据乐谱在键盘上弹奏出音乐,通过蜂鸣器将音乐播放出来。音乐发声程序流程图

主程序流程图T0中断效劳程序流程图#include<reg51.h>#include<intrins.h>#defineuintunsignedint#defineucharunsignedcharsbitSPK=P3^7;/*P3.7外接扬声器*/sbitshiwei=P2^6;sbitgewei=P2^7;uintFreqTemp;charKey_Value=-1;ucharcodetabledu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};unsignedintcodeFreqtab[]={/*定时半周期的初始值*/64021,64103,64260,64400,/*低音3456*/64524,64580,64684,64777,/*低音7,中音123*/64820,64898,64968,65030,/*中音4567*/65058,65110,65157,65178};/*高音1234*/voiddelay_ms(uintz){uintx,y;for(x=z;x>0;x--)for(y=123;y>0;y--);}电子琴源程序:/*函数功能:用扫描法读P1外接4×4键盘*//*函数返回:有按下键:返回1~15、如无键按下:返回00*/ucharKeyscan(void){uchari,j,temp,Buffer[4]={0xfe,0xfd,0xfb,0xf7};for(j=0;j<4;j++)/*循环四次,扫描四行*/{P1=Buffer[j];/*在低四位分别输出一个低电平*/_nop_();temp=0x80;/*方案先读出P1.7位*/ for(i=0;i<4;i++)/*循环四次,检查四列*/{if(!(P1&temp))/*从高四位,截取1位*/{return(i+j*4);/*返回取得的按键*/}temp>>=1;}}return16;/*没有键按下就返回00*/}/*函数功能:将参数分成十位、个位,分别显示到P2*/voidDisplay(){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;}voidsaomiao(){ucharKey_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=Freqtab[Key_Value];/*根据键值,取出定时半周期的初始值*/ TR0=1;/*启动定时器,发音*/while(Keyscan()<16);/*等待释放*/SPK=1;/*停止发音*/}}TR0=0;/*暂不发音*/}voidinit(){TMOD=0x01;/*T0定时方式1*/ET0=1;/*允许T0中断*/TR0=0;/*暂不发音*/EX0=1;/*允许X0中断*/EA=1;}}voidmain(void)init();while(1) { Display();/*显示*/ saomiao(); }}voidT0_INT(void)interrupt1{

温馨提示

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

评论

0/150

提交评论