单片机控制流水灯

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机控制流水灯
前言
随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯不断变化闪烁。

LED灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰街道和城市建筑物已经成为一种时尚。

但目前市场上各式样的LED灯控制器大多数用全硬件电路实现,电路结构复杂、功能单一,这样一旦制作成品只能按照固定的模式闪亮,不能根据不同场合、不同时间段的需要来调节亮灯时间、模式、闪烁频率等动态参数。

这种彩灯控制器结构往往有芯片过多、电路复杂、功率损耗大等缺点。

此外从功能效果上看,亮灯模式少而且样式单调,缺乏用户可操作性,影响亮灯效果。

因此有必要对现有的彩灯控制器进行改进。

流水灯是一串按一定的规律像流水一样连续闪亮。

流水灯控制是可编程控制器的一个应用,其控制思想在工业控制技术领域也同样适用。

流水灯控制可用多种方法实现,但对现代可编程控制器而言,利用移位寄存器实现最为便利。

通常用左移寄存器实现灯的单方向移动;用双向移位寄存器实现灯的双向移动。

本案例利用价格低廉的AT89C52系列单片机控制基色LED灯泡从而实现丰富的变化。

目录
前言 (1)
1、课程设计的目的和要求 (3)
设计目的 (3)
设计要求 (4)
2、设计方案选择 (4)
3、硬件设计 (4)
设计思路 (4)
流水灯电路原理图 (5)
元件清单 (6)
硬件电路模块分析 (6)
主要元件说明 (10)
振荡器特性 (13)
芯片擦除 (13)
4、软件设计 (14)
主程序设计 (14)
程序流程图 (14)
5、使用keil、proteus软件调试仿真说明 (14)
仿真过程 (14)
仿真结果 (14)
6、结束语 (15)
7、参考文献 (16)
1、课程设计的目的和要求
设计目的
近年来随着科技的发展,单片机的应用正在不断走向深入,同时带动传统控制检测日新月异更新,在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象点的软件结合,加以完善。

流水灯,可以更简单、方便的使用。

通过本课程设计使学生进一步巩固单片机原理及应用的基本概念、基本理
论,分析问题的基本方法,增强系统地运用已学的理论知识解决实际问题的能力和查阅资料的能力。

培养一定的自学能力和独立分析问题、解决问题的能力,能通过独立思考、查阅工具书、参考文献,寻找解决方案。

设计要求
设计流水灯的基本要求:设计一个16个LED灯的流水灯,应用AT89C51实验开发板的定时器功能实现,电路开启后LED灯在时钟信号作用下按一定规律转换状态。

2、设计方案选择
根据设计的基本要求,要实现其基本要求有两种设计方案的选择,这两种设计方案都是基于AT89C51单片机的基础上设计的。

一种是使用两片74LS138译码器芯片扩展成为4线—16线具有16种输出状态,从而可以控制16个LED灯;另一种是直接使用单片机的两个I/O端口控制,这样也可以实现控制16个LED 灯。

比较这两种设计方案,我们小组选用了后者。

因为这个设计只是简单的要求实现16个LED灯循环点亮的流水功能,不用实现其他的功能,即不需要考虑占用I/O口多的问题;而前者的设计方案需要外添加两个74LS138芯片,这样就增加了硬件电路的复杂性。

3、硬件设计
设计思路
如果要让接在口的LED1亮起来,那么只要把口的电平变为低电平就可以了;相反,如果要接在口的LED1熄灭,就要把口的电平变为高电平;同理,接在~和~口的其他15个LED的点亮和熄灭的方法同LED1。

因此,要实现流水灯功能,
我们只要将发光二极管LED1~LED16依次点亮、熄灭,16只LED灯便会一亮一暗的做流水灯了。

在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。

流水灯电路原理图
图3-1硬件接线图
利用单片机的P0、P2口高低电平控制LED灯的发光闪烁,再利用编程实现流水灯的功能。

用软件来实现对LED的控制,实现的软硬件结合。

每个LED灯接一个限流电阻,来控制流入LED发光管的电流。

闪烁系统
复位电路AT89C51核心
部件
振荡系统
硬件系统方框图
元件清单
表3-1 元件清单
硬件电路模块分析
(1)核心部件
89C51单片机是整个流水灯循环系统的核心功能的部件,其中内部有ROM、有RAM、有并行I/O口等,在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。

(2)复位系统
电路中C1、R1、VCC等组成复位电路,它的作用是将单片机内部特殊功能寄存器和端口寄存器恢复到初始状态,从内部FLASH存储器的初始状态开始执行。

如图所示,当要对晶片重置时,只要按此开关就能完成LED和开关的重置。

复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。

单片机的RST管脚为主机提供了一个外部复位信号输入口。

