摘要
自计算机问世以来,单片机技术在社会各领域中得到了广泛的应用。在流水灯控制系统中,单片机更是取代了由齿轮调节延迟时间的旧式市发展速度,成为日后此系统中的核心部分。由于单片机具有一些突出的优点:体积小、重量轻、电源单一、功耗低;功能强、价格低;数据大都在单片机内部传送,运行速度快、抗干扰能力强、可靠性高,所以单片机被广泛的应用于测控系统、数据采集、智能仪器仪表、机电一体化产品、智能接口、计算机通信以及单片机的多级系统等领域。本文主要讲的是单片机,课题名称为多按键花样流水灯,它使我们学会了如何使用单片机控制我们日常生活中的多设备设施的应用。通过本课题的设计以后,使我了解到了单片机的许多方面的应用。
Abstract
Since the introduction of computer-chip technology in society, in every field in a wide range of applications.Running light control systems, the microcontroller is replaced by the gear regulating the delay time of old growth rate in future in the heart of this system.Due to the MCU has several benefits: small size, light weight, a single power supply; features, low power consumption and low; and the data transfer, one finds in SCM internal, run fast, uding, high reliability, so single-chip is widely used in measurement and control system, data acquisition, instrumental, Mechatronics product, smart interface, computer communications, as well as single-chip multilevel system, etc.This article is primarily deals with a subject name is Multi-key pattern of light water, flowing water and light control, which enables we learned how to use the SCM control our lives in the application of the facility.
关键词: 单片机、可编程控制器、交通型号灯、可靠性高。
目 录
绪论 .................................................................................................................................................. 1
1. 相关元件及电路设计 .................................................................................................................. 2
1.1 AT89C51芯片功能特性及应用 ...................................................................................... 2
1.2 MCS-51单片机 .................................................................................................................. 3
1.2.1 内部结构 ............................................................................................................... 3
1.2.2 引脚定义 ............................................................................................................. 3
1.2.3 外部总线构成 ....................................................................................................... 5
1.3 单片机时钟电路及时钟时序单位 ................................................................................. 6
1.4单片机的复位 .................................................................................................................... 8
1.4.1 复位状态 ............................................................................................................. 8
1.4.2 复位电路 ............................................................................................................. 9
2. 流水灯电路及程序设计 .......................................................................................................... 10
2.1 电路原理图设计 ............................................................................................................. 10
3.2电路程序设计 .................................................................................................................. 12
总结 ................................................................................................................................................ 17
参考文献......................................................................................................................................... 18 。。
绪论
当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。目前,一个学习与应用单片机的高潮正在工厂、学
校及企事业单位大规模地兴起。本设计用AT89C51单片机自制了一款简易的花样流水灯,介绍了其硬件电路及软件编程方法,在实践中体验单片机的自动控制功能。该设计具有实际意义,可以在广告业、媒体宣传、装饰业等领域得到广泛应用。
学习单片机的最有效方法就是理论与实践并重,现在我把单片机流水灯设计作为一个课程设计,需要更深的去了解单片机的很多功能,努力的去查找资料。本课题将以发光二极管作为发光器件,用单片机自动控制,实现一个简易的花样流水灯设计。
1. 相关元件及电路设计
1.1 AT89C51芯片功能特性及应用
单片机在我们的日常生活和工作中无处不在、无处不有:家用电器中的电子表、洗衣机、电饭褒、豆浆机、电子秤;住宅小区的监控系统、电梯智能化控制系统;汽车电子设备中的ABS、GPS、ESP、TPMS;医用设备中的呼吸机,各种分析仪,监护仪,病床呼叫系统;公交汽车、地铁站的IC卡读卡机、滚动显示车次和时间的LED点阵显示屏;电脑的外设,如键盘、鼠标、光驱、打印机、复印件、传真机、调制解调器;计算机网络的通讯设备;智能化仪表中的万用表,示波器,逻辑分析仪;工厂流水线的智能化管理系统,成套设备中关键工作点的分布式监控系统;导弹的导航装置,飞机上的各种仪表等等。有资料表明:20xx年全球单片机的产值达到151亿美元,我国单片机的销售额达到400亿元人民币,我国每年单片机的需求量达50至60亿片,是全球单片机的最大市场。可以说单片机已经渗透到了我们生活的各个领域。
在AT89C51芯片内部有一个高增益反相放大器,用于构成振荡器。反相放大器的输入端为引脚XTAL1,输出端为引脚XTAL2,在芯片的外部通过这两个引脚跨接晶体振荡器和微调电容C1、C2形成反馈电路,可构成稳定的自激振荡器,振荡频率通常是1.2~12MHz。若晶体振荡器频率高,则系统的时钟频率也高,单片机的运行速度也就快
1.2 MCS-51单片机
1.2.1 内部结构
MCS-51系列单片机内部采用模块式结构,其结构组成框图如图1所示。
程序存储器
数据存储器
图1 MCS-51系列单片机组成框图
由图1可见,MCS-51系列单片机主要由以下部件通过片内总线连接而成:中央处理器(CPU)、数据存储器(RAM)、程序存储器(ROM)、并行输入/输出口(P0口~P3口)、串行口、定时器/计数器、中断控制、总线控制及时钟电路。
1.2.2 引脚定义
引脚是单片机和外界进行通信的通道连接点,用户只能通过引脚组建控制系统。从应用的角度来看,引脚的应用是单片机应用的一个重要基础。因此熟悉引脚是学习应用单片机的基础。
MCS-51系列单片机的引脚封装主要有: PDIP40、PLCC44和PQFP/TQFP44。不同封装的芯片其引脚的排列位置有所不同,但他们的功能和特性都相同。方形封装(PLCC44和POFP/TQFP44)有44引脚,其中4个NC为空引脚。采用40引脚PDIP封装的80C51单片机的引脚排列及逻辑符号如图2所示。
由于工艺及标准化等原因,芯片的引脚数量是有限的,但单片机为实现控制
所需要的信号数目却远远超过其引脚数目。为解决这一矛盾,单片机的某些信号引脚被赋以双重功能。
1)电源及电源复位引脚:
(1)VCC(40脚):正常操作时接+5V直流电源。
(2)VSS (20脚):接地端。
图2 40引脚PDIP封装的80C51单片机的引脚排列及逻辑符号图
(3)RST/VPD(9脚):复位信号输入端。在该引脚上输入一定时间(约两个
机器周期)的高电平将使单片机复位。该引脚的第二功能是VPD,即备用电源输
入端。当主电源发生故障,降低到低电平规定值时,可将+5V备用电源自动接入VPD端,以保护片内RAM中的信息不丢失,使复电后能继续正常运行。 (4)EA/VPP(31脚):访问程序存储器控制信号/编程电源输入。当EA保持高电平时,访问内部程序存储器,访问地址范围在0~4KB内;当PC(程序计数器)值超过0FFFH,即访问地址超出4KB时,将自动转向执行外部程序存储器内的程序;当EA保持低电平时,不管单片机内部是否有程序存储器,则只访问外部程序存储器(从
0000H地址开始)。由此可见,对片内有可用程序存储器的单片机而言,EA端应接高电平,而对片内无程序存储器的单片机,可将EA接地。
对于EPROM型单片机,在EPROM编程期间,此引脚用于施加21V的编程电源(VPP)。
2)时钟振荡电路引脚XTAL1和XTAL2:
(1)XTAL1(19脚):外接石英晶体和微调电容引脚1。它是片内振荡电路反向放大器的输入端。采用外部振荡器时此引脚接地。
(2)XTAL2(18脚):外接石英晶体和微调电容引脚2。它是片内振荡电路反向放大器的输出端。采用外部振荡器时此引脚为外部振荡信号输入端。 3) ALE/PROG(30脚):低8位地址锁存控制信号/编程脉冲输入。在系统扩展时,ALE用于把P0口输出的低8位地址锁存起来,以实现低8位地址和数据的隔离。在访问外部程序存储器期间,ALE信号两次有效;而在访问外部数据存储器期间,ALE信号一次有效。对于EPROM型单片机,在EPROM编程期间,此引脚用于输入编程脉冲PROG。
4)PSEN(29脚):外部程序存储器的读选通信号输出端,低电平有效。在从外部程序存储器取指令(或常数)期间,此引脚定时输出负脉冲作为读取外部程序存储器的信号,每个机器周期PSEN两次有效,此时地址总线上送出的地址为外部程序存储器地址;在此期间,如果访问外部数据存储器和内部程序存储器,不会产生PSEN信号。
5)并行双向输入/输出(I/O)口引脚:
(1)P0口的P0.0~P0.7引脚(39~32脚):8位通用输入/输出端口和片外8位数据/低8位地址复用总线端口。
(2)P1口的P1.0~P1.7引脚(1~8脚):8位通用输入/输出端口。
(3)P2口的P2.0~P2.7引脚(28~21脚):8位通用输入/输出端口和片外高8位地址总线端口。
(4)P3口的P3.0~P3.7引脚(10~17脚):8位通用输入/输出端口,具有第二功能。
1.2.3 外部总线构成
所谓总线,就是连接单片机与各外部器件的一组公共的信号线。当系统要求扩展时,单片机要与一定数量的外部器件和外围设备连接。如果各部件及每一种外围设备都分别用各自的一组线路与CPU直接连接,那么连线将会错综复杂,甚至难以实现。为了简化硬件电路的设计和系统结构,常用一组线路,并配以适当
的接口电路来与各个外部器件和外围设备连接,这组共用的连接线路就是总线。采用总线结构便于扩展外部器件和外围设备,而统一的总线标准则使不同设备间的互连更容易实现。
利用片外引脚可以构造MCS-51系列单片机的三总线结构。单片机的引脚除了电源端VCC、接地端VSS、复位端RST、晶振接入端XTAL1和XTAL2、通用I/O口的P1.0~P1.7以外,其余的引脚都是为实现系统扩展而设置的。用这些引脚构造的单片机系统的三总线结构如3所示。
地址总线
数据总线
控制总线
图3 MCS-51系列单片机片外三总线结构
1)地址总线(Address Bus,AB):MCS-51系列单片机总共有16根地址线A15~ A0,片外存储器可寻址范围达64KB(216=65536字节),由P2口直接提供高8位地址A15~ A8,P0口经地址锁存器提供低8位地址A7~ A0。
2)数据总线(Data Bus,DB):MCS-51系列单片机总共有8根数据线D7~D0,全由P0口提供。由于P0口是分时复用总线,分时输送低8位地址(通过地址锁存器锁存)和高8位数据信息。
3)控制总线(Control Bus,CB):控制总线由P3口的第二功能WR(P3.6)、
RD(P3.7)和3根独立的控制线EA、ALE、PSEN组成。
1.3 单片机时钟电路及时钟时序单位
1) 时钟电路
单片机本身如同一个复杂的同步时序电路,为了保证同步工作,电路应在唯一的时钟信号控制下,严格地按规定时序工作。而时钟电路就用于产生单片机工作所需要的时钟信号。MCS-51单片机时钟电路示意图如图4所示。
二分频
状态时钟
ALE
机器周期
图4 MCS-51单片机时钟振荡电路示意图
在MCS-51芯片内部有一个高增益反相放大器,用于构成振荡器。反相放大器的输入端为引脚XTAL1,输出端为引脚XTAL2,在芯片的外部通过这两个引脚跨接晶体振荡器和微调电容C1、C2形成反馈电路,可构成稳定的自激振荡器,振荡频率范围通常是1.2~12MHz。晶体振荡频率高,则系统的时钟频率也高,单片机的运行速度也就快。
振荡电路产生的振荡脉冲并不直接使用,而是经分频后再为系统所用。振荡脉冲在片内通过一个时钟发生电路二分频后才作为系统的时钟信号。片内时钟发生电路实质上是一个二分频的触发器,其输入来自振荡器,输出为二相时钟信号,即状态时钟信号,其频率为fosc/2;状态时钟三分频后为ALE信号,其频率为fosc/6;状态时钟六分频后为机器周期,其频率为fosc/12。
在图4中,使用晶体振荡器时,C1、C2取值30±10pF;使用陶瓷振荡器时,C1、C2取值40±10pF。C1、C2的取值虽然没有严格的要求,但电容的大小影响振荡电路的稳定性和快速性,通常取值20~30pF。在设计印制电路板时,晶振和电容等应尽可能靠近芯片,以减少分布电容,保证振荡器振荡的稳定性。
也可以由外部时钟电路向片内输入脉冲信号作为单片机的振荡脉冲。这时外部脉冲信号是经XTAL1引脚引入的,而XTAL2引脚悬空或接地。对外部信号的占空比没有要求,但高低电平持续的时间不应小于20ns。这种方式常用于多块芯片同时工作,便于同步。其外部脉冲接入方式如图5所示。
外部脉冲信号
图5 MCS-51单片机外部时钟输入接线图
所谓时序,是指在指令执行过程中,CPU的控制器所发出的一系列特定的控制信号在时间上的先后关系。CPU发出的控制信号有两类:一类是用于单片机内部的,用户不能直接接触此类信号,不必对它作过多了解;另一类是通过控制总线送到片外的,人们通常以时序图的形式来表示相关信号的波形及出现的先后次序。为了说明信号的时间关系,需要定义时序单位。89C51的时序单位共有四个,从小到大依次是拍节、状态、机器周期和指令周期。如图4所示。
fOSC
(XTAL2)
1.4单片机的复位
1.4.1 复位状态
复位是单片机的初始化操作,其主要功能是将程序计数器PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化外,当程序运行出错或操作错误使系统处于死锁状态时,也须重新启动单片机,使其
复位。
单片机复位后,除P3~P0的端口锁存器被设置成FFH、堆栈指针SP设置成07H和串行口的SBUF无确定值外,其它各专用寄存器包括程序计数器PC均被设置成00H。片内RAM不受复位的影响,上电后RAM中的内容是随机的。记住这些特殊功能寄存器的复位状态,对熟悉单片机操作,简短应用程序中的初始化部分是十分必要的。
1.4.2 复位电路
单片机的复位操作有上电自动复位和手动按键复位两种方式。上电自动复位操作要求接通电源后自动实现复位操作。如图1.5-1所示。图6(a)所示为最简单的复位电路。上电瞬间由于电容C上无储能,其端电压近似为零,RST获得高电平,随着电容器C的充电,RST引脚上的高电平将逐渐下降,当RST引脚上的电压小于某一数值后,单片机就脱离复位状态,进入正常工作模式。只要高电平能保持复位所需要的时间(约两个机器周期),单片机就能实现复位。
相比于图6(a),图6(b)所示的电路只是增加了外接二极管VD和电阻R。其优越性在于停电后,二极管VD给电容C提供了快速放电通路,保证再上电时RST为高电平,从而保证单片机可靠复位。正常工作时,二极管反偏,对电路没影响。断电后,VCC逐渐下降,当VCC=0时,电容C通过VD迅速放电,恢复到无电量的初始状态,为下次上电复位做好准备。
VD
(a) (b)
图6 上电自动复位电路
手动按键复位要求在电源接通的条件下,用按钮开关操作使单片机复位,如图7所示。其工作原理为:复位键按下后,电容C通过R2放电,放电结束后,
RST引脚的电位由R1和R2 分压决定,由于R2<<R1,因此,RST引脚为高电平,单片机进入复位状态,松开按键后,电容充电,RST上的电位降低,经过一定的延时,单片机就脱离复位状态,进入正常工作模式。R2的作用在于限流,避免按键按下的瞬间电容C放电产生火花,保护按键的触点。
R2
270VD
图7 手动按键复位电路
系统上电运行后,若需要复位,一般是通过手动复位来实现的。通常采用手动复位和上电自动复位结合。复位电路虽然简单,但其作用十分重要。一个单片机系统能否正常运行,首先要检查是否能复位成功。初步检查可用示波器探头监视RST引脚,按下复位键,观察是否有足够幅度的波形输出(瞬时的),还可以通过改变复位电路阻容值的方法进行检测。
2. 流水灯电路及程序设计
2.1 电路原理图设计
按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89C51单片机时无须外扩存储器。因此,本流水灯实际上就是一个带有八个发光二极管的单片
机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。从原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。
设计原理图如图8所示:
图8流水灯硬件原理图
3.2电路程序设计
程序流程图如图9所示:
程序中LIGHT7为多种亮灯方式结合循环
延时子程序DELAY为100毫秒延时,延时子程序DELAY1为100毫秒延时 LIGHT1~LIGHT6亮灯方式程序中有标注
图9 程序流程图
程序如下:
ORG 0000H
AJMP MAIN ;系统上电,执行主程序
ORG 0003H ;外部中断0入口
AJMP LOOP ;转移至中断服务程序
MAIN:
SETB EX0 ;允许INT0中断
SETB IT0 ;INT0中断选用电平触发
SETB EA ;CPU开中断
HALT: SJMP HALT ;等待中断
LOOP: ;判0转移到相应亮灯方式
SETB P3.2
JNB P3.0 ,LIGHT1
JNB P3.1 ,LIGHT2
JNB P3.3 ,LIGHT3
JNB P3.4 ,LIGHT4
JNB P3.5 ,LIGHT5
JNB P3.6 ,LIGHT6
JNB P3.7 ,LIGHT7
LIGHT1: ;一个正流水(100毫秒延时) SETB P3.0
MOV DPTR,#TAB1
MOV R0,#8
LIGHT11:MOVX A,@DPTR
MOV P1,A
LCALL DELAY
INC DPTR
DJNZ R0,LIGHT11
JNB P3.0,LOOP
SJMP LIGHT1
LIGHT2: ;两个正流水(100毫秒延时) SETB P3.1
MOV DPTR,#TAB2
MOV R0,#4
LIGHT22:MOVX A,@DPTR
MOV P1,A
LCALL DELAY
INC DPTR
DJNZ R0,LIGHT22
SJMP LIGHT2
LIGHT3:
SETB P3.3
MOV DPTR,#TAB3
MOV R0,#8
LIGHT33:MOVX A,@DPTR
MOV P1,A
LCALL DELAY
INC DPTR
DJNZ R0,LIGHT33
JNB P3.0,LOOP
SJMP LIGHT3
LIGHT4:
SETB P3.5
MOV DPTR,#TAB5
MOV R0,#4
LIGHT55:MOVX A,@DPTR
;隔一个正流水(100毫秒延时)隔一个倒流水(0.5秒延时)
MOV P1,A
LCALL DELAY1
INC DPTR
DJNZ R0,LIGHT55
JNB P3.0,LOOP
SJMP LIGHT5
LIGHT5: SETB P3.7
MOV DPTR,#TAB7
MOV R0,#74
LIGHT77:MOVX A,@DPTR
MOV P1,A
LCALL DELAY
INC DPTR
DJNZ R0,LIGHT77
JNB P3.0,LOOP
SJMP LIGHT7
DELAY1:MOV R3,#10 //0.5秒的延时子程序D1:MOV R7,#200
D2:MOV R6,#123
D3:DJNZ R6,D3
NOP
DJNZ R7,D2
DJNZ R3,D1
RET
DELAY:MOV R2,#40 //2秒的延时子程序 D4:MOV R1,# 200
D5:MOV R4,#123
D6:DJNZ R4,D6
(2秒延时);多样式流水
NOP
DJNZ R1,D5
DJNZ R2,D4
RET
TAB1: ;一个正流水
DB 01H 02H 04H 08H 10H 20H 40H 80H
TAB2: ;两个正流水
DB 03H 0CH 30H 0C0H
TAB3: ;隔一个正流水
DB 01H 04H 10H 40H
TAB4: ;隔一个倒流水
DB 80H 20H 08H 02H
TAB5: ;多样式流水
DB 0FFH ;全灭
DB 0FEH 0FDH 0FBH 0F7H 0EFH 0DFH 0BFH 07FH ;依次逐个点亮 DB 0FEH 0FCH 0F8H 0F0H 0E0H 0C0H 080H 000H ;依次逐个叠加 DB 080H 0C0H 0E0H 0F0H 0F8H 0FCH 0FEH 0FFH ;依次逐个递减 DB 0FEH 0FCH 0F8H 0F0H 0E0H 0C0H 080H 000H ;依次逐个叠加 DB 080H 0C0H 0E0H 0F0H 0F8H 0FCH 0FEH 0FFH ;依次逐个递减 DB 07EH 0BDH 0DBH 0E7H 0E7H 0DBH 0BDH 07EH ;两边靠拢后分开 DB 07EH 03CH 018H 000H 000H 018H 03CH 07EH ;两边叠加后递减 DB 07EH 0BDH 0DBH 0E7H 0E7H 0DBH 0BDH 07EH ;两边靠拢后分开 DB 07EH 03CH 018H 000H 000H 018H 03CH 07EH ;两边叠加后递减 DB 000H ;全亮
END ;程序结束指令
总结
本次课程设计我的课题是花样流水灯的设计,开始的几个星期我针对这个课题的任务要求从图书馆、上网等渠道获取相关信息,查找相关的参考资料,然后设定了本课题的设计方案。经过近多日的努力,终于将本次课程设计做完了,但由于水平有限,文中肯定有很多不恰当的地方,请老师指出其中的错误和不当之处,使我能做出改正,我会虚心接受。在本次课程设计过程中,我增强了自己的动手能力和分析能力。在以后的学习生活中,我会努力学习专业知识,完善自我,为将来的发展做好充分的准备。
总之,在这次课程设计中,我受益匪浅,学到了很多书本上所没有的东西,懂得了理论和实际联系的重要性。在以后的学习中,我不仅要把理论知识掌握牢固,更要提高自己的动手能力和分析能力。
参考文献
[1] 胡汉才.单片机原理与接口技术[M].北京:清华大学出版社,1995.6.
[2] 楼然苗等.51系列单片机设计实例[M].北京:北京航空航天出版社,2003.3.
[3] 何立民. 单片机高级教程[M].北京:北京航空航天大学出版社,2001.
[4] 赵晓安. MCS-51单片机原理及应用[M]. 天津:天津大学出版社,2001.3.
[5] 肖洪兵. 跟我学用单片机[M]. 北京:北京航空航天大学出版社,2002.8.
[6] 夏继强. 单片机实验与实践教程[M]. 北京:北京航空航天大学出版社, 2001.
[7]于凤明.单片机原理及接口技术[M].北京:中国轻工业出版社.1998.