基于单片机的电子琴课程设计报告_第1页
基于单片机的电子琴课程设计报告_第2页
基于单片机的电子琴课程设计报告_第3页
基于单片机的电子琴课程设计报告_第4页
基于单片机的电子琴课程设计报告_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 课程设计报告课程名称 单片机原理及应用 设计题目 电子琴的设计 专业班级 自动化1041 姓 名 赵 伟 学 号 1004421112 指导教师 蔡 长 青 起止时间 2013.6.24-2011.7.12 成 绩 评 定考核内容设计表现设 计报 告答辩综合评定成 绩电气与信息学院12/13学年第二学期单片机控制系统设计与调试 课程设计任务书指导教师:蔡长青 班级:自动化1041、2班 地点:机房、单片机实验室(实训中心415)课程设计题目:基于51单片机原理的电子琴的设计一、 课程设计目的1. 灵活运用单片机的基础知识,依据课程设计内容,能够完成从硬件电路图设计,到PCB制版,再到软件编程

2、及系统调试实现系统功能,完成课程设计,加深对单片机基础知识的理解,并灵活运用,将各门知识综合应用。2. 能够上网查询器件资料,培养对新知识新技术的独立的学习能力和应用能力。3. 独立完成一个小的系统设计,从硬件设计到软件设计,增强分析问题、解决问题的能力,为日后的毕业设计及科研工作奠定良好的基础。二、 课程设计内容(包括技术指标)本设计主要任务是设计一简易电子琴,利用所给键盘的1,2,3,4,5,6,7七个键,能够发出1,2,3,4,5,6,7等7个音符,具有一般演奏功能,同时利用第八个键具有自动播放已存曲目功能。 1. 电子琴及串口原理图的设计、PCB板的制作、焊接。特别在焊接过程中认真、仔

3、细,避免缺焊、漏焊。2. 频率初值的计算。会计算脉冲值与频率的关系。正确计算出各音阶所对应的频率的初值。3. 电子琴的工作过程分析。(1)初始化过程启动时,首先是对定时器T0 进行初始化,设定它的工作状态,对于本系统将T0 设定为工作方式1;(2)按键检测过程初始化完成后,是判断是否有键按下,如果没有按键按下,则继续判断,如果有按键按下,延时一段时间在判断是否有键按下,若无按键按下返回继续判断,若确实有键按下则判断是哪个键按下;(3)声音播放过程根据按键的功能将计数初值装入定时器T0 、T1中中并启动T0 、T1,当T0定时完毕后,重新装入计数初值继续定时并将P33取反,再次定时完毕后再一次的

4、装入计数初值继续定时并将P33取反,一直循环此操作直到按键释放为止,按键释放后停止T0工作并再次判断是否又有按键按下,并继续执行以前的过程。单片机定时器启动时,发出一定频率的脉冲(各音调对应的频率脉冲),该频率的脉冲经喇叭驱动电路放大滤波后,就回发出相应的音调。(4)流水灯工作过程单片机上电后执行事先设定好的流水灯程序,有按键按下时则亮对应音调的灯。三、 课程设计原则1. 尽可能使音色、音律更准确;2. 在满足控制的前提下,力求使控制系统简单、经济;3. 保证控制系统安全可靠。四、 课程设计步骤1. 对控制系统任务和要求作深入的调查研究,明确控制任务。2. 根据原理画出电子琴原理图及串口原理图

5、。3. 选择合适的芯片。4. 依据原理图,把所选用的板子焊接好。5. 确定系统整体设计方案,进行软件编程。6. 控制系统的硬件设计。(1) 电子琴原理图及PCB图;(2) 串口原理图及PCB图。7. 控制系统的软件设计。(1) 设计七个基本高低音调;(2) 设计歌曲;(3) 设计流水灯程序。8. 联机调试。9. 撰写设计说明书。五、 时间安排时间内容备注第17周 周一集中讲解课程设计要求,分配设计题目,明确任务和具体安排三教203周二画硬件电路图、PCB图一教八楼 周三画硬件电路图、PCB图一教八楼 周四验收硬件电路图、PCB图一教八楼 周五根据原理图焊接板子工训417第18周 周一软件调试工

