您的当前位置:首页正文

基于51单片机的交通灯设计

2024-08-28 来源:步旅网
 -

课程设计报告

课程名称: 单片机原理及应用课程设计 系 部: 电气与信息工程学院 专业班级: 学生姓名: 指导教师: 完成时刻: 报告成绩:

评阅意见:

评阅教师 日期 1

-

目 录

No table of contents entries found.

交通灯控制系统设计

一、 设计题目

交通灯控制系统设计

二、 设计要求

(1)设计一个十字路口的交通灯控制电路,要求当东西方向为红灯,此道车辆禁止

通行,东西道行人可通过;南北道为绿灯,此道车辆通过,行人禁止通行。时刻为60秒。

(2)黄灯闪烁5秒,警示车辆和行人红、绿灯的状态即将切换。 (3)当东西方向为绿灯,此道车辆通行;南北方向为红灯,南北道车辆禁止通过,

行人通行。时刻为80秒。 东西方向车流大 通行时刻长。

(4)东西、南北方向车道除有红、绿、黄三色指示灯外,每一种灯亮的显示时刻都

用显示器进行显示,采用计时的方式设计。

三、 设计作用与目的

最近几年来随着科技快速的进展,单片机的应用正在不断地走向深切,同时带动传统检测日新月异更新。在实验检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来利用,针对具体应用对象的特点,配以其他器件来家以完善,伴随人口的日趋增加,那么十字路口

车辆穿梭,如何才能让交通井然有序呢?靠的就是交通信号的自动指挥系统。信号灯的出现,使交通得以有效的管制,对于交通流量、提高道路通行能力,减少交通事故有明显的效果。绿灯是通行信号,面对绿灯信号的车辆能够直行,左拐弯和右拐弯,除非另一

2

-

种禁止转向。

左右转弯车辆都必需让正在路口内直行的车辆和过人行横道行人优先通行。红灯是禁止信号面对红灯的车辆必需停车。黄灯 是警告信号,面对黄灯信号的车辆不呢么好越过安全停车线,可是车辆十分接近停车线而不能安全停车时能够进入交叉路口。本系统采用MSC-51系列单片机来设计交通灯控制器,实现各个方向车辆、行人通行功能,另外还设计了倒计时显示。同时还具有南北、东西方向强制通行的功能。

城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的运算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部份。十字路口的红绿灯指挥着行人和车辆的安全运行,实现红绿灯的自动指挥能使交通管理工作取得改善,也是城市交通管理工作自动化的重要标志之一。所以,改善与提高现有的交通系统的效率已成为当务之急,而提高交通控制系统的效率更是重中之重。

四、所用设备和软件

PC机、Proteus 7 Professional、Keil uVision4

五、 系统设计方案

系统设计总结构框图

键盘设置时间参数 单 片 LED显示时间

红外对管检测信

号输入 LED灯闪烁 机 红外报警及记录车流量 图1 系统设计总结构框图

单片机交通灯控制系统可分为四个模块,这四个模块别离是单片机控制模块、LED灯闪烁模块、时刻显示模块、键盘控制模块。通过各模块之间的彼此能够实现交通灯的控制和显示功能。其模块图如图1所示。

系统设计芯片选择

3

-

本设计采用AT89C52单片机芯片来控制交通灯电路,80C52单片机包括中央处置器、程序存储器(ROM)、数据存储器(RAM)、按时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,该单片机。具有以下特点: (1)高集成度,体积小,高靠得住性 (2)控制功能强

(3)低电压,低功耗,便于生产便携式产品 (4)易扩展

(5)优良的性能价钱比 (6)具有全双工串行通信接口 其引脚图如图2所示:

图2 AT89C52引脚图

六、 系统硬件设计

单片机的最小系统设计

4

-

单片机的最小系统由51芯片、置位复位电路、时钟电路等组成。交通控制系统的最小系统如图3所示:

图3 交通控制系统最小系统

各单元电路设计

一、时钟电路部份

