基于单片机的交通灯控制系统的设计 .doc

上传人:yy****2 文档编号:97663763 上传时间:2024-06-19 格式:DOC 页数:35 大小:896KB
返回 下载 相关 举报
基于单片机的交通灯控制系统的设计 .doc_第1页
第1页 / 共35页
基于单片机的交通灯控制系统的设计 .doc_第2页
第2页 / 共35页
点击查看更多>>
资源描述

《基于单片机的交通灯控制系统的设计 .doc》由会员分享,可在线阅读,更多相关《基于单片机的交通灯控制系统的设计 .doc(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1 引言现如今把红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。这一技术在19世纪就已出现了。1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两种以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。1914年,电气启动的红绿灯出现在美国。这种红绿灯由红绿黄三色圆形的投光器组成,安装在纽约市5号大街的一座高塔上。红灯亮表示“停止

2、”,绿灯亮表示“通行”。1918年,又出现了带控制的红绿灯和红外线红绿灯。带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968年,联合国道路交通和道路标志信号协定对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种

3、转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。2设计思路首先是介绍设计电路中使用到的主要元器件,单片机芯片、8255芯片和晶闸管。十字路口分四条道,每条道有三个红绿灯,共十二个。每个红绿灯由一块8031芯片单独控制,我们只设计一个红绿灯的燃亮情况,同理根据燃亮顺序设计其它红绿灯。然后再组合起来,达到设计要求。3 单片机的发展概述单片微型计算机通常由单块集成电路芯片构成,内部包含有中央处理单元CPU、存

4、储器、定时器/计数器和I/O接口电路等主要计算机部件。单片微型计算机简称单片机。1974年12月,美国Fairchild公司推出了世界上第一台8位单片机F8。该机结构独特,由两块集成电路芯片组成,具有与众不同的指令系统,深受民用电器和仪器仪表领域的欢迎和重视。单片机的发展过程分为四个发展阶段:第一阶段(1974-1976年)是单片机发展的起步阶段。这个时期的单片机的制造工艺比较落后,集成度也低。第二阶段(1976-1978年)是单片机的发展阶段。这个时期生产的单片机已能在单块芯片内集成8位CPU、并行I/O口、8位定时器/计数器、RAM和ROM、中断源等功能。第三阶段(1979-1982年)是

5、 8位单片机的成熟阶段。与前两个阶段比,这一阶段的单片机不仅增大了存储量和寻址范围,而且在不同程度上增加了中断源并行I/O口和定时器/计数器的个数,甚至集成了全双工串行通信接口电路。第四阶段(1983年以后)是16位单片机和8位高性能单片机并行发展阶段。这一时期的单片机大力发展控制功能并提高系统运行的可靠性,逐步将测控系统要求的外部接口电路纳入片内,以真正实现“微控制器”所应具备的功能。4 芯片的选择与简介4.1 MSC-51芯片简介MCS-51单片机内部结构8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。 8051单片机包含中央处理器、程序存储器(ROM)、

6、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:1、中央处理器CPU中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。2 、时钟电路MCS-51芯片的内部有时钟电路,但石英晶体和微调电容需外接。时钟电路为单片机产生时钟脉冲序列。系统允许的晶振频率为12MHZ。下面图4.1为8051内部结构:图4.1 8051内部结构3、 内部程序存储器(ROM):8051内部有4KB的ROM,

7、用于存放程序、原始数据或表格。因此称之为程序存储器,简称内部ROM。地址范围为0000HFFFFH(64KB)。4、 内部数据存储器(RAM):8051芯片共有256个RAM单元,其中后128单元被专用寄存器占用,能作为寄存器供用户使用的只是前128单元,用于存放可读写的数据。因此通常所说的内部数据存储器就是指前128单元,简称内部RAM。地址范围为00HFFH(256B)。是一个多用多功能数据存储器,有数据存储、通用工作寄存器、堆栈、位地址等空间。5、 定时器/计数器8051共有2个16位的定时器/计数器,以实现定时或计数功能,并以其定时或计数结果对计算机进行控制。定时时靠内部分频时钟频率计

8、数实现。做计数器时,对P3.4(T0)或P3.5(T1)端口的低电平脉冲计数。6、 并行I/O口MCS-51共有4个8位的I/O口(P0、P1、P2、P3)以实现数据的输入输出。7、 串行口MCS-51有一个全双工的串行口,以实现单片机和其它设备之间的串行数据传送。该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为移位器使用。RXD( P3.0)脚为接收端口,TXD(P3.1)脚为发送端口。8、中断控制系统 MCS-51单片机的中断功能较强,以满足不同控制应用的需要。共有5个中断源,即外中断2个,定时中断2个,串行中断1个,全部中断分为高级和低级共二个优先级别。单片机的结构有两种类型

9、,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。INTEL的MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。下图示4.2是MCS-51系列单片机的内部结构。图4.2 MCS-51结构框图MCS-51的引脚说明:MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,下图是它们的引脚配置,40个引脚中,有正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/

10、O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明,如图4.3: 图4.3 MCS-51芯片引脚分布 1、主电源引脚VCC和VSS VCC(40脚)接+5V电压;VSS(20脚)接地;2、外接晶体引脚XTAL1和XTAL2XTAL1(19脚)接外部晶体的一个引脚。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。当采用外部振荡器时,对HMOS制造工艺的MCS-51单片机,此引脚应接地;对CHMOS单片机,此引脚作为驱动端。XTAL2(18脚)接外部晶体的另一端。在单片机内部,接至上述振荡器的反相放大器的输出端。采用外部振荡器时,对HMOS制造工艺的MCS-51单

11、片机,该引脚接外部振荡器的信号,即把外部振荡器的信号直接接到内部时钟发生器的输入端;对XHMOS制造工艺的 80C51/80C31,此引脚应悬浮。3、控制或与其它电源复用引脚RST/VPD、ALE/PROG、PSEN和EA/VPPRST/VPD(9脚)当振荡器运行时,在此脚上出现两个机器周期的高电平将使单片机复位。推荐在此引脚与VSS引脚之间连接一个约1k的下拉电阻,与VCC引脚之间连接一个约22F的电容,以保证可靠地复位。图4.4给出了两种复位方式。VCC掉电期间,此引脚可接备用电源,以保证内部RAM的数据不丢失。当VCC主电源下掉到低于规定的电平,而VPD在其规定的电压范围(50.5V)内

12、,VPD就向内部RAM提供备用电源。ALE/PROG(30脚):当访问外部存贮器时,ALE(允许地址锁存)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE端仍以不变的频率周期性地出现正脉冲信号,此频率为振荡器频率的1/6。因此,它可用作对外输出的时钟,或用于定时目的。然而要注意的是,每当访问外部数据存储器时,将跳过一个ALE脉冲。ALE端可以驱动(吸收或输出电流)8个LS型的TTL输入电路。对于EPROM单片机(如8751),在EPROM编程期间,此引脚用于输入编程脉冲(PROG)。 PSEN(29脚):此脚的输出是外部程序存储器的读选通信号。在从外部程序存储器取指令(或常数)期间,

13、每个机器周期两次PSEN有效。但在此期间,每当访问外部数据存储器时,这两次有效的PSEN信号将不出现。PSEN同样可以驱动(吸收或输出)8个LS型的TTL输入。EA/VPP(引脚):当EA端保持高电平时,访问内部程序存储器,但在PC(程序计数器)值超过0FFFH(对851/8751/80C51)或1FFFH(对8052)时,将自动转向执行外部程序存储器内的程序。当EA保持低电平时,则只访问外部程序存储器,不管是否有内部程序存储器。对于常用的8031来说,无内部程序存储器,所以EA脚必须常接地,这样才能只选择外部程序存储器。对于EPROM型的单片机(如8751),在EPROM编程期间,此引脚也用

14、于施加21V的编程电源(VPP)。4、输入/输出(I/O)引脚P0、P1、P2、P3(共32根)P0口(39脚至32脚):是双向8位三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用。P1口(1脚至8脚):是准双向8位I/O口。由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。对8052、8032,P1.0引脚的第二功能为T2定时/计数器的外部输入,P1.1引脚的第二功能为T2捕捉、重装触发,即T2的外部控制端。对EPROM编程和程序验证时,它接收低8位地址。P2口(21脚至28脚):是准双向8位I/O口。在访问外部存储器时,它可以作为扩展电路高8位地址总线送

15、出高8位地址。在对EPROM编程和程序验证期间,它接收高8位地址。P3口(10脚至17脚):是准双向8位I/O口,在MCS-51中,这8个引脚还用于专门功能,是复用双功能口。 作为第一功能使用时,就作为普通I/O口用,功能和操作方法与P1口相同。作为第二功能使用时,各引脚的定义如下所示。 值得强调的是,P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。 P3口线引脚第二功能:P3.0 10 RXD(串行输入口) P3.1 11 TXD(串行输出口) P3.2 12 INT0(外部中断0) P3.3 13 INT1(外部中断1) P3.4 14 T0(定时器0外部输入) P3.5 1

16、5 T1(定时器1外部输入) P3.6 16 WR(外部数据存储器写脉冲) P3.7 17 RD(外部数据存储器读脉冲) 由图我们可以看到,单片机的引脚除了电源、复位、时钟接入,用户I/O口外,其余管脚是为实现系统扩展而设置的。这些引脚构成MCS-51单片机片外三总线结构,即: 地址总线(AB):地址总线宽为16位,因此,其外部存储器直接寻址为64K字节,16位地址总线由P0口经地址锁存器提供8位地址(A0至A7);P2口直接提供8位地址(A8至A15)。 数据总线(DB):数据总线宽度为8位,由P0提供。 控制总线(CB):由P3口的第二功能状态和4根独立控制线RESET、EA、ALE、PS

17、EN组成。8031因内部没有ROM,31脚需接地(GND),单片机在启动后就到外面程序存储器读取指令;而8051因内部有程序存储器,31脚接高电平(VCC),单片机启动后直接在内部读取指令。其它功能与8051基本相同。图4.4给出了两种复位方式。图4.4 复位方式 图4.5 时钟方式4.2 8255芯片简介8255可编程并行接口芯片简介:8255可编程并行接口芯片有三个输入输出端口,即A口、B口和C口,对应于引脚PA7PA0、PB7PB0和PC7PC0。其内部还有一个控制寄存器,即控制口。通常A口、B口作为输入输出的数据端口。C口作为控制或状态信息的端口,它在方式字的控制下,可以分成4位的端口

18、,每个端口包含一个4位锁存器。它们分别与端口AB配合使用,可以用作控制信号输出或作为状态信号输入。8255的内部组成框图如图4.6所示:A组端口A(8位)A组控制PA7PA0数据总线缓冲器D7D0A组端口C高位(4位)PC7PC4/RD/WRA1A0/CSRET读/写控制逻辑B组端口C低位(4位)PC3PC0B组端口B(8位)B组控制PB7PB0图4.6 8255内部组成框图8255可编程并行接口芯片方式控制字格式说明:8255有两种控制命令字:一个是方式选择控制字;另一个是C口按位置位复位控制字。其中C口按位置位复位控制字方式使用较为繁难,说明也较冗长,故在此不作叙述。方式控制字格式说明如图

19、4.7所示:B组 D7D6D5D4D3D2D1D0 端口C(下半部)1=输入,0=输出端口B1=输入,0=输出方式选择0=方式0,1=方式1A组端口C(上半部)1=输入,0=输出端口A1=输入,0=输出方式选择00=方式001=方式11x=方式2方式设置标志1=有效图4.7 8255方式控制字方式0:基本输入输出方式。适用于三个端口中的任何一个。每一个端口都可以用作输入或输出。输出可被锁存,输入不能锁存。方式0适合于两种情况:一种是无条件传送,另一种是查询方式传送。方式1:选通输入输出方式。这时A口或B口的8位外设线用作输入或输出,C口的4条线中三条用作数据传输的联络信号和中断请求信号。方式2

20、 :双向选通输入/输出方式。只有A口具备双向选通输入/输出方式,8位外设线用作输入或输出。4.3 74LS373以及74LS07简介74LS373 是一种带三态门的8D锁存器,其管脚示意图如4.8所示:图4.8 74LS373管脚示意图其中:1D-8D为8个输入端。 1Q-8Q为8个输出端。 LE为数据打入端:当LE为“1”时,锁存器输出 状态同输入状态;当LE由“1”变“0”时,数据 打入锁存器 OE为输出允许端;当OE=0时,三态门打开; 当OE=1时,三态门关闭,输出高阻。六驱动器(OC高压输出) 74LS07 Vcc6A6Y5A5Y4A4Y 1413121110 9 8Y = A) 1

