电子琴课程设计基于单片机的简易实践.docx

上传人:李司机 文档编号:6842815 上传时间:2024-03-01 格式:DOCX 页数:26 大小:359.87KB
返回 下载 相关 举报
电子琴课程设计基于单片机的简易实践.docx_第1页
第1页 / 共26页
电子琴课程设计基于单片机的简易实践.docx_第2页
第2页 / 共26页
电子琴课程设计基于单片机的简易实践.docx_第3页
第3页 / 共26页
电子琴课程设计基于单片机的简易实践.docx_第4页
第4页 / 共26页
电子琴课程设计基于单片机的简易实践.docx_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《电子琴课程设计基于单片机的简易实践.docx》由会员分享,可在线阅读,更多相关《电子琴课程设计基于单片机的简易实践.docx(26页珍藏版)》请在三一办公上搜索。

1、单片机课程设计题目名称:基于单片机的可演奏电子琴设计专业班级:学生姓名:学号:指导教师:_成绩:评语:指导老师签名:摘要电子琴是现代电子科技与音乐结合的产物,是一种新型B键盘乐器。它在现代音乐饰演着重要B角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的重要内容是用AT89c51单片机为关键控制元件,设计一种电子琴。以单片机作为主控关键,与键盘、扬声器等模块构成关键主控制模块,在主控模块上设有16个按键和扬声器。本系统运行稳定,其长处是硬件电路简朴,软件功能完善,控制系统可靠,性价比较高等,具有一定B实用和参照价值。AbstractEl

2、ectronicorganisamodernelectronicmusictechnologyandtheproductisanewtypeofkeyboardinstruments.Itplayedanimportantroleinmodernmusic.SCMhaspowerfulcontrolfunctionsandflexibleprogrammingcharacteristics.Ithasconvergedwithmodernpeopleslives,becomeanirreplaceablepart.ThemaincontentisAT89C51controlofthecorec

3、omponents,designofaelectronicorgan.SCMasahosttothecore,withthekeyboard,speakerandothercoremodules.Inthemaincontrolmodulehas16keysandaspeaker.Thesystemissteady,itssimplehardwarecircuits,softwarefunctions,reliabilityofcontrolsystemandhighcostperformanceisitsadvantages.Italsohascertainpracticalandrefer

4、encevalue.目录摘要1Abstract11系统述31.1 课程设计的目的和意义31.2 本系统重要研究内容31.3 本系统重要研究目041.4 重要芯片简介42方案论证42. 1控制模块选择方案42.2按键模块选择方案53方案的实现53.1系统实现的J详细措施53. 2系统硬件设计63. 2.1系统硬件总体设计63. 2.2子系统(模块)一64. 2.3jf*,73. 2.4子系统(模块)三83. 3系统软件设计93. 3.1系统软件总体设计93. 3.2子程序(模块)一:LED显示93. 3.3子程序(模块)二:扬声器103. 3.4子程序(模块)三:矩阵键盘144系统调试154.

5、1Proteus简介155. 2keil简介156. 3Proteus和Keil时联调165设计心得18附录L201系统概述1.1 课程设计的目的和意义单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的J特点。它的应用必然导致老式的控制技术从主线上发生变革。因此,单片机0开发应用己成为高科技和工程领域的一项重大课题。电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐饰演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的重要内容是用A

6、T89S51单片机为关键控制元件,设计一种电子琴。以单片机作为主控关键,与键盘、扬声器等模块构成关键主控制模块,在主控模块上设有16个按键和扬声器。本文重要对使用单片机设计简易电子琴进行了分析,并简介了基于单片机电子琴统硬件构成。运用单片机产生不一样频率来获得我们规定的音阶,最终可随意弹奏想要体现的音乐。并且本文分别从原理图,重要芯片,各模块原理及各模块的程序的调试来详细论述。本系统是简易电子琴的设计,按下键盘矩阵中的按键会使数码管显示目前按键,扬声器播放器对应的音符。通过设计本系统可理解单片机B基本功能。对单片机B理解有一种小B飞跃。1.2 本系统重要研究内容本系统设计制作一种可演奏的电子琴

