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

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

师大学 电气工程及自动化
实习报告
姓 名: 班 级: 学 号: 实习科目:单片机实训 指导教师: 实习时间:

智能交通信号灯
摘要
本设计是在熟练掌握单片机及其仿真系统使用方法基础上,综合应用单片机原理、微 机原理等课程方面的知识,设计一个采用 STC89C52 单片机控制的交通灯控制电路。该设计 结合实际情况给出了一种简单低成本城市交通灯控制系统的硬件及软件设计方案、各个路 口交通灯的状态循环显示,并对程序流程图进行详细讲解分析。交通在人们的日常生活中 占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。交通信号灯 的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有 明显效果。近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制 检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核 心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完 善。根据给出的要求设计交通灯东西、南北两干道交于一个十字路口各干道有一组红、 黄、绿三色的指示灯指挥车辆和行人安全通行。红灯亮禁止通行绿灯亮允许通行。黄灯亮 提示人们注意红、绿灯的状态即将切换且黄灯亮的时间为东西、南北两干道的公共停车时 间。
关键词:电子线路、STC89C52、交通灯

目录
第一章 引言.................................................................. 1 1.概述 ...................................................................... 1 2.设计目的 .................................................................. 4 3.设计要求 .................................................................. 4 4.实验原理 .................................................................. 4 第二章 芯片与元件............................................................ 5 1.MCU ....................................................................... 5 2.74HC573.................................................................... 6 3.led 数码管 ................................................................. 6 第三章 外围电路.............................................................. 6 1.单片机最小系统............................................................. 6 2.数码管显示电路............................................................. 7 3.12 位流水灯 ................................................................ 8 第四章 整体设计.............................................................. 8 1.交通控制系统总体设计....................................................... 8 2.单片机交通控制系统的基本构成及原理......................................... 8 3.系统软件程序的设计......................................................... 9 第五章 总结................................................................. 10 参考文献.................................................................... 11 附录 A 智能交通灯电路原理图 ................................................. 12 附录 B 智能交通灯汇编源程序 ................................................. 13

第一章 引言
1.概述
在城镇街道的十字交叉路口,为了保证交通秩序和行人安全,一般在每条 道路上各有一组红黄绿信号灯。其中红灯亮,表示该条道路禁止;黄灯亮表示 该条道路上未过停车线的车辆停止通行,已过停车线的车辆继续通行;绿灯亮 表示该条道路允许通行。交通灯控制电路自动控制十字路口红黄绿交通灯的状 态转换,指挥各种车辆和行人安全通行,实现十字路口交通管理的自动化。
2.设计目的
2.1 通过本次课程设计进一步熟悉和掌握单片机的结构及工作原理,巩固和加 深“单片机原理与应用”课程的基本知识,掌握电子设计知识在实际中的简单 应用。 2.2 综合运用“单片机原理与应用”课程和先修课程的理论及生产实际知识去 分析和解决电子设计问题,进行电子设计的训练。 2.3 学习电子设计的一般方法,掌握 STC89C52 芯片以及简单电子设计过程和 运行方式,培养正确的设计思想和分析问题、解决问题的能力,特别是总体设 计能力。 2.4 通过计算和绘制原理图、布线图和流程图,学会运用标准、规、手册、图 册和查阅有关技术资料等,培养电子设计的基本技能。 2.5 通过完成一个包括电路设计和程序开发的完整过程,了解开发单片机应用 系统全过程,为今后从事的工作打基础。
3.设计要求
3.1 利用单片机的定时器定时,实现道路的红绿灯交替点亮和熄灭。 3.2 以 STC89C52 单片机为核心,设计一个十字路口交通灯控制系统。用单片 机控制 LED 灯模拟交通信号灯显示。假定东西、南北方向方向通行(绿灯)时 间为 30 秒,缓冲(黄灯)时间 5 秒,停止(红灯)时间 30 秒。 3.3 南北方向、东西方向车道除了有红、黄、绿灯指示外,每一种灯亮的时间 都用显示器进行显示(采用倒计时的方法)。
4.实验原理
4.1 基本原理