6、训415周二软件调试工训415周三软件调试工训415周四软件调试工训415周五软件调试工训415第19周 周一软件调试工训415周二软件调试、烧录程序工训415周三软件调试、烧录程序工训415周四完成报告工训415周五答辩工训415六、 基本要求(一)课程设计报告1. 电子琴原理图及PCB图一份(电子版)。2. 串口原理图及PCB图一份(电子版)。3. 设计说明书一份,包括以下内容。(1) 写出设计计划和基本步骤。(2) 画出软件流程图。(3) 写出软件程序,并加以注释。(4) 写出调试过程和结果。(5) 写课程设计小结。(二)成绩评定标准对学生进行全面考核,重点考核设计图纸、说明书质量;独立

7、思考、独立工作能力,综合运用知识的能力;平时的工作态度及表现;答辩情况。最后按平时表现、报告质量、答辩成绩,其权重分别为0.2、0.4、0.4综合评定成绩,分优、良、中、及、不及格五个等级。组长: 张 娜组员:龚寿涛、赵伟任务分配:组员任务分配表资料准备全 组硬件原理图绘制与PCB板制作张娜、龚寿涛硬件实物的焊接张娜、龚寿涛软件设计与实现赵伟上机调试全 组报告撰写全 组摘 要本设计主要是通过对电子琴主体部分的电路进行模仿设计,达到电子琴固有的基本功能,故叫简易电子琴。本设计的主要内容是用AT89C51单片机为核心控制元件并与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有8个按键和扬声器

8、。通过编写程序让其中七个按键分别对应音乐的七个音符,可以通过这七个按键任意弹奏我们想要的音乐节奏,最终实现电子琴的模拟设计,宁外一个按键用来控制歌曲的连续播放,将一首歌曲翻译成单片机定时器能识别的频率初值通过按下第八个按键就能播放设计好的歌曲,同时还增加了流水灯的动感效果,用流水灯反应音乐的音阶,流水灯将随音乐节奏的跳动而不停的切换。 关键词 单片机 按键 音阶 扬声器Abstract: This design mainly through to mimic keyboard main body part of the circuit design, to achieve electronic

9、 organ inherent basic function, so called simple electronic organ. The main content of this design is to use AT89C51 as the core control component with the keyboard, speakers and other core modules of main control module, on the main control module has eight keys and speakers. By writing program for

10、 one of the seven keys corresponding to music seven notes, can through the seven key any we want to play music rhythm, finally realize the keyboard simulation design, better outside a button is used to control the songs played, Translate a song into single-chip microcomputer timer can identify the f

11、requency of the initial value by pressing the first eight keys can design good songs, but also increased the lamp to the action of water, Reaction of music scales with flowing water lights, water lights will kept switching according to the beat of the music rhythm.Key words : Single chip microcomput

12、er The keys Scale The speaker目 录绪论11系统方案设计11.1系统方案的选择11.2系统硬件组成框图22 STC89C52最小系统设计32.1单片机芯片选择32.2复位电路设计42.3时钟电路设计53 电子琴硬件设计53.1 键盘电路设计53.2 显示电路设计73.3 串口电路设计73.4发音电路设计94 电子琴软件设计94.1 电子琴发声原理94.2 程序流程图设计144.3电子琴模块化程设计145 系统调试166 总结18参考文献19附录20附录一20附录二2526 / 33文档可自由编辑打印绪论 本设计主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单

13、片机电子琴总体硬件组成。利用单片机定时器产生不同频率来获得我们要求的音阶,最终可通过按键随意弹奏想要表达的音乐节奏。本次设计分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述设计过程。电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。本文的主要内容是用AT89S51单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有8个按键和扬声器。通过编程使按键能对应相应的音调或者连续播放音乐,并能通过流水灯的亮灭来显示音乐的节奏,功能简单而其实用,在生活中得到了广泛的应用。 每首歌曲是由许多不同的音阶组成的,而每个音阶

14、对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号。1系统方案设计1.1系统方案的选择实现本次设计的方案有多种,下面比较说明一下最佳方案的选择。方案一:采用单个的逻辑器件组合音乐是有由不同的音阶组成的,而不同的音阶又是由不同的频率发出的,那么利用不同的频率,就可以发出不同的音乐了。我们知道计数器8253可以产生任意频率的方波频率信号,因此,我们只要把一首歌曲的音阶对应频率与计数器的频率对应起来就可通过计数器产生音乐了。根据本实验要求,采用8279将键扫得到的键值通过查

