单片机课程设计电子琴汇编语言_第1页
单片机课程设计电子琴汇编语言_第2页
单片机课程设计电子琴汇编语言_第3页
单片机课程设计电子琴汇编语言_第4页
单片机课程设计电子琴汇编语言_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、1 .引言11.1. 设计的目的1错误!未定义1.2. 设计的内容与要求书签。2 .总体设计12.1. 音乐产生原理12.2. 设计流程33 .硬件设计83.1. AT89C51芯片简介83.1.1 主要特性83.1.2 功能描述83.1.3 引脚说明与硬件连接93.2. 元器件清单134 .系统工作说明135 .结束语145.1. 收获与体会145.2. 遇到的问题与解决方法155.3. 教程建议156 .参考文献157 .附录161 .引言1.1 设计的目的本设计的主要目的是掌握单片机系统的开发应用,掌握prteus和keilC51软件的应用,巩固和加深已学过的知识,提高动手能力及解决实际

2、问题的能力,同时培养团队合作精神。1.2 .设计内容与要求(1)本设计以AT89C52单片机为核心控制元件设计一个电子琴,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个弹奏按键、1个播放按键和扬声器,并且按下时按键发声,松开延时一段时间停止,中间再按别的键则发另一音调的声音。16个按键设置成4x4矩阵键盘,能弹奏出1.3 个音,添加歌曲程序同时能够播放出歌曲。(2)利用软件keilC51进行程序的调试。(3)利用proteus软件画电路图,并在单片机加载程序进行仿真。(4)根据电路图运用proteus软件的布局和布线功能绘制PCB图并输出显示电路的3D图。(5)根据电路图、PC

3、B图和3D图快速地焊接电路。(6)下载程序代码,调试(Easy51Pro)。2 .方案总体设计2.1 音乐产生设计原理一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系正确即可。若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。就可在P1.0引脚上得到此频率的脉冲。