21、 2 3 4 5 6 7 7805实现正电压输出,负电压截止。4.4 晶闸管晶闸管(Thyristor)是晶体闸流管的简称,又可称做可控硅整流器,以前被简称为可控硅;1957年美国通用电器公司开发出世界上第一个晶闸管产品,并于1958年使其商业化;晶闸管是PNPN四层半导体结构,它有三个极:阳极,阴极和门极;晶闸管工作条件为:加正向电压且门极有触发电流;其派生器件有:快速晶闸管,双向晶闸管,逆导晶闸管,光控晶闸管等。它是一种大功率开关型半导体器件,在电路中用文字符号“VT”表示。图4.9为晶闸管的结构图。图4.10为晶闸管的电路图。P1N1P2N2GKAAGIc0PNPREKNPNIaIc1I

22、gIc2Ik 图4.9 晶闸管的结构图 图4.10 晶闸管电路图晶闸管VT在工作过程中,它的阳极A和阴极K与电源和负载连接,组成晶闸管的主电路,晶闸管的门极G和阴极K与控制晶闸管的装置连接,组成晶闸管的控制电路。晶闸管的工作条件: 1. 晶闸管承受反向阳极电压时,不管门极承受何种电压,晶闸管都处于关断状态。2. 晶闸管承受正向阳极电压时,仅在门极承受正向电压的情况下晶闸管才导通。3. 晶闸管在导通情况下,只要有一定的正向阳极电压,不论门极电压如何,晶闸管保持导通,即晶闸管导通后,门极失去作用。在电路中我们使用的晶闸管来控制红绿灯的亮灭。如图4.11所示: 图4.11 晶闸管控制电路VT为双向晶