15、表得到相应的8253的频率值,将从8253得到相对应的按键弹奏信号经过LM386进行放大,再用喇叭输出,就实现了简易电子琴的基本功能,也就完成了实验的要求。方案二:采用AT89S52单片机作为主控芯片,设置键盘、蜂鸣器等外围器件,另外还用到一些简单器件如:两位数码管,和PNP型三极管及电阻等。利用按键实现音符和音调的输入;两位的数码管进行被操作的按键显示;用PNP型三极管9012实现低音频功率放大;最后用蜂鸣器发音。两种方案的比较:方案一采用单个的逻辑器件组合实现。这样虽然比较直观,逻辑器件分工鲜明,思路也比清晰,一目了然,但是由于元器件种类、个数繁多,而过于复杂的硬件电路也容易引起系统的精度

16、不高、体积过大等不利因素。例如七个不同的音符是由七个不同的频率来控制发出的,所用仪器之多显而易见。方案二与前一种方案相比,主控芯片采用AT89S52单片机,它是大规模集成电路技术发展的产物,具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。同时具有强大的控制功能和灵活的编程实现特性,由于本设计主要用于人们娱乐方面,因此在设计上尽量使其安全以及简单易操作。而第二种方案具有经济可行性、技术可行性、实物应用性。综上所述,本次课程设计采用第二种方案。1.2系统硬件组成框图 图1.2 系统硬件组成框图实验中每按下一个琴键,单片机能够检测到键盘的按键,并根据按键的位置,通过程序来控制,使喇叭

17、发出不同频率(音调)的声音,声音延迟一段时间,等到按键放开之后,声音停止。然后再继续扫描,看是否有键按下。如此循环,即可实现基本的琴键功能。2 STC89C52最小系统设计硬件电路要以单片机作为主控芯片,实现按键输入音符和音调,两位数码管的显示以及低音频功率放大和蜂鸣器发音。针对本设计的功能和用途,采用AT89C52单片机更好,实现功能完全,性价比较高,更适合本设计。2.1单片机芯片选择此次设计采用的是STC89C52单片机芯片,其特点及管脚封装介绍如下:STC89C52 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。使用Atmel司高密度非 易失性存储

18、器技术制造,与工业80C51 产品指令和引脚完 全兼容。STC89C52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外,STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。8 位微控制器 8K 字节在系统可编程 Flash STC89C52

19、其中P3口亦作为STC89C52特殊功能(第二功能)使用,如下表所示。 在flash编程和校验时,P3口也接收一些控制信号。 端口引脚 第二功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INTO(外中断0) P3.3 INT1(外中断1) P3.4 TO(定时/计数器0) P3.5 T1(定时/计数器1) P3.6 WR(外部数据存储器写选通) P3.7 RD(外部数据存储器读选通) 此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。 RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位在89系列中,在器件引脚的封

20、装上,MCS-51系列机通常有两种封装:一种是双列直插式,常为HMOS型器件所用;另一种是方形封装,大多数在CHMOS型器件中使用。89C52单片机DIP40封装如2.1所示图2.1 89C52直插式封装2.2复位电路设计 图2.2 复位电路单片机最小系统常采用上电自动复位和手动按键复位两种方式实现系统的复位操作。上电复位要求接通电源后,自动实现复位操作。手动复位要求在电源接通的条件下,在单片机运行期间,用按钮开关操作使单片机复位。其结构如下图。上电自动复位通过电容C4充电来实现。手动按键复位是通过按键将电阻R2与VCC接通来实现。2.3时钟电路设计 图2.3 时钟电路单片机内部具有一个高增益

21、反相放大器,用于构成振荡器。通常在引脚XTALl和XTAL2跨接石英晶体和两个补偿电容构成自激振荡器,结构图中Y1、C1、C2。可以根据情况选择6MHz、12MHz或24MHz等频率的石英晶体,补偿电容通常选择30pF左右的瓷片电容。3 电子琴硬件设计 3.1 键盘电路设计常用的按键有三种:机械触点式按键、导电橡胶式和柔性按键(又称触摸式键盘)。机械触点式按键是利用机械弹性使键复位,手感明显,连线清晰,工艺简单,适合单件制造。但是触点处易侵入灰尘而导致接触不良,体积相对较大。导电橡胶按键是利用橡胶的弹性来复位,通过压制的方法把面板上所有的按键制成一块,体积小,装配方便,适合批量生产。但是时间长