7、。综合应用了两项设计。(1)键盘矩阵识别。即矩阵扫描,显示目前按键。(2)不一样频率音符播放。可以通过按键控制16种发音。1.3 本系统重要研究目的本系统的设计是为了实现按下矩阵键盘中的按键会使数码管显示目前按键,扬声器播放对应音符0目的。1.4 重要芯片简介AT89c51简介AT89c51是一种低功耗,高性能CMOS8位单片机,片内含妹BytesISP(In-systemProgrammable)0可反复擦写1000次0Flash只读程序存储器,器件采用ATMEL企业0高密度、非易失性存储技术制造,兼容原则MCS-51指令系统及80C51引脚构造,芯片内集成了通用8位中央处理器和ISPFla

8、Sh存储单元,功能强大的微型计算机的AT89c51可为许多嵌入式控制应用系统提供高性价比的处理方案。AT89c51具有如下特点:40个引脚(引脚图如图1-2所示),4kBytesFlash片内程序存储器,128bytes0随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定期计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。此外,AT89c51设计和配置了振荡频率可为OHZ并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定期计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保留RAM的数据

9、,停止芯片其他功能直至外中断激活或硬件复位。同步该芯片还具有PDIP、TQFP和PLeC等三种封装形式,以适应不一样产品的需求。2方案论证1.1 控制模块选择方案方案一:用可控硅制作电子琴。将220V交流电经变压器降压,再通过整流、滤波,获得+13.5V直流电压。将单向可控硅SCR和电阻、电容构成驰张振荡器电路。但该设计方案制作成本高且复杂。方案二:采用AT89C51单片机进行控制,由于其性价比高,完全满足了本作品智能化的规定,它的内部程序存储空间到达4K,使软件设计有足够B内部使用空间并且以便后来系统升级,使用以便,抗干扰性能提高。选择方案:鉴于上述对比与分析,AT89C51单片机设计微型电

10、子琴的措施,仅需AT89C51最小系统,扩展一组矩阵键盘,再接一组发光二极管用来指示电子琴的工作状态。因此,本设计采用方案二。2. 2按键模块选择方案老式电子琴可以用键盘上的“1”到“A”键演奏从低SO到高DO等11音。该设计有16个按钮矩阵,设计成16个音,可以实现音阶在低音4一-高音5之间。比老式音阶范围大,弹奏效果好。3方案的实现3.1系统实现的详细措施键盘接口必须具有的4个基本功能。(1)去抖动:每个按键在按下或松开时,都会产生短时间时抖动。抖动时持续时间与键B质量有关,一般为520mm。所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别对的无误。去

11、抖问题可通过软件延时或硬件电路处理。(2)防串键:防串键是为了处理多种键同步按下或者前一按键没有释放又有新0按键按下时产生0问题。常用0措施有双键锁定和N键轮回两种措施。双键锁定,是当有两个或两个以上0按键按下时,只把最终释放的键当作有效键并产生对应的键码。N键轮回,是当检测到有多种键被按下时,能根据发现它们的次序依次产生对应键的键码。(3)被按键识别:怎样识别被按键是接口处理的重要问题,一般可通过软硬结合的措施完毕。常用的措施有行扫描法和线反转法两种。行扫描法B基本思想是,由程序对键盘逐行扫描,通过检测到0列输出状态来确定闭合键,为此,需要设置入口、输出口一种,该措施在微机系统中被广泛使用。

12、线反转法的基本思想是通过行列颠倒两次扫描来识别闭合键,为此需要提供两个可编程的双向输入/输出端口。(4)键码产生:为了从键0行列坐标编码得到反应键功能的键码,一般在内存区中建立一种键盘编码表,通过查表获得被按键B键码。用AT89C51时并行口PO接4义4矩阵键盘,以PO.0-P0.3作输入线,以P0.4一P0.7作输出线;在数码管上显示每个按键的“0F”序号。3. 2系统硬件设计3. 2.1系统硬件总体设计本系统由键盘矩阵、LED显示管、扬声器这几种部分构成,LED显示管显示目前按键,扬声器发出对应音符。硬件总体设计图如下:图1POOWO PO1/AD1 POzAD2 P03AD3 PO.4/