23、闸管,当门极为高电平时晶闸管导通,该支路指示灯亮;当门极为低电平时晶闸管关断,该支路指示灯灭。5 交通灯控制原理分析与设计5.1交通管理的方案论证A、B、C、D干道交于一个十字路口,各干道有三组红、黄、绿三色的指示灯,指挥车辆安全通行。图5.1所示为一个十字路口的道路示意图。红灯亮禁止通行,绿灯亮允许通行。黄灯亮提示车辆注意红、绿灯的状态即将切换。设A、C道比B、D道的车流量大。左 中 右 A道C道右 中 左左B 中道 右右中 D左 道图5.1 十字路口示意图我们把十字路口分成四条道路,分别为A道,B道,C道和D道。每条道路分左中右三条车道,左为左拐弯,右为右拐弯,中为直走。设A、C道比B、D

24、道的车流量大,设计红绿灯的燃亮顺序,如表5.1:表5.1 红绿灯燃亮顺序330315320310330A道左黄红黄绿黄红黄红黄红中黄绿黄红黄红黄红黄绿右黄绿黄红黄绿黄红黄绿B道左黄红黄红黄红黄绿黄红中黄红黄红黄绿黄红黄红右黄绿黄红黄绿黄红黄绿C道左黄红黄绿黄红黄红黄红中黄绿黄红黄红黄红黄绿右黄绿黄红黄绿黄红黄绿D道左黄红黄红黄红黄绿黄红中黄红黄红黄绿黄红黄红右黄绿黄红黄绿黄红黄绿此表说明:(1)当为黄灯时 A、B、C、D四条道同时为黄灯;以警示车辆下一个灯色即将到来 ,时间为 3秒。 (2)当A、C道的中、右车道为绿灯,左车道为红灯时,B、D道的左、中车道车辆禁止通行,右车道可通过。时间为30

