南京工程学院-单片机课程设计报告

上传人:第*** 文档编号:55655963 上传时间:2018-10-03 格式:PDF 页数:21 大小:484.61KB
返回 下载 相关 举报
南京工程学院-单片机课程设计报告_第1页
第1页 / 共21页
南京工程学院-单片机课程设计报告_第2页
第2页 / 共21页
南京工程学院-单片机课程设计报告_第3页
第3页 / 共21页
南京工程学院-单片机课程设计报告_第4页
第4页 / 共21页
南京工程学院-单片机课程设计报告_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《南京工程学院-单片机课程设计报告》由会员分享,可在线阅读,更多相关《南京工程学院-单片机课程设计报告(21页珍藏版)》请在金锄头文库上搜索。

1、目目录录 一、题目 二、设计任务(要求) 三、总体方案 四、原理框图 五、系统模块详细设计与调试 六、设计总结 七、源程序及硬件(PCB、 )电路图、实物图 一、一、 题目题目 电子琴设计(液晶) 二、二、 设计任务(要求)设计任务(要求) 1.1.设计一个 9 键的键盘,并将其中的 7 个键设计成 7 个音调。 2.2.能弹奏想要表达的音乐。 3.3.该电子琴包含 12 首示例歌曲或者音乐,由特定的功能键进行控制:DEMO。 4.4.另外设置两个功能键。功能键 1:使电子琴自动从音调 1 播放到音调 7,达 到顺序播放的效果。功能键 2:使电子琴自动从音调 7 播放到音调 1,达到 倒序播放

2、的效果。 三、三、 总体方案总体方案 (一) 、本次课程设计的课题是 7 音键电子琴的设计,要想完成课程设计的 要求,必须要达到的要求如下: 1、软件编写正确且具有较高的实时性(反应时间小于 0.1 秒) 。 2、7 个音调发音准确并有明显区别。 3、硬件电路设计正确且线路板焊点饱满、圆润,无虚焊等现象。 本次设计提出了用 AT89S52 单片机为核心控制元件,设计一个简易的电子 琴. 本方案以 AT89S52 单片机作为主控核心,与键盘、扬声器等模块组成核心主 控制模块在主控模块上设有 17 个按键和扬声器.根据使用者的操作随意弹奏想 要表达的音乐。一首音乐是许多不同的音阶组成的,而每个音阶

3、对应着不同的频 率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当 然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器 T0 来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系 弄正确即可。 AT89S52 具有高速度、 低电压、 低功耗、 且可靠性和成本都比较低的特点。 因此本次毕业设计采用 AT89S52 单片机作为整个电路核心控制器件。 对于本交通 控制系统使用一片 AT89S52 系列的单片机, 不需要外扩展存储器, 就能实现显示、 预制状态、动态调节的功能,因而整体结构简单。AT89S52 的运用能够使设计的 7 音电子琴系统满

4、足于实用。 设计电路时运用 AT89S52 单片机的接口来实现各种输入、输出功能。P0、P1 口用来作输出口,向液晶电路输出信号;P2 口实现一个矩阵键盘的功能;P3.6 控 制声控电路信号输出口。同时设计了一个直流稳压电路增加电路的适应性,增加 了电路的适用性,使整个系统更加紧凑,工作十分稳定。 音乐频率 一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样 我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单 片机来产生不同的频率非常方便, 我们可以利用单片机的定时/计数器 T0 来产生 这样方波频率信号, 因此, 我们只要把一首歌曲的音阶对应频率关系弄正确即

5、可。 单片机 11.0592MHZ 晶振, 高中低音符与单片机计数 T0 相关的计数值如下表所 示 : 音符频率简码值(T 值) 低 3 M33064021 低 4 FA34964103 低 5 SO39264260 低 6 LA44064400 低 7 SI49464524 中 1 DO52364580 中 2 RE58764684 中 3 M65964777 中 4 FA69864820 中 5 SO78464898 中 6 LA88064968 中 7 SI98865030 高 1 DO106465058 高 2 RE117565110 高 3 M131865157 高 4 FA1397

