1、 湖南人文科技学院 课程设计报告 课程名称 :单片机原理及应用课程设计 设计题目 : 远程点歌系统 系 别: 通信与控制工程系 专 业: 通信工程 班 级: 08 级通信一班 学生姓名 : 曹桐军 肖行 学 号 : 08416137 08407227 起止日 期 : 2010 年 12 月 20 日 2011 年 1 月 2 日 指导教师 : 方智文 岳舟 教研室主任: 刘建闽 指导教师评语 : 指导教师签名: 年 月 日 成绩评定 项 目 权重 成绩 1、设计过程中出勤、学习态度等方面 0.2 2、课程设计质量与答辩 0.5 3、设计报告书写及图纸规范程度 0.3 总 成 绩 教研室审核意见
2、: 教研室主任签字: 年 月 日 教学系审核意见: 主任签字: 年 月 日 2 摘要 本设计是一个基于 AT89C52 系列单片机的点歌系统,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能点歌系统。该点歌系统主要由单片机、 8255 芯片、 LED 显示 电路、复位电路、时钟电路以及蜂鸣器组成。用户从客户机选择要播放的曲目。客户机通过串口将选择信息传给单片机。单片机根据客户机给的信息做出选择,播放预先存放在 ROM 中的音乐,并用 LED 显示播放歌曲。放完后在提示客户机选择下一曲,用蜂鸣器播放音乐。本设计利用 KEIL 编程软件对点歌系统源程序进行编程并调试,节
3、约了设计时间。 关键字:点歌; AT89C52 单片机; LED;串口; 3 目录 1.引言 . 4 1.1 设计目的 . 4 1.2 设计要求 . 4 1.3 设计内容 . 4 2.设计方法对比 . 4 2.1 设计方案一 . 5 2.2 设计方案二 . 5 2.3 方案选择 . 5 3.电路硬件分析 . 5 3.1 总体设计框图 . 5 3.2 AT89C52 简介 . 6 3.3 LED 显示电路设计与原理 . 6 3.4 时钟振荡电路 . 7 3.5 串口电路 . 7 4.软件 分析 . 8 4.1 音调的确定 . 8 4.2 节拍的确定 . 9 4.3 编码 . 10 4.4 软件程
4、序设计 . 12 4.4.1 主程序流程图 . 12 4.4.2 播放音乐子程序流程图 . 14 4.4.3 程序源代码(见附录一) . 15 5.总结 . 15 6.致谢 . 16 参考文献 . 16 附录一 . 17 4 远程点歌系统 1.引言 随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。点歌系统可以提高人们的精神文化享受。传统点歌系统 较为复杂,一般嵌入在一些专用影音设备中,且成本较高, 本点歌系统是以单片机为核心元件的电子式点歌系统,体积小 、 重量轻 、 能演奏和旋音乐 及 使用方便, 加之性价比较高, 具有一定的商业价值。 1.1 设计目的 ( 1)熟悉 单
5、片机的应用与开发; ( 2)学习用 C 语言开发应用程序; ( 3)学习远程控制与歌曲播放的开发。 1.2 设计要求 利用单片机作为控制核心,完成一个从客户机选择的点歌系统。具体要求如下: ( 1) 用户从客户机选择要播放的曲目; ( 2) 电脑通过串口将选择信息传给单片机。 ( 3)单片机根据电脑给的信息做出选择,播放预先存放在 ROM 中的音乐; ( 4)用扬声器播放音乐完后,提示下一次选择。 1.3 设计内容 ( 1) 电路有两种工作模式:暂停模式和播放模式。 ( 2) 按下按键 1 进入演奏音乐模式,再按切换歌曲,共两首歌曲。 ( 3)按下按键 2 进入 花样灯模式,再按切换 LED
6、花样,共三种花样。 2.设计方法对比 本设计是一个基于 AT89C52 系列单片机的点歌系统,客户机选择所喜欢的歌曲,单片机执行音乐播放程序。蜂鸣器发出某个音调,与之相对应的数码管显示播放的曲目。硬件有单片机已确定,下面对软件设计语言进行比较: 5 2.1 设计方案一 使用 C 语言,它是目前最流行的程序设计语言之一,具有简洁、灵活、实用、高效、可移植性好;它同时具备了高级语言和低级语言的特征,除此之外, C 语言生成目标代码质量高、程序执行效率高。 2.2 设计方案二 使用汇编语言,它能从分 发挥指令系统功能和效率,可获得最简练的目标程序,特别是在一些实时控制系统中,采用汇编语言可以准确地计
7、算出控制操作时间。 2.3 方案选择 使用汇编语言,会使编程过程变得繁琐,复杂度上升,程序结构不易控制,加之音乐播放对实时要求不高;而 C 语言能极大地简化编程过程,大大的提高的效率与质量,故选择方案一。 3.电路硬件分析 3.1 总体设计框图 STC89C52 单片机 LED 显示 8255 蜂鸣器 串口 震荡电路 图 3.1 总体设计框图 6 3.2 AT89C52 简介 AT89C52 是一种带 4K 字节闪存可编程可擦除只读存储器( FPEROM Flash Programmable and Erasable Read Only Memory)的低电压,高性能 CMOS 8 位微处理器
8、,俗称单片机。 AT89C2051是一种带 2K 字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除 100 次。该器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 CPU和闪烁存储器组合在单个芯片中, ATMEL 的 AT89C52 是一种高效微控制器,AT89C2051 是它的一种精简版本。 AT89C52 单 片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图 3.2 所示 3.3 LED 显示电路设计与原理 LED 显示电路是由 6 位 LED 数码管组成,连
9、接方式为共阳极,数码管的位数由8255 的 PA 控制,若为低电平则有效;数码管显示的内容的由 8255 的 PB 口控制。 图 3.2 AT89C52 系列单片机 图 3.3 LED 显示电路设计与原理 7 3.4 时钟振荡电路 AT89C52 中有一个用于构成内部振荡器的高增益反相放大器,引脚 XTAL1 和XTAL2 分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自然振荡器。外接石英晶体及 电容 C1、 C2 接在放大器的反馈回路中构成并联振荡电路。对外接电容C1, C2 虽然没有什么严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡
10、器工作的稳定性、起振的难易程序及温度稳定性。如果使用石英晶体,我们推荐电容使用 30PF 10PF,而如果使用陶瓷振荡器建议选择 40PF 10PF。用户也可以采用外部时钟。采用外部时钟的电路如图示。这种情况下,外部时钟脉冲接到 XTAL1 端,即内部时钟发生器的输入端, XTAL2 则悬空 。由于外部时钟信号是通过一个 2 分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。振荡器电路图如右。 3.5 串口电路 由于单片机工作电压与客户机串口电压存在电压差,不能直接相连。这里使用MAX232 芯片转换电压
11、,再接上标准串口 CON32,从而达到与客户机通信的目的。出口硬件连接电路图如下。 图 3.4 单片机外部振荡电路 图 3.5 串口电路图电路 8 4.软件分析 音调、节拍以及编码的确定方法一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能像电 子琴那样能奏出多种音色的声音。因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和节拍表示一个音符唱多长的时间。 4.1 音调的确定 ( 1)要产生音频脉冲,只要算出某一音频的周期( 1/频率),然后将此周期除以2,即为半周期的时间。利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的 I/O 反相,然后重复计时此
12、半周期时间再对 I/O 反相,就可在 I/O 脚上得到此频率的脉冲。 ( 2)利用 AT89C52 的内部定时器使其工作在计数器模式 MODE1 下,改变计数值 TH0 及 TL0 以产生不同频率的方法。 此外结束符和休 止符可以分别用代码 00H 和 FFH 来表示,若查表结果为 00H,则表示曲子终了;若查表结果为 FFH,则产生相应的停顿效果。 ( 3)例如频率为 523Hz,其周期 T=1/523=1912us,因此只要令计数器计时956us/1us=956,在每次技术 956 次时将 I/O 反相,就可得到中音 DO( 523Hz)。 计数脉冲值与频率的关系公式如下: N=Fi 2
13、Fr N:计算值; Fi:内部计时一次为 1us,故其频率为 1MHz; 其计数值的求法如下: T=65536-N=65536-Fi 2 Fr 例如:设 K=65536, F=1000000=Fi=1MHz,球低音 DO( 261Hz)。中音 DO( 523Hz)。高音的 DO( 1046Hz)的计算值 T=65536-N=65536-Fi 2 Fr=65536-1000000 2 Fr=65536-500000/Fr 低音 DO 的 T=65536-500000/262=63627 低音 DO 的 T=65536-500000/523=64580 低音 DO 的 T=65536-500000
14、/1047=65059 C 调各音符频率与计数值 T 的对照表如表 4.1 所示。 9 表 4.1 C 调各音符频率与计数值 T 的对照表 低音 频率 T 参数 中音 频率 T 参数 高音 频率 T 参数 Do 262 1908 229 Do 523 956 115 Do 1046 57 57 Do 277 1805 217 Do 554 903 108 Do 1109 54 54 Re 294 1701 204 Re 587 852 102 Re 1175 51 51 Re 311 1608 193 Re 622 804 97 Re 1245 48 48 Mi 330 1515 182 Mi
15、 659 759 91 Mi 1318 45 45 Fa 349 1433 172 Fa 698 716 86 Fa 1397 43 43 Fa 370 1351 162 Fa 740 676 81 Fa 1480 41 41 So 392 1276 153 So 784 638 77 So 1568 38 38 So 415 1205 145 So 831 602 72 So 1661 36 36 La 440 1136 136 La 880 568 68 La 1760 34 34 La 464 1078 129 La 932 536 64 La 1865 32 32 Si 494 101
16、2 121 Si 988 506 61 Si 1976 30 30 4.2 节拍的确定 一首音乐是由许多不同的音符组成的,而每个音符对应着不同频率,这样就可以利用不同的频率的组合,加以与拍数对应的延时,构成音乐。了解音乐的一些基础知识,我们可知产生不同频率的音频脉冲即能产生音乐。对于单片机来说,产生不同频率的脉冲是非常方便的,利用单片机的定时 /计数器来产生这样的方波频率信号。因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。 表 4.2 节拍与节拍码对照 节拍码 节拍数 节拍码 节拍数 1 1/4 拍 1 1/8 拍 2 2/4 拍 2 1/4 拍 3 3/4 拍 3 3/8 拍 4 1 拍 4 2/1 拍 5 1 又 1/4 拍 5 5/8 拍 6 1 又 1/2 拍 6 3/4 拍