交通灯控制电路实验设计报告

时间:2024.3.10

 

  

  单片机原理及应用

 

    课程设计报告书

          目:城市道口交通灯控制系统的设计

          名:张晶  邱佳平  左凡容           

    号:093621001  093621018  093621058

    业:电子信息科学与技术            

指导老师:徐武雄                        

设计时间:20##年  12 月                

 

目   录

1. 引 言.............................................. 2

1.1.  设计意义..................................... 2

1.2.  系统功能要求.................................. 2

1.3.  本组成员所做的工作............................ 3

2. 方案设计........................................... 3

3. 硬件设计........................................... 5

4. 软件设计........................................... 8

5. 系统调试.......................................... 13

6. 设计总结.......................................... 15

7. 附 录A;源程序.................................... 15

8. 附 录B;作品实物图片.............................. 26

9. 参考文献.......................................... 27

       

                     

城市道口交通灯控制系统的设计

1.引 言

1.1.设计意义

交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。

本系统采用单片机AT89SS52为中心器件来设计交通灯控制器,系统实用性强、操作简单交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体、扩展性强。本设计就是采用单片机模拟十字路口交通灯的各种状态显示以及倒计时时间。

本设计系统由单片机I/O口扩展系统、交通灯状态显示系统、LED数码显示系统、复位电路等几大部分组成。系统除基本的交通灯功能外,还具有倒计时等功能,较好的模拟实现了十字路口可能出现的状况。

软件上采用C51编程,主要编写了主程序,LED数码管显示程序,中断程序延时程序等。经过整机调试,实现了对十字路口交通灯的模拟。

关键字:电子线路 AT89S52  LED 交通灯

1.2.系统功能要求

1.2.1.系统功能:

     城市道口交通灯控制系统模型采用单片机作为主控制器,用于十字路口的车辆及行人的交通管理,每个方向既有左拐、右拐、直行及行人4种通行指示灯,计时牌显示路口通行转换剩余时间。

   1.2.2.设计要求:             

  1.进一步熟悉和掌握单片机的结构和工作原理。

 2.掌握单片机的接口技术及相关外围芯片的外特性,控制方法。

  3.通过课程设计,掌握以单片机为核心的电路设计的基本方法和技术,了解有关电路参数的计算方法。

  4.通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。

  5.通过完成一个包括电路设计和程序开发的完整过程,为我们今后从事相应工作打下基础。

1.3.本组成员所做的工作

   邱佳平(093621018):主要负责元器件的检查、电路板的排版、元器件的焊接

   左凡容(093621058):主要负责电路的检查、协助焊接工作、电路的连线

   张  晶(093621001):主要负责电路的分析测试、实验设计报告的完成

1.4实验原材料

电阻:10k  1个           电容:30p    2个        电解电容:10u   1个

      510  35个                 0.01u  5个                 100u  1个

      47k  3个

数码管   3个            三极管  3个             单片机AT89S52   1个

集成块   74LS244   3个  IC插座:40脚   2个     20脚    3个

发光二级管:红  17个   绿 16个                   按键开关    2个

导线 7m   焊锡 3m   印刷版    帽针 4个   排针3p   晶振1个 

2.设计方案

   方案1:采用标准AT89S52单片机作为控制器;显示倒计时显示采用3位LED数码管;左拐、右拐、直行及行人4中通行指示灯采用双色高亮发光二极管;LED显示采用动态扫描,以节约端口数。按以上系统构架设计,单片机端口资源刚好满足要求。该系统具有电路简单,设计方便,显示亮度高,耗电较少,可靠性高等特点。整个电路组成框图如图2-1所示。


图2-1 采用LED动态扫描的交通灯控制系统

方案2:采用AT89C2051单片机作为控制器;通行倒计时显示采用16×16点阵LED发光管,左拐、右拐、直行及行人4种通行指示灯也采用16×16点阵LED发光管。该系统设计框架如图2-2所示。列驱动采用74LS595以实现串行端口扩展,行驱动采用4/16译码器74LS154动态扫描,译码器74LS154生成16条行选通信号线,再经过驱动器驱动对应的行线。每条行线上需要较大的驱动电流,应选用大功率三极管作为驱动管。这种设计方案的图案显示逼真,单片机占用端口资源少;缺点是需要大量的硬件,电路复杂,耗电量大,在模型制作中较少采用。

     