时钟电路用于产生MCS-51单片机工作时所必需的时钟控制信号。其内部电路在时钟信号控制下,严格地按时序执行指令进行工作。在执行指令时,CPU第一要到程序存储器中掏出需要执行的指令操作码,然后译码,并由时序电路产生一系列控制信号去完成指令所规定操作。

本设计采用12MHz晶振和两个33Pf瓷片电容,他们组成一个稳固的自激振荡器。该电容的大小影响振荡器频率的高低、振荡器的稳固性和起振的快速性。为单片机提供标准时钟。其中两个瓷片电容起微调作用。其时钟电路如图4所示:

5

-

图4 时钟电路

二、复位电路部份

复位是单片微机的初始化操作,其主要功能是把PC初始化为0000H,使单片微机从0000H单元开始执行程序。除进入系统的正常初始化之外,当由于程序运行犯错或操作错误使系统处于死锁状态时,为摆脱窘境,能够按复位键以从头启动,也能够通过监视按时器来强迫复位。RST引脚是复位信号的输入端。复位电路在这里采用的是上电+按钮复位电路形式,具体连接电路如图5所示:

图5 复位电路

3、显示部份电路设计

6

-

LED显示器有两中工作方式:静态显示方式和动态显示方式。

静态显示的特点是每一个数码管必需接一个8位锁存器用来锁存待显示的字型码。送入一次字型码显示自行一直维持,直到送入新字型码为止。这种方式的长处是占用CPU时刻少,显示便于监测和控制。缺点是硬件电路比较复杂,本钱较高。各数码管在显示进程中持续取得显示信号,与各数码管接口的I/O口是专用的。动态显示的特点是将所有位数码管的段选线并联在一路,由位选线控制是哪一名数码管有效。如此一来,就没有必要每一名数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向列位数码管送出字形码和相应的位选,利用发光管的余晖和人眼视觉暂留作用,令人的感觉恍如列位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。各数码管在显示进程中轮流取得显示信号,与各数码管接口的I/O口是共用的。其图如图6所示:

图6 显示部份电路

7

-

4、按键部份电路设计

按键控制电路用于接收外部中断和接收输入信号,并控制程序运行。其图如图8 所示:

图8 按键部份电路

七、 系统软件设计

主程序流程设计

8

-

开始

初始化

设定初值

红灯倒计时

Y 红高电平?

N N 倒计时完?

Y 黄灯闪5S

绿灯倒计时

Y 红高电平?

N N 倒计时完?

Y 黄灯闪5S

结束

报警3S 检测车流量 图9 程序设计流程图

9

-

子程序设计

一、显示子程序流程图如图10所示:

显示程序入口 判断工作情况 正 常 紧急并可修改 调用数码管 显示 调用数码管 显示

显示程序结束 图10 显示子程序流程图

二、中断子程序流程图如图11所示:

中断服务入口

进行相应服务 检查系统状态

中断结束返回 图11 中断子程序流程图

3、按时器中断服务子程序流程图如图12所示:

10

-

定时器中断入口 重赋定时器初值 计数以统计时间 中断结束 图 12 按时器中断服务程序流程图 各延时程序设计

一、每秒钟的设定

延时方式能够有两种一中是利用MCS-51内部按时器才生溢出中断来肯定1秒的时刻,另一种是采用软延时的方式。 二、计数器的硬件延时 计数器初值计算:

按时器工作时必需给计数器送计数器初值,那个值是送到TH和TL中的。他是以加法记数的,并能从全1到全0时自动产生溢出中断请求。因此,咱们能够把计数器记满为零所需的计数值设定为C和计数初值设定为TC 可取得如下计算通式: TC=M-C

式中,M为计数器摸值,该值和计数器工作方式有关。在方式0时M为213 ;在方式1时M的值为216;在方式2和3为28; 计算公式: T=(M-TC)T计数 或TC=M-T/T计数

11

-

T计数是单片机时钟周期TCLK的12倍;TC为按时初值 如单片机的主脉冲频率为TCLK12MHZ ,通过12分频 方式0 TMAX=213 *1微秒=毫秒 方式1 TMAX=216 *1微秒=毫秒