复位信号是高电平有效,高电平有效的持续时间为2个机器周期以上。

单片机的复位方式可由手动复位方式完成。

RST引脚是复位信号输入端,复位信号为高电平有效,其有效时间应持续24个振荡周期以上才能完成复位操作,若使用6MHz晶振,则需持续4μS以上才能完成复位操作。

图中,在通电瞬间,由于RC的充电过程,在RST端出现一定宽度的正脉冲,只要该正脉冲保持10ms以上,就能使单片机自动复位
图3-2 复位电路
CPU在第二个机器周期内执行内部复位操作,以后每个机器周期重复一次,直至RST端电平变低。

在单片机复位期间,AlE和信号都不产生。

复位操作将对部分专用寄存器产生影响,复位后,这些内部寄存器状态如表2-6。

表1-2 部分专用寄存器复位状态
寄存器值寄存器值
PC 0000H ACC 00H
B 00H PSW 00H
SP 07H DPTR 0000H
P0~P3 0FFH IP XXX00000
IE 0XX00000 TMOD 00H
TCON 00H TL0,TL1 00H
TH0,TH1 00H SCON 00H
SBUF 不定PCON 0XXX0000
上电瞬间由于电容C上无储能,其端电压近似为零,RST获得高电平,随着电容器C的充电,RST引脚上的高电平将逐渐下降,当RST引脚上的电压小于某一数值后,单片机就脱离复位状态,进入正常工作模式。

只要高电平能保持复位所需要的时间(约两个机器周期),单片机就能实现复位。

(3)振荡系统
单片机本身如同一个复杂的同步时序电路,为了保证同步工作,电路应在唯一的时钟信号控制下,严格地按规定时序工作。

而时钟电路就用于产生单片机工作所需要的时钟信号。

为LED灯循环系统提供稳定频率波在由多片单片机组成的系统中,为了各单片机之间时钟信号的同步,引入唯一的外部脉冲信号作为各单片机的振荡脉冲。

这时外部的脉冲信号是经单片机89C51的XTAL2引脚注入的;在MCS-51单片机片内有一个高增益的反相放大器,反相放大器的输入端为XTAL1,输出端为XTAL2,在芯片的外部通过这两个引脚跨接晶体振荡器和微调电容C1、C2形成反馈电路,可构成稳定的自激振荡器,振荡频率范围通常是~12MHz。

晶体振荡频率高,则系统的时钟频率也高,单片机的运行速度也就快。

由该放大器构成的振荡电路和时钟电路一起构成了单片机的时钟方式。

如图所示
图3-3 振荡电路
晶体振荡器的振荡信号从XTAL2端送入内部时钟电路,它将该振荡信号二分频,产生一个两相时钟信号A和B供单片机使用。

时钟信号的周期称为状态时间S,它是振荡周期的2倍,A信号在每个状态的前半周期有效,在每个状态的后半周期B信号有效。

CPU就是以两相时钟A和B为基本节拍协调单片机各部分
有效工作的。

MCS-51单片机时钟电路示意图如图下图所示。

二分频
状态时钟
机器周期
ALE
MCS-51单片机时钟振荡电路示意图
振荡电路产生的振荡脉冲并不直接使用,而是经分频后再为系统所用。

振荡脉冲在片内通过一个时钟发生电路二分频后才作为系统的时钟信号。

片内时钟发生电路实质上是一个二分频的触发器,其输入来自振荡器,输出为二相时钟信号,即状态时钟信号,其频率为f osc /2;状态时钟三分频后为ALE 信号,其频率为f osc /6;状态时钟六分频后为机器周期,其频率为f osc /12。

(4)显示电路
如图3-4所示,P0口控制LED 灯D1~D8的显示,P2口控制LED 灯D10~D17的显示。

限流电阻为220欧姆,经过的电流大概为15mA 。

图3-4 LED显示电路
主要元件说明
此电路主要元件是AT89C51单片机,单片机内部主要包含下列几个部件:
一个8位CPU;
一个时钟电路;
4Kbyte程序存储器;
128byte数据存储器;
两个16位定时/计数器;
64Kbyte扩展总线控制电路;
四个8-bit并行I/O端口;
一个可编程串行接口;
五个中断源,其中包括两个优先级嵌套中断。

AT89C51硬件结构框图
主要特性
AT89C51是一种低功耗/低电压、高性能的八位CMOS单片机,片内有一个4KB的FLASH可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory),它采用了CMOS工艺和ATMEL公司的高密度非易失性存储器技术,而且其输出引脚和指令系统都与MSC—51兼容。

片内置通用8位中央处理器(CPU)和FLASH存储单元,片内的存储器允许在系统内改编程序或用常规的非易失性存储器编程。

