1、 第 1 页 共 51 页 广东机电职业技术学院 电子产品设计 论文题目 : 多功能迷你跑马音乐盒 专 业 : 计算机控制技术 班 级 : 学生姓名 : 指导教师 : 二零一零年五月 第 2 页 共 51 页 目录 摘要 . 3 1 设计的作用、目的 3 2 设计的具体实现 .3 2.1 系统概述 .3 2.2 单元电路设 计与分析 4 2.3 电路的安装与调 试 7 3 心得体会及建议 8 3.1 心得体会 8 3.2 建议 8 4 附录 9 5 参考文献 18 第 3 页 共 51 页 摘要 跑马灯,顾名思义,就是 “ 会像马儿一样跑动 ” 的小灯,故取名 “ 跑马灯 ” 。跑马灯在单片机
2、系统中一般是用来指示和显示单片机的运行状态,一般情况下,单片机的跑马灯由 多 个 LED 发光二极管组成 。 在单片机运行时,可以在不同状态下让跑马灯显示不同的组合,作为单片机系统正常的指示。 当单片机系统出现故障时,可以利用跑马灯显示当前的故障码,对故障做出诊断。此外,跑马灯在单片机的调试过程中也非常有用,可以在不同时候将需要的寄存器或关键变量的值显示在跑马灯上,提供需要的调试信息。 1 设计的作用、目的 ( 1) 使用 32 个 彩色 LED 灯 ,用这 32个发光二极管以不同的模式循环点亮 ; ( 2) 、三个 功能键 , K1 模式键,通过按键调整显示结果, 总共 有 十 种模式; K
3、2 加速键; K3减速键; ( 3)当撤换 最 后一个功能模式时,蜂鸣器将会播放音乐,此时 LED 将当作音频灯使用; ( 4)十 种模式通过一个共 阳 数码管显示出来, 十个模式分别显示为 0 9。 通过发光二极管的动态闪亮,显示非常炫目的效果, 应用于 各种建筑物,大楼,酒吧, KTV,夜总会等娱乐场所 , 拖尾灯,以及各种休闲娱乐场所用的动态灯光显示,通过此次设计,可以加深对 51 单片机的应用、 C51 编程和 protues 软件操作的能力。了解 51 单片机的外围引脚,以及各个端口的功能,还可以通过对走马灯的程序编写让我们对程序的执行方式和特点有一个初步的认识,同时掌握 C51 软
4、件与 protues 联机调试程序,对进一步学习单片机打下坚实基础。 2 设计的具体实现 2.1 系统概述 本设计的要求是设 计一个有多种功能的走马灯,有多种不同的显示方式,加速功能和减速功能,这里的加速减速还有显示方式都是由单片机内部的程序控制,在这里我将 32 个光二极管分别接在 P0 和 P1,通过程序控制这两个端口的电平高低,将 32 个光二极管的正极接电源,负极接 P0 和 P1 口,即发 P0 和 P1 口的相应端口为高电平时,发光二极管的两端都为高电平,所以发光二极管不亮,当发光二极管的相应端口为低电平时就能被点亮。再通过程序循环的让各个端口以不同的方式点亮来达到走马的效果,并且
5、当中要有一定的延时,延时时间小于人眼视觉暂留时间,否则人眼看上去每个 灯都是亮的也就没有跑马效果。 第 4 页 共 51 页 系统框图如图一: 图一 系统框图 2.2 单元电路设计与分析 1. 主控芯片 AT89S52 AT89S52 是一个低功耗,高性能 CMOS 8 位单片机,片内含 4k Bytes ISP(In-system programmable)的可反复擦写 1000 次的 Flash 只读程序存储器,器件采用 ATMEL 公司的高密度、非易失性存储技术制造,兼容标准 MCS-51 指令系统及 80C51 引脚结构,芯片内集成了通用 8 位中央处理器和 ISP Flash 存储单
6、元,功能强大的微型计算机的 AT89S51 可为许多嵌入式控制应用系统提供高性价比的解决方案。 2. AT89S52 性能简介 AT89S52 具有如下特点: 40 个引脚, 4k Bytes Flash 片内程序存储器, 128 bytes 的随机存取数据存储器( RAM), 32 个外部双向输入 /输出( I/O)口, 5个中断优先级 2 层中断嵌套中断, 2 个 16 位可编程定时计数器 ,2个全双工串行通信口,看门狗( WDT)电路,片内时钟振荡器。 此外, AT89S52设计和配置了振荡频率可为 0Hz 并可通过软件设置省电模式。空闲模 式下, CPU 暂停工作,而 RAM 定时计数
7、器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存 RAM 的数据,停止芯片其它功能直至外中断激活或硬件复位。 AT89S52 PDIP Pin Configurations 如图二: MCU(AT89S51) LED显示阵列 12M 晶振 复位 电路 7段共阴数码管 键盘 第 5 页 共 51 页 图二 AT89S52 Pin Configurations 3.显示部分:显示部分用 32 个发光二极管分别接在 P0 和 P1,通过程序控制 P0 和 P2的 16 个端口按照一定的方式依次为低电平以点亮相应端口的 LED。 LED 阵列如图三: 图三 LED 显示阵列 4. 模式显示部
8、分:模式即跑马的 方式,共十种。相应方式由数码管显示出来,每当模式按钮按下时,相应的模式加一 ,数码管显示相应模式。 共阴数码管结构如图四: a 各段代码 b 实物外观 图四 共阳数码管结构 5.单片机部分:该部分主要涉及功能的实现方式,即程序编写。程序要实现的功能包括读键盘 , 通过对读入键盘的值控制 LED 点亮方式和数码管显示。键盘有三个按键 K1、K2、 K3, K1 控制 LED 点亮模式, K2、 K3 键控制跑马灯速度, K2 加速, K3 减速。不论 K1 被按下多少次, LED 九种点亮模式是循环的, K2、 K3 键控制速 度分别有上限和下限,多按无效。 第 6 页 共 5
9、1 页 6音乐播放部分:撤换 最 后一个功能模式时,蜂鸣器将会播放音乐,此时 LED 将当作音频灯使用。当中共有三首音乐,分别是我的骄傲 同一首歌和两只蝴蝶 此时 K2 加速充当下一曲的作用, K3 减速充当上一曲的作用,歌曲是循环播放的,此时 LED 彩色灯将从当随音频变化的指示灯。 程序设计思路 :主程序中默认执行左右流水灯 ,在中断服务程序中,首先读取按键状态,然后延时 10ms,再次读取按键状态。把两次获得的按键状态比较,如果不同,就表示是抖动,退出中断;否则,就去判断是哪个按键按下。如 果是 K1,就执行下一个跑马;如果是 K2,就执行跑马加速;如果是 K3,就执行跑马减速。采用置标
10、志位的方法。即在主程序中设定两个标志位,一个跑马模式标志位,一个跑马速度标志位。不断的对这三个标志进行查询:如果是跑马模式标志为状态 0,就执行右向跑马;如果是状态 1,就执行左向跑马灯,依次类推。跑马速度标志默认值为 10,对应延时值为 200ms。而在中断服务程序中,只需要进行如下工作:去抖动,键盘识别,改变标志位。 程序流程图如图五: 第 7 页 共 51 页 图五 程序流程图 2.3 电路的安装与调试 用 keil 将程序编写好之后,检查程 序有无错误。有错误就改正,直到没有错误,最后生成 HEX 文件,再用 peoteus 画好硬件电路图,将单片机指向刚生成的 HEX 文件并进行仿真
11、调试,在调试过程当中通过调试的结果完善程序。一切之后,下面就进行最后阶段,即在面包板上搭电路,然后用烧写器将 HEX 文件下载到 AT89S52 单片机中。调试电路,带着笑容欣赏胜利的成果。 第 8 页 共 51 页 仿真图如图:3 心得体会及建议 3.1 心得体会 通过此次课程设计,不仅初步掌握了 51 单片机的一些基本功能应用,还学会了使用 keil和 protues 两个软件。知道 了怎么用 keil 新建工程文件、编写调试程序、生成 HEX 文件;怎么用 protues 软件画图,特别是总线的画法,怎么仿真等。 我会以此为起点,进一步学习和使用单片机,为将来工作打基础。 感谢我的 51
12、 单片机启蒙老师李建波老师的教诲。 3.2 建议 希望老师多我们讲一些单片机的研究方向,平时也多给我们出一些小设计课题,我觉得像这样自己做一个设计对理论学习是一个很好的总结,当我们有不懂的东西的时候也可以得到老师的指点,这样才能够更全面的认识和学好单片机。 第 9 页 共 51 页 4 附录 实物图如图六:C 程序如下 : #include #include “SoundPlay.h“ unsigned char RunMode; /*System Fuction* void Delay1ms(unsigned int count) unsigned int i,j; for(i=0;i8) void InitialCPU(void) RunMode = 0x00; Timer0Count = 0; SystemSpeedIndex = 9;