单片机的音乐盒毕业设计论文_第1页
单片机的音乐盒毕业设计论文_第2页
单片机的音乐盒毕业设计论文_第3页
单片机的音乐盒毕业设计论文_第4页
单片机的音乐盒毕业设计论文_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

基于单片机的音乐盒设计 【摘要】本设计是一个基于 AT89C51 系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒。该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。使用两个按键控制音乐盒,一个用来切换歌曲,另一个用来切换 8 路LED 的变化花样,本音乐盒共有两首歌曲,花样灯花样共计 3 种。播放歌曲时,蜂鸣器发出某个音调,与之对应的 LED 亮起。本设计利用 KEIL 编程软件对音乐盒源程序进行编程并调试,配合 PROTEUS 仿真软件对硬件进行仿真调试,节约 了设计时间。 【关键字】音乐盒; AT89C51 单片机; KEIL; PROTEUS; 音调 目 录 引言 . 1 1 概述 . 2 1.1 课题意义 . 2 1.2 设计方案 . 2 1.3 研究内容 . 2 2 系统总体方案介绍 . 3 2.1 系统组成框图 . 3 2.2 音乐盒的功能结构图 . 3 2.3 主要设计软件介绍 . 3 2.3.1 PROTEUS 软件简介 . 3 2.3.2 KEIL 简介 . 4 3 硬件设计 . 5 3.1 总体设计框图 . 5 3.2 各部分硬件设计及其原理 . 5 3.2.1 AT89C51 简介 . 5 3.2.2 LED 显示电路设计与原理 . 5 3.2.3 时钟振荡电路 . 6 3.3 硬件电路图及功能 . 6 4 软件设计 . 8 4.1 音调、节拍以及编码的确定方法 . 8 4.1.1 音调的确定 . 8 4.1.2 节拍的确定 . 9 4.1.3 编码 . 10 4.2 软件程序设计 . 11 4.2.1 程序流程图及相应代码块 . 11 4.2.2 程序源代码(见附录 A) . 15 5 调试 . 16 5.1 检查硬件连接 . 16 5.2 检查软件系统 . 16 5.3 测试结果 . 16 5.3.1总体运行图 . 16 5.3.2花样灯 3 种花样图 . 17 6 总结 . 18 致谢 . 19 参考文献 . 20 科技外文文献 . 21 中文译文 . 24 附录 A 程序源代码及注释 . 错误 !未定义书签。 第 1 页 共 32 页 引言 21 世纪 , 电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着 CMOS 化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。单片机应用的重要意义还在于它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命 。 单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能 IC 卡,民用 豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。 随 着科学技术的进步和社会的发展,人类所接触的信息也在不断增加并且日益复杂。面对浩如烟海的信息,人们已经能够利用计算机等工具高效准确地对之进行处理,但要想将处理完的信息及时,清晰地传递给别人,还必须通过寻求更加卓越的显示技术来实现。 单片机技术与液晶显示技术的结合,使信息传输交流向着智能可视化方向迅速发展。 随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。小小的音乐盒可以给人们带来美 好的回忆,提高人们的精神文化享受。传统音乐盒多是机械型的,体积笨重,发音单调,不能实现批量生产。本文设计的音乐盒是以单片机为核心元件的电子式音乐盒,体积小,重量轻,能演奏和旋音乐,功能多,外观效果多彩,使用方便,并具有一定的商业价值。 第 2 页 共 32 页 1 概述 本设计是以 AT89C51 芯片的电路为基础,外部加上放音设备,以此来实现音乐演奏控制器的硬件电路,通过软件程序来控制单片机内部的定时器使其演奏出优美动听的音乐。用户可以按照自己的喜好选择音乐并将其转化成机器码存入单片机的存储器中。对于不同型号的单片机只需要相应的改变一 下地址即可。该软、硬件系统具有很好的通用性,很高的实际使用价值,为广大的单片机和音乐爱好者提供了很好的借鉴。 1.1 课题意义 音乐盒的起源,可追溯至中世纪欧洲文艺复兴时期。当时为使教会的钟塔报时,而将大小的钟表装上机械装置,被称为 “ 可发出声音的组钟 ” 。音乐盒有着 300 多年的发展历史,是人类文明发展的历史见证。 传统的音乐盒多是机械音乐盒,其工作原理是通过齿轮带动一个带有铁钉的铁桶转动 ,铁桶上的铁钉撞击铁片制成的琴键,从而发出声音。但是,机械式的音乐盒体积比较大,比较笨重,且发音单调。水、灰尘等外在因素,容 易使内部金属发音条变形,从而造成发音跑调。另外,机械音乐盒放音时为了让音色稳定 ,必须放平不能动摇,而且价格昂贵,不能实现大批量生产。 本文设计的音乐盒,是基于单片机设计制作的电子式音乐盒。与传统的机械式音乐盒相比更小巧,音质更优美且能演奏和弦音乐。电子式音乐盒动力来源是电池,制作工艺简单,可进行批量生产,所以价格便宜。基于单片机制作的电子式音乐盒,控制功能强大,可根据需要选歌,使用方便。根据存储容量的大小,可以尽可能多的存储歌曲。另外,可以设计彩灯外观效果,使音乐盒的功能更加丰富。 1.2 设计方案 设计一 个基于 AT89C51 系列单片机的音乐盒,利用按键切换演奏出不同的乐曲。蜂鸣器发出某个音调,与之相对应的 LED 亮起。使用两个按键,一个用来切换歌曲,另一个切换八路 LED 的变化花样。 1.3 研究内容 1)电路有两种工作模式:演奏音乐模式和花样灯模式。 演奏音乐模式:演奏完整的一首的歌曲,八路 LED 随着音乐变化。 花样灯模式:八路 LED 变化出各种花样,蜂鸣器随着发出“嘀嘀”声 2)按下按键 1 进入演奏音乐模式,再按切换歌曲,共两首歌曲。 3)按下按键 2 进入花样灯模式,再按切换 LED 花样,共三种花样。 此电路的程序只 占用了 1K 左右,可编制更多的音乐和 LED 花样,使系统的功能更加强大。 第 3 页 共 32 页 2 系统总体方案介绍 2.1 系统组成框图 音乐盒的系统结构以 AT89C51 单片机位控制核心,加上 2 个按键、时钟复位电路、蜂鸣器、 LED模块组成。单片机负责接收按键的输入,根据输入控制音乐播放曲目和音乐花样灯的显示样式以及蜂鸣器发音。系统组成框图如图 2.1 所示。 图 2.1 系统组成框图 2.2 音乐盒的功能结构图 音乐盒的功能结构如图 2.2 所示。 Key1 负责切换播放歌曲,播放歌曲共 2 首,分别是挥着翅膀的女孩和寂寞沙洲冷。 Key2 负责切换 LED 显示花样,显示花样共 3 种,第一种顺序显示,第二种由两边向中间移动然后向两边移动,第三种循环显示。 图 2.2 音乐盒功能结构图 2.3 主要设计软件介绍 本设计利用 KEIL 编程软件对音乐盒源程序进行编程并调试,配合 PROTEUS 仿真软件对硬件进行仿真调试,两种软件的简介如下: 2.3.1 PROTEUS 软件简介 第 4 页 共 32 页 Proteus 软件是英国 Labcenter electronics 公司出版的 EDA 工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它 EDA 工具软件的仿真功能, 还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。 Proteus 是世界上著名的 EDA工具 (仿真软件 ),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到 PCB 设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、 PCB 设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持 8051、 HC11、 PIC10/12/16/18/24/30/DsPIC33、 AVR、ARM、 8086 和 MSP430 等, 2010 年即将增加 Cortex 和 DSP 系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持 IAR、 Keil 和 MPLAB 等多种编译器。 2.3.2 KEIL 简介 单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为 CPU 可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于 MCS-51 单片机的汇编软件有早期的 A51,随着单片机开发技术的不断发展,从普遍使 用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展, Keil 软件是目前最流行开发 MCS-51 系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持 Keil 即可看出。 Keil 提供了包括 C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境( uVision)将这些部份组合在一起。运行 Keil 软件需要 Pentium 或以上的 CPU, 16MB 或更多 RAM、 20M 以上空闲的硬盘空间、WIN98、 NT、 WIN2000、 WINXP 等操作系统。掌握这一软件的使用对于 使用 51 系列单片机的爱好者来说是十分必要的,如果你使用 C 语言编程,那么 Keil 几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用 C 语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。 Keil C51 生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。 第 5 页 共 32 页 3 硬件设计 3.1 总体设计框图 A T 8 9 S 5 2单 片 机蜂 鸣 器L E D 显 示 电 路按 键 输 入晶 振 复 位 电 路 图 3.1 总体设计框图 3.2 各部分硬件设计及其原理 3.2.1 AT89C51 简介 AT89C51 是一种带 4K 字节闪存可编程可擦除只读存储器( FPEROM Flash Programmable and Erasable Read Only Memory)的低电压,高性能 CMOS 8 位微处理器,俗称单片机。 AT89C2051是一种带 2K 字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除 100 次。该器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中,ATMEL 的 AT89C51 是一种高效微控制器, AT89C2051 是它的一种精简版本。 AT89C51 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图 3.2 所示 图 3.2 AT89C51 系列单片机 3.2.2 LED 显示电路设计与原理 LED 显示电路是由 8 个 LED 发光二极管组成,连接方式为共阳极, LED 接到单片机的 P1 口,若为低电平,可使 LED 亮起。发光二极管的亮、灭由内部程序控制, 8 个 LED 发光二极管分别对应 第 6 页 共 32 页 不同的音阶,所以 LED 会随着音 阶的变化按规律亮、灭。 3.2.3 时钟振荡电路 AT89C51 中有一个用于构成内部振荡器的高增益反相放大器,引脚 XTAL1 和 XTAL2 分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自然振荡器。外接石英晶体及电容 C1、 C2 接在放大器的反馈回路中构成并联振荡电路。对外接电容C1, C2 虽然没有什么严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性。如果使用石英晶体,我们推荐电容使用 30PF 10PF,而如果使用陶瓷振荡器建议选择 40PF 10PF。用户也可以采用外部时钟。采用外部时钟的电路如图示。这种情况下,外部时钟脉冲接到 XTAL1 端,即内部时钟发生器的输入端, XTAL2 则悬空。由于外部时钟信号是通过一个 2 分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。振荡器电路图如下: 图 3.3 单片机内部、外部振荡电路 3.3 硬件电路图及功能 总体硬件电路实现功能如下,如图 3.4 所示 1) 电路中用 P3.2、 P3.3 控制按键。 2) P1.0P1.7 控制 LED。 3) P2.3 控制蜂鸣器。 4) 电路为 12MHZ 晶振频率工作,起振电路中 C1、 C2 均为 30PF。 第 7 页 共 32 页 图 3.4 硬件电路图 第 8 页 共 32 页 4 软件设计 在本程序中设置了两个标志 count1 和 count2,分别初始化为 1 和 0。按键 1 使得 count1 在 1和 2 之间切换,按键 2 使得 count2 在 14 之间切换。程序检测 count1 的值, count1 等于 1 时播放第一首歌曲,等于 2 时播放第二首。另一方面根据 count2 的值来切换 LED 的花样。 count1 和 count2的值是互斥的,设置 count1 等于 1、 2 时, count2 同时设置为 0;设置 count2 等于 14 时, count1也同时设置为 0。 4.1 音调、节拍以及编码的确定方法 一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能像电子琴那样能奏出多种音色的声音。因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和节拍表示一个音符唱多长的时间。 4.1.1 音调的确定 不同音高的乐音是用 C、 D、 E、 F、 G、 A、 B 来表示,这 7 个字母就是音乐的音名, 它们一般依次唱成 DO、 RE、 MI、 FA、 SO、 LA、 SI,即唱成简谱的 1、 2、 3、 4、 5、 6、 7,相当于汉字“多来米发梭拉西”的读音,这是唱曲时乐音的发音,所以叫“音调”,即 Tone。把 C、 D、 E、 F、 G、A、 B 这一组音的距离分成 12 个等份,每一个等份叫一个“半音”。两个音之间的距离有两个“半音”,就叫“全音”。在钢琴等键盘乐器上, C D、 D E、 F G、 G A、 A B 两音之间隔着一个黑键,他们之间的距离就是全音; E F、 B C 两音之间没有黑键相隔,它们之间的距离就是半音。通常唱成 1、 2、 3、 4、 5、 6、 7 的音叫自然音,那些在它们的左上角加上号或者 b 号的叫变化音。叫升记号,表示把音在原来的基础上升高半音, b 叫降记音,表示在原来的基础上降低半音。例如高音 DO 的频率( 1046Hz)刚好是中音 DO 的频率( 523Hz)的一倍,中音 DO 的频率( 523Hz)刚好是低音 DO 频率( 266 Hz)的一倍;同样的,高音 RE 的频率( 1175Hz)刚好是中音 RE 的频率( 587Hz)的一倍,中音 RE 的频率( 587Hz)刚好是低音 RE 频率( 294 Hz)的一倍。 1)要产生音频脉冲,只要算出某一音频的周期( 1/频率),然后将此周期 除以 2,即为半周期的时间。利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的 I/O 反相,然后重复计时此半周期时间再对 I/O 反相,就可在 I/O 脚上得到此频率的脉冲。 2)利用 AT89C51 的内部定时器使其工作在计数器模式 MODE1 下,改变计数值 TH0 及 TL0 以产生不同频率的方法。 此外结束符和休止符可以分别用代码 00H 和 FFH 来表示,若查表结果为 00H,则表示曲子终了;若查表结果为 FFH,则产生相应的停顿效果。 3)例如频率为 523Hz,其周期 T=1/523=1912us,因此只要令计数器计时 956us/1us=956,在每次技术 956 次时将 I/O 反相,就可得到中音 DO( 523Hz)。 计数脉冲值与频率的关系公式如下: N=Fi 2 Fr N:计算值; Fi:内部计时一次为 1us,故其频率为 1MHz; 4) 其计数值的求法如下: 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/1047=65059 5) C 调各音符频率与计数值 T 的对照表如表 4.1 所示。 第 9 页 共 32 页 表 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 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 1012 121 Si 988 506 61 Si 1976 30 30 4.1.2 节拍的确定 若要构成音乐,光有音调是不够的,还需要节拍,让音乐具有旋律(固定的律动),而且可以调节各个音的快满度。“节拍 ” ,即 Beat,简单说就是打拍子,就像我们听音乐不自主 的随之拍手或跺脚。若 1 拍实 0.5s,则 1/4 拍为 0.125s。至于 1 拍多少 s,并没有严格规定,就像人的心跳一样,大部分人的心跳是每分钟 72 下,有些人快一点,有些人慢一点,只要听的悦耳就好。音持续时间的长短即时值,一般用拍数表示。休止符表示暂停发音。 一首音乐是由许多不同的音符组成的,而每个音符对应着不同频率,这样就可以利用不同的频率的组合,加以与拍数对应的延时,构成音乐。了解音乐的一些基础知识,我们可知产生不同频率的音频脉冲即能产生音乐。对于单片机来说,产生不同频率的脉冲是非常方便的,利用单片机的定时 /计 数器来产生这样的方波频率信号。因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。 表 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 拍 8 2 拍 8 1 拍 A 2 又 1/2 拍 A 1 又 1/4 拍 C 3 拍 C 1 又 1/2 拍 F 3 又 3/4 拍 每个音符使用 1 个字节,字节的高 4 位代表音符的高低,低 4 位代表音符的节拍,图 5.2 为节拍码的对照。如果 1 拍为 0.4 秒, 1/4 拍实 0.1 秒,只要设定延迟时间就可求得节拍的时间。假设 1/4拍为 1DELAY,则 1 拍应为 4DELAY,以此类推。所以只要求得 1/4 拍的 DELAY 时间,其余的节拍就是它的倍数,如图 5.3 为 1/4 和 1/8 节拍的时间设定。 第 10 页 共 32 页 表 4.3 1/4 和 1/8 节拍的时间设定 曲调值 DELAY 曲调值 DELAY 调 4/4 125 毫秒 调 4/4 62 毫秒 调 3/4 187 毫秒 调 3/4 94 毫秒 调 2/4 250 毫秒 调 2/4 125 毫秒 4.1.3 编码 do re mi fa so la si 分别编码为 17,重音 do 编为 8,重音 re 编为 9,停顿编为 0。播放长度以十六分音符为单位(在本程序中为 165ms),一拍即四分音符等于 4 个十六分音符,编为 4,其它的播放时间以此类推。音调作为编码的高 4 位,而播放时间作为低 4 位,如此音调和节拍就构成了一个编码。以 0xff 作为曲谱的结束标志。 举例 1:音调 do,发音长度为两拍,即二分音符,将其编码为 0x18。 举例 2:音调 re,发音长度为半拍,即八分音符,将其编码为 0x22 歌曲播放的设计。先将歌曲的简谱进行编码, 储存在一个数据类型为 unsigned char 的数组中。程序从数组中取出一个数,然后分离出高 4 位得到音调,接着找出相应的值赋给定时器 0,使之定时操作蜂鸣器,得出相应的音调;接着分离出该数的低 4 位,得到延时时间,接着调用软件延时。 表 4.4 简谱对应的简谱码、 T 值、节拍数 简谱 发音 简谱码 T 值 节拍码 节拍数 5 低音 SO 1 64260 1 1/4 拍 6 低音 LA 2 64400 2 2/4 拍 7 低音 TI 3 64524 3 3/4 拍 1 中音 DO 4 64580 4 1 拍 2 中音 RE 5 64684 5 1 又 1/4 拍 3 中音 MI 6 64777 6 1 又 1/2 拍 4 中音 FA 7 64820 8 2 拍 5 中音 SO 8 64898 A 2 又 1/2 拍 6 中音 LA 9 64968 C 3 拍 7 中音 TI A 65030 F 3 又 3/4 拍 1 高音 DO B 65058 2 高音 RE C 65110 3 高音 MI D 65157 4 高音 FA E 65178 5 高音 SO F 65217 第 11 页 共 32 页 4.2 软件程序设计 4.2.1 程序流程图及相应代码块 主 程序流程图 开 始初 始 化标 志 位C o u n t = = 0标 志 位C o u n t = = 1标 志 位C o u n t = = 2标 志 位C o u n t = = 3播 放 音 乐Y e sN o花 样 灯 1花 样 灯 1花 样 灯 1Y e sY e sY e sN oN oN o 图 4.1 主程序流程图 主程序代码 : main() uchar x; count1=0;/流水灯无花样 count2=1;/唱第一首歌 P34=0;/选取矩阵键盘的一列 EA=1;/开总中断 EX0=1;/开外部中断 0 IT0=1;/外部中断 0 下降沿触发方式 EX1=1;/开外部中断 1 IT1=1;/外部中断 1 下降沿触发方式 TMOD=0x01;/定时器 0 工作在方式 1 TH0=0; TL0=0; ET0=1; 第 12 页 共 32 页 while(1) if(count1!=0) /音乐停止,花样灯开始按照花样闪烁 switch(count1) case 1: for(x=0;x14;x+) duan=1; P1=huayang1x; beep(); delay1(300); duan=0; if(count1!=1) break; break; case 2: for(x=0;x14;x+) duan=1; P1=huayang2x; beep(); delay1(300); duan=0; if(count1!=2) break; break; case 3: for(x=0;x0;x-) for(y=19000;y0;y-); void delay1(uint z) /延时 1MS uint x,y; for(x=z;x0;x-) for(y=112;y0;y-); 4.2.2 程序源代码(见附录 A) 第 16 页 共 32 页 5 调试 5.1 检查硬件连接 在 PROTUES 检查各硬件管脚是否连接正确,线路逻辑是否正确,例如:晶振电路的连接,复位电路是否设计正确。 5.2 检查软件系统 1根据系统的原理 结构检查各流程图是否正确,再根据流程图来检查程序是否也正确。 2将所有程序组织起来,在软件环境下运行,检查程序是否正确。通过对硬件和软件系统的认真检查,反复测试,如果没有出现问题即可把源程序编译成 HEX 文件装载到单片机中,对硬件进行仿真。 5.3 测试结果 5.3.1总体运行图 图 5.1 系统总体运行图 第 17 页 共 32 页 5.3.2花样灯 3 种花样图 由于截图只能看到静态图,不能看到整体图样,下面画图说明: 图 5.2 花样灯 ( 1)第一种花样灯显示方式为:从 D1 移向 D2,然后 D1 熄灭,再从 D2 移向 D3,然后 D2 熄灭,以此类推,往复循环。 图 5.2 第一种花样 ( 2)第二种花样灯显示方式为:从两边向中间移动,首先从 D1 移向 D8,再从 D8 移向 D2, 以此类推,往复循环。 具体如图 5.3。 图 5.3 第 2 种花样 ( 3)第三种花样灯显示方式为:从 D1 移向 D2,然后 D1 熄灭,再从 D2 移向 D3,然后 D2 熄灭,以此往复循环。与第一种方式的不同之处为:当 D1 移向 D2 时, D1 不熄灭,再从 D2 移向 D3时, D2 也不熄灭,以此类推。 图 5.4 第 3 中花样 第 18 页 共 32 页 6 总结 单片机的设计至今为止已经进入了令人鼓舞的阶段,在进行了长达 两个多月的时间的摸索与实验,使我不仅仅是对于单片机入门软件与硬件的常用设计与功能,还使我对于一项设计研究的制作过程所需要的详细步骤和具体的实现方法的力度的掌握。 当然在这次宝贵的毕业设计活动中,经验才是对于我们最大的收获,而且还增强了自身对未知问题以及对知识的深化认识的能力,用受益匪浅这个词语来概括这次难忘的活动我觉得再合适不过了。但是,光是完成了作品还是不可以自我满足的,在从一开始的时候就怀着将作品制作得更加人性化,更加令人满意,更加地使功能完美又方便地被应用领域这个最终目的下,随着对单片机这门学 科的认识加深,到达了拓展的程度,我想这个目的将在不远的时期内被实现。 总之,这次设计从软件编写、调试到软硬件联机调试,我倾注了大量的时间和心血。真是曾经为程序的编写而冥思查找过,曾经为无法找出错误而郁闷苦恼过,也曾经为某一功能不能实现而犹豫彷徨过,但最终我成功了。 我不仅品味到了结果的喜悦,更明白了过程的弥足珍贵。 第 19 页 共 32 页 致谢 感谢我的导师 冯永政老师 ,他们严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;他们循循善诱的教导和不拘一格的思路给予我无尽的启迪。 感谢我的爸爸妈妈,焉得谖草,言树之背 ,养育之恩,无以回报,你们永远健康快乐是我最大的心愿 。 感谢我的室友们 , 是你们和我共同维系着彼此之间兄弟般的感情,维系着寝室那份家的融洽。四年了,仿佛就在昨天。四年里,我们没有红过脸,没有吵过嘴,没有发生上大学前所担心的任何不开心的事情。只是今后大家就难得再聚在一起吃每年元旦那顿饭了吧,没关系,各奔前程,大家珍重。我们在一起的日子,我会记一辈子的。 在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意! 第 20 页 共 32 页 参考文献 1 李建忠 .单片机原理及应用 M,西安电子科技大学出版社, 2008.2. 2 黄智伟 .全国大学生电子设计竞赛系统设计 M,北京:北京航空航天大学出版社, 2006.6. 3 黄智伟 .凌阳单片机课程设计指导 M,北京:北京航空航天大学出版社, 2006.11. 4 李广弟,朱月秀,王秀山 .单片机基础 M, 北京 : 北京航空航天大学出版社 , 2001.7. 5 赵曙光,郭万有 , 杨颂华 .可编程逻辑器件原理开发与应用 M,西安 : 西安电子科技大学 , 2000. 6 候伯亨 .VHDL 硬件描述语言 与数字逻辑电路设计 M, 西安 : 西安电子科技大学出版社, 1999. 7 康华光 . 模拟电子技术基础 (第四版 )M, 武汉:华中理工 大学出版社 , 1999. 8 谭浩强 .C 语言程序设计(第二版) M, 北京 :清华大学出版社, 1991. 9 陈小忠,黄宁 . 单片机接口技术实用子程序 M, 北京 :北京人民邮电出版社, 2005. 10 欧伟明,周春临,瞿遂春 .电子信息系统设计 M,西安电子科技大学出版社, 2005.9. 11 贾立新,王涌 .电子系统设计与实践 M,北京:清华大学出版社, 2007. 12 罗亚非 .凌阳 16 位单片机应用基础 M,北京:北京航空航天大学出版社, 2003. 13 雷思孝 .凌阳单片机原理及实用技术 M,西安电子科技大学, 2004. 第 21 页 共 32 页 科技外文文献 Getting Started with Vision2 The Keil Software 8051 development tools listed below are programs you use to compile your C code, assemble your assembly source files, link and locate object modules and libraries, create HEX files, and debug your target program. Vision2 for Windows is an Integrated Development Environment that combines project management, source code editing, and program debugging in one single, powerful environment. The C51 ANSI Optimizing C Cross Compiler creates relocatable object modules from your C source code. The A51 Macro Assembler creates relocatable object modules from your 8051 assembly source code. The BL51 Linker/Locator combines relocatable object modules created by the C51 Compiler and the A51 Assembler into absolute object modules. The LIB51 Library Manager combines object modules into libraries that may be used by the linker. The OH51 Object-HEX Converter creates Intel HEX files from absolute object modules. The RTX-51 Real-time Operating System simplifies the design of complex, time-critical software projects. Software Development Cycle When you use the Keil Software tools, the project development cycle is roughly the same as it is for any other software development project. 1. Create a project, select the target chip from the device database, and configure the tool settings. 2. Create source files in C or assembly. 3. Build your application with the project manager. 4. Correct errors in source files. 5. Test the linked application. Vision2 IDE The Vision2 IDE combines project management, a rich-featured editor with interactive error correction, option setup, make facility, and on-line help. Use Vision2 to create your source files and organize them into a project that defines your target application. Vision2 automatically compiles, assembles, and links your embedded application and provides a single focal point for your development efforts. LIB51 Library Manager The LIB51 library manager allows you to create object library from the object files created by the compiler and assembler. Libraries are specially formatted, ordered program collections of object modules that may be used by the linker at a later time. When the linker processes a library, only those object modules in the library that are necessary to create the program are used. BL51 Linker/Locator The BL51 linker creates an absolute object module using the object modules extracted from libraries and those created by the compiler and assembler. An absolute object file or module contains no relocatable code or data. All code and data reside at fixed memory locations. The absolute object file may be used: To program an EPROM or other memory devices, With the Vision2 Debugger for simulation and target debugging, With an in-circuit emulator for the program testing. Vision2 Debugger The Vision2 symbolic, source-level debugger is ideally suited for fast, reliable program debugging. The debugger includes a high-speed simulator that let you simulate an entire 8051 system including on-chip peripherals and external hardware. The attributes of the chip you use are automatically configured when you select the device from the Device Database. The Vision2 Debugger provides several ways for you to test your programs on real target hardware: Install the MON51 Target Monitor on your target system and download your program using the Monitor-51 interface 第 22 页 共 32 页 built-in to the Vision2 Debugger. Use the Advanced GDI interface to attach use the Vision2 Debugger front end with your target system. Monitor-51 The Vision2 Debugger supports target debugging using Monitor-51. The monitor program resides in the memory of your target hardware and communicates with the Vision2 Debugger using the serial port of the 8051 and a COM port of your PC. With Monitor-51, Vision2 lets you perform source-level, symbolic debugging on your target hardware. RTX51 Real-Time Operating System The RTX51 real-time operating system is a multitasking kernel for the 8051 microcontroller family. The RTX51 real-time kernel simplifies the system design, programming, and debugging of complex applications where fast reaction to time critical events is essential. The kernel is fully integrated into the C51 Compiler and is easy to use. Task description tables and operating system consistency are automatically controlled by the BL51 linker/locator. C51 Optimizing C Cross Compiler The Keil C51 Cross Compiler is an ANSI C Compiler that was written specifically to generate fast, compact code for the 8051 microcontroller family. The C51 Compiler generates object code that matches the efficiency and speed of assembly programming. Using a high-level language like C has many advantages over assembly language programming: Knowledge of the processor instruction set is not required. Rudimentary knowledge of the memory structure of the 8051 CPU is desirable (but not necessary). Details like register allocation and addressing of the various memory types and data types is managed by the compiler. Programs get a formal structure (which is imposed by the C programming language) and can be divided into separate functions. This contributes to source code reusability as well as better overall application structure. The ability to combine variable selection with specific operations improves program readability. Keywords and operational functions that more nearly resemble the human thought process may be used. Programming and program test time is drastically reduced. The C run-time library contains many standard routines such as: formatted output, numeric conversions, and floating-point arithmetic. Existing program parts can be more easily included into new programs because of modular program construction techniques. The language C is a very portable language (based on the ANSI standard) that enjoys wide popular support and is easily obtained for most systems. Existing program investments can be quickly adapted to other processors as needed. Code Optimizations The C51 Compiler is an aggressive optimizing compiler that takes numerous steps to ensure that the code generated and output to the object file is the most efficient (smallest and/or fastest) code possible. The compiler analyzes the generated code to produce the most efficient instruction sequences. This ensures that your C program runs as quickly and effectively as possible in the least amount of code space. The C51 Compiler provides nine different levels of optimizing. Each increasing level includes the optimizations of levels below it. The following is a list of all optimizations currently performed by the C51 Compiler. General Optimizations Constant Folding: Constant values occurring in an expression or address calculation are combined as a single constant. Jump Optimizing: Jumps are inverted or extended to the final target address when the program efficiency is thereby increased. Dead Code Elimination: Code that cannot be reached (dead code) is removed from the program. 第 23 页 共 32 页 Register Variables: Automatic variables and function arguments are located in registers whenever possible. No data memory space is reserved for these variables. Parameter Passing Via Registers: A maximum of three function arguments may be passed in registers. Global Common Subexpression Elimination: Identical subexpressions or address calculations that occur multiple times in a function are recognized and calculated only once whenever possible. Common Tail Merging: Common instruction blocks are merged together using jump instructions. Re-use Common Entry Code: Common instruction sequences are moved in front of a function to reduce code size. Common Block Subroutines: Multiple instruction sequences are packed into subroutines. Instructions are rearranged to maximize the block size. 第 24 页 共 32 页 中文译文 Keil C 简介 Keil Software 的 8051 开发 工具提供以下程序,你可以用它们来编译你的 C 源码,汇编你的汇编源程序,连接和重定位你的目标文件和库文件,创建 HEX 文件,调试你的目标程序。 Windows 应用程序 uVision2 是一个集成开发环境,它把项目管理,源代码编辑,程序调试等集成到一个功能强大的环境中。 C51 美国标准优化 C 交叉编译器从你的 C 源代码产生可重定位的目标文件。 A51 宏汇编器从你的 8051 汇编源代码产生可重定位的目标文件。 BL51 连接 /重定位器组合你的由 C51 和 A51 产生的可重定位的目标文件,生成绝对目标文件。 LIB51 库管理器组合你 的目标文件,生成可以被连接器使用的库文件。 OH51 目标文件到 HEX 格式的转换器从绝对目标文件创建 Intel HEX 格式的文件。 RTX-51 实时操作系统简化了复杂和对时间要求敏感的软件项目。 软件开发流程 当你使用 Keil Software 工具时,你的项目开发流程和其它软件开发项目的流程极其相似。 1. 创建一个项目,从器件库中选择目标器件,配置工具设置。

温馨提示

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

评论

0/150

提交评论