因此,AT89C51是一种功能强、灵活性高且价格合理的单片机,可方便的应用于各种控制领域。

主要引脚功能
1.电源引脚Vcc和Vss
Vcc:电源端,接+5V。

Vss:接地端。

通常在Vcc和Vss引脚之间接μ高频滤波电容。

2.时钟电路引脚XTAL1和XTAL2
XTAL1:接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,若使用外部TTL时钟时,该引脚必须接地。

XTAL2:接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出,若使用外部TTL时钟时,该引脚为外部时钟的输入端。

3.地址锁存允许ALE
在系统扩展时,ALE用于控制地址锁存器锁存P0口输出的低8位地址,从而实现数据与低位地址的复用。

当单片机上电正常工作后,ALE端就周期性地以时钟频率的1/6的固定频率向外输出正脉冲信号,ALE的负载能力为8个LSTTL 器件。

4.外部程序存储器读选通信号
是读外部程序存储器的选通信号,低电平有效。

CPU从外部存储器取指令时,它在每个机器周期中两次有效。

5.程序存储器地址允许输入端/V
PP
当为高电平时,CPU执行片内程序存储器指令,但当PC中的值超过0FFFH 时,将自动转向执行片外程序存储器指令。

当为低电平时,CPU只执行片外程序存储器指令。

对于8031,由于其无片内ROM,故必须接低电平。

6.复位信号RST
该信号高电平有效,在输入端保持两个机器周期的高电平后,就可以完成复位操作。

此外,该引脚还有掉电保护功能,若在该端接+5V备用电源,在使用中若Vcc掉电,可保护片内RAM中信息不丢失。

7.输入/输出口引脚P
0、P
1
、P
2
和P
3
P0口(~):该端口为漏极开路的8位准双向口,负载能力位8高LSTTL负载,它为8位地址线和8位数据线的复用端口。

P1口(~):它是一个内部带上拉电阻的8位准双向I/O口,P1口的驱动能
力为4个LSTTL负载。

P2口(~):它为一个内部带上拉电阻的8位准双向I/O口,P2口的驱动能力也为4个LSTTL负载。

在访问外部程序存储器时,它作存储器的高8位地址线。

P3口(~):P
3口同样是内部带上拉电阻的8位准双向I/O口,P
3
口除了作
为一般的I/O口使用之外,其还具有特殊功能。

振荡器特性
XTAL1和XTAL2分别为反向放大器的输入和输出。

该反向放大器可以配置为片内振荡器。

石晶振荡和陶瓷振荡均可采用。

如采用外部时钟源驱动器件,XTAL2应不接。

有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度
芯片擦除
AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。

在闲置模式下,CPU停止工作。

但RAM,定时器,计数器,串口和中断系统仍在工作。

在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。

4、软件设计
主程序设计
#include<>
#define T 10 EX 文件。

本设计利用Keil μVision4,在新建Keil项目时选择AT89C51单片机作为CPU,将C语言源程序导入,在“Options For Target”对话窗口中,选中“Output”选项中的“Create HEX File”,编译链接后就可以生成.HEX文件。

在Proteus ISIS中,选中AT89C51并单击鼠标左键,对AT89C51进行设置,设置单片机时钟频率为12MHz,按照正确的文件路径加载.HEX文件。

对单片机设置完毕后就可以开始仿真了。

仿真结果
图 Proteus仿真环境
5、结束语
通过这次课程设计我学到了很多东西,我更加体会到理论知识与动手能力相结合的重要性,而且设计过程中使我懂得在设计程序之前,务必要对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源,懂得设计的关键是要有一个清晰的思路和一个完整的软件流程图。

在设计程序时,不能妄想一次就将整个程序设计好,“反复修改,不断改进”是程序设计的必经之路。

要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你思路,这样也为资料的保存和交流提供了方便。

整个设计的过程中,还是碰到了一些问题。

比如,对于P0口控制的LED灯点亮完后怎么样过渡到P2口控制的LED灯点亮,对于编程的顺序及各模块程序调用掌握得还不够好,主要是因为一些相关的应用软件没能熟练掌握。

通过这几天的反复思考,以及参考网上的程序,最终还是完成了设计。

设计中我最大的收获就是自己的动手能力和独立解决问题的能力得到了很大的提高,在动手的过程中,不仅能增强实践能力,而且在理论上可以有更深的认识
7、参考文献
胡汉才.单片机原理与接口技术[M].北京:清华大学出版社,.
楼然苗等.51系列单片机设计实例[M].北京:北京航空航天出版社,.
何立民. 单片机高级教程[M].北京:北京航空航天大学出版社,2001.
夏继强. 单片机实验与实践教程[M]. 北京:北京航空航天大学出版社, 2001.。

相关文档
最新文档