6、65178 (二) 、根据硬件电路进行软件设计 1、完成相应程序初始化,其中包括单片机的初始化和液晶显示的初始化。 2、编写完成键盘扫描功能的主要程序 void main(其中包含对定时器 0/ 计数器 0 的初始化) 。 3、按题目要求,设置三个功能键 SB(顺序播放控制键)、DB(倒序播放控制 键) 、DEMO(自动演示歌曲控制键) ,编写相关部分的子程序 sb(顺序播 放子程序)、 db (倒序播放子程序) 和 music_1 (歌曲 1 子程序) delay(延 时子程序)和 time() interrupt 1(定时器 1 中断子程序) ,并在主程序 适当位置调用。 4、实现主要功能

7、的程序编写好以后,需要通过液晶将音调数目显示出来。 通过对液晶相关资料的了解, 编写液晶显示子程序 DISPLAY(其中含显示 数字部分 CCW_PR、显示符号部分 CCW_PR1),并在主程序相应部分进行 调用。 (其中还包含用 PCToLCD2002 软件生成相应显示数字和汉字的字 模表 CCTAB) 5、本次课程设计的延时子程序所控制的延时时间,我用了软件延时实现其 功能, 其中的参数我用软件 单片机小精灵 V1.3 进行了延时的精确计算 其效果和硬件延时同样具有高精度。 6、液晶显示功能为,按下音调键,将显示音调值或者为键值并在屏幕上一 直显示圣殿指环四个汉字。 四、四、 原理框图(程

8、序流程图)原理框图(程序流程图) 不断检测 16 个音阶键或功能键哪个被按下,当音阶键被按下时,发出对 应的音;当功能键被按下时,执行相应的功能。然后再检测按键释放成不成功, 也就是平时所说的松手检测,不成功就不断再检测,成功就返回按键检测。 T0 初始化并允许中断 和液晶显示初始化 开始 键盘扫描 调用子程序 是否有按键按下 (去抖动) 按键释放 N Y 继续调用子程序 完成 Y 五、五、 系统模块详细设计与调试系统模块详细设计与调试 三个功能模块简介 1 1、键盘扫描模块 由电路原理图可知,本课程设计的 4*4 矩阵键盘由单片机的 P2 口控 制,且由 P2 口的高位(P24-P27)控制

9、列,低位(P20-P23)控 制行。本矩阵键盘由列输入,行读入键值,所以决定了键盘的扫描方 式为列扫描方式。 P2=0xef;/第一列扫描,并给 P2 口赋初值 temp=P2;/读入 P2 口的键值 temp=temp if(temp!=0x0f) delay(5); temp=P2; temp=temp if(temp!=0x0f) temp=P2; temp=temp switch(temp) case 0x0e:key=0;break; case 0x0d:key=1;break; case 0x0b:key=2;break; case 0x07:key=3;break; 2 2、液晶

10、显示模块 编写程序时, 通过 PCToLCD2002 软件生成相应显示数字和汉字的字模 表 CCTAB,调用指导老师的显示汉字中的子程序 CCW_PR 及 CCW_PR1 将数字用汉字的大小显示,符号用汉字一半的大小显示。 3 3、音调控制模块 该模块是给计数器装入计数初值然后开计数器,开始计数产生溢出中 断,调用中断子程序输出高低电平(方波的产生) ,发出音调,然后 不断进行松手检测, 直到松手检测成功即松开按键, 停止声音的发出。 switch(temp) case 0x0e:key=0;break; case 0x0d:key=1;break; case 0x0b:key=2;break

11、; case 0x07:key=3;break; LCD_allblack(0); display_English(key); TH0=tablekey/256; TL0=tablekey%256; TR0=1; while(temp!=0x0f) temp=P2; temp=temp TR0=0; spk=1; 中断子程序: void time() interrupt 1/中断 TH0=tablekey/256; TL0=tablekey%256; spk=spk; 调试中发现的问题及解决方法: 在整个程序的编写我采用了分模块编写的方法,然后逐个进行软件编译并下 载至硬件电路进行实践检测,最

