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

一、引言

(一)、概述

本设计是交通灯的控制实验,必须要先了解实际交通灯的变化规律。假设一个路口为东西南北走向,即十字路口,初始状态零为东西南北灯都熄灭。然后转状态一东西绿灯通车,南北为红灯。过段时间转状态二,东西绿灯闪几次转黄灯,延时几秒,南北仍为红灯。再转状态三南北绿灯通车,东西红灯。过段时间转状态四南北绿灯闪几次转黄灯,延时几秒,东西仍为红灯。最后循环至状态一。交通信号灯模拟控制系统设计利用单片机的定时器定时,控制十字路口红绿灯交替电亮和熄灭,并且用LED数码管显示时间,但由于时间及水平的不足,在此实验中不显示。用十二个发光二极管代替交通灯进行实验设计。

这次设计是《微机接口与控制技术》课程的综合训练,我们通过理论学习,课题选择,资料查阅,软、硬件设计,系统调试等环节,巩固所学的知识及提高应用水平.在此我们要学会从提出问题,观察与分析问题,到最终解决问题科学方法.提高自己的思维能力和动手能力,在设计中获得一些实操经验,更是要培养我们的工作作风和工作态度。为今后的毕业设计、及从事微机控制系统的设计与维护奠定坚实的基础。

这次课题设计的意义在于通过具体的控制系统的设计,掌握微机控制系统设计的一般方法和处理问题的思路,特别是一些常用的技术手段。使我们能在实践教学环境中累积设计经验,开拓思维空间,全面提高个人的综合能力。

(二)、工艺流程图

因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化规律。假设一个十字路口为东西南北走向。初始状态0为东西南北灯都熄灭。然后转状态1东西绿灯通车,南北红灯。过一段时间转状态2,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯。再转状态3,南北绿灯通车,东西红灯。过一段时间转状态4,南北绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯。最后循环至状态1。交通信号灯模拟控制系统设计利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭,并且用LED数码管显示时间,但由于时间和水平的限制就不显示时间。用十二个发光二极管燃灭,模拟交通灯管理。具体的接口如下图一。

二、工程设计

(一)、控制方案的确定

交通灯控制系统的原理主要由控制器、定时器、译码器和秒脉冲信号发生器等部分组成。秒脉冲发生器是该系统中定时器和控制器的标准时钟信号源,译码器输出两组信号灯的控制信号,经驱动电路后驱动信号灯工作,控制器是系统的主要部分,由它控制定时器和译码器的工作。如图2完整的电路板。

图2完整的电路板

(二)、硬件部分

(1)、交通灯控制系统的硬件设计:

交通灯控制系统的硬件设计包括:存储器的扩展(62256),I/O口的扩展(8255),地址的锁存(74LS373或74LS273),还有反向器(7407)。

数据缓冲器,I/O控制逻辑,控制和定时寄存器及定时与控制电路,扫描计数器,回复缓冲器,FIFO /传感器RAM及其状态寄存器,显示RAM及显示地址寄存器等组成。

(2)、硬件系统的设计具备以下原则

1.满足系统的设计要求,易于操作维护。

2.系统功能灵活,便于扩展。

3.具有自动诊断功能。

硬件系统在该系统中的作用主要是进行数据的传送,有关逻辑的计算,并且提供显示,人为的进行数据的修改,系统的启动,停止等等。此外系统运行的安全可靠性要靠硬件系统来实现。

图中: 

TL: 表示甲车道或乙车道绿灯亮的时间间隔为25秒,即车辆正常通行的时                                      间间隔。定时时间到,TL=1,否则,TL=0。

TY:表示黄灯亮的时间间隔为5秒。定时时间到,TY=1,否则,TY=0。

  ST:表示定时器到了规定的时间后,由控制器发出状态转换信号。由它控制定时器开始下个工作状态的定时。

1.定时器

  定时器由与系统秒脉冲(由时钟脉冲产生器提供)同步的计数器构成,要求计数器在状态信号ST作用下,首先清零,然后在时钟脉冲上升沿作用下,计数器从零开始进行增1计数,向控制器提供模5的定时信号TY和模25的定时信号TL。

2.控制器