13、AD4 Pos(M5 Po 和96 P0 7*D7P23A8P2VA9P3.0XDP3 40P3fl P3fi P3.7jTOP22XA10P2311P24XA12P2.5XA13P2.6JA14P27M52.2子系统(模块)一1.ED显示模块如图2-2所示,运用AT89c51单片机BPO端口的PO.0-P0.7连接到一种七段数码管0a-h0笔段上,数码管的公共端接电源。矩阵扫描显示目前按键模块如下:RP1RESPACK-8393837363534332122PO.O/ADOPO.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0

14、/A8P2.1/A93. 2.3子系统(模块)二矩阵扫描扬声器发出对应音符模块如下:3.2.4子系统(模块)三矩阵键盘模块如下:图4矩阵式键盘0构造与工作原理在键盘中按键数量较多时,为了减少I/O口的占用,一般将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一种按键加以连接。这样,一种端口(如Pl)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,并且线数越多,区别越明显,例如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。矩阵式构造0键盘显然比直接法要复杂

15、某些,识别也要复杂某些,上图中,列线通过电阻接正电源,并将行线所接0单片机0I/O口作为输出端,而列线所接BI/O口则作为输入。这样,当按键没有按下时,所有0输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知与否有键按下了。详细的识别及编程措施如下所述。3.3系统软件设计3.3.1系统软件总体设计本系统依J软件总FI勺流程图如下:系统总程序见附录1.3. 3.2子程序(模块)一:LED显示I/O并行口直接驱动LED显示把“AT89C51”区域中0P2.O/A8P2.7/A15端口用8芯排线连接到一位数码管0a-h端口上;规定:

16、P2.0/A8与a相连,P2.1/A9与b相连,P2.2/AlO与C相连,P2.7/A15与h相连。表1:表1字形码表及对应的音符10x3f低5SO90x7f中6LA20x06低6LAA0x6f7SI30x5b低7SIb0x77高1DO40x4f中1DOC0x7c高2RE50x66中2RED0x39高3M60x6d中3ME0x5e高4FA70x7d中4FAF0x79高5SO80x07中5SO00x71高6LA在本设计中,数码管时显示通过P2=DSY_C0DEk这句语言来查表并输出,实现音符的显示。详细程序见附录13.3.3子程序(模块)二:扬声器一首音乐是许多不一样B音阶构成B,而每个音阶对应

17、着不一样0频率,这样我们就可以运用不一样的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不一样的频率非常以便,我们可以运用单片机的定期/计数器TO来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄对的即可。若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期B时间。运用定期器计时半周期时间,每当计时终止后就将P3.7反相,然后反复计时再反相。就可在P3.7引脚上得到此频率的脉冲。运用AT89C510内部定期器使其工作计数器模式(MoDEl)下,变化计数值THO及TLO以产生不一样频率B措施产生不一样音阶,例如,频率为523Hz,其周

18、期T=l523=1912s,因此只要令计数器计时956s/1s=956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。计数脉冲值与频率的关系式是:N=fi2fr式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);f是想要产生的频率。其计数初值TB求法如下:T=65536-N=65536-fi2fr例如:设K=65536,fi=lMHz,求低音Do(261Hz)中音DO(523Hz)、高音Do(1046Hz)的计数值。T=65536-N=65536-fi2fr=65536-10000002fr=65536-500000fr低音DO0T=65536-50

19、0000/262=63628中音DO的T=65536-500000/523=64580高音DO0T=65536-500000/1046=65058我们要为这个音符建立一种表格,单片机通过查表B方式来获得对应的数据:uintcodeTone_De1ay_Tab1e=64021,64103,64260,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178;详细程序见附录13.3.4子程序(模块)三:矩阵键盘矩阵式键盘的按键识别措施:确定矩阵式键盘上何键被按下简介一种“行扫描法二行扫描法行扫描法又称