22、了,橡胶老化而使弹力下降,同时易侵入灰尘。柔性按键是近年来迅速发展的一种新型按键,可以分为凸球型和平面型两种。柔性按键最大特点是防尘、防潮、耐蚀,外形美观,装嵌方便。而且外形和面板的布局、色彩、键距可按照整机的要求来设计。但是由于客观条件与经济能力有限,本系统采用机械触点式按键。当测试表明有键被按下之后,紧接着就进行去抖动处理。因为键是机械开关结构,由于机械触点的弹性及电压突跳等原因,在触点闭合或断开的瞬间会出现电压抖动。为保证键识别的准确,在电压信号抖动的情况下不能进行行状态输入。为此需进行去抖动处理。去抖动有硬件和软件两种方法。硬件方法就是加去抖动电路,从根本上避免抖动的产生。软件消抖,在

23、第一次检测到有键按下时,执行一段延时程序之后,再检测此按键,如果第二次检测结果仍为按下状态,CPU便确认此按键己按下,消除了抖动。 图3.1 键盘电路利用所给键盘的1,2,3,4,5,6,7,8八个键,能够发出7个不同的音调,而且有一个按键可以自动播放歌曲,要求按键按下时发声,松开延时一小段时间,中间再按别的键则发另外一音调的声音,当系统扫描到键盘按下,则快速检测出是哪一个按键被按下,然后单片机的定时器启动,发出一定频率的脉冲,该频率的脉冲经喇叭驱动电路放大滤波后,就会发出相应的音调。如果在前一个按下的键发声的同时有另一个按键被按下,则启动中断系统。前面的发音停止,转到后按的键的发音程序。发出

24、后按的键的音调。 3.2 显示电路设计 图3.2 流水灯显示电路本设计利用8个灯对应8个按键的功能显示,当按下1-7按键时对应7个音调同时对应的小灯闪烁,当按下第8 个按键时播放歌曲同时小灯轮闪,闪亮的时间等于音调的长短,小灯之间的切换时间为节拍时间,这样就实现了小灯随音乐而跳动闪烁的景象。使小灯随音乐跳动起来,这就是小灯显示的优点。 3.3 串口电路设计本设计采用MAX232串口转换芯片其性能特点如下:1、符合所有的RS-232C技术指标; 2、只需要单一+5V电源供电; 3、片载电荷泵具有升压、电压极性反转能力,能够产生+10V和-10V电压V+、V-; 4、功耗低,典型供电电流5mA;

25、5、内部集成2个RS-232C驱动器; 6、内部集成两个RS-232C接收器; 7、高集成度,片外最低只需4个电容即可工作。MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。内部基本上可以分为三部分:第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。 第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。 其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。 8脚(R2IN

26、)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从11引脚(T1IN)、10引脚(T2IN)输入转换成RS-232数据从14脚(T1OUT)、7脚(T2OUT)送到电脑DB9插头;DB9插头的RS-232数据从13引脚(R1IN)、8引脚(R2IN)输入转换成TTL/CMOS数据后从12引脚(R1OUT)、9引脚(R2OUT)输出。第三部分是供电。15脚GND、16脚VCC(+5v)。下图所示为MAX232管脚封装图。图3.3 MAX232封装引脚图 图3.4 串口电路 电容器应选择1F的电解电容。由于RS232电平较高,在接通时产生的瞬时电涌

27、非常高,很有可能击毁MAX232,所以在使用中应尽量避免热插拔。如图3.4所示为通信下载电路图。3.4发音电路设计 图3.4 扬声器发声电路本设计采用9012PNP型三极管,三极管9012是一种常用的小功率PNP型硅管, 在图中,三极管主要是做驱动用的,因为单片机的IO口驱动能力不够让蜂鸣器发出声音,所以我们通过三极管放大驱动电流,从而可以让蜂鸣器发出声音,当P3.3口输出高电平三极管导通,集电极电流通过蜂鸣器让蜂鸣器发出声音,当输出低电平时,三极管截止,没有电流流过蜂鸣器,所以就不会发出声音,从而实现单片机控制发声。4 电子琴软件设计 4.1 电子琴发声原理一般说来,单片机演奏音乐基本都是单