主体电路:交通灯自动控制模块。这部分电路主要由 80C51 单片机的 I/O 端口、定时计数器等组成。
本设计先是从普通三色灯的指示开始进行设计,用 P1 口作为输出。程序 的初始化是东西南北方向的红灯全亮。然后南北方向红灯亮,东西方向绿灯 亮,60 秒后东西方向黄灯闪亮 5 秒后南北方向绿灯亮,东西方向红灯亮。重复 执行。倒计时用到定时器 T0,用 P2 口作为 LED 的显示。二位一体的 LED 重复 执行 60 秒的倒计时。作为突发事件的处理,本设计主要用到外部中断 EX0。用 一模拟开关作为中断信号。实际中可以接其它可以产生中断信号的信号源。
第二章 芯片与元件
1.MCU:STC89C52 是一种低功耗、高性能 CMOS 8 位微控制器,具有 8K 系统 可编程 Flash 存储器。高密度非易失性存储器技术制造,与工业 80C51 产品指 令和引脚完全兼容。片上 Flash 允许程序存储器在系统可编程,亦适于常规编 程器。在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使得 STC89C52 在众多嵌入式控制应用系统中得到广泛应用。 主要性能: ①与 MCS-51 单片机产品兼容; ②8K 字节在系统可编程 Flash 存储器; ③1000 次擦写周期; ④全静态操作:0Hz-33MHz; ⑤三级加密程序存储器; ⑥32 个可编程 I/O 口线; ⑦三个 16 位定时器/计数器; ⑧8 个中断源; ⑨全双工 UART 串行通道; ⑩低功耗空闲和掉电模式; ?掉电后中断可唤醒;