图2-2 采用16×16点阵LED发光管设计的交通灯控制系统

方案3:采用AT89C2051单片机作为控制器,通行倒计时及左拐、右拐、直行、行人通行指示采用单块LCD液晶点阵显示器。这种方案设计占用单片机的端口最少,硬件也少,耗电量也最小;虽然显示图案也很精美,但由于亮度太暗,晚上还得开背光灯,所以较少采用。

   通过以上综合分析可以看出,方案1具有综合设计优点,因此城市道口交通灯控制系统采用方案1设计。

3.硬件设计

    整套电路系统由控制系统模块、通行灯输出控制显示模块和时间显示模块。

主控制器采用AT89S52,是ATMEL公司生产的一款性能稳定的8位单片机。AT89S52具有1个8KB的Flash程序存储器,1个512字节的RAM,4个8位的双向可位寻址I/O端口,3个16位的定时/计数器及一个串行口和6个向量二级中断结构。

单片机P0.0~P0.7及P3.0~P3.2用于4组3位LED计时器的控制,手动自动转换采用P3.7口按键,P1.0~P1.7及P2.0~P2.7分别控制南北和东西方向的红绿灯。

3.1 主控制系统

图3-1-1单片机控制

图3-1-2南北方向红绿灯控制

图3-1-3东西方向红绿灯控制

图3-1-4数码管控制

3.2 通行灯输出控制

     道口交通灯指示采用高亮度红绿双色放光二极管,左拐、直行、右拐及行人各一个。当发光电流为6mA时,按公式R=(5-1.8)/0.006计算,限流电阻应为510欧姆。由于南北通行是双向指示牌相同,因此每个端口应具有12mA的吸收电流能力。另外,人行道口按4个灯算需24mA的吸收电流。这样在单片机的输出喽需接驱动电路74HC244,以保护单片机的输出端口。图3-2所示为道口指示灯电路图。

图3-2  城市道口交通指示灯电路

3.3 时间显示模块

道口通行剩余时间采用高亮红色7断LED发光数码管显示,采用共阳数码管,如用单片机吸收电流驱动,列扫描驱动使用三极管,按每段6mA电流算,全显示字形“8”每个数码管6mA×8=48mA。由于时间显示每个道口相同,4组需192mA,因此设计中采用中功率三极管9012。由于单片机每个段码输出口需吸收24mA电流,因此在电路设计中也使用了驱动集成块74HC244.其显示驱动电路如图3-3。

图 3-3时间显示驱动电路

3.4 复位电路

3.5 时钟电路

时钟倒计时初值通过键盘输入。倒计时使用52单片机

内部定时器1实现计数,时钟控制部分是使用定时、计数器2

实现计时,以秒为基本单位在数码管中显示。时钟部分:当秒的

个位计时到了10,则秒个位清0,同时十位进一,以此类推;倒

计时部分显示是则递减显示。此过程通过判断语句实现。

4.软件设计

      道口交通控制系统程序主要分为以下几个模块:初始化程序、主程序、定时中断程序和特种车实时响应程序等。

4.1 初始化程序

    初始化程序主要完成内存规划,定时器的工作模式、中断方式等的设定。由于程序调用较多,因此初始化时堆栈指针设于80H处。定时器T0、T1设为16位定时器模式,定时时间为50ms,T0为妙计时用,T1为通行结束闪烁用。

4.2 主程序

   主程序主要负责总体程序管理功能,实现人机交互设定。由于采用动态扫描方式显示时间,因此主程序大部分时间要调用扫描显示程序。主程序流程图如4-1所示。

 

图4-1 主程序流程图

4.3 定时器中断服务程序

   定时中断服务程序主要用于行车及行人的通行指示,按照通行规则,红绿灯控制转换逻辑表如表4-1所示。    

表4-1道口通行方式控制码数据表

通行规则如下:

车辆南北直行、各路右拐,南北向行人通行。南北向通行时间为1min,各路右拐比直行滞后10s开放;车辆南北向左拐、各路右拐,行人禁行。通行时间为1min;车辆东西向直行、各路右拐,东西向行人通行。东西向通行时间为1min,各路右拐比直行滞后10s开放;车辆东西向左拐、各路右拐,行人禁行。通信时间为1min。

   交通灯的4种通行规则,是以给控制红绿灯端口送控制码的方式实现的。它的原理是,将按不同规则通行的个路口的红绿灯亮灭情况转换为单片机端口控制码。其指示灯功能通过T0定时中断服务程序实现。

   定时器T0定时益出中断周期设为50ms,中断累计20次(即1s)时对120s倒计时单元减1操作。设计中将4种通行规则分成几种不同的亮灯方式,通过查询秒倒计时单元的数据,实现在不同的时间段给控制端口送不同的控制数据码。控制码分为5个时间段:120~110s、110~70s、70~60s、60~10s、10~0s。交通管理定时功能程序流程图如图4-3所示。

图4-3 T0定时中断服务程序流程图

5.系统调试

根据系统设计方案,本系统的调试共分为三大部分:硬件调试,软件调试和软硬件联调。由于在系统设计中采用模块化设计,所以方便了对各电路功能模块的逐级测试,包括对交通灯通行方式功能的调试,行人通行指示功能调试,倒计时功能调试。单片机软件先在最小系统板上调试,确保工作正常之后,再与硬件系统联调。最后将各模块组合后在交道口模型上进行整体测试,使系统的所有功能得以实现。

5.1 硬件调试

交道口交通灯控制系统的电路板焊接工作量非常大,并且采用万用板,电路安装完成后,首先进行检查,即确认电路无虚焊,无短路,无断路,集成元件安装是否正确,之后进行电路功能模块的分级调试,根据电路功能逐级进行:
       ①通行方式功能调试:包括对四种通行方式控制调试,行人和行车方向指示灯调试  

②倒计时功能调试:数码管显示值调试  
③紧急情况手动控制功能调试:包括按键功能及规则调试                

5.2 软件调试

   本系统的软件系统很大,选用一般的仿真器对AT89S52进行调试。除了语法差错外,当确认程序没问题时,通过直接下载到单片机来调试。采取的是自下到上的调试方法,即单独调试好每一个模块,然后再连接成一个完整的系统,最后完成一个完整的系统调试。

5.3 软硬联调

 系统做好后,进行系统的完整调试。主要任务是检验实现的功能及其效果并校正数值。根据实测数据,逐步校正数据,使测量结果更准确。单片机软件先在最小系统板上调试,确保工作正常之后,再与硬件系统联调。
  

5.4 各模块调试

5.4.1 交通灯通行方式功能的调试:

显示倒计时采用3位LED数码管;左拐、右拐、直行及行人4组通行指示灯采用双色高亮发光二极管。接线繁琐,极易出错.检查二极管无故障,导线无断线,连线接头无互相搭联后可先写一个软件调试程序,依次检查东南西北方向的指示灯(发光二极管)是否点亮;若未点亮,则可能是连线接错.根据灯的亮灭情况依次查找直到电路正常工作为止。我们主要出现的是数码管不亮的问题,后来通过检查,为连接线接错。改正后数码管亮度也达到最佳了。

值得注意的是,南北方向、东南方向的指示灯要同时调试。设计中将4种通行规则分成几种不同的亮灯方式,分成5个时间段:120~110s、110~70s、70~60s、60~10s、10~0s。经过调试指示灯的亮灭符合控制要求。

5.4.2 紧急情况手动控制功能调试:

当按下手动开关时,南北方向和东西方向的红灯灭掉,绿灯亮起。则说明该模块符合要求。

6.设计总结

本系统以AT89S52单片机为核心,开发程序调试阶段采用W78E516B进行在线编程及修改,可大大加快调试速度。设计的交通灯可用于十字路口的车辆及行人的交通管理,显示采用3位7段数码管,可以很直观地显示红绿灯的开放和关闭的时间;设计中应用了两种倒计时显示方式,120s倒计时适用于车流量较大的大城市,60s倒计时可用于中小型城市。