28、音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。在音乐中所谓“音调”,其实就是我们常说的“音高”。在音乐中常把中央C 上方的A 音定为标准音高,其频率f=440Hz。当两个声音信号的频率相差一倍时,也即f2=2*f1时,则称f2比f1高一个倍频程,在音乐中1(do)与.1,2(re)与.2正好相差一个倍频程,在音乐学中称它相差一个八度音。在一个八度音内,有12个半音。以1i 八音区为例, 12 个半音是:11、12、22、23、34、44

29、,45、5 一5、56、66、67、7i。这12 个音阶的分度基本上是以对数关系来划分的。如果我们只要知道了这十二个音符的音高,也就是其基本音调的频率,我们就可根据倍频程的关系得到其他音符基本音调的频率。知道了一个音符的频率后,我们就可以采用通过单片机的定时器定时中断的方法,将单片机上对应蜂鸣器的I/O 口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将定时器予置不同的定时值就可实现。我们就以本次设计中标准音高A为例进行演示。A的频率f = 440 Hz,其对应的周期为:T = 1/ f = 1/440 =2272s 图4.1.1 脉冲产生原理图

30、由图4.1.1可知,单片机上对应蜂鸣器的I/O 口来回取反的时间应为:t=T/2=2272/2=1136s这个时间t 也就是单片机上定时器应有的中断触发时间。一般情况下,单片机奏乐时,其定时器为工作方式1,它以振荡器的十二分频信号为计数脉冲。设振荡器频率为f0,则定时器的予置初值由下式来确定:t=12*(TALLTHL)/f0式中TALL = 216 = 65536,THL为定时器待确定的计数初值。因此定时器的高低计数器的初值为:TH=THL/256=(TALLt*f0/12)/256TL=THL%256=(TALLt*f0/12)%256将t=1136s 代入上面两式(注意:计算时应将时间和

31、频率的单位换算一致),即可求出标准音高A 在单片机晶振频率f0=12Mhz,定时器在工作方式1下的定时器高低计数器的予置初值为:TH440Hz=(655361136*12/12)/256=0XFBTL440Hz=(655361136*12/12)%256=0X90根据上面的求解方法,我们就可求出其他音调相应的计数器的予置初值。音符的节拍我们也可以举例来说明。在一张乐谱中,我们经常会看到这样的表达式,如1=C、1=G 等等,这里1=C,1=G表示乐谱的曲调,和我们前面所谈的音调有很大的关联,、就是用来表示节拍的。以为例加以说明,它表示乐谱中以四分音符为节拍,每一小结有三拍。比如: 图4.1.2

32、部分乐谱图在图4.1.2中1 、2 为一拍,3、4、5 为一拍,6为一拍共三拍。1 、2的时长为四分音符的一半,即为八分音符长,3、4的时长为八分音符的一半,即为十六分音符长,5 的时长为四分音符的一半,即为八分音符长,6的时长为四分音符长。一般说来,如果乐曲没有特殊说明,一拍的时长大约为400500ms 。我们以一拍的时长为400ms 为例,则当以四分音符为节拍时,四分音符的时长就为400ms,八分音符的时长就为200ms,十六分音符的时长就为100ms。可见,在单片机上控制一个音符唱多长可采用循环延时的方法来实现。首先,我们确定一个基本时长的延时程序,比如说以十六分音符的时长为基本延时时间

33、,那么,对于一个音符,如果它为十六分音符,则只需调用一次延时程序,如果它为八分音符,则只需调用二次延时程序,如果它为四分音符,则只需调用四次延时程序,依次类推。通过上面关于一个音符音调和节拍的确定方法,我们就可以在单片机上实现演奏音乐了。具体的实现方法为:将乐谱中的每个音符的音调及节拍变换成相应的音调参数和节拍参数,将他们做成数据表格,存放在存储器中,通过程序取出一个音符的相关参数,播放该音符,该音符唱完后,接着取出下一个音符的相关参数,如此直到播放完毕最后一个音符,根据需要也可循环不停地播放整个乐曲。另外,对于乐曲中的休止符,一般将其音调参数设为0XFF,0XFF,其节拍参数与其他音符的节拍