?看门狗定时器; ?双数据指针; ?掉电标识符。 2.74HC573:74HC573 包含八进制 3 态非反转透明锁存器,是一种高性能硅门 CMOS 器件。当锁存使能端 LE 为高时,这些器件的锁存对于数据是透明的(也 就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被 锁存。主要功能:三态总线驱动输出、置数全并行存取、缓冲控制输入、使能 输入有改善抗扰度的滞后作用。 3.led 数码管:led 数码管(LED Segment Displays)由多个发光二极管封装 在一起组成“8”字型的器件,引线已在部连接完成,只需引出它们的各个笔 划,公共电极。数码管实际上是由七个发光管组成 8 字形构成的,加上小数点 就是 8 个。这些段分别由字母 a,b,c,d,e,f,g,dp 来表示。
第三章 电路设计
1.单片机最小系统:STC89C52 单片机最小系统主要由电源、复位、振荡电路 三个部分组成。最小系统原理图如图 3.1 所示。
图 3.1 51 单片机最小系统版
2. 数码管显示电路:由 8 位共阴 LED 数码管即驱动芯片 74HC573 组成,单片

机控制两片锁存器是使能端,通过不停打开关闭使能端达到单片机一个 8 位 I/O 口控制 8 位数码管显示的效果。数码管显示电路如图 3.2 所示。
图 3.2 数码管显示电路
3.12 位 LED 灯:由 12 个 LED 小灯排列起来,加上限流电阻就组成了 12 位交 通灯。12 位流水灯的阴极接在单片机的 I/O 端口,以灌电流输进单片机从而驱 动 LED。交通 LED 灯的原理图如图 3.3 所示。

图 3.3 12 位 LED 灯
第四章 整体设计
1.交通控制系统总体设计
设在十字路口,分为东西向和南北向,在任一时刻只有一个方向通行,另 一方向禁行。共有 4 种状态,这 4 种状态如下,周而复始,循环变化。 4 个状态归纳如下: ⑴.南北方向红灯亮,倒计时 30s 同时东西方向绿灯亮,倒计时 30s,此状态 下,南北方向禁止通行,东西方向直行。 ⑵.南北方向黄灯亮,倒计时 5s,同时东西方向红灯亮,倒计时 30s,此状态 下,除了已经正常在通行的车辆外其他车辆禁止通行。 ⑶.南北方向绿灯亮,倒计时 30s,同时东西方向红灯亮,倒计时 30s,此状态 下,南北方向车辆可以直行。 ⑷.南北绿灯亮,倒计时 30s,东西黄灯亮,倒计时 5s。

2.单片机交通控制系统的基本构成及原理
单片机设计交通灯控制系统,可用单片机直接控制信号灯的状态变化,基 本上可以指挥交通的具体通行,当然,接入 LED 数码管就可以显示倒计时以提 醒行使者,更具人性化。本系统在此基础上,加入了紧急情况处理与时间调整 功能。据此,本设计系统以单片机为控制核心,连接成最小系统,由按键设置 模块产生输入,信号灯状态模块,LED 倒计时模块模块接受输出。系统的总体 框图如图 4.1 所示。单片机上电后,系统进入正常工作状态,执行交通灯状态 显示控制,同时将时间数据倒计时输入到 LED 数码管上实时显示。在此过程中 随时调用急停按键和时间调节中断。
数码管显示
复位电路
STC89C52
晶振电路
红黄绿信号灯 图 4.1 交通灯系统框图
3.系统软件程序的设计
全部控制程序实际上分为若干模块:键盘设置处理程序,状态灯控制程 序,LED 显示程序紧停程序,中断服务子程序等。
整个软件程序方面主要分两大部分:主程序部分和中断处理程序。流程图 如图 4.2 所示。具体程序见附录 2。

开始 南北红灯亮,东西绿灯亮
30s倒计时 南北东西同时黄灯亮
5s倒计时 南北绿灯亮,东西红灯亮
30s倒计时 南北东西同时黄灯亮
5s倒计时
图 4.2 交通灯软件程序流程图
第五章 总结
通过这三周的单片机实训,我对51单片机有了很深入的了解,从汇编程序 一行行的敲写与硬件电路搭建,最终将他们看做一个整体一个系统,从系统的 角度来设计单片机的整体框架。
这次智能交通灯的整体系统设计,起到了理论结合实践的学习效果,也感 学校学院为我们搭建的单片机实训室,也在此感兴奎老师在这次实训中对我的 指导和帮助!

参考文献
[1] 鑫.单片机原理及应用(第2版).:电子工业.2010.10 [2] 海宽.包建华.兴奎.:东南大学.2009.1 [3] 广弟等.单片机基础 [M].:航空航天大学, 2010 [4] 靖武等.单片机系统PROTEUS设计与仿真[M].:电子工业, 2007.
智能交通灯电路原理图:
附录 A

附录 B 智能交通灯汇编源程序:
/*********************************************************/

//功能:交通灯 //说明:使用 74HC573 驱动共阴数码管;红绿灯各 30s,黄灯 5s //作者:勇 /*********************************************************/
DEYADDR EQU 40H;延时计数个数定义 DULA bit P2.6;段选引脚定义 WELA bit P2.7;位选引脚定义 SMGDU EQU 51H;数码管段值 TIMCTR EQU 52H;定时计数值 LIGHTCTR EQU 53H;交通灯计时状态计数值 SN_NUM EQU 54H;南北倒计时显示值 EW_NUM EQU 55H;东西倒计时显示值
main: BACK:
ORG 0000H
LJMP main
ORG 000BH;定时器 0 的中断入口地址
LJMP T0_SER;跳到定时器 0 的中断服务函数
ORG 001BH;定时器 1 的中断入口地址
LJMP T1_SER;跳到定时器 1 的中断服务函数
ORG 0030H
MOV SP,#60H;初始化堆栈指针
MOV TIMCTR,#00H; //以下几行为数据初始化
MOV LIGHTCTR,#00H; //
MOV SMGDU,#00H;
//
MOV SN_NUM,#30;
//
MOV EW_NUM,#30;
//
CLR A;
//
LCALL T01_INIT;定时器 0 初始化
MOV A,TIMCTR;读出当前计数值
CJNE A,#20,BACK;若计数值达到 20,则计时到 1s,往下执行
;否则,继续等待,知道加到 1s
MOV TIMCTR,#0;清定时计数值,重新计数
MOV A,LIGHTCTR;//读出交通灯计时状态计数值
CJNE A,#0,Q1;如果相等,继续执行,否则,判断下一个
MOV P1,#0FEH;南北红灯亮

MOV P3,#0FBH;东西绿灯亮
MOV SN_NUM,#30;南北倒计时显示值给 30s
MOV EW_NUM,#30;东西倒计时显示值给 30s
LJMP Q5;LIGHTCTR 继续加 1
Q1:
CJNE A,#30,Q2;如果相等,继续执行,否则,判断下一个
MOV P1,#0FDH;南北黄灯亮
MOV P3,#0FEH;东西红灯亮
MOV SN_NUM,#5;南北倒计时显示值给 30s
MOV EW_NUM,#30;东西倒计时显示值给 30s
LJMP Q5;LIGHTCTR 继续加 1
Q2:
CJNE A,#35,Q3;如果相等,继续执行,否则,判断下一个
MOV P1,#0FBH;南北绿灯亮
MOV P3,#0FEH;东西红灯亮
MOV SN_NUM,#30;南北倒计时显示值给 30s
LJMP Q5;LIGHTCTR 继续加 1
Q3:
CJNE A,#60,Q4;如果相等,继续执行,否则,判断下一个
MOV P1,#0FBH;南北绿灯亮
MOV P3,#0FDH;东西黄灯亮
MOV EW_NUM,#5;东西倒计时显示值给 5s
LJMP Q5;LIGHTCTR 继续加 1
Q4:
CJNE A,#65,Q5;如果相等,继续执行,否则,判断下一个
MOV LIGHTCTR,#0;LIGHTCTR 重新计数
LJMP BACK;
Q5:
MOV A,SN_NUM;//南北灯倒计时,即 SN_NUM 每秒减 1
DEC A;
//
MOV SN_NUM,A;//
MOV A,EW_NUM;//东西灯倒计时,即 EW_NUM 每秒减 1
DEC A;
//
MOV EW_NUM,A;//
MOV A,LIGHTCTR;//交通灯计时状态计数值加 1
INC A;
//
MOV LIGHTCTR,A;//
LJMP BACK;

SHOW_SN:
MOV A,SN_NUM;读取南北灯倒计时 MOV B,#10;十位放 A 中,各位放 B 中 DIV AB;高位在 A 中,低位在 B 中 //南北灯倒计时的高位显示(计数值 0~99s) MOV DPTR,#TABLE; MOVC A,A+DPTR;取出数码管的编码 MOV P0,A;数字送 P0,数码管显示 SETB DULA;开段选送数 CLR DULA;关段选 MOV P0,#0FDH;南北灯倒计时的高位显示 SETB WELA;开位选送数 CLR WELA;关位选 MOV DEYADDR,#2;延时 xms,改变该数可改变数码管扫描的速度 LCALL deyxms;延时一会,动态显示 //南北灯倒计时的低位显示 MOV DPTR,#TABLE; MOV A,B;十位放 A 中,各位放 B 中 MOVC A,A+DPTR;取出数码管的编码 MOV P0,A;数字送 P0,数码管显示 SETB DULA;开段选送数 CLR DULA;关段选 MOV P0,#0FEH;南北灯倒计时的低位显示 SETB WELA;开位选送数 CLR WELA;关位选 MOV DEYADDR,#2;延时 xms,改变该数可改变数码管扫描的速度 LCALL deyxms;延时一会,动态显示 RET
SHOW_EW:
MOV A,EW_NUM;读取东西灯倒计时 MOV B,#10;十位放 A 中,各位放 B 中 DIV AB;高位在 A 中,低位在 B 中 //东西灯倒计时的高位显示(计数值 0~99s) MOV DPTR,#TABLE;

MOVC A,A+DPTR;取出数码管的编码 MOV P0,A;数字送 P0,数码管显示 SETB DULA;开段选送数 CLR DULA;关段选 MOV P0,#0F7H;东西灯倒计时的高位显示 SETB WELA;开位选送数 CLR WELA;关位选 MOV DEYADDR,#1;延时 xms,改变该数可改变数码管扫描的速度 LCALL deyxms;延时一会,动态显示 //南北灯倒计时的低位显示 MOV DPTR,#TABLE; MOV A,B;十位放 A 中,各位放 B 中 MOVC A,A+DPTR;取出数码管的编码 MOV P0,A;数字送 P0,数码管显示 SETB DULA;开段选送数 CLR DULA;关段选 MOV P0,#0FBH;东西灯倒计时的低位显示 SETB WELA;开位选送数 CLR WELA;关位选 MOV DEYADDR,#1;延时 xms,改变该数可改变数码管扫描的速度 LCALL deyxms;延时一会,动态显示 RET
T01_INIT:
MOV TMOD,#11H;方式 1,16 位定时器 MOV TH0,#3CH;T0 65535-50000=3CAFH,即 50ms 触发中断 MOV TL0,#0AFH; MOV TH1,#0D8H;T1 65535-10000=D8EFH,即 10ms 触发中断 MOV TL1,#0EFH; SETB EA;开总中断 SETB ET0;开定时器 0 中断 SETB ET1;开定时器 1 中断 SETB TR0;启动定时器 0 SETB TR1;启动定时器 1 RET

T0_SER:
PUSH ACC;//保存数据
PUSH PSW;//
MOV TH0,#3CH;重装初值
MOV TL0,#0AFH;
MOV A,TIMCTR;//TIMCTR 里的计数值加 1
INC A;
//
MOV TIMCTR,A;//
POP PSW;//弹出数据
POP ACC;//
RETI
T1_SER:
//每 10ms 刷新一次数码管显示 CLR TR1;关定时器 1,防止延时函数执行时跳入中断造成干扰 PUSH ACC;//保存数据 PUSH PSW;// MOV TH1,#0D8H;重装初值 MOV TL1,#0EFH; LCALL SHOW_SN;//南北灯倒计时数码管显示 LCALL SHOW_EW;//东西灯倒计时数码管显示 POP PSW;//弹出数据 POP ACC;// SETB TR1;重新打开定时器 1 中断 RETI
//延时函数
deyxms: MOV 42h,#4
;40h,41h,42h 用于延时
delay : MOV 41h,#191
NOP
NOP
DJNZ 41h,$
DJNZ 42h,delay
DJNZ DEYADDR,deyxms ;DEYADDR 里存延时参数 x 延时 1*x ms
RET
TABLE: DB 3fh,06h,5bh,4fh,66h,6dh,7dH,07h//数码管显示的编码

DB 7fh,6fh,77h,7ch,39h,5eh,79h,71h END
实习(设计)成绩评定表
班级 12 电 51

学号 12285027
1、实习(设计)名称:
单片机实训
2、实习(设计)题目:
智能交通灯的设计
3、实习(设计)时间:自 2014 年 12 月 15 日 至 2015 年 01 月 04 日

4、实习(设计)地点:12#405A
5、主要容简述: (1)车辆通行繁忙的十字交叉路口,设计一交通灯控制 器,设计南北方向通行时间为 30 秒,5 秒黄灯,东西方向通行时间 30 秒,5 秒黄灯。(2)南北、东西方向各用三个(红、黄、绿)LED 表示,并用数码 管显示南北、东西方向的剩余时间。 6、指导教师评语:
7、指导小组复评意见:
8、成绩:
指导教师签名: 年月日
指导小组组长签名: 年月日
教研室主任签名: 年月日

相关主题
相关文档
最新文档