在此次设计中,我们得到以下体会:

      这这次时钟计时器设计的过程让我进一步熟悉各种芯片、元器件的功能,将从书本上的知识应用于实践,使我对各种芯片有了更深刻的了解。经过这次试验我们又重新复习了各种电路如时钟电路、定时电路、LED显示电路的原理。在电路板排版的设计时,既要考虑到各芯片与元器件之间的连接,又要考虑排版的美观;在焊接方面,我们了解到焊接某些器件时,要先消去电烙铁上的静电,防止静电对芯片特别是放大器件造成伤害,焊接晶振、三极管等芯片时要快,防止持续高温损坏芯片。我们在焊接时争取一次性焊接成功,当焊接好时再去检查时非常困难,所以要非常的仔细。而且要焊实,不能出现虚焊的情况,但也不要使电路板受热太长时间,以免铜盘被焊掉;从中我们学习到了大家的团结是非常重要的,组里的每一个成员都是必不可少的,因此团结合作的精神是非常的重要的。

通过这次课程设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。

7.附录A:源程序

 以下是城市道口交通灯控制系统模型控制用汇编程序:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;          交通灯        ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

   TIME   EQU      50H          ;秒计数用

   TIMESFR EQU     51H          ;临时寄存器

   CONR5   EQU     52H          ;T11秒定时计数用

   TIMED0  EQU     55H          ;单向最大定时时间,直行开始,人行开始 120

   TIMED1  EQU     56H          ; 各路右转开始时间    110

   TIMED2  EQU     57H          ; 前行结束提醒     70

   TIMED3  EQU     58H          ; 前行结束,人行结束,左转开始 60

   TIMED4  EQU     59H          ; 左转结束提醒

   TIMED5  EQU     5AH          ; 左转结束

   TIMED6  EQU     5BH          ;

   TIMED7  EQU     5CH          ;

   SN     EQU      P1           ; 南北口

   EW     EQU      P2           ; 东西口

   SCAN   EQU      P3           ;扫描口

   LEDOUT   EQU      P0         ;段码口

   SNEWFLAG BIT    09H          ;东西口与南北口转换标志

;  按键在扫描口的最高位,按一下,全红灯,再按一下,恢复原状态

;

;  定时器T0、T1溢出周期为50MS,T0为秒计数用,

;

;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;           中断入口程序              ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

              ORG 0000H        ;程序执行开始地址

              LJMP      START  ;跳到标号START执行

              ORG 0003H        ;外中断0中断程序入口

              RETI             ;外中断0中断返回

              ORG 000BH        ;定时器T0中断程序入口

          LJMP      INTT0  ;跳至INTTO执行

              ORG 0013H        ;外中断1中断程序入口

          LJMP   INT11     ;外中断1中断返回,119.120中断

          ORG 001BH        ;定时器T1中断程序入口

          LJMP      INTT1

          ORG 0023H        ;串行中断程序入口地址

              RETI             ;串行中断程序返回

;

 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

 ;;           主 程 序                 ;;

 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

            START: MOV  SP,#80H

                   MOV   R0,#00H        ;清70H-7AH共11个内存单元

                   MOV   R7,#8FH        ;

       CLEARDISP:  MOV   @R0,#00H      ;

                   INC   R0             ;

                   DJNZ  R7,CLEARDISP   ;

                   MOV  TIMED0,#78H       ;单向最大定时时间,直行开始,人行开始 120

                   MOV  TIMED1,#6EH        ; 各路右转开始时间    110

                   MOV  TIMED2,#46H          ; 前行结束提醒     70

                   MOV  TIMED3,#3CH          ; 前行结束,人行结束,左转开始 60

                   MOV  TIMED4,#0AH          ; 左转结束提醒

                   CLR   SNEWFLAG            ;南北先通行标志位

                   MOV  TMOD,#11H      ;设T0、T1为16位定时器

                   MOV   TL0,#0B0H      ;50MS定时初值(T0计时用)

                   MOV   TH0,#3CH       ;50MS定时初值

                   MOV   TL1,#0B0H      ;50MS定时初值(T1闪烁定时用)

                   MOV   TH1,#3CH       ;50MS定时初值;

                   JB    SCAN.7,SSST  ;120秒管理