25、秒。(3)当A、C道的左车道为绿灯,中、右车道为红灯时,B、D道的左、中、右车道车辆禁止通行。时间为15秒。(4)当B、D道的中、右车道为绿灯,左车道为红灯时,A、C道的左、中车道车辆禁止通行,右车道可通过。时间为20秒。(5)当B、D道的左车道为绿灯,中、右车道为红灯时,A、C道的左、中、右车道车辆禁止通行。时间为10秒。(6)此表可根据车流量动态设定。5.2系统硬件设计由于一片8255芯片的扩展口不能满足对红绿灯和显示时间的控制,我们采用一块8031芯片和一块8255控制一个红绿灯和其显示时间。四个道路口有十二个红绿灯,需要十二块8031芯片和8255。这样设置红绿灯的燃亮互不干扰,灵活性

26、高,便于交通管理。521 交通灯系统总框图系统总框图如下:8031控制器锁存器8255扩展并行口显示时间显示时间红绿灯看门狗图5.2 系统框图522 交通灯控制线路图 图5.3 控制线路图523 系统工作原理(1)通过编写程序设置红绿灯的燃亮时间。(2) 由8031单片机的定时器每秒钟通过P0口向8255的数据口送信息,由8255的PC 口显示红、绿、黄灯的燃亮情况;由8255的PA、PB口显示每个灯的燃亮时间。(3) 通过8031设置各个信号等的燃亮时间。设置黄、绿、红时间依次为3秒、20秒、3秒、30秒、3秒循环由8031的 P0口向8255的数据口输出。(4) 通过8031单片机的P3.