34、参数确定方法一致,乐曲结束用节拍参数为00H来表示。音调数据表(C调)曲调值DELAY曲调值DELAY调4/4125ms调4/462ms调3/4187ms调3/494ms调2/4250ms调2/4125ms 本次设计采用乐谱如下图:根据以上原理可知此乐谱为C调2/4,延时一拍为250ms若单片机采用12MHZ晶振,则音符与计数T0相关的计数值如图4.1.3:音符频率(HZ)简谱码(T值)音符频率(HZ)简谱码(T值)低1DO26263628# 4 FA#74064860#1DO#27763731中 5 SO78464898低2RE29463835# 5 SO#83164934#2 RE#311

35、63928中 6 LA88064968低 3 M33064021# 693264994低 4 FA34964103中 7 SI98865030# 4 FA#37064185高 1 DO104665058低 5 SO39264260# 1 DO#110965085# 5 SO#41564331高 2 RE117565110低 6 LA44064400# 2 RE#124565134# 646664463高 3 M131865157低 7 SI49464524高 4 FA139765178中 1 DO52364580# 4 FA#148065198# 1 DO#55464633高 5 SO1568

36、65217中 2 RE58764684# 5 SO#166165235# 2 RE#62264732高 6 LA176065252中 3 M65964777# 6186565268中 4 FA69864820高 7 SI196765283 图4.1.3 音符频率表音乐弹奏原理:本次设计中单片机晶振为12MHZ,那么定时器的计数周期为1MHZ,假如选择工作方式1,那T值便为T=2165*105/相应的频率,那么根据不同的频率计算出应该赋给定时器的计数值。按键与音阶的对应关系如图4.1.4所示:按键音阶S1高音doS2高音reS3高音miS4高音faS5高音soS6高中音laS7高音xiS8音乐

37、图4.1.4 按键与音阶对照表 4.2 程序流程图设计根据8个按键对应不同的发声状态,程序主要流程图如图4.2 图4.2 程序主要流程图4.3电子琴模块化程序设计本次程序设计采用模块化编程,模块化编程具有很多优点,能够使程序更加简单明了,将程序分为不同的模块让人一看就能知道程序由哪几个部分组成,各个部分之间有什么联系,而且能很方便的看出各个模块的功能,因为各个模块都是功能相互独立的,每个模块都具有可移植性,方便重复使用,不必每次都重新编写程序,大大节约了编程时间,提高了编程效率。模块化编程的步骤如下:1.创建头文件,建立一个.C文件(源文件)和一个.h文件(头文件)。原则上.C文件和.h文件同

38、名;文件名要有意义,最好是能体现文件代码的功能。例如延时函数相关的源文件和头文件命名为delay.c与delay.h2.防重复包含处理,在.h文件中加入如下代码:#ifndef XXX#defineXXX.#endif3.代码封装,将需要模块化的代码封装入函数或者宏定义,函数先在头文件里声明,函数体放在.c文件中;需要被外部调用的宏定义放在.h文件中;仅会被本.c文件调用的宏定义放在.c文件中。尽量少用或者不用全局变量,必须要用全局变量的声明放在.C文件中;当需要调用外部全局变量时,需要在.h中用extern重新声明。4使用源文件,将.c文件添加到工程中,在其他.c文件中吧.h文件包含进去。所