;以下为60秒管理

                LCALL  DL1MS

                LCALL  DL1MS

                LCALL  DL1MS

                JB      SCAN.7,SSST     ;干扰

                MOV  TIMED0,#60       ;单向最大定时时间,直行开始,人行开始60

                MOV  TIMED1,#55       ; 各路右转开始时间   55

                MOV  TIMED2,#35         ; 前行结束提醒    35

                MOV  TIMED3,#30        ; 前行结束,人行结束,左转开始 30

                MOV  TIMED4,#05         ; 左转结束提醒

      SSWAIT:   JNB   SCAN.7,SSWAIT

                 LCALL  DL1MS

                 LCALL  DL1MS

                 LCALL  DL1MS

                 JNB      SCAN.7,SSWAIT

 ;

      SSST:        MOV   TIME,TIMED0     ;120秒

                   LCALL TUNBCD

                   MOV   SN,#66H          ;

                   MOV   EW,#55H          ;

                   SETB  EA             ;总中断开放

                   SETB  PX1

                   SETB  EX1

                   SETB  ET0            ;允许T0中断

                   SETB  TR0            ;开启T0定时器

                   MOV   R4,#14H        ;1秒定时用初值(50MS×20)

                   MOV   CONR5,#20

           START1: LCALL DISPLAY        ;调用显示子程序

                  JNB    SCAN.7,KEYFUN     ;手动状态

                  SJMP  START1         ;P1.0口为1时跳回START1;

KEYFUN:         LCALL  DISPLAY

                LCALL  DISPLAY

                JB      SCAN.7,START1

                CLR     ET0

                CLR     TR0

                MOV     SN,#056H      ;全车道停,行人通

                MOV     EW,#056H      ;

                MOV     TIME,#00H     ;时间显示0

                LCALL   TUNBCD

  KEYWAIT:      LCALL   DISPLAY       ;

                JNB     SCAN.7,KEYWAIT    ;

  KEYY:         LCALL   DISPLAY       ;等待按键按下

                JB      SCAN.7,KEYY

                LCALL   DISPLAY

                JB      SCAN.7,KEYY

  KEYWAIT1:      LCALL   DISPLAY       ;

                JNB     SCAN.7,KEYWAIT1    ;

                MOV     TIME,TIMED0    ;从新开始计时初值

                LCALL   TUNBCD

                CLR   SNEWFLAG            ;南北先通行标志位

                SETB    TR0

                SETB    ET0

                AJMP    START1

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;           1秒计时程序              ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;T0中断服务程序

            INTT0: PUSH  ACC           ;累加器入栈保护

                   PUSH  PSW           ;状态字入栈保护

                   CLR   ET0           ;关T0中断允许

                   CLR   TR0           ;关闭定时器T0

                   MOV   A,#0B7H       ;中断响应时间同步修正

                   ADD   A,TL0         ;低8位初值修正

                   MOV   TL0,A         ;重装初值(低8位修正值)

                   MOV   A,#3CH        ;高8位初值修正

                   ADDC  A,TH0         ;

                   MOV   TH0,A         ;重装初值(高8位修正值)

                   SETB  TR0           ;开启定时器T0

                   DJNZ  R4, OUTT00    ;20次中断未到中断退出

                   MOV  R4,#14H       ;20次中断到(1秒)重赋初值

                   JB    SNEWFLAG, INT22

                   DEC   TIME

                   MOV   A,TIME

                   CJNE  A,TIMED1,LOOP11  ; 判断是否小于110秒

         LOOP11:   JC    LOOP22           ; 120-110

                   MOV   SN,#66H          ;   I

                   MOV   EW,#55H          ;   I

                   LJMP  OUTT0            ; 120-110

         LOOP22:   MOV   A,TIME

                   CJNE  A,TIMED2,LOOP33   ; 判断是否小于70秒

         LOOP33:   JC    LOOP44           ; 110-70

                   MOV   SN,#6AH          ;   I

                   MOV   EW,#59H          ;   I

                   LJMP  OUTT0            ; 110-70

         LOOP44:   MOV   A,TIME

                   CJNE  A,TIMED3,LOOP55    ; 判断是否小于60秒

         LOOP55:   JC    LOOP66           ; 70-60

                   MOV   20H,SN           ;

                   CPL   04H              ;

                   CPL   00H

                   MOV   SN,20H             ;   I

                   MOV   EW,#59H          ;   I

                   LJMP  OUTT0            ; 70-60

         LOOP66:   MOV   A,TIME

                   CJNE  A,TIMED4,LOOP77  ; 判断是否小于10秒

         LOOP77:   JC    LOOP88           ; 60-10

                   MOV   SN,#99H          ;   I

                   MOV   EW,#59H          ;   I

                   LJMP  OUTT0            ; 60-10

         LOOP88:   MOV   A,TIME

                   JZ    OUT88

                   MOV   20H,SN           ;

                   CPL   06H              ;

                   CPL   02H

                   MOV   SN,20H           ;

                   MOV   20H,EW

                   CPL   02H

                   MOV   EW,20H           ;   I

                   LJMP  OUTT0            ; 70-60

         OUT88:    MOV  TIME,TIMED0       ;120秒初值

                   CPL  SNEWFLAG

         OUTT0:    LCALL  TUNBCD     ;

        OUTT00:    POP  PSW              ;恢复状态字(出栈)

                   POP   ACC              ;恢复累加器

                   SETB  ET0              ;开放T0中断

                   RETI                   ;中断返回