27、0位来控制系统是自动工作或手动设置,当P3.0位为0系统自动工作,为1表示按键有效,由按键输入控制红绿灯燃亮和显示时间。(5)8255的PA口用于输出时间的个位,PB口用于输出时间的十位,由74LS07驱动芯片驱动;而PC口用于输出各个灯的情况,它的末段连接双向晶闸管采用220V交流电压驱动。(6)在交通控制程序中加入看门狗指令,当系统出现异常看门狗将发出溢出中断。通过专用端口输入到MAX692看门狗芯片的WDI 引脚将引起RESET复位信号复位系统。(7)当出现紧急情况,我们可以手动控制红绿灯的亮灭。P1.7为高电平,红灯亮;P1.6为高电平,绿灯亮。P1.5P1.0输入燃亮时间。6系统的软

28、件分析与设计61延时程序设计延时方法可以有两种一种是利用MCS-51内部定时器产生溢出中断来确定延时的时间,另一种是采用软延时的方法。下面给出延时1秒的实现方法。6.1.1计数器硬件延时6.1.1.1 计数器初值计算定时器工作时必须给计数器送计数器初值,这个值是送到TH和TL中的。他是以加法记数的,并能从全1到全0时自动产生溢出中断请求。因此,我们可以把计数器记满为零所需的计数值设定为C和计数初值设定为TC 可得到如下计算通式: TC=M-C式中,M为计数器模值,该值和计数器工作方式有关。在方式0时M为213 ;在方式1时M的值为216;在方式2和3的M值为28。6.1.1.2 计算公式 T=