4、利用AT89C51的内部定时器使其工作计数器模式(MODES1下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期丁=1/523=1912s,因此只要令计数器计时956仙s/1s=956,每计数956次时将I/O反相,就可得到中音DO(523HZ)。计数脉冲值与频率的关系式是:N=fi+2+fr式中N是计数值;fi是机器频率(晶体振荡器为12MHz寸,其频率为1MHZ;fr是想要产生的频率。其计数初值T的求法如下:T=65536-N=65536fi+2+fr例如:设K=65536,fi=1MHz求低音DO(261Hz)、中音DO(523Hz)、高音DO(

5、1046Hz的计数值。T=65536N=65536-fi+2+fr=655361000000+2+fr=65536500000/fr低音DO的T=65536-500000/262=63627中音DO的T=65536-500000/523=64580高音DO的T=65536-500000/1046=65059单片机12MH如振,高中低音符与计数T0相关的计数值如表1所示:音符所(HZ)简谱码(T值)者符所(HZ)简谱码(T值)低1DO26263628#4FA#74064860#1DO#27763731中5SO78464898低2RE29463835#5SO#83164934#2RE#311639

6、28中6LA88064968低3M33064021#693264994低4FA34964103中7SI98865030#4FA#37064185高1DO104665058低5SO39264260#1DO#110965085#5SO#41564331高2RE117565110低6LA44064400#2RE#124565134#646664463高3M131865157低7SI49464524高4FA139765178中1DO52364580#4FA#148065198#1DO#55464633高5SO156865217中2RE58764684#5SO#166165235#2RE#6226473

7、2高6LA176065252中3M65964777#6186565268中4FA69864820高7SI196765283表1首符频率表我们要为这个音符建立一个表格,单片机通过查表的方式来获得相应的数据。低音019之间,中音在2039之间,高音在4059之间。TABLE:DW0,63628,63835,64021,64103,64260,64400,64524,0,0DW0,63731,63928,0,64185,64331,64463,0,0,0DW0,64580,64684,64777,64820,64898,64968,65030,0,0DW0,64633,64732,0,64860,6

8、4934,64994,0,0,0DW0,65058,65110,65157,65178,65217,65252,65283,0,0DW0,65085,65134,0,65198,65235,65268,0,0,0DW0在这个程序中,弹奏音乐的程序是用定时/计数器T0来完成的,播放音乐程序则是用定时/计数器T1来完成的。2.2 设计流程(1)键盘扫描程序:检测是否有键按下,有键按下则记录按下键的键值,并跳转至功能转移程序;无键按下,则返回键盘扫描程序继续检测。(2)功能转移程序:对检测到得按键值进行判断,是琴键则跳转至琴键处理程序,是功能键则跳转至相应的功能程序,我们设计的功能程序有两种,即音色

9、调节功能和自动播放乐曲功能。(3)琴键处理程序:根据检测到得按键值,查询音律表,给计时器赋值,使发出相应频率的声音。(4)自动播放歌曲程序:检测到按键按下的是自动播放歌曲功能键后执行该程序,电子琴会自动播放事先已经存放好的歌曲,歌曲播放完毕之后自动返回至键盘扫描程序,继续等待是否有键按下。程序简易流程图图1 程序简易流程图弹奏程序流程图:图2弹奏程序流程图自动播放歌曲程序流程图退出中断延时图3自动播放歌曲程序流程图3 .硬件设计3.1 AT89C51芯片简介3.1.1 主要特性 与MCS-51兼容 4K字节可编程闪烁存储器 寿命:1000写/擦循环 数据保留时间:10年 全静态工作:0Hz-2

10、4Hz 三级程序存储器锁定 128*8位内部RAM 32可编程I/O线 两个16位定时器/计数器 5个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路3.1.2 功能描述(1) AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalshProgrammableandErasableReadOnlyMemory的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEH密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和

11、输出管脚相兼容。由于将多功能8位CPUffi闪烁存储器组合在单个芯片中,ATMEL勺AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。(2)振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。(3)芯片擦除:整个PERO雌列和三个锁定位的电擦除可通过正确的控制信号组合,并保

12、持ALE管脚处于低电平10ms来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89C5破有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU亭止工彳但RAM定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM勺内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。3.1.3 引脚说明与硬件连接(1)引脚图,如图4:(T M C3i 3>和;>“M 甘口,»-3.U %A ,* 。,PR4 T I>A t w nj尸«R C>/

13、. 1 A. IL X T A L4 > A . 快, 0B口口tlDeqA * AA A A « A G.Q:- vr: 。,量上了孑 J J J* VQJPI*-, lrA p F A 尹 A 户 p 鼾图4AT89C51弓唧图(2) P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASHY程和校验时,P1口作为第八位地址接收利用P1口为按键接入口,形成4x4组成具有16个按键矩阵的键盘,作为琴键键盘,设计成16

14、个音,如下图5:所对应的键码0123456789ABCDEF图54x4键盘(3) P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASHY程和校验时接收高八位地址信号和控制信号。利用P2.0接播放音乐键,

15、如图6:0一<q、= 6sLzcJ Ka<二。d gamd ya<sHd m 口唤 mHJ Eszod LnsL s Lo_图6自动播放歌曲(4) P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口同时为闪烁编程和编程校验接收一些控制信号。1011121314 工1617R3200利用P3.0RXD口(串行输入口)接1个喇叭,通过执行相应的功能程序使电子琴发出不同音色的声音,如图7:P2.7/A15P3.

16、0/RXDP3.im<DP32/INT0"P33而TP3.4/T0P3.5n1P3.6/WRP37/RD图7P3.0的输出电路图中喇叭处接了1个2N3906的PNP其弓|脚图如下图8:2N3906CTO-92BE图82N3906弓唧图(5) RST复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH,不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET当/EA端保持高电平时,此间内部程序存储器。在FLASHS程期间,此引脚也用于施加12V编程电源(VPP。

17、(6) XTAL1反向振荡放大器的输入及内部时钟工作电路的输入XTAL2:来自反向振荡器的输出。如图10:JL ci .R2 一二二 C2- 16pF1k口 LCRYSTALieU1XTAL2图10晶振部分3.2.元器件清单如下表2:名称数值个数单片机AT89C511独立按键(可弹起的)182N39061喇叭1电阻R110KQ1电阻R21KQ1电阻R3200Q1电容C1、C216pF各1个电容C34.7uF1晶振12MHz1表2元器件清单4 .系统工作说明接上电源,按下自动播放歌曲按键B17,P2.0口此时接上低电平,作为输出口,因为P2.0具有输出寄存器寄存的内容的特殊功能,所以播放出已编好

18、程序的歌曲。当按下复位部分的按键B18时,因为复位部分是接高电平的,按下按键就产生高电平输入进行电路的复位,自动播放的歌曲就马上停止。而4x4矩阵键盘是接P1口作为输入,16个键位产生不同的频率对应其简谱码而产生不同的音阶。喇叭输出部分接P3.0口,一直保持低电平作为输出,接上一个PNP2N3906作为放大功能使其播放声音。5 .结束语5.1 收获与体会通过这次课程设计,让我感觉到了单片机的乐趣以及运用单片机设计电路比较方便和简单。在课程设计过程中,我学会了怎么通过各种方式查询相关的资料,尤其是要充分利用互联网来查找自己想要的资料。这次的课程设计涉及硬件和软件两方面的内容。首先是软件部分,我学

19、会了运用keilC51软件建立工程文件来调试程序的正确性,同时也学会了运用proteus软件来画电路图,基本掌握proteus软件的使用方法包括绘制原理图、PCB图、3D图,通过这些图与焊接硬件电路紧密的联在一起。由于自己所学有限,所以程序的编写事件很头疼的事,所以我们是先从网上下载一些类似的程序,然后对程序进行分析修改加以利用。硬件部分,在选取单片机前必须知道我们将要制作的电路需要实现什么功能,根据其功能来选取我们需要的单片机。而在焊接的过程中我发现每个元器件的排布是十分讲究的,布局得好焊接起来就方便且简单多了。设计好后,要将程序烧入芯片,经过调试成功后,我们可以任意弹奏自己想要的旋律。本研

20、究通过制作电子琴,将几个模块很好的融合起来,对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。利用单片机产生不同频率来获得我们要求的音阶。说明一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,所以我们只要把一首歌曲的音阶对应频率关系弄正确来,然后我们利用功放电路来将音乐声音放大。5.2 遇到的问题与解决方法(1)绘制好电路总原理图准备焊接的时候,发现按照原理图来焊接相当困难,不知从何下手。于是我上网查了一下资料,发现原来proteus软件有自动布局和自动布线的功能来绘制PCB图,而且还可以输出3D

21、图。根据这总原理图、PCB图还有3D图来焊接电路,很快地焊接好电路而且一插上电源电路就跟仿真一样成功了。(2)在购买材料的时候那间店没有AT89C51单片机,只好购买了STC89C5常片机。回来上网查了一下资料,发现它们的引脚都一样,而且STC89C52勺容量大一些,功能更强,所以完全可以代替AT89C51来实现本设计的电子琴电路的功能。5.3 教程建议我觉得只是单纯的上课来学习单片机是很难的,老师应该多找一些电路的实例来讲授单片机的知识,这样会让学生更容易接受而且更容易明白。课程应该多安排一些课程设计来让学生自己动手来提高对单片机的知识和动手能力。6 .参考文献1李朝青.单片机原理与接口技术

22、.2李光飞、楼然苗.单片机课程设计指导.北京:北京航空航天大学出版社.3蔡朝洋.单片机控制实习与专题制作.北京:北京航空航天大学出版社.4严天峰.单片机应用系统设计与仿真调试.北京:北京航空航天大学出版社.2005年8月.7.附录百-LO。t>ate。01ir-HHii£田004L:TT"o-9T互zzETIEIE-kIEecEEayucdLIda/W9£d9'Idid/sedS-Id山外EdridUNVE'CdEldOlN/E'Ed工Idaxi/rtdndaxyraTdO'Id%MEZdfrhWSZdlEhWSZd¥

23、;3CLWfdA-|tf1MTEdN3SdOIWEZdewizdSWDZdzawzOdIS甘9OW8Pdsav/sodvawodEOtfJEDdnvixEaiVJZOdLOW/kOdoav/oodnvix<IS0681V89&£i?81inFTYTWT*V*3j0itrfItlRhu*OVti图12实物图图13PCB图设计源程序:BUFFEQU30HSTH0EQU31HSTL0EQU32HTEMPEQU33HORG00HLJMPSTARTORG0BHLJMPINT_T0ORG001BHLJMPTIM1START:MOVTMOD,#01H;设置T0工作方式SETBET0S

24、ETBEA;启动T0MAIN:MOV P1,#0FFH ;P1CLR P1.4;MOV A,P1ANL A,#0FH;XRL A,#0FH;全置1开始扫描第一行屏蔽高四位低位有“0”则有键按下,否则无JZKKEY1;判断有无键按下,有则继续,没有则转移到KKEY1LCALLDELY10MS;调用延时程序MOV A,P1重新开始判断有无键按下ANLA,#0FHXRLA,#0FHJZKKEY1MOVA,P1ANLA,#0FH;求键值CJNEA,#0EH,CKK1;相等说明该行第一列有键按下,不等则转移MOV BUFF,#0该键值为0LJMP NDK1跳到NDKia行相应的功能程序CKK1:CJNE

25、A,#0DH,KK2;相等说明该行第二列有键按下,不等则转移MOVBUFF,#1;该键值为1LJMPNDK1;跳到NDK曲行相应的功能程序KK2:CJNEA,#0BH,KK3;相等说明该行第三列有键按下,不等则转移MOVBUFF,#2;该键值为2LJMPNDK1;跳到NDK曲行相应的功能程序KK3:CJNEA,#07H,KK4;相等说明该行第四列有键按下,不等则转移MOVBUFF,#3;该键值为2LJMPNDK1;跳到NDK曲行相应的功能程序KK4:NOPNDK1:MOVA,BUFFMOVDPTR,#TABLEMOVCA,A+DPTRMOVP0,AMOVA,BUFFMOVB,#2MULABMO

26、VTEMP,AMOVDPTR,#TABLE1MOVCA,A+DPTRMOVSTH0,AMOVTH0,AINCTEMPMOVA,TEMPMOVCA,A+DPTRMOVSTL0,AMOV TL0,ASETBTR0NDK1A:MOVA,P1ANLA,#0FHXRLA,#0FHJNZNDK1ACLRTR0KKEY1:开始扫描第二行MOVP1,#0FFH;CLRP1.5MOVA,P1ANLA,#0FHXRLA,#0FHJZKKEY2LCALLDELY10MSMOVA,P1ANLA,#0FHXRLA,#0FHJZKKEY2MOVA,P1ANLA,#0FHCJNEA,#0EH,KK5MOVBUFF,#4LJ

27、MPNDK2KK5:CJNEA,#0DH,KK6MOVBUFF,#5LJMPNDK2KK6:CJNEA,#0BH,KK7MOVBUFF,#6LJMP NDK#KK7:CJNE A,#7H,KK8MOVBUFF,#7LJMPNDK2KK8:NOPNDK2:MOVA,BUFFMOVDPTR,#TABLEMOVCA,A+DPTRMOVP0,AMOVA,BUFFMOVB,#2MULABMOVTEMP,AMOVDPTR,#TABLE1MOVCA,A+DPTRMOVSTH0,AMOVTH0,AINCTEMPMOVA,TEMPMOVCA,A+DPTRMOVSTL0,AMOVTL0,ASETBTR0NDK2A

28、:MOVA,P1ANLA,#0FHXRLA,#0FHJNZNDK2ACLR TR0KKEY2:MOVP1,#0FFH;开始扫描第三行CLRP1.6MOVA,P1ANLA,#0FHXRLA,#0FHJZKKEY3LCALLDELY10MSMOVA,P1ANLA,#0FHXRLA,#0FHJZKKEY3MOVA,P1ANLA,#0FHCJNEA,#0EH,KK9MOVBUFF,#8LJMPNDK3KK9:CJNEA,#0DH,KK10MOVBUFF,#9LJMPNDK3KK10:CJNEA,#0BH,KK11MOVBUFF,#10LJMPNDK3KK11:CJNEA,#07H,KK12MOV BU

29、FF,#11LJMP NDK3KK12:NOPNDK3:MOVA,BUFFMOVDPTR,#TABLEMOVCA,A+DPTRMOVP0,AMOVA,BUFFMOVB,#2MULABMOVTEMP,AMOVDPTR,#TABLE1MOVCA,A+DPTRMOVSTH0,AMOV TH0,AINCTEMPMOVA,TEMPMOVCA,A+DPTRMOVSTL0,AMOVTL0,ASETBTR0NDK3A:MOVA,P1ANLA,#0FHXRLA,#0FHJNZNDK3ACLRTR0KKEY3:MOVP1,#0FFH;开始扫描第四行CLRP1.7MOVA,P1ANLA,#0FHXRLA,#0FHJ

30、ZKKEY4LCALLDELY10MSMOVA,P1ANLA,#0FHXRLA,#0FHJZKKEY4MOVA,P1ANLA,#0FHCJNEA,#0EH,KK13MOVBUFF,#12LJMP NDK#KK13:CJNE A,#0DH,KK14MOVBUFF,#13LJMPNDK4KK14:CJNEA,#0BH,KK15MOVBUFF,#14LJMPNDK4KK15:CJNEA,#07H,KK16MOVBUFF,#15LJMPNDK4KK16:NOPNDK4:MOVA,BUFFMOVDPTR,#TABLEMOVCA,A+DPTRMOVP0,AMOVA,BUFFMOVB,#2MULABMOVT

31、EMP,AMOVDPTR,#TABLE1MOVCA,A+DPTRMOVSTH0,AMOVTH0,AINCTEMPMOVA,TEMPMOVCA,A+DPTRMOVSTL0,AMOVTL0,ASETB TR0NDK4A:MOVA,P1ANLA,#0FHXRLA,#0FHJNZNDK4ACLRTR0KKEY4:MOVA,#0FFHMOVP2,AMOVA,P2JBACC.0,KKEY5LCALLDELY10MSMOVA,P2JBACC.0,KKEY5MOVBUFF,#16LJMPSTART22START22:MOVA,BUFFCJNEA,#16,KKEY5LJMPSTART2KKEY5:LJMPMAI

32、NSTART2:MOVTMOD,#10HtT1在M1MOVIE,#88H;中断使能START0:MOV30H,#00;取简谱码指针NEXT:MOVA,30H;简谱码指针载入AMOVDPTR,#TAB至TAB取简谱码MOVCA,A+DPTR;MOVR2,A;渠道的简谱码暂存于R2JZEND0;是否渠道00(结束码)ANLA,#0FH;不是,则取低4位(节拍码)MOVR5,A;将节拍码存入R5MOVA,R2;将取到的简谱码再载入ASWAPA高低4位交换ANLA,#0FH;取低4位(音符码)JNZSING;取到的音符码是否为0?CLRTR1;开始,则不发音SJMPD1;跳至D1SING:DECA;取

33、到的音符码减1(不含0)MOV22H,A;存入(22H)RLA;乘2MOVDPTR,#TAB1至TABLE1取相对的高位字节计数值MOVCA,A+DPTR;MOVTH1,A;取到的高位字节存入TH0MOV21H,A;取到的高位字节存入(21H)MOVA,22H;在载入取到的音符码RLA;乘2INCA;力口1MOVCA,A+DPTR!;TABLE1取相对的低位字节计数值MOVTL1,A;取到的低位字节存入TL0MOV20H,A;取到的低位字节存入(20H)SETBTR1;启动TIMER0D1:LCALLDELAY;其本单位时间1/4拍187毫秒INC30H;取简谱码指针加1JMPNEXT;取下一个简谱码END

温馨提示

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

评论

0/150

提交评论