;

  INT22:           DEC   TIME

                   MOV   A,TIME

                   CJNE  A,TIMED1,LOOP111 ; 判断是否小于110秒

         LOOP111:   JC    LOOP221         ; 120-110

                   MOV   EW,#66H          ;   I

                   MOV   SN,#55H          ;   I

                   LJMP  OUTT01           ; 120-110

         LOOP221:   MOV   A,TIME

                   CJNE  A,TIMED2,LOOP331 ; 判断是否小于70秒

         LOOP331:   JC    LOOP441         ; 110-70

                   MOV   EW,#6AH          ;   I

                   MOV   SN,#59H          ;   I

                   LJMP  OUTT01           ; 110-70

         LOOP441:   MOV   A,TIME

                   CJNE  A,TIMED3,LOOP551 ; 判断是否小于60秒

         LOOP551:   JC    LOOP661         ; 70-60

                   MOV   20H,EW           ;

                   CPL   04H              ;

                   CPL   00H

                   MOV   EW,20H           ;   I

                   MOV   SN,#59H          ;   I

                   LJMP  OUTT01           ; 70-60

         LOOP661:   MOV   A,TIME

                   CJNE  A,TIMED4,LOOP771  ; 判断是否小于10秒

         LOOP771:   JC    LOOP881          ; 60-10

                   MOV   EW,#99H           ;   I

                   MOV   SN,#59H           ;   I

                   LJMP  OUTT01            ; 60-10

         LOOP881:   MOV   A,TIME

                   JZ    OUT881

                   MOV   20H,EW           ;

                   CPL   06H              ;

                   CPL   02H

                   MOV   EW,20H           ;

                   MOV   20H,SN

                   CPL   02H

                   MOV   SN,20H           ;   I

                   LJMP  OUTT01           ; 70-60

         OUT881:    MOV  TIME,TIMED0      ;120秒初值

                   CPL  SNEWFLAG

         OUTT01:    LCALL  TUNBCD         ;

                    POP      PSW              ;恢复状态字(出栈)

                   POP   ACC               ;恢复累加器

                   SETB  ET0               ;开放T0中断

                   RETI                    ;中断返回

;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;           显示程序                  ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; 显示数据在70H-75H单元内,用六位LED共阳数码管显示,P0口输出段码数据,P2口作