29、(MTC)T计数或TCMTT计数T计数是单片机时钟周期TCLK的12倍;TC为定时初值如单片机的主脉冲频率为TCLK=12MHZ,经过12分频方式0TMAX213*1微秒8.192毫秒方式1TMAX216*1微秒65.536毫秒方式2、3 TMAX=28*1微秒=256微秒显然1秒钟已经超过了计数器的最大定时间,所以我们只有采用定时器和软件相结合的办法才能解决这个问题。6.1.1.3 设置秒延时我们采用在主程序中设定一个初值为20的软件计数器和使T0定时50毫秒。这样每当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,CPU先使软件计数器减1,然后判断

30、它是否为零。为零表示1秒已到,可以返回到输出时间显示程序。6.1.1.4相应程序代码()主程序定时器需定时50毫秒,故T0工作于方式1。初值:TCMTT计数21650ms/1us=15536=3CBOH ORG 1000H START: MOV TMOD, #01H ;令T0为定时器方式1 MOV TH0, #3CH ;装入定时器初值 MOV TL0, #BOH MOV IE,#82H ;开T0中断 SEBT TR0;启动T0计数器 MOV RO,#14H ;软件计数器赋初值LOOP:SJMP $;等待中断()中断服务子程序 ORG000BH AJMPBRTO ORG2000H BRTO:DJ

31、NZ R0,NEXTAJMP TIME ;跳转到时间及信号灯显示子程序 MOVR0,#14H ;恢复R0值 MOV TH0,#3CH ;重装入定时器初值 MOV TL0,#BOH MOV IE,#82H RETIEND6.2 软件延时MCS-51的工作频率为2-12MHZ,我们选用的8031单片机的工作频率为6MHZ。机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(1/6M)=2us。我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定1秒的时间。具体的延时程序分析:DELAY: MOV R4,#08H ;延时1秒子程序DE2: LCALL DE

32、LAY1 DJNZ R4,DE2 RETDELAY1: MOV R6,#0 ; 延时125ms 子程序 MOV R5,#0DE1: DJNZ R5,$ DJNZ R6,DE1 RET MOV RN,#DATA ;字节数数为2, 机器周期数为1所以此指令的执行时间为2ms。 DELAY1为一个延时125mS子程序的双重循环,循环次数256*256=65536 所以延时时间为65536*2=131072us 约为125ms。 R4设置的初值为8时,主延时程序循环8次,所以125ms*8= 1秒。由于单片机的运行速度很快其他的指令执行时间可以忽略不计。6.3 时间及信号灯的显示6.3.1 8031并

33、行口的扩展 8031虽然有4个8位I/O端口,但真正能提供借用的只有P1口,因为P2和P0口通常用于传送外部传送地址和数据,P3口也有它的第二功能。因此,8031通常需要扩展。由于我们向外输出时间时,时间的个位、十位、信号灯的显示都要用到一个I/O端口,显然8031的端口是不够,需要扩展。扩展的方法有两种:(1)借用外部RAM地址来扩展I/O端口;(2)采用I/O接口芯片来扩充。我们也可以用8255并行接口芯片来扩展I/O端口。6.3.2显示原理当定时器定时为1秒时程序跳转到时间显示及信号灯显示子程序,它将依次显示信号灯时间 ,同时一直显示信号灯的颜色,这时在返回定时子程序定时一秒,在显示黄灯

34、的下一个时间,这样依次把所有的灯色的时间显示完后在重新给时间计数器赋初值 ,重新进入循环。 6.3.3 8255输出信号的放大要使行人能看见信号灯的情况,必须把8255输出的信号进行放大,这里我们用VT双向晶闸管,当门极为高电平时晶闸管导通,该支路指示灯亮;当门极为低电平时关断,该支路指示灯灭。我们用连接7段数码管的方法来连接晶闸管。 6.3.4 8255输出信号与信号灯的连接 LED 灯的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点亮而显示不同的字形如 dp,g,f,e,d,c,b,a 管角上加上7FH所以SP上为0伏,不亮其余为TTL高电平,全亮则显示为8。采用共阴级连接:

35、其中 PA0PB0-a,PA1PB1-b, PA2PB2-c,PA3PB3-d,PA4PB4-e, PA5PB5-f,PA6PB6-gPA7PB7 -SP接地表 6.1 驱动代码表显示数值dp g f e d c b a驱动代码(16进制)00 0 1 1 1 1 1 13FH10 0 0 0 0 1 1 006H20 1 0 1 1 0 1 15BH30 1 0 0 1 1 1 14FH40 1 1 0 0 1 1 066H50 1 1 0 1 1 0 06DH60 1 1 1 1 1 0 07DH70 0 0 0 0 1 1 107H80 1 1 1 1 1 1 17FH6.3.5 825

36、5与8031的连接用8031的P0 口的 P0.7 连接8255的片选信号CS。我们用8031的地址采用全译码方式,当P0.7 =0时片选有效,其他无效,P0.1用于选择8255端口。 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0A7 A6 A5 A4 A3 A2 A1 A01 X X X X X 0 0 00H为8255 的PA口1 X X X X X 0 1 01H 为8255的PB口1 X X X X X 1 0 02H 为8255的PC口1 X X X X X 1 1 03H 为8255的控制口由于8031是分时对8255和储存器进行访问,所以8031

37、的P0口不会发生冲突。6.4 程序设计6.4.1 流程图 流程图如图所示:开始初始化P3.0=1? NY P1.7=1或P1.6=1?N红灯亮,设置时间绿灯亮,设置时间P1.7=1P1.6=1图6.1 按键流程图初始化开始黄灯燃亮状态红灯燃亮状态R5=0?绿灯燃亮状态R6=0?NNNYYY 有键盘事件?处理键盘事件YN R4=0?图6.2 程序流程图6.4.2源程序代码 R4 存放黄灯时间 3 03H (时间可以动态设定) R5 存放红灯时间 20 14H R6 存放绿灯时间 30 1EH PC0 显示黄灯信号 PC1 显示红灯信号PC2 显示黄灯信号 工作于方式0 8255 PA、PB、PC

38、口输出控制字为B (80H) 程序代码:ORG 0000H LJMP MAIN ORG 0100HMAIN: MOV R1,#03H ;初始化8255 MOV A,#80H MOVX R1,A MOV R4,#03 ; 存放黄灯时间 MOV R5,#20 ;存放红灯时间 MOV R6,#30 ; 存放绿灯时间START: LCALL KEY_INLCALL DISP_Y LCALL DISP_R LCALL DISP_Y LCALL DISP_G LCALL DISP_Y MOV A,R5 ;保存R5中的时间 PUSH A MOV R5,#66 LCALL DISP_R POP A MOV R

39、5,A JMP START按键子程序:KEY_IN: MOV P1,0FFH ;按键子程序 MOV C,P3.0 JNB EXIT MOV C,P1.7 JNB TEST_Y ANL P1,3FH ;显示红灯 MOV R5,P1 LCALL DISP_RTEST_Y: MOV C,P1.6 ;显示绿灯 JNB EXIT ANL P1,3FH MOV R6,P1 LCALL DISP_GEXIT: RET DISP_Y: MOV R1,#O ;显示黄灯十位 MOV DPTR,#TAB MOV A,R1 MOVC A,A+DPTR MOV R1,#01H MOVX R1,A MOV A,R4 ;显示黄灯个位 MOV R0,A NEXT1: MOV DPTR,#TAB MOV A,R0 MOVC A,A+DPTR MOV R1,#00H MOV R1,A MOV R1,#02H ;显示黄灯信号 MOV A,#04H MOV R1,A ACALL DELAY ;延时1秒 DJNZ R0,NEXT1 RETDISP_R: MOV A,R5 MOV R0,A NEXT2: MOV DPTR

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 成人自考

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