控制器是交通管理的核心,它应该能够按照交通管理规则控制信号灯工作状态的转换。从ASM图可以列出控制器的状态转换表,如表1所示。选用两个D触发器FF1、FFO作为时序寄存器产生 4种状态,控制器状态转换的条件为TL和TY,当控制器处于Q1n+1Q0n+1= 00状态时,如果TL= 0,则控制器保持在00状态;如果,则控制器转换到Q1n+1Q0n+1= 01状态。这两种情况与条件TY无关,所以用无关项"X"表示。(控制器逻辑图如图6所示)

输入

输出

现态

状态转换条件

次态

状态转换信号

ST

0

0

0

0

1

1

1

1

0

0

1

1

1

1

0

0

0

1

X

X

0

1

X

X

X

X

0

1

X

X

0

1

0

0

0

1

1

1

1

0

0

1

1

1

1

0

0

0

0

1

0

1

0

1

0

1

表 1

根据表1可以推出状态方程和转换信号方程,其方法是:将Q1n+1、Q0n+1和 ST为1的项所对应的输人或状态转换条件变量相与,其中"1"用原变量表示,"0"用反变量表示,然后将各与项相或,即可得到下面的方程:

控制器逻辑图(如图6所示)

3.译码器 

74.LS138译码器

74LS138译码器有3个输入端,组成8种输入状态,输出端有8个,每个输出端对应8种输入状态的一种,低电平有效。此外还有3个使能端E3,E2,E1,这3个使能端必须同时输入有效电平,译码器才能工作,既E3=1,E2=0,E1=0。

译码器的主要任务是将控制器的输出 Q1、 Q0的4种工作状态,翻译成甲、乙车道上6个信号灯的工作状态。控制器的状态编码与信号灯控制信号之间的关系如表 12、4所示。实现上述关系的译码电路请读者自行设计。

电路图说明

1.这个LED动态显示电路用了一个单片机的一个I/O口P0口。

2.P0口的低四位输出显示数字的BCD码,输出的BCD码送到74LS138中进行译码。然后输出段代码经上拉电阻上拉后送到显示器的各显示段的引脚。

3..P03、P04、P05这三个口输出位选信号。位选信号送到74LS138中经译码产生显示器的位选信号。

4.当输出短代码后,低电平的端口将会把这个口的电平拉低。所以此时发光二极管将不发光,而高电平的端口则会向这个发光二极管的阳极提供一个高电平,只要这个位被选中,那么这个发光二极管将发光,在在段代码表找查找就能出现响应的数字。每一个位选电路由一个PNP三极管组成。当位选口发出低电平,那么这一位的三极管就会饱和导通,由于显示器是共阴的内部结构,所以当三极管饱和导通时相当于将显示器接地。

5.当脉冲到MCS—51单片机时,LED8位显示器就接收信号,并将信号储存到扩展寄存器中,当P0口的低四位输出显示数字的BCD码,输出的BCD码送到74LS138译码器译码,然后在显示提示符段码中查询显示数字。

6.前面四位显示干道通行时间,后面四位显示支道时间,通过LED显示器的显示来控制车辆的放行、禁行情况。

(5)、8279的结构及引脚功能

8279的内部结构由数据缓冲器,I/O控制逻辑,控制和定时器及定时控制电路,扫描计数器,回复缓冲器,FIFO/传感器RAM及其状态寄存器,显示RAM及显示地址寄存器等部分组成.

(a)数据缓冲器及I/O控制逻辑   数据缓冲器是一个双向缓冲器,它连接内部总线和外部总线,用于传送CPU和8279之间的命令,数据和状态.I/O控制逻辑完成对芯片的读写控制,芯片选择以及端口选择.

(b)控制和定时器及定时用来寄存操作命令字.

(c)扫描计数器   扫描计数器有两种工作方式.一种为外部译码方式.计数器以二进制方式计数,4位计数状态从扫描线SL0-SL3输出,经外部译码器译码后,形成16位扫描信号;另一种为内部译码方式.该方式下,扫描计数器的低二位经内部译码后从SL0-SL3输出,形成4位扫描信号.

(d)回复缓冲器, 回复缓冲器缓冲并锁存来自SL0-SL7八根回复线的回复信号.

(e)FIFO/传感器RAM及其状态寄存器   FIFO/传感器RAM是一个双重功能的8*8RAM.

(f)显示RAM及显示地址寄存器   显示RAM用来存储显示数据,容量为16*8位.在显示过程中,存储的显示数据轮流从显示寄存器输出.

在灯火控制实验中,它的片选信号线接Q0、数据选择输入线接的是Q1,所以他的控制口地址是FF82H,数据口地址是FF80H,中断是悬空的。

8051最小应用系统

