




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于单片机的电子琴及音乐播放器设计基于单片机的电子琴及音乐播放器设计摘 要随着电子技术的发展和计算机越来越普遍的使用,单片机作为这两项技术的有机结合也得到了广泛的应用。电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。此次设计依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个基于AT89C52系列单片机的电子琴及音乐播放器,以单片机作为主控核心,主要由按键电路、复位电路、模式转换电路等组成。利用单片机及KeilC51编程软件编程和PROTEUS单片机仿真软件和电子电工等方面知识,用KeilC51编程软件编程,用PROTEUS单片机仿真软件仿真。最后制作实物,将程序下载到单片机中,利用I/O口产生一定频率的方波,驱动喇叭,发出不同的音调,从而演奏乐曲。本论文给出了系统方案的建立、硬件电路的详细设计及软件的程序实现。并通过软硬件的联立调试,验证了设计方案的可行性。通过基于单片机的音乐播放器的设计课题熟悉和理解单片机应用和开发过程,培养我们理论联系实际,实践出真知的科学严谨求学的态度,提高实践动手操作技能。关键词:AT89C52单片机、电子琴、音乐播放器、仿真软件 目录摘 要11 引 言32 单片机基础知识简介42.1 单片机介绍42.1.1单片机概念42.1.2 单片机的应用42.1.3 单片机的发展趋势53 课程设计介绍63.1 课程设计的目的63.2 课程设计的要求63.3 系统方案的拟定与选择73.3.1 初步方案的确定73.3.2方案的简单说明73.4课程设计的总体结构框图73.5课程设计的意义84 硬件设计84.1 硬件电路的设计框图84.2 硬件电路设计模块的选定84.2.1 中心模块84.2.2 播放模块9 4.2.3按键模块105 软件设计125.1软件系统介绍125.2编程软件KeilC51125.2.1 Keil C51概述125.2.2 Keil C51 的整体结构135.2.3 采用Keil C51 开发的 AT89C51 单片机应用程序步骤135.3 绘图软件 Proteus135.3.1 Proteus 概述135.3.2 proteus 的操作步骤145.4 单片机的发声原理145.5 系统程序设计155.5.1 主程序流程图设计155.5.2 1ms延时程序设计175.5.3函数初始化子程序设计186 设计心得体会188 附录208.1 附录一 硬件原理图208.2 附录二 实物图208.3 附录三 元器件清单218.4 附录四 软件主程序211 引 言二十一世纪,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。在信息家电和行业应用手持信息设备等信息终端类产品中,具备音乐播放功能已成为此类产品的发展趋势之一。基于电子琴的诸多优点和广泛使用,是我们大家日常生活中较为熟悉的一种电子产品。为培养我们大学生的思考、理解身边电子产品的习惯和提高自己的实际动手能力,我选择了设计一款以AT89C52单片机为核心的音乐播放器作为自己的单片机课程设计。本次设计由硬件电路设计和软件程序设计两大部分组成,是应用MCS-51单片机原理和控制理论设计音乐演奏控制器的硬件电路,并利用汇编语言进行程序设计。整个硬件电路是由中心控制、播放和按键等模块组成,中心控制模块采用AT89C52单片机,播放模块是由8050 NPN三极管和喇叭组成,电子琴设有8个按键,实现用户自弹作曲。一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,构成我们想演奏的那首曲目。当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样的方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系编写正确就可以达到我们想要的曲目。本文主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴硬件的组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏要表达的音符。并且分别从原理图,主要芯片,个模块原理及各模块的程序的调试来详细阐述。2 单片机基础知识简介2.1 单片机介绍2.1.1单片机概念 单片机(SCM)又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是将中央处理单元(CPU)、存储器(RAM,ROM)、输入/输出接口电路等微型计算机的基本功能部件集成在一块集成电路芯片上,构成一个具有存储、运算、输入输出功能的微型计算机。 MCS-51单片机是美国INTEL公司于1980年推出的产品,与MCS- 48单片机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元和指令,指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品,各高校及专业学校的培训教材仍与MSC-51单片机作为代表进行理论基础学习。 MCS-51系列单片机主要包括8031、8051和8751等通用产品。DP-51S单片机仿真实验仪是由广州致远电子有限公司设计的DP系列单片机仿真实验仪之一,是一种功能强大的单片机应用技术学习、调试。2.1.2 单片机的应用单片机的应用提高了机电产品的技术水平和自动化程度,对各行各业的技术改造和产品更新起到了重要的推动作用。其应用领域已从工业控制、仪器仪表、机电一体化设备等迅速发展到家用电器、办公自动化、汽车电子等广大领域。一、在智能仪器仪表的应用 单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。例如精密的测量设备(功率计,示波器,各种分析仪)。二、在家用电器中的应用可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。三、在工业控制中的应用 用单片机可以构成形式多样的控制系统、数据采集系统。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。四、在计算机网络和通信领域中的应用 现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机、电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。五、单片机在医用设备领域中的应用 单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。 此外,单片机在工商、金融、科研、教育、国防航空等领域都有着十分广泛的用途。2.1.3 单片机的发展趋势 单片机现在可以说是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供了广阔的天地。纵观单片机的发展过程,可以预示单片机的发展趋势,大致有: (1)微型单片化 现在常规的单片机普遍都是将中央处理器(CPU)、随机存取数据存储(RAM)、只读程序存储器(ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如A/D转换器、PMW(脉宽调制电路)、WDT(看门狗)、有些单片机将LCD(液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。 此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。现在的许多单片机都具有多种封装形式,其中SMD(表面封装)越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。(2)低功耗CMOS化MCS-51系列的8031推出时的功耗达630mW,而现在的单片机普遍都在100mW左右,随着对单片机功耗要求越来越低,现在的各 个单片机制造商基本都采用了CMOS(互补金属氧化物半导体工艺)。像80C51就采用了HMOS(即高密度金属氧化物半导体工艺)和CHMOS(互补高密度金属氧化物半导体工艺)。CMOS虽然功耗低,但由于其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗的特点,这些特征,更适合于要求低功耗像电池供电的应用场合。所以这种工艺将是今后一段时期单片机发展的主要途径。 (3)主流与多品种共存 现在虽然单片机的品种繁多,各具特色,但仍以80C51为核心的单片机占主流,兼容其结构和指令系统的有PHILIPS公司的产品,ATMEL公司的产品和中国台湾的Winbond系列单片机。所以80C51占据了半壁江山。而Microchip公司的PIC精简指令集合(RISC)也有着强劲的发展势头,中国台湾的HOLTEX公司近年的单片机产量与日俱增,与其底价质优的优势,占据一定的市场份额。此外还有MOTOROLA公司的产品,日本几大公司的专用单片机。在一定的时期内,这种情形将得以延续,将不存在某个单片机一统天下的垄断局面,走的是依存互补、相辅相成、共同发展的道路。 九十年代以后,单片机在结构上采用双CPU或内部流水线,CPU位数有8位、16位、32位,时钟频率高达20MHZ,片内带有PWM输出、监视定时器WDT、可编程计数器阵列PCA、DMA传输、调制解调器等。芯片向高度集成化、低功耗方向的发展,使得单片机在大量数据的实时处理、高级通信系统、数字信号处理、复杂工业过程控制、高级机器人以及局域网等方面得到大量应用。这类单片机有NEC公司的MPD7800,MITSUBISHI公司的M337700,REVKWELL公司的R6500。3 课程设计介绍3.1 课程设计的目的 以AT89C52单片机、喇叭、按钮等元器件,并利用单片机的原理组成一个电子琴音乐播放器。3.2 课程设计的要求(1)用Proteus画图软件画出音乐播放器的硬件原理图。(2)画出软件流程图,采用单片机C语言根据音乐播放器要实现的功能进行编程。(3)用Keil编程软件调试所编的C程序,并将其生成*.hex文件,首先将其载入硬件原理图的单片机中,完成硬件与软件调试综合调试,实现预定功能。(4)根据所设计的硬件原理图进行实物焊接,将生成的*.hex文件烧入芯片中,实现设计要求。(5)写出课程实习报告3.3 系统方案的拟定与选择3.3.1 初步方案的确定在课程设计实习开始之前,我们在图书馆及电子阅览室进行了大量资料的收集,通过我们组成员的探讨,初步确定了设计方案,基于单片机的电子琴及音乐播放器设计。3.3.2方案的简单说明主要实现的是7个按键实现弹奏功能,1个按键能够实现音乐播放。控制键盘,将8个按键依次接在P2口上,使其一旦有按键按下就会对应播放一个对应的音符。停止按键可以使用复位电路来实现。各音调对应的定时器初始装载表也以数组的形式按升调顺序存储,并按前面所述将各歌曲的对应音调和节拍存储在数组中,有按键按下时,将歌曲的数组首地址传给全局指针,利用相应的处理函数调出音调对应的定时器装载值表,给定时器装载初值并启动,产生控制扬声器的方波,根据低半字节控制延时时间,即音调的发音长短。3.4课程设计的总体结构框图单片机接+5V电源供电,晶振电路产生单片机所需时钟信号,通过功能键产生外部中断,再由I/O接口输出控制扬声器发声。另外,复位电路在于营造一个程序运行的初始状态,在程序运行过程中或有出错时,重新启动单片机工作。课程设计总体框图如下图所示:电源电路 复位电路 放大电路 晶振电路 按键电路扬声器 AT89C52 单片机图3.4 课程设计总体框图3.5课程设计的意义从最开始的选择课题、设计方案,到软件及硬件的设计,自己动手画硬件电路图,进行排版焊接,软件调试,使得我们更好地熟悉和掌握单片机的原理、基本功能和编程,深入了解51单片机的实际应用,更深的理解、吸收课堂上所学知识,将理论及实际联系在一起,更好地提高动手能力,及发现问题、分析问题、解决问题的能力。此外,还加强了组员间的合作意识。4 硬件设计4.1 硬件电路的设计框图硬件电路由控制模块、按键模块、扬声器播放模块、放大模块组成。硬件总体框图如下图所示:图4.1 硬件总体框图按键模块共由8个按键组成,实现音乐的自行弹奏和播放已存入的歌曲。扬声器块由三极管及喇叭组成,通过控制模块的控制对当前音乐进行播放。8个键作为音符的输入或音乐的播放选择。4.2 硬件电路设计模块的选定4.2.1 中心模块AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。 主要功能特性:(1)兼容MCS51指令系统:8k可反复擦写(1000次)Flash ROM。(2)32个双向I/O口: 256x8bit内部RAM。(3)3个16位可编程定时/计数器中断:时钟频率0-24MHz。(4)2个串行中断:可编程UART串行通道。(5)2个外部中断源: 共6个中断源。(6)2个读写中断口线: 3级加密位。(7)低功耗空闲和掉电模式 :软件设置睡眠和唤醒功能。从本系统设计的功能需求及成本考虑,51单片机性价比更高,AT89C52是拥有2个外部中断,2个16位定时器,2个可编程串行UART的单片机。中心控制模块采用AT89C52单片机已完全满足设计需要,实现整个系统控制。AT89C52的引脚图如下:图4.1 AT89C52引脚图4.2.2 播放模块播放模块是由8050 NPN三极管和喇叭组成。AT89S52输出高电平控制信号,启动8050 NPN三极管使信号放大,从而启动喇叭。但由于所需驱动功率较小,驱动器件要求不高,并能降低设计成本。因此,必须选用8050 NPN三极管和喇叭则能满足系统要求。播放模块如下图所示:图4.2 播放模块4.2.3按键模块按键模块有9个按键,其中7个按键,即为电子琴模块,7个按键分别代表7个音符,作为音符输入,实现用户自弹作曲。另外1个按键可以进行播放模式与自行弹奏模式的转换。还有一个按键,为复位按键,复位电路在于营造一个程序运行的初始状态,在程序运行过程中或有出错时,重新启动单片机工作。通过软硬件设计,在电子琴模式时,通过查询电子琴所按下的按键,读取电子琴输入状态,跳转到对应的程序人口,实现自编歌曲。模式转换按键触发外部中断1,中断使程序跳转,实现模式转换,启动音乐播放功能。当需要取消音乐播放功能时,按下复位按键即可退出音乐播放功能而返回到原来电子琴功能处。各模块如下图所示:图4.3 电子琴按键模块图4.4 复位按键模块5 软件设计5.1软件系统介绍 一个系统的正常运行不仅需要硬件系统的支持,而且需要软件系统的支持。如果把硬件比作躯体,那软件就是灵魂,硬件系统和软件系统相互间密切的配合才构建了能够“思考”和“判断”的整体系统。借助软件的可编程性,可以精简硬件系统的组成;凭借软件的灵活性,可以不用对硬件系统进行修改而实现系统功能的修改。软件系统与硬件系统是密切相联的,软件系统建立在硬件系统之上,离开了硬件系统,软件将无法实现任何功能。软件的设计有一定的针对性,对于不同的硬件系统,需要编写不同的软件。与硬件系统一样,软件系统的好坏,直接影响到系统的工作效率和可靠性。5.2编程软件KeilC515.2.1 Keil C51概述单片机的开发软件在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件。 Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的。本次课程设计正是使用Keil C51编程软件Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。C51工具包的整体结构,其中uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。5.2.2 Keil C51 的整体结构C51工具包的整体结构中,其中uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。5.2.3 采用Keil C51 开发的 AT89C51 单片机应用程序步骤(1)在uVision 集成开发环境中创建新项目(Project),扩展文件名为.UV2,并为该项目选定合适的单片机CPU器件。(2)用uVision 的文本编辑器编写源文件,可以是汇编文件(.ASM),也可以使C语言文件(扩展名.C)本设计是 *.C 文件,并将该文件添加到项目中去。一个项目文件可以包含多个文件,除了源程序文件外,还可以是库文件、头文件或文本说明文件。(3)通过uVision 4 的相关选择项,配置编译环境、连接定位器以及Debug调试器的功能。(4)对项目中的源文件进行编译连接,生成绝对目标代码和可选的HEX文件,如果出现编译连接错误则返回到(2),修改源文件中的错误后重构整个项目。(5)对没有语法错误的程序进行仿真调试,调试成功后将 *.hex文件写入到单片机应用系统的ROM中。5.3 绘图软件 Proteus 5.3.1 Proteus 概述 Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件,是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。 Proteus软件具有如下功能:(1)原理布图。(2)PCB自动或人工布线。 (3)SPICE电路仿真。5.3.2 proteus 的操作步骤(1) 硬件电路图的接法操作 放置选择(删除)元器件 移动元器件 缩放视图 连接导线 仿真,调试(2)单片机系统PROTEUS设计与仿真过程Proteus强大的单片机系统设计与仿真功能,使它可成为单片机系统应用开发和改进手段之一。全部过程都是在计算机上通过Proteus来完成的。其过程一般也可分为三步: 在ISIS平台上进行单片机系统电路设计、选择元器件、接插件、连接电路和电气检测等。简称Proteus电路设计。 Keil平台上进行单片机系统程序设计、编辑、汇编编译、代码级调试,最后生成目标代码文件(*.hex)。简称Proteus源程序设计和生成目标代码文件。 在ISIS平台上将目标代码文件加载到单片机系统中,并实现单片机系统的实时交互、协同仿真。它在相当程度上反映了实际单片机系统的运行情况。在 Proteus 绘制好原理图后,调入已编译好的目标代码文件:*.hex,可以在 Proteus 的原理图中看到模拟的实物运行状态和过程。5.4 单片机的发声原理声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处片机某个口线的“高”电平或“低电平”,则在该口上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。播放一段音乐需要的是两个元素,一个是音调,另一个是音符。首先要了解对应的音调,音调主要由声音的频率决定,同时也与声音强度有关。对一定强度的纯音,音调随频率的升降而升降;对一定频率的纯音、低频纯音的音调随声强增加而下降,高频纯音的音调却随强度增加而上升。另外,音符的频率有所不同。音符的节拍我们可以用定时器T0来控制,送入不同的初值,就可以产生不同的定时时间。便如某歌曲的节奏为每分钟94拍,即一拍为0.64秒。但是,由于T0的最大定时时间只能为131毫秒,因此不可能直接用改变T0的时间初值来实现不同节拍。我们可以用T0来产生10毫秒的时间基准,然后设置一个中断计数器,通过判别中断计数器的值来控制节拍时间的长短。例如对1/4拍音符,定时时间为0.16秒,相应的时间常数为16(即10H);对3拍音符,定时时间为1.92秒,相应时间长数为192(即C0H)。我们将每一音符的时间常数和其相应的节拍常数作为一组,按顺序将乐曲中的所有常数排列成一个表,然后由查表程序依次取出,产生音符并控制节奏,就可以实现演奏效果。此外,结束符和休止符可以分别用代码00H和FFH来表示,若查表结果为00H,则表示曲子终了;若查表结果为FFH,则产生相应的停顿效果。为了产生手弹的节奏感,在某些音符(例如两个相同音符)音插入一个时间单位的频率略有不同的音符。5.5 系统程序设计5.5.1 主程序流程图设计本设计中采用的独立式键盘,按键的闭合与否直接反应在口线的电平上,即口线的电平是呈现的高电平还是低电平。因此可以通过口线的电平高、低状态检测,来确认按键是否按下。但如果在触点抖动期间检测按键的通与断状态,可能导致判断出错,即按键一次按下或释放被错误的认为是多次操作,为克服按键点机械抖动所致的检测错误,确保CPU对一次按键动作只确认一次按键,必须采取去抖动的措施。系统流程图如下所示:图5.1 系统总流程图图5.2 放歌流程图一般把按键扫描程序设计成子程序,以便其他程序调用。按键扫描子程序流程图如下: 开 始是否有键按下有否键按下延时去抖返回计算并保存键值按键是否释放恢复键值Y NNYYN图5.3 按键扫描流程图5.5.2 1ms延时程序设计延时程序一般是通过一层或多层循环实现,整个过程延时的时间是程序执行的指令总条数乘以执行每条指令所用的时间。由于该系统的晶振选用的是12M,所以执行每条指令所所用时间为2us。程序执行流程如下图所示: 图5.4 延时子程序流程图5.5.3函数初始化子程序设计函数初始化程序即把在主函数内对某些参数和标记位赋初值编写成一个函数,这样使程序更具有条理化,清晰易懂。由于整个程序要用到定时器0和定时器1,所以初始化程序主要是对定时器相关内容作说明。参考文献:1 杜洋.爱上单片机北京,人民邮电出版社. 2011.11. 2 范风强,兰婶丽.单片机语言C51应用实战集锦M北京,电子工业出版社.2005.5. 3 柴钰.单片机原理及应用M西安,西安电子科技大学出版社.2009.6 设计心得体会赵月姣:这次单片机实习,总体来说还算顺利。我们小组的单片机课程设计题目是:电子琴及音乐播放器的设计。在这次课程设计中,我学到很多很多的东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识,可以进行一些简单的编程,还能够熟练的焊接电路,并学会如何找到电路中问题,如何利用KEIL编程软件对源程序进行编程并调试。首先,在我们小组讨论后确定了电路图后,准备开始用PROTEUS仿真软件仿真,但是由于仿真软件之前没有用过不太熟练,在画完电路图之后仿真看不出来效果,所以就直接开始了焊接工作,在硬件焊接时,因为之前大二的实习有过经验,所以焊接时还是很容易上手的,几个小时就焊接完成。下来就是最头疼的调程序。由于是在网上下载的程序错误特别多,我们就一点一点的按照所要达到的要求修改程序。搜集到的程序有C语言的有汇编语言的。因为我们之前没有接触过51C语言的编程,所以我搜集了各种教程资料,学习了C语言的基本编程,想先做到能把资料上的程序看懂,进一步修改调试。但是在经过了周二一下午到晚上还是没有成功调试出程序,于是换了方向改用汇编语言进行编程,毕竟在学习单片机课程时一直在学习汇编。经过研究利用单片机发音的原理以及放歌时歌曲的音调及音色的表,我弄清楚了程序的主思路。第一次烧进去程序后,喇叭只有很小的杂音,放在耳朵边才能听见。这让我们很懊恼,不知道是硬件的问题还是软件的问题,在经过了多次调试之后,又用万用表反复测试电路各处电压之后,发现是将三极管烧坏了。软件也有问题,在咨询了老师之后,我们才恍然大悟,原来是程序中给点时间太短,输出的方波的高电平还没有来得及将喇叭点响就变成了低电平,所以才会有很小的杂音。之后又将放歌程序嵌入到主程序中,成功实现了之前预期的功能。在听到按按键之后发出的清脆的歌声时,我们都很兴奋。在星期四早上我们又给自动放歌中加了一首歌,并且尝试用一个4*4键盘来代替之前的八个按键,因为按键多了可以发高低调的音。但是因为程序又要有很大的变动,在调试程序后一直没有出来。在实习过程中,我感觉每一次问题的发现和解决都让我学到了很多东西。虽然最后还是没有达到理想中的效果。但是我坚信 “失败是成功之母“。我一定会成功。如果我的时间再长一点,我们一定会成交上一个更完美的作品。最后真的很感谢王老师,耐心的帮助我们解决问题,在我们很迷茫的时候点播思路。这次实习是一个起点,它对我以后的学习和未来的工作将会有很大的帮助。 吕元杰: 个人觉得本次的单片机还是非常有意义的,第一能让我们把实际的与理论的知识做一个结合,第二,让我们对单片机这一个应用学科,学习的更“生动”,具体的感觉,了解操作,而不是在书本上念文字。 这次的课程设计,我们做的是一个电子琴音乐播放器,原本的心中理想作品是带有弹琴,放歌(多首),显示,多音节的电子琴音乐播放器。但由于时间不是很充足,而且碰到的问题略多,进度缓慢,最终作品的要求改为,带按键弹琴,带音乐播放(2首)。前期准备的时候搜集了很多东西,并对可以借鉴的文档进行了分析,然后综合了多个文档确定了我们这次的方案。然后根据这些资料利用proteus软件进行了绘制,并进行前期的仿真。开始硬件的焊装时,我们对按键模块进行了选择。原先的方案是4*4矩阵按键,最后发现按键过多,只做一个音阶的话可以只用一排8个键就够,而且4*4矩阵键盘扫描程序麻烦的很,最终就放弃了4*4矩阵键盘。在做放大电路时我们选用的是NPN三极管,因为觉得三极管的能力就已经能达到要求,不需要放大器。做扬声器的时候我们本来选用了蜂鸣器和喇叭,最后蜂鸣器对音调的区分不明显达不到效果,所以放弃,改用功率略大的喇叭。做好硬件,开始调试,首先编辑一个简单的方波信号来检测扬声器的好坏,经过多次调试和改件最终能工作,然后利用汇编语言编写了一个按键的发音,经过调试成功后,开始加写多个按键的发音。同时我的搭档编写自动放音程序,然后调试。最后我们都把自己的子程序写好,调试成功,然后组合成一个总程序,达到作品要求。在组合的时候也出现过程序问题,因为我们有的部分使用了同一个工作寄存器,还有定时器。在碰到问题的时候有时候一天都调不出来,有时候团队之间有很多的分歧,但是最后在老师的帮助分析错误原因,最后都解决了。所以要谢谢老师和搭档的帮助。 这次的课程设计对自己真的有所提高,以后会多多做些练手的东西,从实际中学到书本上学不到的知识。实践出真知。8 附录8.1 附录一 硬件原理图8.2 附录二 实物图8.3 附录三 元器件清单表一 元器件清单AT89C52芯片1个按钮8个瓷片电容3个晶振12MHZ1个电阻10K8个电阻2001个NPN 80501个喇叭1个8.4 附录四 软件主程序 ORG 0000H LJMP START ORG 000BH LJMP INT_T0 ORG 001BH LJMP T1_SEVSTART: MOV P1,#0FFH MOV TMOD,#01H SETB ET0 SETB EA ST:MOV R3,P1CJNE R3,#0FFH,KEY1 CLR TR0 SJMP ST KEY1: CJNE R3,#0FEH,KEY2 MOV 30H,#0FBHMOV 31H,#0E9HLJMP SET_TIMERKEY2: CJNE R3,#0FDH,KEY3MOV 30H,#0FCHMOV 31H,#5CHLJMP SET_TIMERKEY3: CJNE R3,#0FBH,KEY4MOV 30H,#0FCHMOV 31H,#0C1HLJMP SET_TIMERKEY4: CJNE R3,#0F7H,KEY5MOV 30H,#0FCHMOV 31H,#0EFHLJMP SET_TIMERKEY5: CJNE R3,#0EFH,KEY6MOV 30H,#0FDHMOV 31H,#045HLJMP SET_TIMERKEY6: CJNE R3,#0DFH,KEY7MOV 30H,#0FDHMOV 31H,#92HLJMP SET_TIMERKE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 时空穿越:地理信息系统(GIS)实践课教案
- 小熊开面馆450字(9篇)
- 个人在线教育平台运营合作
- 技术支持与服务外包合同协议书
- 早教老师专业知识培训课件
- 早教知识培训小结课件
- 农村生物技术合作研发保密协议
- 早教家长基础知识培训课件
- 早恋课件教学课件
- 2025年钳工(技师)职业技能鉴定试卷全真模拟试题
- 山东省临沂市兰山区2022-2023学年小升初数学自主招生备考卷含答案
- 电气设备交接试验方案
- 2023年中国工商银行软件开发中心春季校园招聘500人笔试模拟试题及答案解析
- 地质勘查钻探岩矿心管理通则
- D500-D505 2016年合订本防雷与接地图集
- 北邮社电机拖动与调速技术教学包课后题解
- 社区矫正法课件
- 学校门卫岗位职责及管理制度
- JJG 1105-2015氨气检测仪
- GB/T 8949-2008聚氨酯干法人造革
- GB/T 30544.1-2014纳米科技术语第1部分:核心术语
评论
0/150
提交评论