单片机课程设计交通灯.docx

上传人:b****1 文档编号:1620219 上传时间:2023-05-01 格式:DOCX 页数:18 大小:98.74KB
下载 相关 举报
单片机课程设计交通灯.docx_第1页
第1页 / 共18页
单片机课程设计交通灯.docx_第2页
第2页 / 共18页
单片机课程设计交通灯.docx_第3页
第3页 / 共18页
单片机课程设计交通灯.docx_第4页
第4页 / 共18页
单片机课程设计交通灯.docx_第5页
第5页 / 共18页
单片机课程设计交通灯.docx_第6页
第6页 / 共18页
单片机课程设计交通灯.docx_第7页
第7页 / 共18页
单片机课程设计交通灯.docx_第8页
第8页 / 共18页
单片机课程设计交通灯.docx_第9页
第9页 / 共18页
单片机课程设计交通灯.docx_第10页
第10页 / 共18页
单片机课程设计交通灯.docx_第11页
第11页 / 共18页
单片机课程设计交通灯.docx_第12页
第12页 / 共18页
单片机课程设计交通灯.docx_第13页
第13页 / 共18页
单片机课程设计交通灯.docx_第14页
第14页 / 共18页
单片机课程设计交通灯.docx_第15页
第15页 / 共18页
单片机课程设计交通灯.docx_第16页
第16页 / 共18页
单片机课程设计交通灯.docx_第17页
第17页 / 共18页
单片机课程设计交通灯.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机课程设计交通灯.docx

《单片机课程设计交通灯.docx》由会员分享,可在线阅读,更多相关《单片机课程设计交通灯.docx(18页珍藏版)》请在冰点文库上搜索。

单片机课程设计交通灯.docx

单片机课程设计交通灯

智能交通灯控制器

一、选题背景

交通信号灯的出现,使交通得以有效管制,对于疏导交通流量,提高道路通行能力,减少交通事故有明显效果。

如何采用合适的控制方法,最大限度利用好耗费巨资修建的城市高速道路,缓解主干道与匝道、城区同周边地区的交通拥堵状况,越来越成为交通运输管理和城市规划部门亟待解决的主要问题。

随着电子技术的发展,利用计算机技术对交通灯进行智能化管理,已成为目前广泛采用的方法。

1.设计一个十字口的交通灯控制电路,要求主车道和干道两条交叉道路上的车辆交替运行,每次通行时间都设为主干道25s,次道路20s;

2.要求黄灯先亮5s,才能变换运行车道;

3.黄灯亮时,要求每秒钟闪亮一次;

4.倒数秒数显示;

5.当有特殊情况需要紧急通行时,可对红绿灯进行人为控制。

以上是目前常用路口交通信号灯的控制功能,为了演示效果,这里采用三种颜色的发光二极管来模拟交通信号灯。

二、设计与分析

从设计所要完成的任务与要求来看,显示通行时间必须用二位数码管,从节省硬件资源的角度考虑,可采用扫描的方式来处理,对于7段数码管,占用7个单片机的I/O口,另外设置两个电子开关对2位显示进行配合,占用2个I/O端口,十字路口共需4组红绿灯,加上转换黄灯,一共是12只灯,须用12个端口进行控制,加上两个方向上的紧急通行按键,占2个I/O端口,因此实际占用的单片机I/O端口为24个,为此,我们可以选用51系列单片机中的AT89c51来作为中央处理器。

这款单片机的I/O端口作为输出时,具有较大的电流吸收能力,因此我们可以选用共阳极数码管,这样由单片机的I/O口

就可以直接驱动,能简化硬件电路的设计。

经以上分析,我们设计出这款智能交通控制器的电路原理图

三、电路原理图:

电源部分电路图

四、原理框图如下:

 

 

 

 

 

主程序流程图

五、程序如下:

;以下程序完成各脚的预定义

QREQUP1.3;前红灯

QYEQUP1.1;前黄灯

QGEQUP1.2;前绿灯

HREQUP2.2;后红灯

HYEQUP2.0;后黄灯

HGEQUP2.1;后绿灯

ZREQUP1.4;左红灯