8051是片内无程序存储器的供应状态芯片.因此,其最小应用系统必须在片外扩展EPROM.外接程序存储器的地址线A8-A15由P2口提供;A0-A7由P0口通过地址锁存器提供. 地址锁存器的锁存信号为ALE.指令数据由P0口读入.程序存储器的取指信号为/ALE.其片选线直接接地.同时必须有单位及时钟电路.

8255可编程接口芯片

三个并行I/O口-A口,B口,C口在此设计中用到了A,B两个口。

  1. 工作方式控制电路;
  2. 读写控制逻辑电路;

数据总线缓冲器;

(三)、软件部分

(1)、延时子程序的计算:

    采用寄存器R0、R1、R2作为记数值,R2中暂存1,R1中存0。当减1后变为255即R1中存数256。R0中存数#0B2H即178。各指令共占指令周期数为(见图延时程序后所附)

DELAY2延时为:

N=(2+2+2+1+1+2*178)+255*(1+1+2+2*178)=9164。

共计9164个指令周期,而系统晶振为11.0592。所以T=12/11.0592=1.085(微秒)

延时DELAY2为:

t=9164*1.085/1000000=0.09996

约等于0.1(秒)

通过改变R2的值可以改变延时的秒数。

首先四个路口所有的灯灭,在东西绿灯亮南北红灯亮延时20s,绿灯闪三下,为3秒转黄灯亮2秒 ,在南北绿灯亮东西红灯亮延时20s,绿灯闪三下,为3秒转黄灯亮2秒 ,如此循环。

状态

持续时间/S

东西方向

南北方向

绿

绿

1

50

2

3

3

2

4

50

5

3

6

2

循环

二、系统的试调运行

(一)、硬件调试

利用DVCC实验与开发系统、基本测试仪器(万用表、示波器等),检查用户系统硬件中存在的故障。其中硬件调试可分为静态调试与动态调试两步进行。

(1)、静态调试

   是在用户系统未工作时的一种硬件检测。

第一步:目测。检查外部的各种元件或者是电路是否有断点。

第二步:用万用表测试。先用万用表复核目测中有疑问的连接点,再检测各种电源线与地线之间是否有短路现象。

第三步:加电检测。给板加电,检测所有插座或是器件的电源端是否符合要求的值 

第四步:是联机检查。因为只有用单片机开发系统才能完成对用户系统的调试。 

(2)、动态调试

是在用户系统工作的情况下发现和排除用户系统硬件中存在的器件内部故障、器件连接逻辑错误等的一种硬件检查。动态调试的一般方法是由近及远、由分到合。由分到合是指首先按逻辑功能将用户系统硬件电路分为若干块,当调试电路时,与该元件无关的 器件全部从用户系统中去掉,这样可以将故障范围限定在某个局部的电路上。当各块电路无故障后,将各电路逐块加入系统中,在对各块电路功能及各电路间可能存在的相互联系进行调试。由分到合的调试既告完成。由近及远是将信号流经的各器件按照距离单片机的逻辑距离进行由近及远的分层,然后分层调试。调试时,仍采用去掉无关元件的方法,逐层调试下去,就会定位故障元件了。

三、系统设计及总结特点

通过这次的课程设计,让我受益匪浅,也让我了解和掌握了一些编程思想和对I/O口的使用和应用的条件的思考,对单片机的各个管脚功能的理解和掌握。实现了软件和硬件的有效结合,缺一不可。设计让我把单片机的理论知识用在实践中,实现了理论和实践相结合,从中更懂得理论的是实践的基础,实践有能检验理论的正确性,更激发了我对专业知识的渴求,这些对我以后参加工作或者继续学习都会有很大的帮助和影响。

这次课程设计也让我学会了撰写论文,懂得了论文的要素,这些对于我在以后写毕业设计论文有很大的帮助,并且在我将来的工作中也会有很多益处。在撰写论文中,也使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。

而作为一位学生,在对交通灯的设计中,因知识和经验的不足,只能通过模仿其它的编程思路,再加上一些自己的思想去完成这个设计,因此在各个方面都会有一些不足,敬请指正。但我会在以后的学习中逐渐去完善、巩固我的单片机知识。

目录

一、引言

(一)、概述

(二)、工艺流程图

(一)、控制方案的确定

(二)、硬件部分

(1)、交通灯控制系统的硬件设计:

(2)、硬件系统的设计具备以下原则:

(三)、软件部分