; 扫描控制,每个LED数码管亮1MS时间再逐位循环。

          DISPLAY: MOV      R1,#70H       ;指向显示数据首址

                   MOV      R5,#0FEH      ;扫描控制字初值

             PLAY: MOV      A,R5          ;扫描字放入A

                   MOV      SCAN,A        ;从P2口输出

                   MOV      A,@R1         ;取显示数据到A

                   MOV      DPTR,#TAB     ;取段码表地址

                   MOVC     A,@A+DPTR     ;查显示数据对应段码

                   MOV      LEDOUT,A      ;段码放入P0口

       LOOP6:      LCALL    DL1MS         ;显示1MS

                   INC      R1            ;指向下一地址

                   MOV      A,R5          ;扫描控制字放入A

                   JNB      ACC.2,ENDOUT  ;ACC.5=0时一次显示结束

                   RL       A             ;A中数据循环左移

                   MOV      R5,A          ;放回R5内

                   MOV      LEDOUT,#0FFH

                   AJMP     PLAY              ;跳回PLAY循环

           ENDOUT: MOV          LEDOUT,#0FFH ;一次显示结束,P2口复位

                   MOV      SCAN,#0FFH       ;P0口复位

                   RET                       ;子程序返回

             TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,88H,0BFH

;共阳段码表          "0""1""2" "3""4""5""6""7" "8""9""不亮"“A”“-”

;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;           延时程序                  ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

;1MS延时程序,LED显示程序用

             DL1MS: MOV     R6,#14H

             DL1:   MOV     R7,#19H

             DL2:   DJNZ    R7,DL2

                    DJNZ    R6,DL1

                    RET

;

;

TUNBCD:   PUSH   ACC

          PUSH   PSW

          PUSH   B

          MOV     A,TIME           ;

          MOV     B,#100          ;

          DIV     AB              ;

          MOV     72H,A

          JNZ   JJ0

          MOV   72H,#0AH     ;最高位为零,不点亮

JJ0:      MOV   A,  B

          MOV   B,#10          ;

          DIV     AB

          MOV     71H,A

          JNZ   JJ1

          MOV   A,72H          ;次高位为0,先看最高位是否为不亮

          SUBB  A,#0AH  

          JNZ   JJ1

          MOV   71H,#0AH       ;最高位不亮,次高位也不亮

JJ1:      MOV   70H,B

          POP   B

          POP   PSW

          POP   ACC

          RET

;119L车中断程序;

INT11:    PUSH   ACC

          PUSH   PSW

          CLR   EX1

          CLR   ET0

          CLR   TR0

          MOV   SN,#055H       ; 全红灯

          MOV   EW,#055H       ;

          MOV   TIMESFR,TIME   ;保存道口数据

          MOV   TIME,#0FH

          MOV   CONR5,#20

          LCALL TUNBCD

          SETB  ET1

          SETB  TR1

;          SETB  EX1

          POP   PSW

          POP   ACC

          RETI

;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;           15秒计时程序              ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;T1中断服务程序

            INTT1: PUSH  ACC           ;累加器入栈保护

                   PUSH  PSW           ;状态字入栈保护

                   CLR   ET1           ;关T0中断允许

                   CLR   TR1           ;关闭定时器T0

                   MOV   A,#0B7H       ;中断响应时间同步修正

                   ADD   A,TL1         ;低8位初值修正

                   MOV   TL1,A         ;重装初值(低8位修正值)

                   MOV   A,#3CH        ;高8位初值修正

                   ADDC  A,TH1         ;

                   MOV   TH1,A         ;重装初值(高8位修正值)

                   SETB  TR1           ;开启定时器T0

                   DJNZ  CONR5, OUTT333;20次中断未到中断退出

                   MOV  CONR5,#14H    20次中断到(1秒)重赋初值

                   DEC   TIME

                   LCALL TUNBCD

                   MOV   A,TIME

                   JZ    OUT444

          OUTT333: SETB  ET1

                   POP   PSW

                   POP   ACC

                   RETI

            OUT444:CLR TR1

                   CLR ET1

                   MOV TIME,TIMESFR

                   LCALL TUNBCD

                   SETB  ET0

                   SETB  TR0

                   SETB  EX1

                   POP   PSW

                   POP   ACC

                   RETI

                   END                      ;程序结束


8.附录B:作品图片

                 9.参考资料

                            

【1】《单片机课程设计指导》楼然苗 李光飞编著 ;北京航空航天大学出版社。

【2】《单片机中级教程》—原理与应用(第2版)张俊谟编著;北京航空航天大学出版社。

【3】《电路设计与制版PROTEL99SE典型实例》王力,张伟 编著;

 北京人民邮电出版社。