39、包含的头文件中的函数,宏定义,全局变量可以在.c文件中有调用。 下面我用电子琴中程序简单介绍一下:首先将程序大致分为四个模块如延时(delay.c),主程序(main.c),流水灯(led.c)和放歌子程序(song.c)。在KEIL软件中创建上面四个源文件并添加到工程中,然后再创建各个模块的.h头文件如(delay.h),(led.h),(song.h)等,然后在每个带.c的文件中输入每个模块的程序,在带.h文件中输入(#ifndef #define #endif)结构语句并包含用到的源文件名如延时语句可表示为#ifndef _DELAY_H_#define _DELAY_H_void De

40、layUs2x(unsigned char t);void delay_ms(unsigned char t);#endif最终建立好的模块化程序结构如图4.3所示图4.3 模块化编程结果5 系统调试此次调试用到的软件有Keil C51和STC-ISP。Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成

41、的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。 图5.1 KEIL软件界面STC-ISP 是一款单片机下载编程烧录软件,是针对STC系列单片机而设计的,可下载STC89系列、12C2052 系列和12C5410等系列的STC单片机,使用简便,现已被广泛使用。 1、打开STC-ISP,如下图界面,在MCU Type栏目下选中单片机,如STC89C52RC。 2、根据您的9针数据线连接情况选中COM端口,波特率一般保持默认,如果遇到下载问题,可以适当下调一些,按图示选中各项:3、先确认硬件连接正确,

42、按如图点击“打开文件”并在对话框内找到您要下载的HEX文件:4、按下图选中两个条件项,这样可以使您在每次编译KEIL时HEX代码能自动加载到STC-ISP,点击“Download/下载”:5、手动按下电源开关便即可把可执行文件HEX写入到单片机内,如图5.2是正在写入程序截图: 图5.2 STC-ISP下载界面6 总结经过三个星期的单片机课程实习,我们经历了硬件的整个制作流程以及后面的程序编写与调试,我们先是利用Protel DXP绘制出电子琴原理图,然后利用软件功能生成PCB,根据PCB打印出电路图并转印到铜板上,将转印的铜板进行腐蚀得到实际电路板,再对电路板打孔,将元器件安装到电路板上然后

43、进行焊接,焊接完成经过调试确定电路板制作是否成功。电路板制作完成就是程序的编写和调试,在这过程中加深了对单片机系列知识及其系统的认识,同时通过查资料找音乐也对音乐的发声原理有了基本的了解能根据乐谱写出相应的频率初值表。通过这次课程设计让我重新复习了以前学过的知识包括数字电子,模拟电子,电路,单片机以及C语言等课程,对所学知识有了系统的掌握,我将继续秉着学习的态度继续努力。参考文献【1】 MCS-51系列单片机原理及应用-刘淑荣-中国电力出版社-2011.1【2】 新概念51单片机C语言教程-郭天祥-电子工业出版社-2009.1【3】 模拟电子技术基础第四版-童诗白-高等教育出版社-2011.5

44、【4】 数字电子技术基础第四版-阎石-高等教育出版社-2011.7【5】 微型计算机控制技术-潘新民-高等教育出版社-2012.2【6】 C语言程序设计-杨忠宝-北京大学出版社-2010.2【7】 Altium Deigner教程-谷树忠,刘文洲-电子工业出版社-2010.1【8】 电子电路设计与实践-周文良著-国防工业出版社-2011.1【9】 单片机原理及应用-张虹-中国电力出版社-2009附录附录一电子琴程序:/*- 名称:电子琴 编写:赵伟 日期:2013.7 内容:-*/#include/52单片机头文件#define uchar unsigned char#define uint

45、unsigned intsbit SPK=P33;/定义输出端口uint num,count;/*-低中高音调频率初值-*/int code lab= 61719,62435,62506,62679,62985,63263,63512,63628,63835,64021,64103,64260,64400,64524,64580,64684,64777,64810,64898,64968,65080, 65058,65110,65157,65178,65217,65252,65283;/*-音乐码表-*/uint code Song=0x12,125,0x0e,125,0x13,125,0x0

46、e,125,0x12,125,0x10,125,0x12,125,0x0f,125,0x10,125,0x12,125,0xff,125,0x10,62,0x12,62,0x13,62,0x0e,62,0x12,62,0x13,62,0x12,62,0x10,62,0x12,125,0x0e,250,0x10,125,0x0f,250,0xff,250,0x10,125,0x0f,125,0x0e,125,0x0f,125,0x10,125,0x0c,125,0x12,125,0x10,125,0x12,125,0x13,50,0xff,125,0x12,125,0x0e,125,0x0c,2

47、50,0x12,125,0x10,125,0x12,125,0x0f,250,0x12,125,0x0f,125,0x10,125,0x0f,125,0x0e,250,0x00,0x00;uint code table=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe;/不同音调对应的小灯代码/*-流水灯代码-*/uchar code seg=0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe, 0xff,0xff,0x00,0x00, 0x55,0x55,0xaa,0xaa ;uchar m,i,j;void led_delay(uchar t)for(i=0;it;i+)if(P2!=0xff)break;for(j=0;jt;j+)if(P2!=0xff)break; void display() P1=0xFE; /第1个LED亮 for(m=0;m8;m+) led_delay(100); P1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论