单片机课程设计报告11淮淮南南师师范范学学院院《单片机应用与仿真训练》设计报告模拟电子琴发声控制系统姓名:王文奇学号:1114210132专业班级:11级自动化3班指导老师:徐锋所在学院:电气信息工程学院22摘要本次课程设计的主要内容是用AT89C51单片机为核心控制元件,设计一个简单的电子琴并可实现音乐的连续播放。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有12个按键和扬声器。定时器按设置的定时参数产生中断,由于定时参数不同,就会发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同音调。本简易电子琴的设计可实现的功能如下:程序中预存了4首音乐:《同一首歌》、《两只蝴蝶》、《祝你快乐》、《Timetosaygoodbye》并通过一个独立键盘可以实现对四首音乐的“下一曲”控制。3*4矩阵键盘中的7个按键分别对应着7个不同的音符,另外3个分为高、中、低音的控制,当按下某一按键,会发出相应的音调。按下按键时,扬声器会发出声音,松开按键后,扬声器停止发声,按键的时间越长,发声时间越久。连续按下不同的按键,可以实现乐曲的演奏。此外还有一“模式”按键,负责在电子琴和音乐播放器两种不同模式下的切换。33目录1概述-------------------------------------------------------------------------------------------------51.1音乐产生原理----------------------------------------------------------------------------51.2结构框图----------------------------------------------------------------------------------52系统总体方案及硬件设计--------------------------------------------------------------------62.1总体方案----------------------------------------------------------------------------------62.2按键键盘----------------------------------------------------------------------------------62.3蜂鸣器电路-------------------------------------------------------------------------------72.4数码管电路-------------------------------------------------------------------------------72.5最小系统----------------------------------------------------------------------------------82.6设计实现过程----------------------------------------------------------------------------83软件设计-----------------------------------------------------------------------------------------103.1整体设计--------------------------------------------------------------------------------103.2音乐设计--------------------------------------------------------------------------------113.3按键设计--------------------------------------------------------------------------------123.4显示设计--------------------------------------------------------------------------------144Proteus仿真------------------------------------------------------------------------------------155课程设计体会----------------------------------------------------------错误!未定义书签。参考文献-----------------------------------------------------------------------------------------16附1:源程序代码-----------------------------------------------------------------------------17附2:系统原理图-----------------------------------------------------------------------------2744课程设计报告551概述1.1音乐产生原理一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系正确即可。若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。就可在P1.0引脚上得到此频率的脉冲。利用STC89C52的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T=1/523=1912μs,单片机晶振频率为12MHz,因此只要令计数器计时(956μs/1μs)=478,每计数478次时将I/O反相,就可得到中音DO(523Hz)。对于AT80C51而言要产生一定频率的方波一般是先将某口线输出高电平,延迟一段时间后再输出低电平。通过改变延迟时间可以改变单片机的输出频率。单片机的延时主要有两种方式,即软件延时和使用定时/计数器延时。其中软件延时不是很精确,而电子琴电路由于每个音符的频率值要求比较严格,因此我们选用定时/计数器延时。由于本课程设计是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。因此,我们只需弄清楚音乐中的音符和对应的频率,利用单片机的定时/计数器来产生方波频率信号即可。1.2结构框图3*4按键键盘显示电路音频电路AT89C51单片机振荡、复位电路课程设计报告662系统总体方案及硬件设计2.1总体方案本设计采用3*4键盘控制通过程序产生高、中、低七度音律,要考虑到软件和硬件的匹配以及硬件电路焊接时的排版问题,否则建会带来不必要的焊接麻烦,在编程序时要注意仿真与实际电路中可能的不符。在此基础上,另外设计数码管显示电路,蜂鸣器驱动电路。2.2按键键盘设计中采用AT89S51的并行口P0接3×4矩阵键盘,以P0.0-P0.2作输入线,以P0.4-P0.7作输出线。每个按键有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能,在本程序中,当程序检测到有键按下时,将查表使按键值与预存数据表中数据对应,并调用发声程序。另单独焊接第三行第四列按键为独立按键,用以控制歌曲的切换。课程设计报告772.3蜂鸣器电路蜂鸣器一阳极接三极管的集电极,另一端接地,三极管的集电极节电源VCC,基极接P3.6口。当P3.6口为低电平时三极管导通,蜂鸣器有电流流过,即发声。本次设计采用的是9015(NPN型)三极管作为蜂鸣器的驱动电路。2.4数码管电路本次单片机课程设计的显示电路采用共阳极LED数码管显示,由于LED是属于电流控制器件,使用时必须加限流电阻。本次显示使用的是数码管的静态显示功能,主要用以显示高、中、低音的状态以及电子琴、播放器状态的指示。课程设计报告882.3最小系统本部分分为印刷电路板,主要包含复位电路、时钟电路、P0-P3口插槽。2.5设计实现过程本次硬件设计的核心部分就是按键,组成键盘的按键有机械式、电容式、导电橡胶式、薄膜式多种,但不管什么形式,其作用都是一个使电路接通与断开的开关。目前微机系统中使用的键盘按其功能不同,通常可分为编码键盘和非编码键盘两种基本类型。编码键盘:键盘本身带有实现接口主要功能所需的硬件电路。不仅能自动检测被按下的键,并完成去抖动、防串键等功能,而且能提供与被按键功能对应的键码(如ASCII码)送往CPU。所以,编码键盘接口简单、使用方便。但由于硬件电路较复杂,因而价格较贵。非编码键盘:键盘只简单地提供按键开关的行列矩阵。有关按键的识别、键码的确定与输入、去抖动等功能均由软件完成。目前微机系统中,一般为了降低成本大多数采用非编码键盘。键盘接口必须具有去抖动、防串键、按键识别和键码产生4个基本功能。(1)去抖动:每个按键在按下或松开时,都会产生短时间的抖动。抖动的持续时间与键的质量相关,一般为5—20mm。所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。去抖问课程设计报告99题可通过软件延时或硬件电路解决。(2)防串键:防串键是为了解决多个键同时按下或者前一按键没有释放又有新的按键按下时产生的问题。常用的方法有双键锁定和N键轮回两种方法。双键锁定,是当有两个或两个以上的按键按下时,只把最后释放的键当作有效键并产生相应的键码。N键轮回,是当检测到有多个键被按下时,能根据发现它们的顺序依次产生相应键的键码。(3)被按键识别:如何识别被按键是接口解决的主要问题,一般可通过软硬结合的方法完成。常用的方法有行扫描法和线反转法两种。行扫描法的基本思想是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需要设置入口、输出口一个,该方法在微机系统中被广泛使用。线反转法的基本思想是通过行列颠倒两次扫描来识别闭合键,为此需要提供两个可编程的双向输入/输出端口。(4)键码产生:为了从键的行列坐标编码得到反映键功能的键码,一般在内存区中建立一个键盘编码表,通过查表获得被按键的键码。用STC89C52的并行口P0接3×4矩阵键盘,以P0.0-P0.2作输入线,以P0.4-P0.7作输出线。除核心电路外,还包括辅助的发音电路和显示电路。发音电路主要部件是蜂鸣器,用三极管作为可控器件辅以驱动电路,以保证音量适中,音色较真。显示电路由两位共阳极数码管作为显示器件,同样辅以三极管放大电路,并串接限流电阻,通过静态显示的方法作为高、中、低音状态的显示和电子琴模式与音乐播放器模式的状态显示。课程设计报告10103软件设计3.1整体设计本设计使用Protues仿真软件进行仿真,在程序设计部分,包括键盘扫描程序,音乐发声程序(程序见附录1)。3*4矩阵键盘是由单片机控制I/O口来实现