显然1秒钟已经超过了计数器的最大按时刻,所以咱们只有采用按时器和软件相结合的办法才能解决那个问题。 1秒的方式:

咱们采用在主程序中设定一个初值为20的软件计数器和使T0按时50毫秒.如此每当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,CPU先使软件计数器减1,然后判断它是不是为零。为零表示1秒已到能够返回到输出时刻显示程序。 相应程序代码: (1)主程序

计数

按时器需按时50毫秒,故T0工作于方式1。初值:TC=M-T/ T50ms/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 ;等待中断

(2)中断服务子程序

ORG 000BH AJMP BRTO ORG 00BH BRTO:DJNZ R0,NEXT

AJMP TIME ; 跳转到时刻及信号灯显示子程序 DJNZ:MOV R0,#14H;恢复R0值

12

=216-

-

MOV TH0, #3CH ;重装入按时器初值 MOV TL0, #BOH; MOV IE, #82H

RET1

END 3、软件延时

MCS-51的工作频率为2-12MHZ,咱们选用的8031单片机的工作频率为6MHZ。机械周期与主频有关,机械周期是主频的12倍,所以一个机械周期的时刻为12*(1/6M)=2us。咱们能够明白具体每条指令的周期数,如此咱们就可以够通过指令的执行条数来肯定1秒的时刻。

具体的延时程序分析:

DELAY:MOV R4,#08H 延时1秒子程序 DE2:LCALL DELAY1 DJNZ R4,DE2 RET

DELAY1:MOV R6,#0 延时125ms 子程序 MOV R5,#0 DE1: DJNZ R5,$ DJNZ R6,DE1 RET

MOV Rn,#DATA 字节数数为2 机械周期数为1 所以此指令的执行时刻为2ms

DELAY1 为一个双重循坏 循环次数为256*256=65536 所以延不时刻=65536*2=131072us 约为125us

DELAY R4设置的初值为8 主延时程序循环8次,所以125us*8= 1秒 由于单片机的运行速度专门快其他的指令执行时刻能够忽略不计。

八、 实验调试结果

本实验采用PROTEUS来仿真电路图,第一对PROTEUS进行介绍:

Proteus 是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows

13

-

操作系统上,能够仿真、分析(SPICE)各类模拟器件和集成电路,该软件的特点是:

①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各类虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

②支持主流单片机系统的仿真。目前支持的单片机类型有:ARM7(LPC21xx)、 8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列和多种外围芯片。

③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时能够观察各个变量、寄放器等的当前状态,因此在该软件仿真系统中,也必需具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision二、MPLAB等软件。

④具有壮大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极为壮大。

仿真图如图13、14所示:

图13 交通灯设计电路仿真图

14

-

图14 交通灯设计电路仿真图

九、 设计中的问题及解决办法

在设计和调试电路的时候碰着了很多麻烦,比如说Proteus的利用,Keil的利用等等,在同窗和老师的帮忙下,问题迎刃而解,而且我学到很多宝贵的知识,让我对Proteus和Keil软件的操作更熟悉。

15

-

十、 设计心得

本系统充分应用了8051和8255芯片的I/O引脚。本系统采用MCS-51系列单片机Intel8051和可编程并行I/O接口芯片8255A为中心器件来设计交通灯控制器,实现了能够按照车流量通过8031芯片的P1口设置红、绿灯燃亮时刻的功能。红绿灯循环点亮,倒计时5S时黄灯闪烁警示(交通信号灯通过PA口输出,显示时刻直接通过8255的PC口输出至双位数码管)。车辆闯红灯报警。绿灯时刻可检测车流量并通过双位数码管显示。

通过这次设计,是我对专业知识有了更进一步的熟悉和提高,让我对单片机有了更全面的了解,对编程和设计有了更多新的观点:微型运算机技术在很多工业生产和日常生活中应用普遍,固然在运算机领域中更有举足轻重的作用。这次设计为往后成为合格的创新型应用人材打下了结实的基础。

