




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要随着社会的发展进步,音乐逐渐成为我们生活中很重要的一部分,有人曾说喜欢音乐的人不会向恶。我们都会抽空欣赏世界名曲,作为对精神的洗礼。本论文设计一个基于单片机的简易电子琴。我们对于电子琴如何实现其功能,如音色选择、声音强弱控制、节拍器、自动放音功能等等也很好奇。电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经融入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用AT89C51单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。关键词AT89C51;电子琴;音频功率放大器;发光二极管ABSTRACTWITHTHEDEVELOPMENTANDPROGRESSOFSOCIETY,MUSICHASBECOMEANIMPORTANTPARTOFLIFE,ITWASSAIDTHATPEOPLEDONOTLIKETHEMUSICTOTHEEVILWEWILLFINDTIMETOENJOYTHEWORLDMUSIC,ASTHEBAPTISMOFTHESPIRITTHISTHESISDEVELOPEDASIMPLEMICRONCONTROLLERBASEDELECTRONICKEYBOARDELECTRONICORGANISAMODERNELECTRONICMUSICTECHNOLOGYANDTHEPRODUCTISANEWTYPEOFKEYBOARDINSTRUMENTSITPLAYEDANDIMPORTANTROLEINMODERNMUSICSCMHASPOWERFULCONTROLFUNCTIONSANDFLEXIBLEPROGUAMMINGCHARACTERISTICSITHASCONVERGEDWITHMODERNPEOPLESLIVES,BECOMEANIRREPLACEABLEPARTTHEMAINCONTENTISAT89C51CONTROLOFTHECORECOMPONENTS,DESIGNOFAELECTRONICORGANSCMASAHOSTTOTHECORE,WITHTHEKEYBOARD,SPEAKERANDOTHERCOREMODULESINTHEMAINCONTROLMODULEHAS16KEYSANDASPEAKERTHESYSTEMISSTEADY,ITSSIMPLEHARDWARECIRCUITS,SOFTWAREFUNCTIONS,RELIABILITYOFCONTROLSYSTEMANDHIGHCOSTPERFORMANCEISITSADVANTAGESITALSOHASCERTAINPRACTICALANDREFERENCEVALUEKEYWORDSAT89C51SINGLECHIP;ELECTRICPIANO;LM386;LED目录第1章绪论111题目的来源与开发意义112系统功能概述2第2章总体方案提出与论证硬件4第3章硬件的设计531硬件的构成5311AT89C51单片机5312芯片的擦除8313功放LM38610314LCD硬件接口1231544行列式键盘识别及显示12316时钟频率13317晶振电路原理14318复位电路14319输入输出(I/O)引脚1532硬件框图16第4章软件的设计1841设计原理18411音乐知识18412播放原理1842按键识别1843LED数码管显示原理1944音乐产生原理2045按键功能识别2246音符产生方法2247播放功能软件原理23第5章系统调式与仿真2651KEIL简介2652KEILC51开发系统基本知识26521系统概述26522KEILC51单片机软件开发系统的整体结构2753编程KEILUVISION软件2754PROFESSIONAL7软件的介绍2955程序代码31第6章系统的调试3561系统硬件调试3562系统软件调试35第7章结论36参考文献37致谢38第1章绪论11题目的来源与开发意义单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。它的应用必定导致传统的控制技术从根本上发生变革。因此,单片机的开发应用已成为高科技和工程领域一项重大课题。随着计算机在社会各领域的渗透,单片机的应用正在不断地走向深入,同时带动着工业、农业、商业、家电以及玩具的日新月异的更新,极大地提高了电子电路及系统设计质量和效率。本设计是以主控芯片AT89C51为中心器件,电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经融入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用AT89C51单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。电子乐器的结构较为复杂,音源是由晶体管产生的电振动,并通过音色回路而产生各种音色;同时由周波数调制产生颤音效果,由振幅调制产生各种乐器的音效。电子琴的外形很像普通键盘乐器,只是某些种类多一排脚踏键盘,而且手触键盘也往往分为两层。键盘式电子琴声音丰富、柔美,有变音装置,能发出多种不同的音色,可以作为独特的乐器进行演奏,还能代替传统的风琴、钢琴供音乐课教学。传统乐器的声音是通过机械的方式产生的,电子琴的声音是用“电”产生的。振荡器时根据需要产生一定频率的振荡信号,振荡信号通过分频器分解成不同频率的信号输送到放大器,放大器将信号放大,推动扬声器发出声音。键盘实际是一些开关,如果没有键盘,许多频率的信号一齐进到放大器里,通过扬声器发出的声音就会乱七八糟,不成音乐。按下键盘的一支键,就等于按通一只开关,只允许某一种频率的信号通过到放大器离去,扬声器就发出一个音来。这样,按照一定的演奏规律来按键,就能奏出美妙的音乐来。电源的任务是给各部分供电。这次的电子琴是由16个按钮,设计成16音符。然后再用一个模拟音频放大模块来使音乐播出的声音变大。用户通过这16个键的随意组合产生一首简单的音乐。本文主要对使用单片机设计建议电子琴进行了分析,并介绍了基于单片机电子琴硬件组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。并且本文分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。本系统是简易电子琴的设计,按下键盘矩阵中的按键会使扬声器播放对应的音符。通过设计本系统可了解单片机的基本功能。对单片机的了解有了一个小的飞跃。一首音乐是许多不懂的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。12系统功能概述本系统是利用AT89C51单片机设计的电子琴,硬件电路简单,如果设计对象为复杂的电子琴系统,其实际原理与方法与本设计基本相同。由于单片机的强大功能,除了在测试控制领域中有着广泛的应用外,还有一些而有趣的应用。比如,使用单片机可以驱动蜂鸣器或者扬声器发出声音,还可以控制其发出的不同声调,从而连接起来构成一个曲子。目前,市场上有很多种音乐模块或者音乐芯片,可以直接产生各种曲子。但是,这种模块价格比较昂贵,电路结构比较复杂。如果系统中仅需要产生简单的音符或者简短的曲子,可以使用单片机配合简单的扬声器而产生需要的音乐效果。一般来说,单片机不像其他专业乐器那样能奏出多种音色的声音,即不包含相应幅度的谐波频率。单片机演奏的音乐基本都是单音频率。因此单片机演奏音乐比较简单,只需要清楚“音调”和“节拍”。音调表示一个音符唱多高的频率。节拍表示一个音符唱多长的时间。本设计主要是通过对电子琴主体部分的电路进行模仿设计,达到电子琴固有的基本功能,故叫简易电子琴。利用定时器可发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同音调。其次,定时器按设置的定时参数产生中断,这一次中断发出脉冲低电平,下一次反转发出脉冲高电平,由于定时参数不同,就发出不同频率的脉冲,本设计中按键一次,会发出50个脉冲,松开后随之延时10个脉冲,但在延时的10个脉冲期间继续检测键盘,若此时又有键被按下,若被按下的仍为原键则声音不变,否则键盘会译出被按下的另一个键的音调。这次的电子琴是由44组成16个按钮矩阵,设计成16个音。然后再用一个音频放大模块来使音乐播出的声音变大。用户可通过这16个键的随意组合来产生不同的音乐,使用起来也很简单。第2章总体方案提出与论证硬件方案一采用静态RAM存储显示屏的显示内容,静态数据存储器具有存储容量大,传输速度快等优点。但其存储的数据掉电后会消失,因此不适合用于存储长时间不变的数据。方案二采用ROM芯片存储LED显示屏要显示的信息,采用ROM芯片可以长时间的存储信息,而且掉电数据不丢失,此种方式适合于存储不变的数据。方案三采用串行EEPROM存储LED显示屏要显示的信息。串行EEPROM技术是一种非易失性存储技术,它几乎具有所有类型存储器的优点不挥发性、可更新性、高密度、低功耗和高性价比,非常适合应用于各类工业测控系统。它克服了常用的2816、2817、2864等并行EEPROM器件价格高、体积大、可靠性低(这些器件如不采取措施,在上电、下电时常会丢失数据)等不足,在速度要求不是很高的情况下,该器件是最理想的选择。比较以上三种方案,方案三有明显的优点,因此选择方案三。第3章硬件的设计31硬件的构成311AT89C51单片机本系统的单片机选用AT89C51单片机,AT89C51是一个低功耗,高性能CMOS8位单片机,片内含4KBYTESISPINSYSTEMPROGRAMMABLE的可反复擦写1000次的FLASH只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFLASH存储单元,功能强大的微型计算机的AT89C51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89C51芯片介绍AT89C51是一种带4K字节FLASH存储器(FPEROMFLASHPROGRAMMABLEANDERASABLEREADONLYMEMORY)的低电压、高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。主要特性与MCS51兼容4K字节可编程FLASH存储器寿命1000写/擦循环数据保留时间10年全静态工作0HZ24MHZ三级程序存储器锁定1288位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路此外,AT89C51设计和配置了振荡频率可为0HZ并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。同时,编辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM掉电中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并且禁止其它所有部件的工作。管脚说明图31CPU引脚图VCC供电电压。GND接地。P0口P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示口管脚备选功能P30RXD(串行输入口)P31TXD(串行输出口)P32/INT0(外部中断0)P33/INT1(外部中断1)P34T0(记时器0外部输入)P35T1(记时器1外部输入)P36/WR(外部数据存储器写选通)P37/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP当/EA保持低电平时,则在此期间外部程序存储器(0000HFFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2来自反向振荡器的输出。振荡器特性XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。312芯片的擦除整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10MS来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。串口通讯SBUF数据缓冲寄存器这是一个可以直接寻址的串行口专用寄存器。有朋友这样问起过“为何在串行口收发中,都只是使用到同一个寄存器SBUF而不是收发各用一个寄存器。”实际上SBUF包含了两个独立的寄存器,一个是发送寄存,另一个是接收寄存器,但它们都共同使用同一个寻址地址99H。CPU在读SBUF时会指到接收寄存器,在写时会指到发送寄存器,而且接收寄存器是双缓冲寄存器,这样可以避免接收中断没有及时的被响应,数据没有被取走,下一帧数据已到来,而造成的数据重叠问题。发送器则不需要用到双缓冲,一般情况下我们在写发送程序时也不必用到发送中断去外理发送数据。操作SBUF寄存器的方法则很简单,只要把这个99H地址用关键字SFR定义为一个变量就可以对其进行读写操作了,如SFRSBUF0X99当然你也可以用其它的名称。通常在标准的REG51H或AT89X51H等头文件中已对其做了定义,只要用INCLUDE引用就可以了。SCON串行口控制寄存器通常在芯片或设备中为了监视或控制接口状态,都会引用到接口控制寄存器。SCON就是51芯片的串行口控制寄存器。它的寻址地址是98H,是一个可以位寻址的寄存器,作用就是监视和控制51芯片串行口的工作状态。51芯片的串口可以工作在几个不同的工作模式下,其工作模式的设置就是使用SCON寄存器。它的各个位的具体定义如下SM0SM1SM2RENTB8RB8TIRISM0、SM1为串行口工作模式设置位,这样两位可以对应进行四种模式的设置。串行口工作模式设置。SM0SM1模式功能波特率000同步移位寄存器FOSC/120118位UART可变1029位UARTFOSC/32或FOSC/641139位UART可变在这里只说明最常用的模式1,其它的模式也就一一略过,有兴趣的朋友可以找相关的硬件资料查看。表中的FOSC代表振荡器的频率,也就是晶振的频率。UART为UNIVERSALASYNCHRONOUSRECEIVER)的英文缩写。SM2在模式2、模式3中为多处理机通信使能位。在模式0中要求该位为0。REM为允许接收位,REM置1时串口允许接收,置0时禁止接收。REM是由软件置位或清零。如果在一个电路中接收和发送引脚P30,P31都和上位机相连,在软件上有串口中断处理程序,当要求在处理某个子程序时不允许串口被上位机来的控制字符产生中断,那么可以在这个子程序的开始处加入REM0来禁止接收,在子程序结束处加入REM1再次打开串口接收。大家也可以用上面的实际源码加入REM0来进行实验。TB8发送数据位8,在模式2和3是要发送的第9位。该位可以用软件根据需要置位或清除,通常这位在通信协议中做奇偶位,在多处理机通信中这一位则用于表示是地址帧还是数据帧。RB8接收数据位8,在模式2和3是已接收数据的第9位。该位可能是奇偶位,地址/数据标识位。在模式0中,RB8为保留位没有被使用。在模式1中,当SM20,RB8是已接收数据的停止位。TI发送中断标识位。在模式0,发送完第8位数据时,由硬件置位。其它模式中则是在发送停止位之初,由硬件置位。TI置位后,申请中断,CPU响应中断后,发送下一帧数据。在任何模式下,TI都必须由软件来清除,也就是说在数据写入到SBUF后,硬件发送数据,中断响应(如中断打开),这时TI1,表明发送已完成,TI不会由硬件清除,所以这时必须用软件对其清零。RI接收中断标识位。在模式0,接收第8位结束时,由硬件置位。其它模式中则是在接收停止位的半中间,由硬件置位。RI1,申请中断,要求CPU取走数据。但在模式1中,SM21时,当未收到有效的停止位,则不会对RI置位。同样RI也必须要靠软件清除。常用的串口模式1是传输10个位的,1位起始位为0,8位数据位,低位在先,1位停止位为1。它的波特率是可变的,其速率是取决于定时器1或定时器2的定时值(溢出速率)。AT89C51和AT89C2051等51系列芯片只有两个定时器,定时器0和定时器1,而定时器2是89C52系列芯片才有的。313功放LM386LM386是一种音频集成功放,且具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点,广泛应用于录音机和收音机之中。LM386内部电路图32LM386内部电路原理图LM386内部电路原理图如图所示。与通用型集成运放相类似,它是一个三级放大电路。第一级为差分放大电路,T1和T3、T2和T4分别构成复合管,作为差分放大电路的放大管;T5和T6组成镜像电流源作为T1和T2的有源负载;T3和T4信号从管的基极输入,从T2管的集电极输出,为双端输入单端输。出差分电路。使用镜像电流源作为差分放大电路有源负载,可使单端输出电路的增益近似等于双端输出电容的增益。第二级为共射放大电路,T7为放大管,恒流源作有源负载,以增大放大倍数。第三级中的T8和T9管复合成PNP型管,与NPN型管T10构成准互补输出级。二极管D1和D2为输出级提供合适的偏置电压,可以消除交越失真。引脚2为反相输入端,引脚3为同相输入端。电路由单电源供电,故为OTL电路。输出端(引脚5)应外接输出电容后再接负载。电阻R7从输出端连接到T2的发射极,形成反馈通路,并与R5和R6构成反馈网络,从而引入了深度电压串联负反馈,使整个电路具有稳定的电压增益。LM386特性静态功耗低,约为4MA,可用于电池供电。工作电压范围宽,412VOR518V。外围元件少。电压增益可调,20200。低失真度。LM386是美国国家半导体公司生产的音频功率放大器,主要应用于低电压消费类产品。为使外围元件最少,电压增益内置为20。但在1脚和8脚之间增加一只外接电阻和电容,便可将电压增益调为任意值,直至200。输入端以地位参考,同时输出端被自动偏置到电源电压的一半,在6V电源电压下,它的静态功耗仅为24MW,使得LM386特别适用于电池供电的场合。LM386的封装形式有塑封8引线双列直插式和贴片式。LM386的引脚33LM386的引脚图LM386的外形和引脚的排列如图23所示。引脚2为反相输入端,3为同相输入端;引脚5为输出端;引脚6和4分别为电源和地;引脚1和8为电压增益设定端;使用时在引脚7和地之间接旁路电容,通常取10F。LM386的电源电压412V或518V(LM386N4);静态消耗电流为4MA;电压增益为20200DB;在1、8脚开路时,带宽为300KHZ;输入阻抗为50K;音频功率05W。314LCD硬件接口LCD液晶显示器是LIQUIDCRYSTALDISPLAY的简称,LCD的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。比CRT要好的多,但是价钱较其贵。本设计所用LCD的引脚,其中,D0D7为双向数据总线,LCD数据读写方式可以分为8位及4位两种。若以8位数据进行读写,则D0D7皆有效,若以4位方式进行读写,则只用到D0D4。RS为寄存器选择控制线,当RS为0且做写入操作时,可以写指令寄存器;若RS为1,则用于读写数据寄存器。R/W为LCD读写控制线,R/W为0,LCD执行写作,R/W为1时,则做读操作。VO为亮度调整电压输入控制引脚,输入0V时,字符显示最亮。LCD可以实时显示目前演奏的单音码,可以实时显示所存储的单音计数。按键9是清除键,可将存储的单音计数清0;按键8是放音键,可将内存中的单音逐一演奏出来,演奏中可以按K4键来中断。本设计使用一般的LCD显示器来显示音乐演奏的消息及单音码。31544行列式键盘识别及显示组成键盘的按键有机械式、电容式、导电橡胶式、薄膜式等多种,但不管什么形式,其作用都是一个使电路接通与断开的开关。目前微机系统中使用的键盘按其功能不同,通常可分为编码键盘和非编码键盘两种基本类型。编码键盘键盘本身带有实现接口主要功能所需的硬件电路。不仅能自动检测被按下的键,并完成去抖动、防串键等功能,而且能提供与被按键对应的键码(如ASCII码)送往CPU。所以,编码键盘接口简单、使用方便。但由于硬件电路较复杂,因而价格较贵。非编码键盘键盘只简单地提供按键开关的行列矩阵。有关按键的识别、键码的确定与输入、去抖动等功能均由软件完成。目前微机系统中,一般为了降低成本,大多数采用非编码键盘。键盘接口必须具有去抖动、防串键、按键识别和键码产生4个基本功能。(1)去抖动每个按键在按下或松开时,都会产生短时间的抖动。抖动的持续时间与键的质量相关,一般为520MM。所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。去抖问题可通过软件延时或硬件电路解决。(2)防串键防串键是为了解决多个键同时按下或者前一按键没有释放又有新的按键按下时产生的问题。常用的方法有双键锁定和N键轮回两种方法。双键锁定,是当有两个或两个以上的按键按下时,只把最后释放的键当做有效键并产生相应的键码。N键轮回,是当检测到多个键被按下时,能根据发现他们的顺序依次产生相应键的键码。(3)被按键识别如何识别被按键是借口解决的主要问题,一般可通过软硬结合的方法完成。常用的方法有行扫描法和线反转法两种。行扫描法的基本思想是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需要设置入口、输出口一个,该方法在微机系统中被广泛使用。线反转法的基本思想是通过行列颠倒两次扫描来识别闭合键,为此需要提供两个可编程的双向输入/输出端口。(4)键码产生为了从键的行列坐标编码得到反映键功能的键码,一般在内存区中建立一个键盘编码表,通过查表获得被按键的键码。用AT89C51的并行口P1接44矩阵键盘,以P10P13作输入线,以P14P17作输出线;在数码管上显示每个按键的“0F”序号。316时钟频率单片机必须在时钟的驱动下才能工作。在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。外部振荡源电路一般选用石英晶体振荡器,此电路在加点大约延迟10MS后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路中两个电容C1,C2,作用有两个一是帮助振荡器起振;二是对振荡器的频率进行微调。C1,C2的典型值为30PF。单片机在工作时,由内部振荡器产生的周期或由外直接输入的送至内部控制逻辑单元的时钟信号的周期,称为时钟周期。其大小是时钟信号频率的倒数,通常用FOSC表示。如时钟频率为12MHZ,即FOSC12MHZ,则时钟周期为1/12S。317晶振电路原理图34时钟电路P19时钟XTAL1脚,P18时钟XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。内部方式时,时钟发生器对震荡脉冲二分频,如晶振为12MHZ,时钟频率就为6MHZ。晶振的频率可以在1MHZ24MHZ内选择。电容取30PF左右。型号同样为AT89C51的芯片,在其后面还有频率编号,有12,16,20,24MHZ可选。大家在购买和选用时要注意了。如AT89C5124PC就是最高震荡频率为24MHZ,40P6封装的普通商用芯片。318复位电路在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引脚时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。复位后P0P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的0000H处开始运行程序。常用的复位电路如下图所示图35复位电路图复位操作不会对内部RAM有所影响。当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。什么叫复位复位是单片机重新执行程序代码的意思。8051的复位方式可以是自动复位,也可以是手动复位。此外,RESET还是一复用脚,VCC掉电期间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。319输入输出(I/O)引脚P39P32为P00P07输入输出脚,称为P0口,是一个8位漏极开路型双向I/O口。内部不带上拉电阻时,P0口能以吸收电流的方式驱动八个LSTTL负载电路。通常在使用时外接上拉电阻,用来驱动多个数码管。在访问外部程序和外部数据存储器时,P0口是分时转换的地址(低8位)/数据总线,不需要外接上拉电阻。P1P8为P10P17输入输出脚,称为P1口,是一个带内部上拉电阻的8位双向I/O口。P1口能驱动4个LSTTL负载。通常在使用时外不需要外接上拉电阻,就可以直接驱动发光二极管。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。P21P28为P20P27输入输出脚,称为P2口,是一个带内部上拉电阻的8位双向I/O口,P2口能驱动4个LSTTL负载。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部FLASH程序存储器编程时,接收高8位地址和控制信息。在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。而在访问8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。P10P17为P30P37输入输出脚,称为P3口,是一个带内部上拉电阻的8位双向I/O口,P2口能驱动4个LSTTL负载,这8个引脚还用于专门的第二功能。端口置1时,内部上拉电阻将端口拉到高电平,作输入用,如下表表31P3口功能P3引脚兼用功能P30串行通讯输入(RXD)P31串行通讯输出(TXD)P32外部中断0(1NT0)P33外部中断1(1NT1)P34定时器0输入T0P35定时器1输入(T1)P36外部数据存储器写选通WRP37外部数据存储器写选通RDP1P3端口在做输入使用时,因内部有上接电阻,被外部拉低的引脚会输出一定的电流。除此之外P3端口还用于一些专门功能。32硬件框图单片机电子琴电路由AT89C51芯片、复位电路、时钟电路、键盘电路和发音电路5个部分组成,各部分有自己独立的功能,电路总框图如下图所示图36电子琴八功能设计电路图图37电子琴音乐播放功能电路图以AT89C51单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块在主控模块上设有扬声器和8个按键,根据使用者的操作随意弹奏想要表达的音乐。一首音乐是许多不同音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来生产不同的频率非常方便,我们可以利用单片机的定时/计数器T0来生产这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。第4章软件的设计41设计原理411音乐知识音乐中使用的各个固定基本频率叫音级,常用符号C,D,E,F,G,A,B,C表示,也就是简谱中的1,2,3,4,5,6,7,I,以C调为准,各音级的频率如下表41C调各音级频率单位赫兹音级中IDO中2RE中3MI中4FA中5SO中6LA中7SI频率523578659698784880988音级高IDO高2ER高3MI高4FA高5SO高6LA高7SI频率1046117513181397156817601976412播放原理一首音乐是许多不懂的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。若要产生音频脉冲,只要算出某一音频的周期1/频率,再将此周期除以2,即为半周期的时间。利用定时计时半周期时间,每当计时终止后就将P10反相,然后重复计时再反相。就可以在P10引脚上得到此频率的脉冲。42按键识别1)8个按钮键盘识别;2)不同音符产生的方法;扬声器发生原理只要让扬声器(SPEAKER)通过会产生大小变化的电流,就能使扬声器发出声音。因此,若以程序不断地输出1010就可令扬声器发出声音。由于MCS51系列的输出端口电流不够头。所以必须加上晶体管把电流放大后再驱动扬声器如图所示,只要半周期T的时间,即看可改变输出频率。图41扬声器图43LED数码管显示原理七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各关的极管的接线形式,可分为共阴极型和共阳极型。LED数码管的GA七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,下面给出共阴极的字形码表由于显示的数字09的字形码没有规律可循,只能采用查表的方式来完成我们所需的要求。这样我们按着数字09的顺序,把每个数字的笔段代码按顺序排好,建立的表格如下所示TABLEDB3FH,06H,BH,4FH,66H,6DH,7DH,07H,7FH,6FH。表42字形码表“0”3FH“8”7FH“1”06H“9”6FH“2”5BH“A”77H“3”4FH“B”7CH“4”66H“C”39H“5”6DH“D”5EH“6”7DH“E”79H“7”07H“F”71H44音乐产生原理一首音乐是许多不同音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来生产不同的频率非常方便,我们可以利用单片机的定时/计数器T0来生产这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计算半周期时间,每当计时终止后就将P10反相,然后重复计时再反相。就可以在P10引脚上得到此频率的脉冲。利用AT89C51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523HZ,其周期T1/5231912S,因此只要令计数器计时956S/1S956,每计数956次时将I/O反相,就可得到中音DO(523HZ)。计数脉冲值与频率的关系式(如式21所示)是NFI2FR21式中,N是计数值;FI是机器频率(晶体振荡器为12MHZ时,其频率为1MHZ);FR是想要产生的频率。其计数初值T的求法如下T65536N65536FI2FR22例如设K65536,FI1MHZ,求低音DO261HZ、中音DO523HZ、高音DO1046HZ的计数值。T65536N65536FI2FR6553610000002FR65536500000/FR低音DO的T65536500000/26263627中音DO的T65536500000/52364580高音DO的T65536500000/104665059我们要为这个音符建立一个表格,单片机通过查表的方式来获得相应的数据。音乐的音拍,一个节拍为单位(C调)如表所示表43一个节拍单位曲调值DELAY曲调值DELAY调4/4125MS调4/462MS调3/4187MS调3/494MS调2/4250MS调2/4125MS对于不同的曲调,我们也可以用单片机的定时/计数器来完成。开始R10根据R1的值查表查表获得的数据送P0延时02秒R1R11R1内容10吗图42音乐发生程序流程图45按键功能识别DOMOVR6,127LJMPOUTPUTREMOVR6,113LJMPOUTPUTMIMOVR6,100LJMPOUTPUTFAMOVR6,95LJMPOUTPUTSOMOVR6,85LJMPOUTPUTLAMOVR6,75LJMPOUTPUTSIMOVR6,67LJMPOUTPUTDOHMOVR6,63LJMPOUTPUT获取弹奏按键值后,应根据要求调用相关键值处理程序(本设计的需求是装入定时/计数器计数初值)。46音符产生方法一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来生产不同的频率非常方便,我们可以利用单片机的定时/计数器T0来生产这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。现在以单片机12MHZ晶振为例,例出高中地音符与单片机计数T0相关的计数值如下表所示表44高低音符与单片机计数T0相关计数值音符频率(HZ)简谱码(T值)音符频率(HZ)简谱码(T值)低1DO262636284FA740648601DO27763731中5SO78464898低2RE294638355SO831649342RE31163928中6LA88064968低3M33064021693264994低4FA34964103中7SI988650304FA37064185高1DO104665058低5SO392642601DO1109650855SO41564331高2RE117565110低6LA440644002RE124565134646664463高3M131865157低7SI49464524高4FA139765178中1DO523645804FA1480651981DO55464633高5SO156865217中2RE587646845SO1661652352RE62264732高6LA176065252中3M659647776186565268中4FA69864820高7SI19676428347播放功能软件原理INCLUDEINCLUDE”SOUNDPLAYH”VOIDDELAY1MSUNSIGNEDINTCOUNTUNSIGNEDINTI,JFORI0ICOUNTI/延时程序FORJ0J120J/MUSIC/歌曲名称UNSIGNEDCHARCODEMUSIC_FILE3500插放歌曲代码/MAININITIALSOUNDWHILE1TEMPCNT2CNT0TEMPCNTP1TABLETEMPPLAYMUSIC_FILETEMP,0,3,360DELAY1MS500VOID_EX0_00INTERRUPT0IFKEY_ADD0CNTCNT1DELAY1MS500IFKEY_DEC0CNTCNT1DELAY1MS500VOID_EX0_00INTERRUPT0IFKEY_ADD0CNTCNT1DELAY1MS500IFKEY_DEC0CNTCNT1DELAY1MS500VOID_EX0_20INTERRUPT2FLAG0DELAY1MS100第5章系统调式与仿真51KEIL简介KEILC51是美国KEILSOFTWARE公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,KEIL软件是目前最流行开发MCS51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持KEIL即可看出。KEIL提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(UVISION)将这些部分组合在一起。运行KEIL软件需要PENTIUM或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么KEIL几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。52KEILC51开发系统基本知识521系统概述KEILC51软件提供丰富的库函数和功能强大的集成开发调试工具,全WINDOWS界面。KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境。C51已被完全集成到VISION3的集成开发环境中,这个集成开发环境包含编译器,汇编器,实时操作系统,项目管理器,调试器。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KEILC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍KEILC51开发系统各部分功能和使用。522KEILC51单片机软件开发系统的整体结构KEILC52是美国KEILSOFTWARE公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性、上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。KEILC51软件提供丰富的库函数和功能强大的集成开发调试工具,全WINDOWS界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KEILC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。C51工具包的整体结构,UVISION与ISHELL分别是C51FORWINDOWS和FORDOS的集成开发环境IDE,可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件OBJ。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件ABS。ABS文件由OH51转换成标准的HEX文件,以供调试器DSCOPE51或TSCOPE51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。使用独立的KEIL仿真器时,注意事项仿真器标配110592MHZ的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。仿真器上的复位按钮只复位仿真芯片,不复位目标系统。仿真芯片的31脚(/EA)已接至高电平,所以仿真时只能使用片内ROM,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM(其CPU的/EA引脚接至低电平)的目标系统中使用。53编程KEILUVISION软件KEILSOFTWARE公司推出的UVISION3是一款可用于多种8051MCU的集成开发环境IDE,该IDE同时也是PK51及其它开发套件的一个重要组件。除增加了源代码、功能导航器、模板编辑以及改进的搜索功能外,UVIS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司安装窗帘合同样本
- 个人之间购房合同样本
- 产品控价合同样本
- 借款中介合同样本
- 乐队酒吧兼职合同样本
- 调酒师行业协会考题试题及答案指导
- 中央空调安装合同样本
- 买房解约合同样本
- 公寓期房合同样本
- 便宜工厂租赁合同标准文本
- 2024年电子商务师真题试题及答案
- 撬装式承压设备系统安全技术规范
- 园艺植物遗传育种 课件全套 第1-10章 绪论-新品种的审定与推广繁育+实训
- 2025-2030中国免洗护发素行业市场发展趋势与前景展望战略研究报告
- 《智能优化算法解析》 课件 第6章-基于群智能的智能优化算法
- 《红岩》中考试题(截至2024年)
- 华为IAD132E(T)开局指导书
- (2025)二十大知识竞赛题库(含答案)
- 2025年华北电力大学辅导员及其他岗位招考聘用54人高频重点提升(共500题)附带答案详解
- 2022《信访工作条例》学习课件
- 2025年高考政治一轮复习知识清单选择性必修一《当代国际政治与经济》重难点知识
评论
0/150
提交评论