(1)、延时子程序的计算:

二、系统的试调运行

(一)、硬件调试

(1)、静态调试

(2)、动态调试

三、系统设计及总结特点

四、源程序


、源程序

ORG 0000H

   SJMP  A3          ;四盏红灯亮

A3:MOV SP,#60H

   MOV A, #24H

   MOV P1, A

   CLR P3.4

   CLR P3.3

   SETB P3.5

   SETB P3.2          ;显示5秒

   MOV R4,#05H

LOOP1: MOV R2,#03H

      LCALL LP      ;调显示子程序

      DJNZ R4,LOOP1  

      MOV R4,#00H    

      MOV R2,#03H

      LCALL  LP   ;东西绿灯亮,南北红灯亮

A2:MOV A,#0CH

   CLR P3.5

   MOV P1,A

   SETB P3.3

 CLR P3.4

   SETB P3.2           ;显示20秒   

   MOV R4,#14H  

LOOP2 :MOV R2,#03H

      LCALL LP      ;调显示子程序

      DJNZ R4,LOOP2

      MOV R4,#00H

      MOV R2,#03H

      LCALL  LP         ;调显示子程序

      SETB P3.2

      CLR P3.3            ; 显示5秒

      MOV R4 ,#05H       ;东西黄灯亮,南北红灯亮  

LOOP9:MOV A,#14H

       MOV P1 ,A

       CLR P3.5

       SETB P3.4    

       MOV R2,#02H

       LCALL LP         ;调显示子程序

 MOV R2,#01H          ;定时

       LCALL DELAY         ;调延时子程序,南北红灯亮

       MOV  A ,#04H

       MOV P1 ,A

       CLR P3.4

       CLR P3.5     

       MOV R2,#01H          ;定时

       LCALL DELAY       ;调延时子程序

       DJNZ R4,LOOP9

       MOV R4,#00H

       MOV R2,#03H

       LCALL LP        ;调显示子程序,东西红灯亮,南北绿灯亮

A8:MOV A, #61H

   MOV P1,A

   CLR  P3.4

   CLR P3.3

   CLR P3.2

   SETB P3.5                 ; 显示20秒   

   MOV R4,#14H

LOOP3:MOV R2,#03H

     LCALL LP  ;调显示子程序

     DJNZ R4,LOOP3

     MOV R4,#00H

     MOV R2,#03H

     LCALL LP  ;调显示子程序

     SETB P3.5

     MOV R4 ,#05H

LOOP10:MOV R2,#02H

      LCALL LP  ;调显示子程序,东西红灯亮,南北黄灯亮

A0:MOV A,#0A2H

 MOV P1,A

 CLR  P3.4

 CLR P3.3

 CLR P3.2       

 MOV R2,#01H    ;定时

 LCALL DELAY  ;调延时子程序,东西红灯亮

 MOV A,#20H

 MOV P1,A

 CLR  P3.4

CLR P3.3

 CLR P3.2         

 MOV R2,#01H         ;定时

 LCALL DELAY      ;调延时子程序

 DJNZ R4,LOOP10

 MOV R4,#00H

 MOV R2,#03H

 LCALL LP      ;调显示子程序

 LJMP A2             ;延时子程序

DELAY:PUSH 2         

     PUSH 1

     PUSH 0

DELAY1: MOV 1,#00H

DELAY2:MOV 0,#0B2H

       DJNZ 0,$

       DJNZ 1,DELAY2

       DJNZ 2,DELAY1

       POP 0

       POP 1

       POP 2

       DJNZ R2 ,DELAY

       RET     ;显示子程序

xian: MOV A,R4         

     MOV B,#10

     DIV AB

     MOV R6,A

     MOV DPTR,#TAB

     MOV A,B

     MOVC A,@A+DPTR

     MOV SBUF,A

     MOV R7,#0FH

H55S:DJNZ R7,H55S

     MOV A,R6

     MOVC A,@A+DPTR

     MOV SBUF,A

     MOV R7,#0FH

H55S1:DJNZ R7,H55S1

     LCALL DELAY

     RET

 这是交通灯的子程序。它主要是被调用控制各个方向灯亮灭情况和时间。

    TAB:DB 0fch,60h,0dah,0f2h,66h,0b6h,0beh,0e0h

         DB 0feh,0f6h,0eeh,3eh,9ch,7ah,9eh,8eh         ;查表子程序

     END

  • 27
    点赞
  • 103
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

下饭的王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值