ZYEQUP1.5;左黄灯

ZGEQUP1.6;左绿灯

YREQUP2.5;右红灯

YYEQUP2.4;右黄灯

YGEQUP2.3;右绿灯

SWITCH1EQUP2.7;

SWITCH2EQUP2.6;

DATEQU60H;显存

ORG0000H

LJMPSTART

ORG0003H

LJMPD_X;外部中断0,东西向紧急按键

ORG000BH

RETI;

ORG0013H

LJMPN_B;外部中断1,南北向紧急按键

ORG001BH

RETI

ORG0023H

RETI

ORG0040H;定位

START:

MOVTCON,#5H;外部中断为下降沿触发

SETBEX0;

SETBEX1;开外部中断

SETBEA;开总中断

;IO口初始化

MOVP0,#0FFH

MOVP1,#0FFH;

MOVP2,#0FFH;

MOVP3,#0FFH;

MOVDAT,#25H;

AUTCLK:

MOVP1,#0FFH;

MOVP2,#0FFH;

MOVDAT,#25H;写入每一通路的通行时间

CLRQG;南北向绿灯亮

CLRHG;

CLRZR;东西向红灯亮

CLRYR;

MOVA,DAT;

MOVR2,#20;写入时间值

A1:

MOVR1,#220;

A2:

ACALLBCD;BCD调整

ACALLDISPCLK;显示

ACALLDEL1MS;延时

ACALLDEL1MS;

ACALLDEL1MS;

DJNZR1,A2;

MOVA,DAT;完成数字的减1操作

ADDA,#99H;

DAA;

MOVDAT,A;调整好的数字送显存

DJNZR2,A1;

;最后5秒黄灯闪

MOVP1,#0FFH;

MOVP2,#0FFH;关所有灯

CLRZY;黄灯亮

CLRYY;

CLRQY;

CLRHY;

MOVR2,#5;

A3:

MOVR1,#220;

A4:

ACALLBCD;

ACALLDISPCLK;

ACALLDEL1MS;

ACALLDEL1MS;

ACALLDEL1MS;

DJNZR1,A4;

CPLQY;南北向绿灯亮

CPLHY;

CPLZY;东西向红灯亮

CPLYY;

MOVA,DAT;

ADDA,#99H;

DAA;

MOVDAT,A;

DJNZR2,A3;

;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

MOVP1,#0FFH;

MOVP2,#0FFH;

MOVDAT,#20H;

CLRZG;东西向绿灯亮

CLRYG;

CLRQR;南北向红灯亮

CLRHR;

MOVA,DAT;

MOVR2,#15;执行15秒

A5:

MOVR1,#220;

A6:

ACALLBCD;BCD调整

ACALLDISPCLK;显示

ACALLDEL1MS;

ACALLDEL1MS;

ACALLDEL1MS;

DJNZR1,A6;

MOVA,DAT;

ADDA,#99H;减1操作

DAA;

MOVDAT,A;

DJNZR2,A5;

;最后5秒黄灯闪

MOVP1,#0FFH;

MOVP2,#0FFH;关所有灯

CLRZY;黄灯亮

CLRYY;

CLRQY;

CLRHY;

MOVR2,#5;

A7:

MOVR1,#220;

A8:

ACALLBCD;

ACALLDISPCLK;

ACALLDEL1MS;

ACALLDEL1MS;

ACALLDEL1MS;

DJNZR1,A8;

CPLQY;南北向绿灯亮

CPLHY;

CPLZY;东西向红灯亮

CPLYY;

MOVA,DAT;

ADDA,#99H;

DAA;

MOVDAT,A;

DJNZR2,A7;

AJMPAUTCLK;

NOP;

NOP;

NOP;

LJMPSTART

;;*********************************

;;显示子程序

;;**********************************

DISPCLK:

MOVDPTR,#TAB;定入表头

;显示个位

MOVA,50H;

MOVCA,@A+DPTR;

MOVP0,A;

CLRSWITCH2;

LCALLDEL1MS;

SETBSWITCH2;

;显示十位

MOVA,51H;

MOVCA,@A+DPTR;