本文能够得以完成,超级感激我的指导老师,她的渊博知识和在治学进程中表现出来的严谨态度使我深受鼓舞,给予我极大的指导和帮忙,在此向老师表示衷心的感激!

同时感激一直在我身旁帮忙我的同窗,在我有疑问时给予了很多帮忙,同窗们的热情让我在挫折眼前不断前行,咱们常常一路讨论问题并从中一路进步,获益良多。在此向列位同窗表示衷心的感激!

本次课设要感激学院的安排,让咱们在学习讲义知识的同时,能够有如此的机缘实践。感激班干们的工作,为咱们省去了很多的麻烦。同时在课程设计进程中我还参考了有关的书籍与论文,在这里一并向有关的作者表示谢意。

16

-

十一、参考文献

1、曾屹主编 单片机原理与应用 中南大学出版社 2、彭楚武主编 微机原理与接口技术 湖南大学出版社 3、张一斌 余建坤主编 单片机原理课程设计 中南大学出版社 4、何立民著 单片机应用系统设计 北京航空航天大学出版社

5、孙育才主编 MCS-51系列单片微型运算机及其应用 东南大学出版社 6、丁元杰主编 单片机原理与应用 机械工业出版社 7、张迎新主编 单片机中级教程 北京航空航天大学出版社 8、苏家键等编 单片机原理与应用技术 高等教育出版社

17

-

十二、源程序代码

ORG 0000H ;主程序的入口地址

LJMP MAIN ;跳转到主程序的开始处

ORG 0003H ;外部中断0的中断程序入口地址 ORG 000BH ;按时器0的中断程序入口地址 LJMP T0_INT ;跳转到中断服务程序处

ORG 0013H ;外部中断1的中断程序入口地址 MAIN : MOV SP,#50H

MOV IE,#8EH ;CPU开中断,允许T0中断,T1中断和外部中断1中断 MOV TMOD,#51H ;设置T1为计数方式,T0为按时方式,且都工作于模式1 MOV TH1,#00H ;T1计数器清零 MOV TL1,#00H

SETB TR1 ;启动T1计时器 SETB EX1 ;允许INT1中断 SETB IT1 ;选择边沿触发方式 MOV DPTR ,#0003H MOV A, #80H MOVX @DPTR, A //ST0:MOV P3 ,#0F0H

AGAIN: JB ,N0 ;判断是不是要设定东西方向红绿灯时刻的初值,若为1 则跳转 MOV A,P1

JB ,RED ;判断是不是为1,若为1则设定红灯时刻,不然设定绿灯时刻 MOV R0,#00H ;R0清零

MOV R0,A ;存入东西方向绿灯初始时刻 MOV R3,A LCALL DISP1 LCALL DELAY AJMP AGAIN

18

-

RED: MOV A,P1

ANL A,#7FH ;置0 MOV R7,#00H ;R7清零

MOV R7,A ;存入东西方向红灯初始时刻 MOV R3,A LCALL DISP1 LCALL DELAY AJMP AGAIN

;------------------------------------------- N0: SETB TR0 ;启动T0计时器 MOV 76H,R7 ;红灯时刻存入76H

N00: MOV A,76H ;东西方向禁止,南北方向通行 MOV R3,A

MOV DPTR,#0000H ;东西方向红灯亮,南北方向绿灯亮

MOV A,#0DDH

MOVX @DPTR, A N01: JB ,B0 N02: SETB

CJNE R3,#00H,N01 ;比较R3中的值是不是为0,不为0转到当前指令处执行 ;------黄灯闪烁5秒程序------ N1: SETB MOV R3,#05H

MOV DPTR,#0000H ;东西,南北方向黄灯亮 MOV A,#0D4H MOVX @DPTR,A N11: MOV R4,#00H

N12: CJNE R4,#7DH,$ ;黄灯持续亮秒 N13: MOV DPTR,#0000H ;南北方向黄灯灭 MOV A,#0DDH MOVX @DPTR,A

19

-

N14: MOV R4,#00H

