




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河南理工大学本科课程设计报告河南理工大学单片机应用与仿真训练设计报告基于单片机的电子琴设计姓 名: 位锋威 学 号: 321108010427 专业班级: 电气本11-4 指导老师: 刘巍 所在学院:电气工程与自动化学院2011年5月 8日摘要本设计是用AT89S52单片机为核心控制元件,设计一个模拟电子琴发声控制系统。以单片机作为主控核心,与键盘、扬声器、LED显示器等模块组成核心主控制模块。在主控模块上设有11个按键,其中7个按键控制7个音符,1个作为播放示例乐曲使用,具有手动随意弹奏和自动播放乐曲的功能,另外3个按键用来实现高、中、低音的音符发音。下面具体介绍一下单片机各端口的分配功能:单片机的P2.0-P2.6为输入端口,用来控制7个音符的选择弹奏;P2.7为功能转换键,它能切换手动随意弹奏和自动播放乐曲的功能;P2.0-P2.2为单片机控制电子琴实现弹奏高、中、低的功能切换键;P0端口通过上拉电阻接到+5V上,然后接LED共阴数码管;P1.0为单片机的输出端口,它通过限流电阻R与三极管级基极相接,三极管的集电极接有接蜂鸣器。 本设计通过控制单片机定时器的定时时间产生不同频率的音频脉冲,经三极管放大信号后驱动蜂鸣器发出不同音节的声音。要实现7个音符的各自的高、中、低音,需要建立三个表,分别存储高音、中音和低音的频率值;当三个拨码开关中某一个按下,通过软件选择相应的音频。按下弹奏键就可弹奏出不同的声音。另外用软件延时来控制发音时间的长短,来控制节拍。通过把乐谱中的音符和相应的节拍变换为定时常数和延时常数,作为数据表格存放在存储器中。由程序查表得到定时常数和延时常数,分别用来控制定时器产生的脉冲频率和发出该音频脉冲的持续时间,这样就可以实现乐曲的演奏。为了实现按键的准确判断和完善电子琴发声的效果,本设计采用了软件防抖的方法,有效的解决了按键抖动的问题。另外当按下功能切换乐曲播放键,本系统能实现自动播放一首乐曲,另附带数码管显示提醒。这样使得电子琴的功能变的更加强大。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。目录1概述31.1 引言31.2 设计思路32系统总体方案及硬件设计52.1 系统组成与总体框图52.2 元件介绍53软件设计73.1 音乐相关知识73.2 如何用单片机实现音乐的节拍73.3 如何用单片机产生音频脉冲73.4 系统总体功能流程图84 Proteus软件仿真104.1 ISIS软件介绍104.2 仿真图105课程设计体会11参考文献11附1:源程序代码12附2:系统原理图181概述1.1 引言电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。目前市场上各种品牌、型号的电子琴有上百种,由几十块的玩具电子琴到几百,几千的学习、演奏用琴真是琳琅满目,电子琴能够模仿各种音色和具有自动伴奏功能,这些是电子琴最基本的特征。本设计主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴系统硬件组成。利用单片机产生不同频率来获得我们要求的7个音符,最终可随意弹奏想要表达的音乐。并且本设计分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。 一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。1.2 设计思路从系统实现的功能上来看,电子琴的设计主要分为手动弹奏乐曲和自动播放音乐两大部分组成。手动弹奏乐曲是根据具体的硬件键盘设置了7个音符按键,3个高、中、低音模式切换键和1个功能转换键,自动播放音乐是在单片机的存储器中通过软件编程的方法放置音乐代码和相关播放程序来实现。从系统硬件结构上来看,主要使用到52系列单片机、7个键输入电路、LED数码管显示电路、扬声器以及电源电路等等。将这些硬件电路有机地结合起来使之满足电子琴设计的基本硬件要求。从系统软件设计角度来看,将电子琴的设计采用程序模块化设计方法,将程序分为主程序、键盘扫描程序模块、数码显示模块、转换控制模块、音乐产生模块等等。此外,采用程序设计思想,将中断定时方式与外部按键查询方式相结合,实现手动弹奏乐曲到自动播放音乐的切换。从音乐产生原理方面来看,通过控制单片机的定时器的定时时间产生不同频率的音频脉冲,经放大后驱动扬声器发出不同音乐的声音。用软件延时来控制发音时间的长短,控制节拍。把音乐的音符和相应的节拍变换为定时常数和延时常数,作为数据表格存放在程序存储器中,由程序查表得到定时常数和延时常数,分别用来控制定时器产生的脉冲频率和发出音频脉冲的持续时间。2系统总体方案及硬件设计2.1 系统组成与总体框图硬件设计的任务是根据总体设计要求,在选择的机型的基础上,具有确定系统中所要使用的元器件,设计出系统的原理框图、电路原理图。该设计要实现一种有单片机控制的电子琴,单片机工作于12MHZ时钟频率,使用其定时/计数器T0,工作模式为1,改变计数值TH0和TL0可以产生不同频率的脉冲信号.该设计具有11个音节键盘,用户可以根据乐谱在键盘上进行演奏,音乐发生器会根据用户的弹奏,通过扬声器将音乐播放出来,本设计可以实现用户自由弹奏音乐。用单片机产生的音频脉冲直接驱动扬声器并不能产生所要实现的音乐,因为它没有足够的驱动能力,这就需要音频功率放大器,本设计采用三极管就可以实现信号放大功能。基于单片机系统的电子琴的基本结构如图(1)所示:AT89S52弹奏按键功能切换键时钟电路复位电路扬声器LED显示图(1)2.2 元件介绍1、AT89S52功能特性:AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器,使用Atmel公司高密度非易失存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下便准功能:8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。8 位微控制器 8K 字节在系统可编程 Flash AT89S52。主要性能:与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:0Hz33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。2、三极管晶体三极管也称三极管,是通过一定的工艺,将两个PN结结合在一起的器件.由于PN结之间的相互影响,使三极管变现出不同于单个PN结的特性而具有电流放大功能,从而使PN结的应用发生了质的飞跃。3、LED数码管本次设计的显示电路采用LED数码管显示,LED(Light-Emitting Diode)是一种外加电压从而渡过电流并发出可见光的器件。LED是属于电流控制器件,使用时必须加限流电阻。LED有单个LED和八段LED之分,也有共阴和共阳两种。常用的七段显示器的结构如图下图所示。发光二极管的阳极连在一起的称为共阳极显示器(如图b所示),阴极连在一起的称为共阴极显示器(如图c所示)。1位显示器由八个发光二极管组成,其中七个发光二极管ag控制七个笔画(段)的亮或暗,另一个控制一个小数点的亮和暗,这种笔画式的七段显示器能显示的字符较少,字符的开头有些失真,但控制简单,使用方便。此外,要画出电路图,首先还要搞清楚他的引脚图的分布,在了解了正确的引脚图后才能进行正确的字型段码编码。才能显示出正确的数字来。(a)外形 (b)共阳极 (C)共阴极 图3-6 数码管引脚3软件设计3.1 音乐相关知识乐音听起来有的高,有的低,这就叫音高,音高是由发音物体振动频率的高低决定的,频率高声音就高,频率低声音就低,不同音商的乐音是用C、D、E、F、G、A、B表示的,这7个字母就是乐音的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,这是唱曲时乐音的发音,所以叫唱名。音持续时间的长短即时值,一般用拍数表示,休止符表示暂停发音。一首音乐是由许多不同的音符组成的,而每个音符对应着不同的频率,这样就可以利用不同频率的组合,加以与拍数对应的延时,构成音乐。3.2 如何用单片机实现音乐的节拍除了音符以外,节拍也是音乐的关键组成部分。节拍实际上就是音持续时间的长短,在单片机系统中可以用延时来实现,如果1/4拍的延时是0.4秒,则1拍的延时是1.6秒,只要知道1/4拍的延时时间,其余的节拍延时时间就是它的陪数。如果单片机要自己播放音乐,那么必须在程序设计中考虑到节拍的设置,由于本例实现的音乐发生器是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。音乐的音拍,一个节拍为单位(C调)具体如下表:曲调值DELAY 曲调值DELAY调4/4125ms 调4/462ms调3/4187ms 调3/494ms调2/4250ms 调2/4125ms 音乐节拍表3.3 如何用单片机产生音频脉冲了解音乐的一些基本知识后可知,产生不同频率的音频脉冲即能产生音乐,对于单片机而言,产生不同频率有脉冲非常方便,可以利用它的定时/计数器来产生这样的方波频率信号,因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。在本设计中,单片机工作于12MHZ时钟频率,使用其定时/计数器T0,工作模式为1,改变计数值TH0和TL0可以产生不同频率的脉冲信号,在此情况下,C调的各音符频率与计数值T的对照如下表: 音符频率与计数值T的对照表T的值决定了TH0和TL0的值,其关系为:TH0=T/256,TL0=T%2563.4 系统总体功能流程图该程序设计思路比较清晰既从开始到声明变量与函数再到读取按钮开关,判断是否按下,然后就是一个一个按钮的动作。其主程序框图如下:4 Proteus软件仿真4.1 ISIS软件介绍Proteus ISIS 是英国Labcenter公司开发的电路分析与实物仿真。可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:它实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。它支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。它提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如 KeiC51 u Vision2 等软件。 另外,它具有强大的原理图绘制功能。 4.2 仿真图 本设计系统的仿真图如下所示: 5课程设计体会这次设计从软件方面来讲不是很难,程序相对长一点,但都是书本上所学的知识,主要是中端及其服务程序的编写。在protues上仿真,则起到很好的效果,因为元器件都是理想状态的,但做出实物来却不是那么简单啦。经过多次调试、修改才得以出结果。将程序烧入芯片,调试成功后,可任意弹奏自己想要的旋律。同时可以播放一首示例歌曲,但是也有不足之处的,声音杂音时而有点大,不稳定。经过本次课程设计,我们比较好的把理论知识与实践相结合,而我们在也本次设计中收获不少。设计过程中,首先,对于汇编语言多了一层了解,其次,还有硬件的接线,还有AT89S52芯片的引脚方面,都让我们收获不少。加强了自身的动手能力。参考文献1 余发山,王福忠,杨凌霄. 单片机原理及应用技术. 中国矿业大学出版社.2008.62 王守中. 51单片机开发入门与典型实例. 北京:人民邮电出版社,2007.83 胡辉. 单片机应用系统设计与训练. 北京:中国水利水电出版社,2004.8附1:源程序代码KEYBUF EQU 30H ;列号保存单元STH0 EQU 31H ;定时器T0初值高8位存放单元STL0 EQU 32H ;定时器T0初值低8位存放单元TEMP EQU 33H ;定时器初值偏移地址存放单元SPK EQU P1.0 ;发声器所在端口ORG 0000HLJMP START ;上电转向主程序ORG 000BH ;定时器T0中断向量地址LJMP INT_T0 ;转向定时器T0中断服务子程序START: MOV DPTR,#TABLE2 ;默认为中音模式 MOV TMOD,#11H ;设置定时器的工作方式,定时器T0和T1都是方式1,作为16为定时计数器使用(定时方式) SETB ET0 ;开各中断开关 SETB EA ;开放中断总允许和源允许ZAICI: ACALL SAOMIAO ;进入手动弹奏程序 SJMP ZAICI;*手动弹奏程序*SAOMIAO:;*高中低音模式选择* MOV P3,#0FFH ;判断P3口模式键是否有键按下 MOV A,P3 XRL A,#0FFH CJNE A,#00H,MOSHI ;有键按下,转向模式转换子程序 AJMP TANZOU ;没有按下模式不变MOSHI:LCALL DELY10MS ;延时消抖 JB P3.0,ZHONGYIN ;高音键没有按下,转向中音 MOV DPTR,#TABLE1 ;高音键按下将模式设定为高音 LJMP TANZOU ;转向扫描音符键 ZHONGYIN: JB P3.1,DIYIN ;中音键没有按下,转向低音 MOV DPTR,#TABLE2 ;中音键按下将模式设定为中音 LJMP TANZOU ;转向扫描音符键DIYIN:JB P3.2,TANZOU ;低音键没有按下,转向扫描音符键 MOV DPTR,#TABLE3 ;低音键按下将模式设定为低音 LJMP TANZOU ;转向扫描音符键 ;手动弹奏程序;*音符键扫描*TANZOU:MOV P2,#0FFH ;先将键盘的列全部置为高电平 MOV A,P2 XRL A,#0FFH CJNE A,#00H,NEQ ;有键按下转向NEQ CLR P1.0 ;没有键按下,蜂鸣器不发声 LJMP NOKEYS ;没有按键按下即跳转到NOKEYSNEQ: LCALL DELY10MS ;延时10ms消抖 MOV A,P2 ;消除扰动和干扰 XRL A,#0FFH CJNE A,#00H,NK1 LJMP NOKEYS ;为扰动信号没有键按下转NOKEYSNK1: MOV A,P2 ;判断是否按下#1键 CJNE A,#0FEH,NK2 ;按下#1键即顺序执行程序,否则跳到NK2检查下一键位 MOV KEYBUF,#0 ;保存列号#0 MOV P0,#06H ;让LED显示为1 LJMP DK1NK2: CJNE A,#0FDH,NK3 ;判断是否按下#2键 MOV KEYBUF,#1 ;保存列号#1 MOV P0,#5BH ;让LED显示为2 LJMP DK1NK3: CJNE A,#0FBH,NK4 ;判断是否按下#3键 MOV KEYBUF,#2 ;保存列号#2 MOV P0,#4FH ;让LED显示为3 LJMP DK1NK4: CJNE A,#0F7H,NK5 ;判断是否按下#4键 MOV KEYBUF,#3 ;保存列号#3 MOV P0,#66H ;让LED显示为4 LJMP DK1NK5: CJNE A,#0EFH,NK6 ;判断是否按下#5键 MOV KEYBUF,#4 ;保存列号#4 MOV P0,#6DH ;让LED显示为5 LJMP DK1NK6: CJNE A,#0DFH,NK7 ;判断是否按下#6键 MOV KEYBUF,#5 ;保存列号#5 MOV P0,#7DH ;让LED显示为6 LJMP DK1 NK7: CJNE A,#0BFH,NK8 ;判断是否按下#7键 MOV KEYBUF,#6 ;保存列号#6 MOV P0,#07H ;让LED显示为7 LJMP DK1NK8: CJNE A,#7FH,NEXT111 ;判断是否按下#8键 MOV KEYBUF,#7 ;保存列号#7 MOV P0,#0FFH ;让LED显示为8 LJMP NEXT111DK1: MOV A,KEYBUF ;取列号 MOV B,#2 ;初值为双字节,乘以2 MUL AB ;对应读取表格TABLE1的数据 MOV TEMP,A ;保存初值高八位偏移地址 MOVC A,A+DPTR ;取初值高八位 MOV STH0,A ;保存值高八位 MOV TH0,A ;装初值高八位 INC TEMP ;初值高八位偏移地址加一得到初值低八位偏移地址 MOV A,TEMP MOVC A,A+DPTR ; 取初值低八位 MOV STL0,A ;保存值低八位 MOV TL0,A ;装初值低八位 SETB TR0 ;开启定时器T0,T0开始计数DK1A: ;判断音符键是否松开 MOV A,P2 XRL A,#0FFH JNZ DK1A ;没有松开,等待 CLR TR0 ;松开,定时器T0停止计数NOKEYS: RET ;返回NEXT111: MOV P2,#0FFH MOV A,P2 XRL A,#0FFH JNZ NEXT111 ;如果A不为0,即按键有变化,等待键释放 MOV SP,#60H ;设定堆栈指针指向60H MOV 40H,#00H ;歌谱偏移地址存储单元清零MOV DPTR,#TABLE10 ;DPTR指向歌歌谱 LJMP MUSIC;*歌曲播放程序*MUSIC: NEXT20: MOV A,40H MOVC A,A+DPTR MOV R2,A ;取歌谱 JZ STOP ;为零歌结束 ANL A,#0FH ;取低四位,节拍的延迟时间 MOV R1,A ;延时时间送R1 MOV A,R2 SWAP A ANL A,#0FH ;取高四位 JNZ SING ;高四位不为零转向SING CLR TR0 ;为零则为句间暂停,定时器T0停止计数 JMP W1 ;转向W1;-SING:DEC A ;高四位减一得到频率初始值偏移地址MOV 22H,A ;保存偏移地址到22HRL A ;初始值为双字节,偏移地址乘以2PUSH DPL PUSH DPH ;保存DPTR的值MOV DPTR,#TABLE00 ;DPTR指向频率初始值表MOVC A,A+DPTR ;取频率初始值高八位MOV TH0,A ;保存频率初始值高八位MOV STH0,A ;装频率初始值高八位MOV A,22H ;取偏移地址RL A ;初始值为双字节,偏移地址乘以2INC A ;偏移地址加一指向初始值低八位MOVC A,A+DPTR ;取频率初始值低八位POP DPHPOP DPL ;恢复DPTR的值MOV TL0,A ; 保存频率初始值低八位MOV STL0,A ;装频率初始值低八位SETB TR0 ;启动定时器计时W1:CLR P1.0 ;句间暂停,蜂鸣器不发声LCALL DELAY30 ;调用节拍延时时间INC 40H ;节拍加一LJMP MUSIC ;继续播放;-STOP:CLR TR0 ;歌曲播放完毕,定时器停止计时LJMP START ;转向点歌程序 ;*延时10ms子程序*DELY10MS: MOV R6,#20D3: MOV R7,#248 DJNZ R7,$ DJNZ R6,D3 RET;*T0中断服务子程序*INT_T0: MOV TH0,STH0 MOV TL0,STL0 ;重装计数初值 CPL P1.0 ;P1.0取反 RETI;*延时1s子程序*DELAY0: MOV R7,#50DELA: MOV R6,#100DEL12: MOV R5,#100 DJNZ R5,$ DJNZ R6,DEL12 DJNZ R7,DELA RET;*延时子程序DELAY*DELAY30: MOV
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 民爆品安全培训课件
- 民法总则课件魏振瀛
- 初中月考考试原题及答案
- 餐厅服务员考试题及答案
- 大学生母亲节活动方案
- 新质生产力主题宣讲
- 预制菜企业的新质生产力发展
- 佳木斯工业新质生产力
- 民族自治地方课件
- 农业领域:新质生产力的定位
- 信息安全意识培训课件
- 国际机票基础知识课件
- 快递行业员工行为规范及管理制度
- 综合实践创意垃圾桶课件
- 《医患沟通》课件-2024鲜版
- 河北省邯郸市2025届高三年级第一次调研监测 英语
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蚀工程施工及验收规范
- 四川省成都市2025届高中毕业班摸底测试英语试题(含答案)
- 简易呼吸器使用的评分标准
- 电脑耗材实施方案、供货方案、售后服务方案
- 水利工程专家协议书
评论
0/150
提交评论