1、物理与电子信息学院课程设计基于 AT89C51 单片机的花样彩灯仿真分析姓名: 班级: 电子科学与技术 学号: 指导老师: 时间: 2011 年 1 日 6 日 目 录内容摘要 1关键词 1Abstract 11 绪论 .12 系统设计 22.1 设计任务与要求 .22.2 方案的选择与论证 .23 系统硬件设计 23.1 控制器模块 .33.2 按键模块 .53.4 LED 显示模块 .53.5 硬件元件清单 .64 软件设计与仿真 .64.1 主程序设计 .64.3 仿真结果 .84.4 系统调试 .94.5 误差分析 .9结束语 .101内容摘要: 随着电子技术的迅速发展,单片机得到了越
2、来越多的应用。本设计用单片机 89S51 结合 LED(发光二极管)制作了一个广告移动彩灯,它由一块 89S51 组成,通过逐次扫描其中一块的 P2.0-P2.7 口,从而依次实现彩灯轮流点亮、逐点点亮、间隔点亮。关键词:LED 彩灯;AT-89C5 1 单片机;彩灯控制器Abstract:Along with the electronic technology rapid development, the monolithicintegrated circuit obtained more and more many applications. Here Iused monolithic i
3、ntegrated circuit 89C51 to unify LED (light emitterdiode) to manufacture a belt music broadcast function advertisementmigration colored lantern with the loudspeaker, it was composed by two89C51, through gradually scanned together P3.0-P3.2 mouth, judgedwhether had the pressed key to press down, unif
4、ied the port scanningand the pressed key scanning, thus realized the colored lantern tolighten, to lighten, the gap point by point in turn in turn lightens.Keywords: LED lantern; AT-89C51 single-chip microcomputer; Lantern controller1 绪论近年来,彩灯对于美化、亮化城市有着不可轻视的重要工作。因此作为城市装饰的彩灯需求量越来越大,对与彩灯的技术和花样也越来越高。但
5、传统的彩灯控制电路一般是由数字电路组成,这种彩灯控制器电路结构复杂、成本较高、功率损耗大,此外从功能效果上看,彩灯模式少而且样式单调,缺乏用户可操作性,影响亮灯效果。因此有必要对现有的彩灯控制器进行改进。而单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。LED 彩灯具有成本低、发光纯度高、发光热量小、耗电量低、超长寿命的特点。所以利用单片机作LED 彩灯控制,不仅是使控制花样、路数大大增加 ,成本也很低,而且对环境能源没有污染,有着很大的发展前景。本方案是一种基于 AT-89C51 单片机的彩灯控制方案,实现对 LED 彩灯的控制。主要以 AT-8
6、9C51 单片机作为主控核心与发光二极管、晶振、复位、电源等组成电路,利用软件编辑实现彩灯流水灯的效果。22 系统设计2.1 设计任务与要求2.1.1 设计任务(1)设计一个基于单片机的花样彩灯;(2)在设计过程中,选择 12 个单元电路使用仿真软件(例如 Proteus 等)进行仿真调试;(3)用计算机绘制所有的电路图。2.1.2 设计要求(1)设计一个花样彩灯。(2)彩灯至少有 7 种工作模式。(3)当按下按键后,模式可以复位。2.2 方案的选择与论证2.2.1 总体设计方案方案一:采用各类数字电路来组成键盘控制系统,进行信号处理,如选用 CPLD等可编程逻辑器件。本方案电路复杂,灵活性不
7、高,效率低,不利于系统的扩展,对信号处理比较困难。方案二:过单片机控制二极管的闪烁,通过中断来改变模式同时串行输出数码管。P0,P1 口接 16 个二极管,P3 口接扩展板的数码显示接口。该方案简单,易于设计和控制。3 系统硬件设计按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT-89C51 单片机是美国 ATMEL 公司生产的低电压、高性能CMOS 8 位单片机,具有丰富的内部资源:4kB 闪存、128BRAM、32 根 I/O 口线、2个 16 位定时/计数器、5 个向量两级中断结构、2 个全双工的串行口,具有4.255.50V 的电压工作范围
8、和 024MHz 工作频率,使用 AT-89C51 单片机时无须外扩存储器。因此,本彩灯控制系统实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。其具体硬件组成如图 1 所示。3图 1 彩灯硬件原理图从图 1 中可以看出,如果要让接在 P1.0 口的 LED1 亮起来,那么只要把 P1.0 口的电平变为低电平就可以了;相反,如果要让接在 P1.0 口的 LED1 熄灭,就要把 P1.0口的电平变为高电平;同理,接在 P1.1P1.7 口的其他 7 个 LED 的点亮和熄灭的方法同 LED1。因此,要实现彩灯功能,我们只要
9、将发光二极管 LED1LED8 依次点亮、熄灭,8 只 LED 灯便会一亮一暗的做彩灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“彩灯”效果了。3.1 控制器模块本系统控制器芯片采用 AT89C51 单片机,其管脚图如图 3 所示。D8-D6:数据输入线。RESET:复位端口。T0,T1:计数器端口外部计数脉冲输入线。XTAL1,XTAL2:时钟电路。VCC:供电电压。GND:接地。4图 3 89C51 功能说明图AT89C51 是一种带 4K 字节闪存可编程可擦除只读存储器(FPEROMFla
10、sh Programmable and Erasable Read Only Memory)的低电压、高性能 CMOS 8 位微处理器,俗称单片机。AT89C2051 是一种带 2K 字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除 1000 次。该器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8位 CPU 和闪烁存储器组合在单个芯片中,ATMEL 的 AT89C51 是一种高效微控制器,AT89C2051 是它的一种精简版本。AT89C 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方
11、案。AT89C51 具有以下特性:与 MCS-51 兼容,4K 字节可编程闪烁存储器,寿命:1000 写/擦循环,数据保留时间:10 年,全静态工作:0Hz-24MHz,三级程序存储器锁定,1288位内部 RAM,32 可编程 I/O 线,两个 16 位定时器/计数器,5 个中断源,可编程串行通道,低功耗的闲置和掉电模式、片内振荡器和时钟电路。53.2 按键模块采用如下所示电路来实现控制花样彩灯的复位,按下开关,单片机复位,花样彩灯按模式一闪烁。图电源电路有三端稳压器 7805 和电容组成,外部电池供电,BAT 接 7V 左右的电压,稳压输出 5V 的电压。电源电路如图 4 所示。图 4.电源
12、电路3.4 LED 显示模块LED 显示电路由单片机 89C51 的 P0 口,P1 口和 P2 口与发光二极管相连,低电平二极管发光。LED 显示电路如图 2 所示。图 2.LED 显示电路63.5 硬件元件清单系统元器件清单见表 2。表 2 系统元器件清单器件 数量 器件 数量AT89C51 1 晶振器 1LED 8 排阻(4.7k) 8电容(30pF) 2 电阻(100k) 1电容(10uF) 1 开关 14 软件设计与仿真本系统程序包括主程序、键盘扫描子程序、发送键码子程序、发送数据子程序、接收命令子程序等。主程序用于系统初始化,子程序调度等。键盘扫描子程序用于扫描键盘状态,将被按键的
13、位置号存入缓冲器中。发送键码子程序用于将缓冲区键的接通码或断开码发送给单片机接口。发送数据子程序用于将数据发给单片机接口。接收命令子程序用于接收单片机接口发来的键盘命令。4.1 主程序设计程序流程图:中断程序:主程序:74.2 仿真软件简介Proteus 是英国 Labcenter 公司开发的电路分析与实物仿真软件。它运行于 Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:(1)实现了单片机仿真和 SPICE 电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232 动态仿真、I2C 调试器、SPI 调8试器、
14、键盘和 LCD 系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。(2)支持主流单片机系统的仿真。目前支持的单片机类型有:ARM7(LPC21xx)、 8051/52 系列、AVR 系列、PIC10/12/16/18 系列、HC11 系列以及多种外围芯片。(3)提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如 Keil C51 uVision2、MPLAB 等软件。(4)具有强大的原理图绘制功能。总之,该软件是一款集单片机和 SPI
15、CE 分析于一身的仿真软件,功能极其强大。Proteus7.5 是目前最好的模拟单片机外围器件的工具,可以仿真 51 系列、AVR、PIC 等常用的 MCU 及其外围电路(如 LCD、RAM、ROM、键盘、马达、LED、AD/DA、部分 SPI 器件、部分 IIC 器件等)。软件编译采用 KEIL C51 软件,Keil C51 是美国 Keil Software 公司出品的 51 系列兼容单片机 C 语言软件开发系统,与汇编相比,C 语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用 C 来开发,体会更加深刻。Keil C51 软件提供丰富的库函数和功能
16、强大的集成开发调试工具,全 Windows 界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到 Keil C51 生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。4.3 仿真结果 先按复位键,系统初始化,然后 8 个 LED 开始按照要求闪烁,分别按下列模块点亮:模块 1:循环单向闪烁,只有一个灯亮模块 2:循环单向闪烁,只有两个灯亮模块 3:循环往复闪烁,只有一个灯亮模块 4:全亮全灭模块 5:顺次点亮或者熄灭, 多个灯亮9模块 6:顺次点亮或者熄灭,多个灯亮,一次点亮两个模块 7:双端对称往返闪烁4.4 系统调试在调
17、试过程中主要是对程序的修改,特别是延时子程序。开始延时较短时,当按下开关时,LED 开始闪烁。如果延时较长则 LED 闪烁更慢。通过修改程序,将延时调到适中,系统正常工作。4.5 误差分析设定预设值后,记录模式一的数据,每次送出的数据是不同,具体的数据如下表 1 所示 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 说明L8 L7 L6 L5 L4 L3 L2 L1 1 1 1 1 1 1 1 0 L1 亮1 1 1 1 1 1 0 1 L2 亮1 1 1 1 1 0 1 1 L3 亮1 1 1 1 0 1 1 1 L4 亮1 1 1 0 1 1 1 1 L5
18、亮1 1 0 1 1 1 1 1 L6 亮1 0 1 1 1 1 1 1 L7 亮0 1 1 1 1 1 1 1 L8 亮后面几种模式的实验结果基本和理论值一样,没什么误差。10结束语该设计是以 AT-89C51 单片机为主控芯片,与发光二极管、晶振电路、复位电路和电源电路组成,通过程序控制彩灯流水花样。本文所给程序实现的功能比较简单,旨在抛砖引玉,可以在此基础上扩展成更复杂的彩灯控制,比如键盘控制流水花样、控制流水灯显示数字或图案等等。通过花样彩灯的制作,给我最大的体会是对一个程序整体的把握和控制,只有将子程序有效的结合起来,才能完成设计的目的。另外,在程序的调试过程中,我也遇到了很多意想不
19、到的困难,在老师的帮助和自己的不懈努力下,我对伟福这款仿真软件有了更深的认识,将困难一一克服,使程序编译成功,仿真实现。附录:程序清单#include#define uint unsigned intvoid delay(uint);main() uint fre=0x04;uint fre1,fre2;uint comp1=0xfe,comp2=0x80;while(1)/*-模块一:循环单向闪烁,只有一个灯亮执行 3 次,转入下一种闪烁-*/P1=0xfe;while(1!=fre-)11fre1=0x08;while(1!=fre1-)delay(30000);P1=1;P1|=0x80
20、; 13/*- 模块 4:全亮全灭执行 3 次,转入下一模块 -*/while(3!=fre1+)delay(30000);P1=0x00;delay(30000);P1=0xff; /*- 模块 5:顺次点亮或者熄灭,多个灯亮,执行 3 次,转入下一模块 -*/while(1!=fre1-)P1=0xfe;while(P1!=0x00)delay(30000);P1=1;P1|=0x80; /*- 模块 6:顺次点亮或者熄灭,多个灯亮,一次点亮两个,执行 3 次,转入下一模块 -*/while(3!=fre1+) P1=0xfc;while(P1!=0x00)delay(30000);P1=
21、2;P1|=0xc0;delay(30000); /*- 模块 7:双端对称往返闪烁执行 3 次,进行下一轮循环 -*/P1=0x7e;delay(30000);while(1!=fre1-)fre2=0x00;while(6!=fre2+)P1=0xff;comp1=1;P1P1=comp2;delay(3000000);if(P1=0xe7)comp1=1;if(comp2=0x01)comp1=0xfe;comp2=0x80; void delay(uint cnt)while(cnt-);17参考文献1王幸之 钟爱琴. AT89 系列单片机原理与接口技术M.北京:北京航空航天大学出版社
22、,2004.2谭浩强.C 程序设计(第二版)M.北京:清华大学出版社,1999.3赵亮.单片机 C 语音编程与实例M.北京:人民邮出版社,2004.4房小翠、王金凤.单片机实用系统设计技术M.北京:国防工业出版社,1999.5康华光.电子技术基础数字部分(第四版)M.北京:高等教育出版社,1998.6张毅刚.单片机原理及应用M.北京:高等教育出版社,2003.7李广第,朱月秀,王秀山.单片机基础M.北京:北京航空航天大学出版社,2001.8杨振江.A/D、D/A 转换器接口技术与实用电路M.西安:西安电子科技大学出版社.9梅笙,李玮.基于 AT89C52 控制的数控直流电流源的设计J.电子测试,2007(2):19-23.10张鑫.单片机原理及应用M.电子工业出版社,2005.11Matthew R, Robin T. Microprocessor controlled power supplyJ. Electronic World Wireless World, 1994,95 (1639) : 524527.12Kuo B C. Automatic control systemM. 3th ed. New Jersy Prentice Hall, 1975.