《单片机电子琴的设计 (最新)bndn.docx》由会员分享,可在线阅读,更多相关《单片机电子琴的设计 (最新)bndn.docx(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目录前言1第一章设设计要求求及工作作原理221.1 基本设设计要求求21.2 方案比比较与确确定21.3 系统组组成与工工作原理理2第二章硬硬件电路路设计662.1 单片机机最小系系统62.2 键盘模模块92.3 方波发发生模块块122.4 功率放放大发声声模块113第三章软软件设计计143.1 软件结结构功能能设计1143.2 主程序序设计1143.3 子程序序设计115第四章实实验调试试及测试试结果分分析1774.1 软件调调试1774.2系系统联调调18结论199参考文献献20附录1:系统原原理图221附录2 源程序序22附录3 电子琴琴成品图图26附录4元元件清单单27前言又称作电电子
2、键盘盘,属于于电子乐乐器(区区别于电电声乐器器),发发音音量量可以自自由调节节。音域域较宽,和和声丰富富,甚至至可以演演奏出一一个管弦弦乐队的的效果,表表现力极极其丰富富。它还还可模仿仿多种音音色,甚甚至可以以奏出常常规乐器器所无法法发出的的声音(如如合唱声声,风雨雨声,宇宇宙声等等)。另另外,电电子琴在在独奏时时,还可可随意配配上类似似打击乐乐音响的的节拍伴伴奏,适适合于演演奏节奏奏性较强强的现代代音乐。另另外,电电子琴还还安装有有效果器器,如混混响、回回声、延延音,震震音轮和和调制轮轮等多项项功能装装置,表表达各种种情绪时时运用自自如。 电子子琴是电电声乐队队的中坚坚力量,常常用于独独奏主
3、旋旋律并伴伴以丰富富的和声声。还常常作为独独奏乐器器出现,具具有鲜明明时代特特色。但但电子琴琴的局限限性也十十分明显显:旋律律与和声声缺乏音音量变化化,过于于协和、单单一;在在模仿各各类管、弦弦乐器时时,技法法略显单单调。电子琴是是一种功功能强大大,易于制制作,成成本低廉廉的现代代新型乐乐器。它它可根据据使用者者的不同同要求方方便的进进行设计计,成为为现代社社会一种种颇具市市场号召召力的乐乐器。单单片机具具有强大大的控制制功能和和灵活的的编程实实现特性性,在现现代工业业生活中中随处可可见,本本次课程程设计主主要就是利用SSTC889C52单片机机为核心心控制元元件,设设计简易易的一个个电子琴琴
4、,并以以此对电电子琴原原理及硬硬件组成成进行分分析并设设计,最最终由此此做出实实物。由由此更进进一步掌掌握微机机原理及及应用课课程的有有关知识识,提高高应用微微机解决决问题的的能力,加加深对微微机应用用的理解解。通过过查阅资资料,结结合所学学知识进进行软、硬硬件的设设计,初初步掌握握应用微微机解决决问题的的步骤及及方法。为为以后结结合专业业从事微微机应用用设计奠奠定基础础。第一章 设计计要求及及工作原原理1.1 基本设设计要求求1 基于单片片机STTC899C522为核心心。2 利用定时时/计数数器82253设设计并制制作一个个简易电电子琴。3 设计至少少8个按按键,每每个按键键对应一一种音调
5、调,即11、2、33、4、55、6、77、8八八个不同同的音节节。4 按下按键键发声,松松开按键键后声音音延迟一一段时间间后停止止,可弹弹奏简单单的乐曲曲。1.2 方案比比较与确确定方案一:使用单单片机内内部定时时器,通通过编程程实现发发出不同同频率方方波,产产生音阶阶。 方案二二:使用用82553作为为外部定定时器,通通过编程程实现产产生所需需频率的的方波。 通过对对方案一一和方案案二的比比较可以以知道,方方案一是是通过使使用单片片机内部部定时器器,以编编程实现现方波输输出,优优点在于于外部电电路简单单,程序序结构简简单,缺缺点在于于消耗单单片机资资源过多多,不利利于优化化升级;方案二二是利
6、用用82553来产产生方波波,相对对来说这这种方案案外部电电路较为为复杂,程程序结构构也更为为复杂,优优点在于于占用单单片机资资源少,输输出稳定定,利于于扩展;故而选选择方案案二较好好1.3 系统组组成与工工作原理理声音的频频谱范围围约在几几十到几几千赫兹兹, 若能能利用程程序来控控制单片片机某个个口线不不断输出出“ 高高” “ 低”电电平, 则在该该口线上上就能产产生一定定频率的的方波, 将该该方波接接上喇叭叭就能发发出一定定频率的的声音, 若再再利用程程序控制制“ 高高” “ 低”电电平的持持续时间间, 就能能改变输输出波形形的频率率从而改改变音调调。乐曲曲中, 每一音音符对应应着确定定的
7、频率率, 下表表给出各各音符频频率。如如果单片片机某个个口线输输出“ 高” “ 低低”电平平的频率率和某个个音符的的频率一一样, 那么将将此口线线接上喇喇叭就可可以发出出此音符符的声音音。本系系统就是是根据此此原理设设计, 对于单单片机来来说要产产生一定定频率的的方波大大致是先先将某口口线输出出高电平平然后延延时一段段时间再再输出低低电平, 如此此循环的的输出就就会产生生一定频频率的方方波, 通过改改变延时时的时间间就可以以改变输输出方波波的频率率。单片片机内部部有两个个位的定定时计数数器T11和T00, 单片片机的定定时计数数器实际际上是个个计数装装置它既既可以对对单片机机的内部部晶振驱驱动
8、时钟钟计数也也可以对对外部输输入的脉脉冲计数数, 对内内部晶振振计数时时称为定定时器, 对外外部时钟钟计数时时称为计计数器。当当对单片片机的内内部晶振振驱动时时钟计数数时,每个机机器周期期定时计计数器的的计数值值就加, 当计计数值达达到计数数最大值值时计数数完毕并并通知单单片机的的尸比对对外部输输入的时时钟信号号计数时时, 外部部时钟的的每个时时钟上升升沿定时时计数器器的计数数值就加加, 当计计数值达达到计数数最大值值时计数数完毕并并通知单单片机的的尸。因因此, 如果知知道单片片机的机机器周期期或者外外部输入入时钟信信号的周周期单片片机就可可以根据据定时器器的计数数值计算算出定时时的时间间。用
9、此此方法定定时十分分准确, 想得得到多大大的延时时时间就就可以给给定时器器赋一定定的计数数初值, 定时时器从预预先设置置的计数数初值开开始不断断增当增增加到计计数最大大值时计计数完毕毕, 调整整计数初初值的大大小就可可以调整整定时器器定时的的时间, 从而而达到准准确的延延时。在在本设计计中我们们使用的的外部时时钟信号号的晶振振频率为为12MMHz,而而采用的的计数方方式为方方式1,所所以计数数器的初初始值可可以由如如下公式式求得。 TT=6555366-100000000/2/fff为对应应音调的的频率;输出频率率对照表表:0xA99,0xxEF,/0002220HZZ ,11 /0 0x99
10、3,00xF00,/002233HHZ ,1# 0x773,00xF11,/002247HHZ ,2 0x449,00xF22,/002262HHZ ,2# 0x007,00xF33,/002277HHZ ,3 0xCC8,00xF33,/002294HHZ ,4 0x773,00xF44,/003311HHZ ,4# 0x11E,00xF55,/003330HHZ ,5 0xBB6,00xF55,/003349HHZ ,5# 0x44C,00xF66,/003370HHZ ,6 0xDD7,00xF66,/003392HHZ ,6# 0x55A,00xF77,/004415HHZ ,7 0x
11、DD8,00xF77,/004440HHZ 11 /122 0x44D,00xF88,/004466HHZ 11# /133 0xBBD,00xF88,/004494HHZ 22 /144 0x224,00xF99,/005523HHZ 22# /155 0x887,00xF99,/005554HHZ 33 /166 0xEE4,00xF99,/005587HHZ 44 /177 0x33D,00xFAA,/006622HHZ 44# /188 0x990,00xFAA,/006659HHZ 55 /199 0xDDE,00xFAA,/006698HHZ 55# /200 0x229,00xF
12、BB,/007740HHZ 66 /211 0x66F,00xFBB,/007784HHZ 66# /222 0xBB1,00xFBB,/008831HHZ 77 /233 0xEEF,00xFBB,/008880HHZ 1 0x22A,00xFCC,/009932HHZ 1# 0x662,00xFCC,/009988HHZ 2 0x995,00xFCC,/010046HHZ 2# 0xCC7,00xFCC,/011109HHZ 3 0xFF6,00xFCC,/011175HHZ 4 0x222,00xFDD,/012244HHZ 4# 0x44B,00xFDD,/013318HHZ 5 0x
13、773,00xFDD,/013397HHZ 5# 0x998,00xFDD,/014480HHZ 6 0xBBB,00xFDD,/015568HHZ 6# 0xxDC,0xFFD,/0116611HZ 7 /35 基于STTC899S522单片机机,以882533作为外外部中断断,通过过72779进行行键盘控控制,设设计一个个电子琴琴。单片片机作为为主控核核心,通通过对772799的键盘盘按键键键值进行行定义,让让定时器器82553产生生8个特特定频率率的方波波,通过过由LMM3866组成外外部功放放电路输输出至扬扬声器发发出122345567118个不不音阶。硬件部部分主要要功能模模块包含含
14、:键盘盘控制模模块、方方波发生生模块、声声音输出出模块。八八个音节节do、rre、mmi、ffa、ssol、lla、ssi、ddo所对对应的频频率分别别为5223HZZ、5887HZZ、6559HZZ、6998HZZ、7884HZZ、8880HZZ、9888HZZ、10047HHZ。软软件部分分主要功功能模块块包含:主程序序、82253方方波发生生子程序序、72279初初始化子子程序、接接收发送送字节子子程序、延延时子程程序等当按下特特定的按按键后,程程序通过过读键值值子程序序得到所所按下键键的键值值,再将将所得的的键值与与键盘11、2、33、4、55、6、77、8八八个键的的键值相相比较,从
15、从而确定定所按下下的键。当当确认按按键后再再调用882533方波发发生子程程序,使使82553产生生相应频频率的方方波持续续输出。系统原理理框图如如图1.1所所示:7279键盘模块单片机AT89C51定时/计数器8253功率放大电路喇叭发声模块图1.11 系统统原理框框图第二章 硬件件电路设设计2.1单单片机最最小系统统STC889C552主要要特性:与MCSS-511 兼容容8K字字节可编编程闪烁烁存储器器寿命:10000写/擦循环环数据保保留时间间:100年全静态态工作:0Hzz-244Hz三级程程序存储储器锁定定5122内部RRAM32可可编程II/O线线两个116位定定时器/计数器器5
16、个中中断源可编程程串行通通道低功耗耗的闲置置和掉电电模式片内振振荡器和和时钟电电路管脚说明明: VVCC:供电电电压。 GNDD:接地地。 PP0口:P0口口为一个个8位漏漏级开路路双向II/O口口,每脚脚可吸收收8TTTL门电电流。当当P1口口的管脚脚第一次次写1时时,被定定义为高高阻输入入。P00能够用用于外部部程序数数据存储储器,它它可以被被定义为为数据/地址的的第八位位。在FFIASSH编程程时,PP0 口口作为原原码输入入口,当当FIAASH进进行校验验时,PP0输出出原码,此此时P00外部必必须被拉拉高。 P1口口:P11口是一一个内部部提供上上拉电阻阻的8位位双向II/O口口,P
17、11口缓冲冲器能接接收输出出4TTTL门电电流。PP1口管管脚写入入1后,被被内部上上拉为高高,可用用作输入入,P11口被外外部下拉拉为低电电平时,将将输出电电流,这这是由于于内部上上拉的缘缘故。在在FLAASH编编程和校校验时,PP1口作作为第八八位地址址接收。 P2口口:P22口为一一个内部部上拉电电阻的88位双向向I/OO口,PP2口缓缓冲器可可接收,输输出4个个TTLL门电流流,当PP2口被被写“11”时,其其管脚被被内部上上拉电阻阻拉高,且且作为输输入。并并因此作作为输入入时,PP2口的的管脚被被外部拉拉低,将将输出电电流。这这是由于于内部上上拉的缘缘故。PP2口当当用于外外部程序序
18、存储器器或166位地址址外部数数据存储储器进行行存取时时,P22口输出出地址的的高八位位。在给给出地址址“1”时时,它利利用内部部上拉优优势,当当对外部部八位地地址数据据存储器器进行读读写时,PP2口输输出其特特殊功能能寄存器器的内容容。P22口在FFLASSH编程程和校验验时接收收高八位位地址信信号和控控制信号号。 PP3口:P3口口管脚是是8个带带内部上上拉电阻阻的双向向I/OO口,可可接收输输出4个个TTLL门电流流。当PP3口写写入“11”后,它它们被内内部上拉拉为高电电平,并并用作输输入。作作为输入入,由于于外部下下拉为低低电平,PP3口将将输出电电流(IILL)这这是由于于上拉的的
19、缘故。 P3口口也可作作为ATT89CC51的的一些特特殊功能能口,如如下表所所示: 口管脚脚 备选选功能 P3.0 RRXD(串串行输入入口) P3.1 TTXD(串串行输出出口) P3.2 /INTT0(外外部中断断0) P3.3 /INTT1(外外部中断断1) P3.4 TT0(记记时器00外部输输入) P3.5 TT1(记记时器11外部输输入) P3.6 /WR(外外部数据据存储器器写选通通) PP3.77 /RRD(外外部数据据存储器器读选通通) PP3口同同时为闪闪烁编程程和编程程校验接接收一些些控制信信号。 RSTT:复位位输入。当当振荡器器复位器器件时,要要保持RRST脚脚两个
20、机机器周期期的高电电平时间间。 AALE/PROOG:当当访问外外部存储储器时,地地址锁存存允许的的输出电电平用于于锁存地地址的地地位字节节。在FFLASSH编程程期间,此此引脚用用于输入入编程脉脉冲。在在平时,AALE端端以不变变的频率率周期输输出正脉脉冲信号号,此频频率为振振荡器频频率的11/6。因因此它可可用作对对外部输输出的脉脉冲或用用于定时时目的。然然而要注注意的是是:每当当用作外外部数据据存储器器时,将将跳过一一个ALLE脉冲冲。如想想禁止AALE的的输出可可在SFFR8EEH地址址上置00。此时时, AALE只只有在执执行MOOVX,MMOVCC指令是是ALEE才起作作用。另另外
21、,该该引脚被被略微拉拉高。如如果微处处理器在在外部执执行状态态ALEE禁止,置置位无效效。 /PSEEN:外外部程序序存储器器的选通通信号。在在由外部部程序存存储器取取指期间间,每个个机器周周期两次次/PSSEN有有效。但但在访问问外部数数据存储储器时,这这两次有有效的/PSEEN信号号将不出出现。 /EAA/VPPP:当当/EAA保持低低电平时时,则在在此期间间外部程程序存储储器(000000H-FFFFFFH),不不管是否否有内部部程序存存储器。注注意加密密方式11时,/EA将将内部锁锁定为RRESEET;当当/EAA端保持持高电平平时,此此间内部部程序存存储器。在在FLAASH编编程期间
22、间,此引引脚也用用于施加加12VV编程电电源(VVPP)。 XTAAL1:反向振振荡放大大器的输输入及内内部时钟钟工作电电路的输输入。 XTAAL2:来自反反向振荡荡器的输输出。 振荡器器特性: XTTAL11和XTTAL22分别为为反向放放大器的的输入和和输出。该该反向放放大器可可以配置置为片内内振荡器器。石晶晶振荡和和陶瓷振振荡均可可采用。如如采用外外部时钟钟源驱动动器件,XXTALL2应不不接。有有余输入入至内部部时钟信信号要通通过一个个二分频频触发器器,因此此对外部部时钟信信号的脉脉宽无任任何要求求,但必必须保证证脉冲的的高低电电平要求求的宽度度。图2-11STCC89CC52结结构图
23、单片机最最小系统统主要由由时钟电电路和复复位电路路组成。此系统的的时钟电电路设计计是采用用的内部部方式,即即利用芯芯片内部部的振荡荡电路。MMCS-51内内部有一一个用于于构成振振荡器的的高增益益反相放放大器。引引脚XTTAL11和XTTAL22分别是是此放大大器的输输入端和和输出端端。这个个放大器器与作为为反馈元元件的片片外晶体体谐振器器一起构构成一个个自激振振荡器。外外接晶体体谐振器器以及电电容CXX1和CCX2构构成并联联谐振电电路,接接在放大大器的反反馈回路路中。,此此系统电电路的晶晶体振荡荡器的值值为122MHzz,电容容值约为为30F。图2.22 时钟钟电路复位电路路是由外外部的复
24、复位电路路来实现现的。片片内复位位电路是是复位引引脚RSST通过过一个斯斯密特触触发器与与复位电电路相连连,斯密密特触发发器用来来抑制噪噪声,它它的输出出在每个个机器周周期的SS5P22,由复复位电路路采样一一次。其原理图图如图33.1所所示图2.33 单单片机最最小系统统原理图图2.2 键盘模模块HD72279是是一片具具串行接接口的,可可同时驱驱动8位位共阴式式数码管管(或664只独独立LEED)的的智能显显示驱动动芯片,该该芯片同同时还可可以连接接多达664键的的键盘矩矩阵,单单片即可可完成LLED显显示、键键盘接口口的全部部功能。HD72279内内不含有有译码器器,可直直接接收收BCD
25、D码或116进制制码,并并同时具具有2种种译码方方式,此此外i,还还具有多多种控制制指令,如如消隐、闪闪烁、左左移、右右移、段段寻址等等。HD72279具具有片选选信号,可可方便地地实现多多于8位位的显示示或多于于64键键的键盘盘接口。1 主要要特性:(1) 串行接口口,无需需外围元元件可直直接驱动动LEDD。(2) 各位独立立控制译译码/不不译码及及消隐和和闪烁属属性。(3) (循环)左左移/(循循环)右右移指令令(4) 具有段寻寻址指令令,方便便控制独独立LEED(5) 64键键键盘控制制器,内内含去抖抖动电路路(6) 有DIPP和SOOIC两两种封装装形式供供选择2 引脚脚说明:图2-4
26、4 772799引脚说说明图2-55 772799管脚图图键盘模块块主要由由键盘串串行接口口芯片772799扩展组组成。键键盘采用用4*44矩阵式式,按键键检查使使用行列列扫描方方式,行行设置低低电平,同同时读入入列状态态,如果果列状态态不是全全为1,则则此列与与行为00相交的的键就是是所按下下的键。在在应用过过程中,只只需要将将72779的CCS、CCLK、DDATAA和KEEY四个个端口分分别连接接至单片片机的PP1.00、P11.1、PP1.22和P11.3即即可。当当全部硬硬件电路路连接好好后,按按下键盘盘的按键键,单片片机将获获得该按按键的键键值,通通过软件件编程即即可确定定所需要要
27、的方波波频率值值,使882533产生该该频率的的方波,经经由功放放电路输输出至喇喇叭发声声。其原原理图如如图2-6所示示:图2.66 72279键键盘模块块原理图图2.3 方波发发生模块块方波发生生模块主主要由SSTC889C552、744LS3373、774LSS1388和82253组组成。其中,774LSS1388的A、BB、C口口分别连连接至AAT899C511的P22.5、PP2.66和P22.7,E1、E2、E3分别连接至P2.2、P2.3和P2.4口,由译码器74LS138的Y5口输出。由硬件连接可确定端口地址为:0A000H、0A001H、0A002H和0A003H。锁存器74L
28、S373的D0和D1口分别连接至P0.0和P0.1,Q0和Q1口分别连接至8253的A0和A1口,用于地址锁存。8253的D0到D7口分别连接至STC89C52的P0.0至P0.7口,GATE0口持续接高电平,CLK2处的时钟信号经由分频电路连接至单片机的读和写,使8253有稳定的2MHZ的时钟信号输入,最后在OUT2口便可产生持续的方波输出,频率则由软件编程决定。其原理图如图2.6所示:图2.77 方波波发生模模块原理理图2.4 功率放放大发声声模块功放模块块主要由由扬声器器和LMM3866构成,OOUT22信号输输出至LLM3886信号号输入端端,经由由放大电电路放大大后输出出至扬声声器发
29、声声。其原原理图如如图2.7所示示:图2.88 喇喇叭发声声模块原原理图第三章 软件设设计3.1 软件结结构功能能设计软件部分分主要包包含:主主程序、882533方波发发生子程程序、772799初始化化子程序序、接收收发送字字节子程程序、延延时子程程序等。主程序:判断所所读取的的键值,并并根据键键值赋值值do、rre、mmi、ffa、ssol、lla、ssi、ddo八个个音节的的频率。运运用swwitcch语句句,让所所选用的的8个键键值分别别与8个个音阶的的频率所所对应。882533方波发发生子程程序:设设定好882533的控制制字,且且为方式式3工作作方式(方方波发生生器)。将将8个音音节
30、的88个不同同频率转转换成116进制制数后赋赋值给882533的输出出端口地地址后相相减,即即可。72799初始化化子程序序:使片片选信号号的上升升沿时刻刻复位,使使芯片处处于上电电复位状状态。接收发送送字节子子程序:通过移移位将所所需要传传送的字字节存于于A中,以以便于其其它程序序进行调调用延时子程程序:通通过foor循环环得到延延时子程程序。3.2主主程序设设计主程序先先对72279进进行初始始化,调调用键值值读取子子程序,对对读取的的键值进进行判断断是否为为预设的的键值,若若不是则则返回,若若是怎进进入swwitcch语句句进行赋赋值。其其主程序序流程框框图如图图3.11所示:保存键值调
31、用方波发生子程序开始调用读键值子程序是数字18键吗?程序初始化NYNY图3.11 主主程序流流程框图图3.3子子程序设设计方波发生生子程序序:对882533进行初初始化,控控制字赋赋值,确确定工作作在方式式3,初初值送至至入口地地址。其其子程序序流程框框图如图图3.2所所示:判断是否否有键按按下,若若有,则则发送读读键盘数数据指令令,并保保存键值值。其子子程序流流程框图图如图33.3所所示:方波发生子程序入口8253控制字赋值设置入口地址赋初值读键值子程序入口是否有键按下?发送读键盘数据指令YN将键值保存于A中子程序返回子程序返回图3.22 方方波发生生子程序序流程框框图图3.3 读键键值子程
32、程序流程程框图72799初始化化子程序序:发送复复位指令令,子程程序返回回。其子子程序流流程框图图如图33.4所所示:发送一字字节子程程序:将所需需发送的的字节带带进位左左移一位位,循环环八次后后将所需需发送的的字符保保存于AA中,子子程序返返回。其其子程序序流程框框图如图图3.5所所示:初始化子程序入口发送复位指令发送一字节子程序入口发送复位指令是否循环8次?发送字符存于A中YN子程序返回图3.44 772799初始化化子程序序流程框框图 图3.5 发送送一字节节子程序序流程框框图第四章 实验调调试及测测试结果果分析4.1 软件调试试本次课程程设计简易电子子琴的软软件设计计我并没没有运用用汇
33、编语语言,而是运运用了并并没有在在课程中中学习的的C语言言,故在在设计的的时候遇遇到较大大的困难难。主要是是对于初初始化方方面不熟熟悉,后后通过上上网学习习及日立立电子钟钟的设计计对单片片机的CC程序设设计运用用较为熟熟练。首先对于于一些需需要使用用的数据据类型进进行定义义,如#deffinee uiint unnsiggnedd innt;后后用XBBYTEE命令对对82553进行行初始化化,用ssbitt指令对对72779进行行初始化化。然后编写写各子程程序,最最后编写写主程序序。开始时用用的是iif(!keyy=*)语句句来进行行键值的的判断,后后进行单单独赋值值的办法法,但是是后来发发
34、现这样样的语句句对于只只有几个个音阶的的简易电电子琴来来说还具具有可行行性,但但是对于于音阶较较多的就就显得太太为繁杂杂了,故故后建立立数组,编编写了频频率对照照表,运运用swwitcch语句句进行键键值判断断并查表表赋值。这这样的设设计使得得此程序序的可扩扩展性较较强。运用TRR0来控控制发声声。当硬件连连接好后后,我们们把程序序烧录进进单片机机进行初初步调试试,发现现没有任任何反应应,排查查后排除除了硬件件问题,然然后进行行了软件件排查。1单独独编写了了方波发发生程序序,发现现能发出出方波,但但是幅度度及频率率均与理理论值相相差巨大大。2由于于硬件排排查时认认为单片片机及功功放两部部分工作
35、作正常,为为了验证证这个结结论的正正确性,我我们先在在硬件电电路上绕绕过82253,单单片机输输出直接接连接功功放模块块,然后后改写程程序,使使用单片片机内部部中断,发发现一切切工作正正常,且且可在772799键盘上上弹奏音音乐。此此结果直直接证明明之前问问题出在在82553的论论断完全全正确,也也间接证证明程序序的编写写基本没没有问题题。3后为为了证明明程序编编写的正正确性,我我们把自自己程序序里的一一些初始始化数值值进行了了更改,达达到与别别组硬件件匹配后后,把自自己的程程序烧录录进别组组的硬件件中,发发现可以以工作。最后由于于时间问问题,我我们没有有排查出出82553的问问题,于于是更改
36、改了之前前的设计计,去掉掉了82253运运用方案案一进行行设计。在方案一一的调试试中遇到到以下几几个问题题:1. 发声频率率有误差差:运用用示波器器观察,对对根据公公式更改改参数达达到要求求。2. 按键与设设定音阶阶不符:检查程程序为sswittch语语句caase设设置偏差差。经调试后后,程序序运行正正确,达达到设计计要求。后期课程程设计结结束后自自己增加加了锁定定功能,自自动播放放功能。4.2系系统联调调经硬件检检测,程程序调试试后,将将程序下下载到单单片机,按按下所设设置的键键,与设设计要求求相比对对,扬声声器可正正常发出出中音88音阶,运运用示波波器检查查,8音音阶频率率稍有误误差,基
37、基本与理理论值相相同,达达到要求求,结果果在误差差范围之之内。根根据乐谱谱弹奏,可可弹奏出出正常乐乐曲。后期,对对程序进进行了升升级,加加入了节节奏控制制(以按按键时间间长短来来控制延延时长短短),建建立了乐乐曲频率率数组,可可播放数数组中所所存乐曲曲。此次次简易电电子琴设设计完成成。结论总的来说说,本次次的简易易电子琴琴设计不不是很成成功,因因为时间间关系,最最终没能能找出预预先设计计中的问问题,最最后只能能通过更更改设计计来实现现目的。但但是也收收获颇多多;首先先我主要要负责软软件的编编写,使使我对单单片机的的C程序序设计从从无到有有,从不不会到会会,深入入的了解解了单片片机程序序设计中中
38、汇编与与C两种种语言的的优劣点点,使我我以后设设计程序序时对语语言的选选择有了了一个清清醒的认认识。进进而发现现问题就就要解决决问题,在在这次解解决问题题中发现现了自己己很多不不懂得知知识,为为了解决决问题自自己去找找资料学学习,并并且在老老师的指指导下学学会了如如何有条条理的去去排查问问题以及及如何去去验证自自己的猜猜测。特别是在在我所主主要负责责的程序序方面,在在一次次次的验证证中不断断编写各各种功能能的程序序,从刚刚开始的的什么都都不懂,经经常要自自己上网网找资料料学习,都都后来在在编写程程序中总总能有各各种奇思思妙想,经经常能有有一些让让自己都都经不住住感叹的的构思,对对C语言言有一种
39、种得心应应手的感感觉。自自己在这这之中编编写了很很多各种种功能的的程序,如如对电子子琴进行行锁定,录录制等功功能。最后,虽虽说这次次的课程程设计结结果不是是很成功功,但是是过程中中的收获获却是相相当多的的。参考文献献 1 杨学学昭.单单片机原原理、接接口技术术及应用用(含cc51),220099年2月月2 佚名.娱乐应应用电路路集粹. 机械械工业出出版社,2005年2月3 阎石.数字电电子技术术基础.北京:高等教教育出版版社,220066年5月月4 何宏、龚龚威.单单片机原原理与接接口技术术.北京京:国防防工业出出版社,200065 楼然苗苗、李光光飞 .单片机机课程设设计指导导.北京京:北京
40、京航空航航天大学学出版社社,200076 王福瑞瑞等 .单片机机测控系系统设计计大全.北京:北京航航空航天天大学出出版社,199997 张友德德、赵志志英、涂涂时亮.单片机机微型机机原理、应应用与实实验.上上海:复复旦大学学出版社社,20006第第五版8 徐新艳艳.单片片机原理理、应用用与实践践.北京京:高等等教育出出版社,20005年33月99 张张毅刚.MCSS-511单片机机应用设设计.哈哈尔滨:哈尔滨滨工业大大学出版版社,22004410杨兴瑶瑶.实用用电子电电路5000例.化学工工业出版版社,119966附录1:系统原原理图附录2 源程序序#inccludde /包括一一个 552
41、标标准内核核的头文文件 #inccludde /XXBYTTE头文文件 #deffinee COOM82253 XBYYTE 0xx0A0003#deffinee COOM82253_H XXBYTTE 0x00A0#deffinee COOM82253_L XXBYTTE 0x0002#deffinee uccharr unnsiggnedd chhar /定定义一下下方便使使用 #deffinee uiint unnsiggnedd innt #deffinee ullongg unnsiggnedd loong #deffinee uccharr unnsiggnedd chhar#de
42、ffinee uiint unssignned inttunsiigneed ccharr keey_nnumbber;unsiigneed ccharr fllag;#deffinee CMMD_RRESEET 00xa44 /reestaart#deffinee DEECODDE1 0xcc8/ddownnlaood 11 #deffinee CMMD_RREADD 0xx15/ reaad kkey#deffinee BLLINKKCTLL 0xx88 / bblinnk /*HDD72779连接接*sbitt css=P110; / css PP1.00sbitt cllk=PP111
43、; / cclk P1.1sbitt daat=PP122; / ddataa P11.2sbitt keey=PP133; / kkey P1.3/长短短延时程程序voidd loong_dellay(voiid) uunsiigneed ccharr i; ffor (i=0;ii0xx30;i+);voidd shhortt_deelayy(vooid) unssignned chaar ii; forr (ii=0;i88;i+);voidd seend_bytte( unssignned chaar oout_bytte) /发送送字节到到72779 uunsiigneed ccharr i; ccs=00; llongg_deelayy(); forr (ii=0;i88;i+) iff(ouut_bbytee&0xx80) ddat=1; eelsee daat=00; cllk=11; shhortt_deelayy(); cllk=00; shhortt_deelayy(); ouut_bbytee=ouut_bbytee*2; ddat=0;/72279接接收发送送子程序序unsiigneed ccharr reeceiive_bytte(vvoidd) /接收772799一个字字节 unssignned chaar ii, i