【4】《毕业论文写作与范例》李炎清编著;厦门大学出版社。

【5】《单片机原理及接口技术》李朝青编著;北京航空航天大学出版社。

更多相关推荐:
交通灯控制电路设计报告

数字电路课程设计交通灯控制电路设计学院:信息科学技术学院班级:姓名:学号:20XX年4月26日一、设计任务1二、设计要求1三、设计要点1四、设计内容1五、主要芯片1六、设计方案1七、模块说明4(1)秒脉冲发生器…

交通灯控制设计实验报告

安徽科技学院数字电子技术课程设计设计报告设计题目交通灯控制设计班级网络工程121姓名丁俊杰学号成绩评阅人吕跃凤安徽科技学院理学院目录安徽科技学院数字电子技术课程设计报告一设计要求一设计指标二设计要求三制作要求四...

交通灯控制电路设计报告

课程设计大作业报告课程名称数字电子技术设计题目交通灯控制电路设计院系信息技术学院班级20xx计算机科学与技术2班设计者学号指导教师设计时间20xx122320xx1227信息技术学院1昆明学院课程设计大作业任务...

交通灯控制器电路设计报告

交通灯控制器电路设计报告一设计要求1设计一个十字路口的交通灯控制器先是绿灯亮25秒紧接着黄灯亮5秒紧接着红灯亮30秒依此顺序循环控制2用计算机画出设计电路图进行仿真分析验证其正确性3写设计说明书一份画总原理图以...

交通灯控制电路设计报告

华北科技学院数字电路设计报告交通灯控制电路设计报告目录一设计任务和要求2二设计方案的总体思路与选择31时钟信号发生器电路设计论证42定时器设计论证43控制器论证44信号灯的论证4三电路设计计算与分析51秒脉冲的...

交通灯控制电路的设计报告

一概述随着社会经济的发展城市交通问题越来越引起人们的关注人车路三者关系的协调已成为交通管理部门需要解决的重要问题之一交通灯通常指由红黄绿三种颜色灯组成用来指挥交通的信号灯绿灯亮时准许车辆通行黄灯亮时已越过停止线...

交通灯控制电路的设计(实验报告)

交通信号灯控制电路的设计一设计任务与要求1任务用红黄绿三色发光二极管作为信号灯设计一个甲乙两条交叉道路上的车辆交替运行且通行时间都为25s的十字路口交通信号灯并且由绿灯变为红灯时黄灯先亮5s黄灯亮时每秒钟闪亮一...

交通灯控制电路设计

钦州学院数字电子技术课程设计报告交通灯时间显示控制电路的设计院系物理与材料科学学院专业自动化过程控制自动化学生班级20xx级3班姓名雷思思学号0905404305指导教师单位钦州学院指导教师姓名张大平指导教师职...

交通灯控制逻辑电路设计实验报告

数字设计课程实验报告指导教员职称实验室实验日期1交通灯控制逻辑电路的设计与仿真实现一实验目的1熟悉Multisim仿真软件的主要功能和使用2熟悉各种常用的MSI时序逻辑电路的功能和使用3运用逻辑设计知识学会设计...

基于单片机控制交通灯电路设计毕业论文

六安职业技术学院毕业设计论文基于单片机控制的交通灯设计姓名学号班级应用电子1001指导教师所在系部二一三年六月毕业论文设计开题报告2毕业论文设计成绩评定3摘要目前国内十字路口的交通灯控制一般是定时切换控制的在当...

关于交通灯控制逻辑电路的设计报告

电子技术课程设计总结报告关于交通灯控制逻辑电路的设计报告1课程设计的意义和目的电子技术课是高等院校工科专业重要的技术基础课使电子应用技术中硬件知识的入门课程之一具有很强的实践性实践和课程设计是学习这门课的重要实...

数字电路基础_交通灯课程设计报告

三明学院数字电路课程设计报告书交通灯控制器学院名称学生姓名专业名称学号班三明学院林前程电子信息工程20xx06622282班级一设计题目交通灯控制器交通灯控制器是可以自动控制交通灯并以倒计时的方式显示出时间方便...

交通灯控制电路设计报告(28篇)