12、后完成了程序的正确编写。 1. 键盘扫描遇见的问题 在完成键盘扫描程序的编写和编译之后, 我将程序下载到硬件电路的 CPU 中,发现按键按下之后很久才有了音调的产生,按键如果按的时间太短, 就不会发音。由上述的问题中可以知道键盘的检测部分能够完成键盘扫 描功能并且发音功能也能正确完成,但为什么会出现上述问题呢?经过 再次对程序的仔细阅读,发现其中按键的扫描时间和延时子程序所控制 的时间有关系,最后经过修改延时子程序的延时时间进行了调整,发现 上述问题的原因是在去抖动的延时扫描时间太长,导致了上述问题的发 生。经过对延时扫描时间调小,问题得到解决。 2. 按键功能实现遇见的问题 此次所设计的 3

13、 个功能键分别是倒序播放控制键、顺序播放控制键、音 乐自动比方演示键。其前两个子程序如下: void sb()/顺序播放 for(key=0;key+;key=0) TH0=tablekey/256; TL0=tablekey%256; TR0=1; delay(10); TR0=0; 其中 sb 和 db 的子程序设计为同理设计,但是在硬件电路上调试并不成 功,问题是:顺序播放功能能够正确实现,同理设计的倒序播放功能却 不能正确实现。开始怀疑是硬件电路的按键焊接不正确或者有板子焊坏 问题,由此对程序中的按键进行了调换,让完好的按键代替实现该功能, 但是仍旧不能够解决问题。请教了老师,对程序执

14、行进行了跟踪,发现 仍旧没有程序错误。老师对此也无解。最后我将倒序播放的功能实现程 序改写为和歌曲播放的子程序相仿,该按键的功能得到了解决。在此个 问题上,我到现在仍旧没有得到答案。 void db()/倒序播放 TR0=1; key=6; TH0=tablekey/256; TL0=tablekey%256; delay(15); key=5; TH0=tablekey/256; TL0=tablekey%256; delay(15); key=4; TH0=tablekey/256; TL0=tablekey%256; delay(15); key=3; TH0=tablekey/256;

15、 TL0=tablekey%256; delay(15); key=2; TH0=tablekey/256; TL0=tablekey%256; delay(15); key=1; TH0=tablekey/256; TL0=tablekey%256; delay(15); key=0; TH0=tablekey/256; TL0=tablekey%256; delay(15); spk=1; TR0=0; 3. 液晶显示遇见的问题 在液晶显示时,发现液晶完全没有显示,尽管我调整了很多次对比度, 还是用同学的完全正确的程序进行调试,液晶屏仍旧不显示。最后不得 不请教老师,才发现自己犯了一个很低

16、级的错误,还有液晶显示对比度 调节的电阻还未焊接,经过老师的指点,焊接好所缺的电阻后,液晶得 以正常显示,顺利完成了程序的液晶调试部分。 六、六、设计总结 这次设计,我的程序能够实现 12 个音调的发声,播放两首歌曲,及课程设 计所要求的 7 个音调的顺 (倒) 序播放外加液晶显示部分含有数字和汉字的显示。 在这次课程设计的过程中,我遇到了很多问题,也学到了很多东西。我从中 感悟到,在遇到种种问题难以解决的时候,如果问问自己:我做好充分的准备了 吗,我想这答案十有八九是显然没有。所以,通过这次课程设计,我明白了一点 那就是:准备是必须的,只有充分的准备才能在遇到问题的时候锦囊妙计更好地 找出解决问题的方法, 不至于无谓地浪费时间。 在遇到难题的时候一定要戒焦躁, 多向老师和同学请教。老师的指导是肯定必不可少的,只有跟更优秀的人学习才 能使自己变得优秀。当然,在研究的过程中,也不可忽略了同学提的意见,因为 其中的一些可

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号