MOVP0,A;

CLRSWITCH1;

LCALLDEL1MS;

SETBSWITCH1;

RET;

NOP;

NOP;

NOP;

LJMPSTART

;************************************************************

;横向道路紧急中断程序

;************************************************************

D_X:

CLREA;关总中断

JNBP3.2,$;

MOVA,DAT;保存显示数据

MOV20H,A;

MOVDAT,#50H;

MOV21H,P1;

MOV22H,P2;

MOVP1,#0FFH;

MOVP2,#0FFH;

CLRZG;东西向绿灯亮

CLRYG;

CLRQR;南北向红灯亮

CLRHR;

MOVR4,#50;

D1:

MOVR3,#220;

D2:

ACALLBCD;

ACALLDISPCLK;

ACALLDEL1MS;

ACALLDEL1MS;

ACALLDEL1MS;

DJNZR3,D2;

MOVA,DAT;

ADDA,#99H;

DAA;

MOVDAT,A;

DJNZR4,D1;

MOVA,20H;恢复显示数据

MOVDAT,A;

MOVP2,22H;

MOVP1,21H;

SETBEA;开总中断

RETI;中断返回

NOP;

NOP;

NOP;

AJMPSTART;

;************************************************************

;纵向道路紧急中断程序

;************************************************************

N_B:

CLREA;关总中断

JNBP3.3,$;

MOVA,DAT;保存显示数据

MOV20H,A;

MOVDAT,#50H;

MOV21H,P1;

MOV22H,P2;

MOVP1,#0FFH;

MOVP2,#0FFH;

CLRQG;南北向绿灯亮

CLRHG;

CLRZR;东西向红灯亮

CLRYR;

MOVR4,#50;

N1:

MOVR3,#220;

N2:

ACALLBCD;

ACALLDISPCLK;

ACALLDEL1MS;

ACALLDEL1MS;

ACALLDEL1MS;

DJNZR3,N2;

MOVA,DAT;

ADDA,#99H;

DAA;

MOVDAT,A;

DJNZR4,N1;

MOVA,20H;恢复显示数据

MOVDAT,A;

MOVP2,22H;

MOVP1,21H;

SETBEA;开总中断

RETI;中断返回

NOP;

NOP;

NOP;

AJMPSTART;

;********************************************************

BCD:

;将显存中的数字分分两个BCD码存于50H和51H单元中,用于显示十位和个位

MOVA,DAT;

MOVB,#10H

DIVAB

MOV51H,A;写入分十位

MOVA,B

MOV50H,A;写入分个位

RET

NOP

NOP

NOP

LJMPSTART

;数码表

TAB:

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH

RET

NOP

NOP

NOP

LJMPSTART

 

;*****************************

;延时子程序

;12M晶振

;*****************************

DEL1MS:

MOVR6,#28

DEL1MS1:

MOVR7,#19

DEL1MS2:

DJNZR7,DEL1MS2

DJNZR6,DEL1MS1

RET

NOP

NOP

NOP

LJMPSTART

END

六、仿真结果:

1.仿真开始时南北向绿灯亮,东西向红灯亮,同时数码管显示从25s开始进行倒计时,过20s后,剩余5s红绿灯都不亮,转为四个方向的黄灯,每隔一秒亮一次,5s完成后,即主干道通行25s。

开始转向为南北向红灯亮东西向绿灯亮,同时数码管显示从20s开始计时,过15s后,剩余5s红绿灯都不亮,转为四个方向的黄灯,每隔一秒亮一次,5s完成后,即次干道通行20s。

2.当有紧急情况发生时,可人为控制某一路的通断,如南北向有紧急情况,可人为按下SB2按钮,此时南北向绿灯亮,东西向红灯亮,数码管显示从50s开始倒计时,即给主干道通行时间增加到了50s,以缓解交通压力。

如东西向(次干道)有紧急情况,可人为按下SB1按钮,下面情况与上面主干道情况类似。

3.关于数码管的显示问题,此例是用两个PNP型三极管来当作开关管来用,用以控制哪个数码的亮与灭。

数码管选用共阳型。

七、心得体会:

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2