20、为逐行(或列)扫描查询法,是一种最常用时按键识别措施,如上图所示键盘,简介过程如下。1、判断键盘中有无键按下将所有行线丫0-丫3置低电平,然后检测列线的状态。只要有一列的电平为低,则表达键盘中有键被按下,并且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。2、判断闭合键所在0位置在确认有键按下后,即可进入确定详细闭合键0过程。其措施是:依次将行线置为低电平,即在置某根行线为低电平时,其他线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。详细程序见附录14系统调试4.

21、1 Proteus简介Proteus日勺ISIS是一款Labcenter出品0电路分析实物仿真系统,可仿真多种电路和IC,并支持单片机,元件库齐全,使用以便,是不可多得日勺专业的单片机软件仿真系统。该软件的特点:所有满足我们提出的单片机软件仿真系统的原则,并在同类产品中具有明显0优势。具有模拟电路仿真、数字电路仿真、单片机及其外围电路构成g系统g仿真、RS-232动态仿真、C调试器、SPl调试器、键盘和LCD系统仿真B功能;有多种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80

22、系列、HCIl系列以及多种外围芯片。支持大量的存储器和外围芯片。总之该软件是一款集单片机和SPlCE分析于一身0仿真软件,功能极其强大,可仿真51、AVR.PIC04.2 keiI简介单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行0机器码有两种措施,一种是手工汇编,另一种是机器汇编,目前己很少使用手工汇编的措施了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机0汇编软件有初期0A51,伴随单片机开发技术0不停发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不停发展,Keil软件是目前最流行开发MCS-51系列单片机的

23、软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一种功能强大的仿真调试器等在内的完整开发方案,通过一种集成开发环境(UViSiOn)将这些部份组合在一起。运行Keil软件需要PentiUnI或以上0CPU,16MB或更多RAM、20M以上空闲B硬盘空间、WIN98NT、WIN2023WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机0爱好者来说是十分必要的,假如你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很也许只支持该软件),虽然不使用C语言而仅用汇编语言编程,其以

24、便易用的集成环境、强大的J软件仿真调试工具也会令你事半功倍。4.3Proteus和Keil的联调使用环节:1、打开keil,建立工程,输入程序2、编译和生成hex文献。3、打开PrOteUs,设计硬件电路图。4、导入hex文献。将鼠标置于电路图中AT89C51器件上,右击后再左击,在出现的窗口中找到如下图所示的PrograinFile对话框,并填入hex文献对应的途径。ProgramFile:KeilC可演奏电子琴.hex一回H_._NzuJi1.图65、点击面板左下角的匚口,开始调试。6、按下任意键,扬声器发出对应的声音,并在数码管上显示出键值,例如,按下KF按键,仿真成果如下:POODO