CJNE R4,#7DH,$ ;黄灯持续灭秒

CJNE R3,#00H,N1 ;闪烁时刻达5秒则退出

;------------------------------------------------------------ N2: MOV R7,#00H

MOV A,R0 ;东西通行,南北禁止 MOV R3,A

MOV DPTR,#0000H ;东西方向绿灯亮,南北方向红灯亮 MOV A,#0EBH MOVX @DPTR,A N21: JB ,T03

N22: CJNE R3,#00H,N21 ;------黄灯闪烁5秒程序------ N3: MOV R3,#05H

MOV DPTR,#0000H ;东西,南北方向黄灯亮 MOV A,#0E2H MOVX @DPTR,A N31: MOV R4,#00H

CJNE R4,#7DH,$ ;黄灯持续亮秒 N32: MOV DPTR,#0000H ;南北方向黄灯灭 MOV A,#0EBH

MOVX @DPTR,A N33: MOV R4,#00H

CJNE R4,#7DH,$ ;黄灯持续灭秒 CJNE R3,#00H,N3 ;闪烁时刻达5秒则退出 SJMP N00

;------闯红灯报警程序------

B0: MOV R2,#03H ;报警持续时刻3秒 B01: MOV A,R3

JZ N1 ;若倒计时完毕,再也不报警

20

-

CLR ;报警

CJNE R2,#00H,B01 ;判断3秒是不是结束 SJMP N02 ;------1秒延时子程序------- N7: RETI

T0_INT:MOV TL0,#9AH ;给按时器T0送按时10ms的初值 MOV TH0,#0F1H INC R4 INC R5

CJNE R5,#0FAH,T01 MOV R5,#00H DEC R3 DEC R2 T01: ACALL DISP RETI ;------显示子程序------ DISP: JNB ,T02 DISP1: MOV B,#0AH

MOV A,R3 DIV AB MOV 79H,A MOV 7AH,B

DIS: MOV A,79H MOV DPTR,#TAB MOVC A,@A+DPTR MOV DPTR,#0002H MOVX @DPTR,A MOV DPTR,#0001H MOV A,#0F7H MOVX @DPTR,A

21

;判断延时是不是够一秒,不够则挪用显示子程序 ;R5清零 ;倒计时初值减一 ;报警初值减一 ;挪用显示子程序 ;中断返回 ;R3中值二转十显示转换 ;显示十位 -

LCALL DELAY

DS2: MOV A,7AH ;显示个位 MOV DPTR,#TAB MOVC A,@A+DPTR MOV DPTR,#0002H MOVX @DPTR,A MOV DPTR,#0001H MOV A,#0FBH MOVX @DPTR,A RET

;------东西方向车流量检测程序------ T03: MOV A,R3

SUBB A,#00H ;若绿灯倒计时完毕,再也不检测车流量 JZ N3 JB ,T03

INC R7 CJNE R7,#64H,E1

MOV R7,#00H ;中断到100次则清零 E1: SJMP N22

;------东西方向车流量显示程序------ T02: MOV B,#0AH

MOV A,R7 ;R7中值二转十显示转换 DIV AB MOV 79H,A MOV 7AH,B

DIS3: MOV A,79H ;显示十位 MOV DPTR,#TAB MOVC A,@A+DPTR MOV DPTR,#0002H MOVX @DPTR,A

22

-

MOV DPTR,#0001H MOV A,#0F7H MOVX @DPTR,A LCALL DELAY

DS4: MOV A,7AH ;显示个位 MOV DPTR,#TAB MOVC A,@A+DPTR MOV DPTR,#0002H MOVX @DPTR,A MOV DPTR,#0001H MOV A,#0FBH MOVX @DPTR,A LJMP N7

;------延时4MS子程序---------- DELAY: MOV R1,#0AH LOOP: MOV R6,#64H NOP

LOOP1: DJNZ R6,LOOP1 DJNZ R1,LOOP RET ;------字符表------

TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

END

十三、电路图

23

-

24

因篇幅问题不能全部显示,请点此查看更多更全内容