25、PoI皿 P02D2 P0.3AAD3 POiAAIM Pos(AD5 P0AWD6 P07AAD7P20 P21A9 P2M0P28A14P27AM5ATOW 17、按下此外一种K9键,仿真成果如下:i其他的同理。5设计心得将程序导入AT89C51芯片,调试成功后,可任意弹奏自己想要In旋律。本课题通过制作电子琴,将几种模块很好的融合起来,对使用单片机设计简易电子琴进行了分析,并简介了基于单片机电子琴统硬件构成。运用单片机产生不一样频率来获得我们规定0音阶,最终可随意弹奏想要体现的音乐。阐明一首音乐是许多不一样B音阶构成B,而每个音阶对应着不一样0频率,这样我们就可以运用不一样0频率0组合,

26、即可构成我们所想要0音乐了,于是我们可以运用单片机的定期/计数器TO来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄对的即可,然后我们运用功放电路来将音乐声音放大,同步通过显示模块来确知自己所弹0音符。通过这次课程设计,我感觉收获了诸多:首先,通过实践,加深对单片机系列知识及其系统B认识。这个设计题目并不是新0,但从中能体现到一种系统开发设计0过程,足于让我们受益。第二,通过设计学习到了诸多软件0使用。本次设计,软件部分用到了proteus进行硬件设计,用keil4进行程编译。第三,提高了自己的动手能力。动手在一定程度上反应了一种人的能力,作为现代大学生,社会规定的我们不是

27、只能说而不能做的人才;三能人才原则更让我们清醒地认识到,实际动手能力无比重要。从这次实物制作中,我0动手能力提高了。感谢学院给了我们这次实践动手0机会,更感谢我们0郭老师教会了我们单片机有关知识。本设计还可以扩展其他功能,例如记忆功能,即可以存储弹奏者所弹奏的音乐且保留,待弹奏完后播放给弹奏者听。还可以做得愈加娱乐一点,增长某些彩灯使彩灯伴随音调变化而产生不一样的样式。参照文献1谭浩强编著.C程序设计.北京:清华大学出版社,2023.王东峰等.单片机C语言应用100例M.电子工业出版社,2023.李平等.单片机入门与开发M.机械工业出版社,2023.周润景等.Proteus在MCS-51&AR

28、M7系统中0应用百例M.电子工业出版社,200.5冯博琴.微型计算机原理与接口技术.清华大学出版社,2023.6张晓丽等.数据构造与算法.北京:机械工业出版社,2023.7黄鑫,马善农,赵永科.基于CPLD的电子琴研究与设计J.科技广场,2023(5).8赵辉,刘印华.PR0TEL99电子线路CAD.北京邮电大学出版社,2023.9求是科技.单片机经典模块设计实例导航.北京:人民邮电出版社,2023.10马忠梅,籍顺心等.单片机的C语言应用程序设计H.北京:北京航空航天大学出版社,2023.名称:可演奏的电子琴本例在矩阵键盘上模拟演奏电子琴,数码管显示按键号#include#defineuch

29、arunsignedchar#defineuintunsignedint共阳极数码管编码ucharcodeDSY_Table=OxcO,0xf9,0xa4,OxbO,0x99,0x92,0x82,OxfB,ox80,/0J,2,3,4,5,6,7,80x90,0x88,0x83,0xc6,Oxa1,0x86,0x8e,0xBF;9,A,B,C,D,E,F,-各音符对应的延时uintcodeTone_Delay_TableI=64021,64103,64260,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65

30、157,65178);sbitBEEP=p30;蜂鸣器ucharKeyNo;按键序号/延时/voidDelayMS(ucharx)(uchari;while(x-)for(i=0;i120;i+);)/键盘矩阵扫描子程序/voidKeys_Scan()(ucharTmp,k;高四位置0,放入四行pl=OxOF;DelayMS(2);/按键后(XMx)IlIl将变成OOooXXXX,X中1个为0,3个仍为1下面0异或操作会把3个1变成0,唯一0O变成1Tmp=plOxOF;判断按键发生于03列中的哪一列switch(Tmp)(case 1: k=O;break;case 2: k=l;break

31、;case4:k=2;break;case8:k=3;break;default:retum;无键按下1低四位置O,放入四列pl=OxFO;DeIayMS;/按键后Illl(M)OO将变成XXXXOOOO,X中1个为0,3个仍为1下面的体现式会将高四位移至低四位,并将其中唯一的O变为1,其他为OTmp=(pl4)OxOF;对03行分别附加起始值0,4,8,12switch(Tmp)case 1: k+=0;break;case 2: k+=4;break;case4:k+=8;break;case8:k+=2;break;default:retum;)KeyNo=k;)/定期器0中断程序,不一样频率的声音由该中断产生/voidPlay_Tone()interrupt1(THO=Tone_Delay_TablefKeyNo/256;TLO=Tone_Delay_TableKeyNo%256;BEEP=-BEEP;)/主程序/voidmain()p=OxBF;初始显示“”TMOD=OxOI;IE=0x82;while(l)(pl=OxFO;发送扫描码if(pl!=OxFO)假如有键按下(Keys_Scan();扫描键盘矩阵p=DSY.TableKeyNo;/显示按键TRO=1;启动定期器,根据KeyNo发音)else(TRO=0;停止播放)DelayMS(2);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号