基于51单片机的交通灯控制系统.docx

上传人:b****7 文档编号:9520457 上传时间:2023-02-05 格式:DOCX 页数:19 大小:188.15KB
下载 相关 举报
基于51单片机的交通灯控制系统.docx_第1页
第1页 / 共19页
基于51单片机的交通灯控制系统.docx_第2页
第2页 / 共19页
基于51单片机的交通灯控制系统.docx_第3页
第3页 / 共19页
基于51单片机的交通灯控制系统.docx_第4页
第4页 / 共19页
基于51单片机的交通灯控制系统.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

基于51单片机的交通灯控制系统.docx

《基于51单片机的交通灯控制系统.docx》由会员分享,可在线阅读,更多相关《基于51单片机的交通灯控制系统.docx(19页珍藏版)》请在冰豆网上搜索。

基于51单片机的交通灯控制系统.docx

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

单片机实习报告

题目:

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

姓名:

卢凯龙李尚昆戴光杰

学号:

331720333171201847129

专业:

机械设计制造及其自动化

班级:

机制71/72班

学院:

工学院

指导教师:

吕成绪职称:

2010年12月21日

南京农业大学教务处制

一、引言

当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。

大多红绿灯由红绿黄三色圆形投光器组成:

“红”灯表示“停止”,“黄”灯表示“注意”,“绿”灯表示“通行”。

本电路设计了一个简易的交通灯控制系统,利用51单片机的定时器产生秒信号,控制十字路口的红绿黄灯交替点亮和熄灭,并且用2只LED数码管显示十字路口两个方向的剩余时间。

并运用按键设置两个方向的通行时间(绿灯点亮的时间)和暂缓通行时间(黄灯点亮的时间),使系统的工作符合一般交通灯控制要求。

二、系统结构与分析

1、单片机最小系统

如图使用12M晶振,电路低电平复位。

2、交通灯显示系统

南北向和东西向各采用2个数码管计时,对该方向的指示灯的点亮时间进行倒计时,最长计时范围为99秒。

设计时利用单片机的P0口和P2口作为字段和片选信号输出,经驱动芯片后驱动数码管显示倒计时时间,数码管采用动态扫描方式显示。

交通灯管理方案:

往南和往北的信号一致,即红灯(绿灯或黄灯)同时亮或同时熄灭。

用两个数码管来显示被点亮的指示灯还将点亮多久。

往东和往西方向的信号一致,其工作方式与南北方向一样,也采用两个数码管来倒计时。

当南北方向为绿灯和黄灯时,东西向的红灯点亮禁止通行;而东西方向为绿灯和黄灯时,南北向的红灯点亮禁止通行。

设南北方向为主干道,通行时间为60秒,东西方向是次干道,通行时间为30秒,黄灯点亮的时间均为4秒。

交通灯显示电路图:

3、按键系统

设置3个程序按键:

设置键、增加键、减少键,因键盘使用频率很小,建议采用查询方式来读取键盘。

另需配置一个非程序按键:

系统复位键。

本系统的工作流程:

接通电源时或系统复位后,系统按程序给定的时间工作,即南北向通行60秒,东西向通行30秒,黄灯亮4秒。

首先南北向通行,然后东西向通行,如此循环。

通行时间的设置:

当需要更改主、次干道的通行时间时,可以用“设置键、增加键、减少键”进行设置。

第一次按“设置键”时,南北向的绿灯亮,南北向的数码管显示当前南北向的通行时间,并且按每秒3次的频率闪烁(每秒钟亮3次暗3次),其余的信号指示灯和东西向的数码管熄灭,此时可以用“增加键”和“减少键”来改变南北向的通行时间。

按一次“增加键”或“减少键”,数码管的显示时间增加1秒或减小1秒,长按“增加键”或“减少键”(按下的时间超过1秒钟以上),则数码管显示的时间按每秒钟增加或减少10的速度快速变化。

第二次按“设置键”时,南北向的黄灯亮,南北向的数码管显示当前南北向黄灯的点亮时间,并且按每秒3次的频率闪烁(每秒钟亮3次暗3次),其余的信号指示灯和东西向的数码管熄灭,此时可以用“增加键”和“减少键”来改变南北向黄灯的点亮时间。

第三次按“设置键”时,东西向的绿灯亮,东西向的数码管显示当前东西向的通行时间,并且按每秒3次的频率闪烁,此时可以用“增加键”和“减少键”来改变东西向的通行时间。

第四次按“设置键”时,东西向的黄灯亮,东西向的数码管显示当前东西向黄灯的点亮时间,并且按每秒3次的频率闪烁,此时可以用“增加键”和“减少键”来改变东西向黄灯的点亮时间。

第五次按“设置键”时,系统退出设置状态,回到交通信号灯状态,并且南北向先通行,东西向后通行。

按键处电路图:

4、电路总图及电路图分析

电路应用单片机的定时器产生秒信号,通过P1口及相应程序控制红黄绿灯交替点亮和熄灭。

数码管显示电路中,用上拉电阻驱动数码管,用单片机的I/O口控制数码管的段选和位选。

三、电路程序设计

1、程序代码及功能一览表:

程序代码

功能简介

STAR

完成东西,南北绿,黄灯的初值设定

MAIN系列

数码管位选寄存器的选定,定时器T0的设置,东西,南北红灯的初值设定完成交通灯按照设定的时间依次点亮。

SWITCH,LOOP系列

完成将十六进制数转化成(通过查表)数码管能是别的代码,并完成数码管的段选数据和位选数据放入指定的寄存器或内存。

其中1系列是原始时的情况,2系列是设置时的情况。

DISP

数码管的显示

AD

完成加一或加十

SU

完成减一或减十

REL系列

设置键的功能子程序,REL1是设置键按一下,REL2是设置键按两下。

依次类推。

Q系列

协助完成加,减运算的简单的跳转,循环。

Z系列

由于跳转范围超过128个字节,用于缓跳

DEL系列

延时子程序,DEL1延时10ms,DEL2延时160ms

2、汇编程序代码:

ORG0000H

STAR:

MOV20H,#3CH;南北绿灯时间初值

MOV21H,#04H;南北黄灯时间初值

MOV22H,#1EH;东西绿灯时间初值

MOV23H,#04H;东西黄灯时间初值

MAIN:

MOV24H,#0FEH;南北个位位选

MOV25H,#0FDH;南北十位位选

MOV51H,#0FBH;东西个位位选

MOV52H,#0F7H;东西十位位选

MOVTMOD,#01H;定时器T0工作方式1

MOVTL0,#0BFH

MOVTH0,#63H;T0的初始值(40ms)

MOVIE,#00H;禁止中断

CLRTF0;溢出位置0

MOVR6,#25;产生1秒所需中断次数(25次)

SETBP3.0

MOVA,20H

ADDA,21H

MOV26H,A;东西红灯初值放26H单元

MOVA,22H

ADDA,23H

MOV27H,A;南北红灯初值放27H单元

MOVR3,#0F3H;南北绿灯亮,东西红灯亮

MOV31H,20H;时间减计数

MOV2AH,20H;南北数码管显示初值送2AH单元

MOV2BH,26H;东西数码管显示初值送2BH单元

MAIN1:

MOVTL0,#0BFH

MOVTH0,#63H

CLRTF0;溢出位置0

SETB8CH;启动定时器T0

JNBTF0,$

LCALLLOOP1;调用显示程序

DJNZR6,MAIN1

MOVR6,#25

LCALLSWITCH1;调用数码管数据转换程序

DJNZ31H,MAIN1

MOVR3,#0F5H;南北黄灯亮,东西红灯亮

MOV31H,21H

MOV2AH,21H

MAIN2:

MOVTL0,#0BFH

MOVTH0,#63H

CLRTF0;溢出位置0

SETB8CH;启动定时器T0

JNBTF0,$

LCALLLOOP1;调用显示程序

DJNZR6,MAIN2

MOVR6,#25

LCALLSWITCH1;调用数码管数据转换程序

DJNZ31H,MAIN2

MOVR3,#0DEH;南北红灯亮,东西绿灯亮

MOV2AH,27H

MOV31H,22H

MOV2BH,22H

MAIN3:

MOVTL0,#0BFH

MOVTH0,#63H

CLRTF0;溢出位置0

SETB8CH;启动定时器T0

JNBTF0,$

LCALLLOOP1

DJNZR6,MAIN3

MOVR6,#25

LCALLSWITCH1;调用数码管数据转换程序

DJNZ31H,MAIN3

MOVR3,#0EEH;南北红灯亮,东西黄灯亮

MOV31H,23H

MOV2BH,23H

MAIN4:

MOVTL0,#0BFH

MOVTH0,#63H

CLRTF0;溢出位置0

SETB8CH;启动定时器T0

JNBTF0,$

LCALLLOOP1;调用显示程序

DJNZR6,MAIN4

MOVR6,#25

LCALLSWITCH1;调用数码管数据转换程序

DJNZ31H,MAIN4

AJMPMAIN

SWITCH1:

JNBP3.0,REL;检测设置键是否按下

DEC2AH

DEC2BH

MOVA,2AH;南北数码管显示初值送A

MOVB,#0AH

DIVAB;除以10取十位与个位

MOVDPTR,#0300H

MOVCA,@A+DPTR;查表取十位显示码

MOVR1,A;十位显示码存在R1里

MOVA,B

MOVCA,@A+DPTR;查表取个位显示码

MOVR2,A;个位显示码存在R2里

MOVA,2BH;东西数码管显示初值送A

MOVB,#0AH

DIVAB

MOVDPTR,#0300H

MOVCA,@A+DPTR;查表取十位显示码

MOV45H,A

MOVA,B

MOVCA,@A+DPTR;查表取个位显示码

MOV44H,A

RET

LOOP1:

MOVA,R2;南北数码管个位给A

MOVR4,24H;南北数码管个位位选给R4

ACALLDISP;调用显示子程序

MOVA,R1;南北数码管十位给A

MOVR4,25H;南北数码管十位位选给R4

ACALLDISP;调用显示子程序

MOVA,44H;东西数码管个位给A

MOVR4,51H

ACALLDISP

MOVA,45H;东西数码管十位给A

MOVR4,52H

ACALLDISP

MOVA,R3

MOVP1,A;信号灯控制从P1口输出

RET

SWITCH2:

MOVB,#0AH;用于设置时的数码管数据转换子程序

DIVAB

MOVDPTR,#0300H

MOVCA,@A+DPTR

MOVR1,A;需要显示的十位

MOVA,B

MOVCA,@A+DPTR

MOVR2,A;需要显示的个位

LOOP2:

MOVA,R2

MOVR4,24H

ACALLDISP

MOVA,R1

MOVR4,25H

ACALLDISP

MOVA,R3

MOVP1,A

RET

DISP:

MOVR0,#0FFH;显示子程序

MOVR5,A

DISP1:

MOVA,R4

MOVP2,A

MOVA,R5

MOVP0,A

DJNZR0,DISP1;延时显示时间,增加亮度

RET

Z1:

LJMPSWITCH1;由于跳转范围超过128个字节,用于缓跳

Z2:

LJMPMAIN;由于跳转范围超过128个字节,用于缓跳

REL:

MOVR7,#00H;设置子程序

MOV60H,20H

SJMPDEL0

BUF1:

CJNER7,#01H,BUF2

MOV20H,60H;保存修改后的值

SJMPDEL0

BUF2:

CJNER7,#02H,BUF3

MOV21H,60H;保存修改后的值

SJMPDEL0

BUF3:

CJNER7,#03H,BUF4

MOV22H,60H;保存修改后的值

SJMPDEL0

BUF4:

CJNER7,#04H,Z2

MOV23H,60H;保存修改后的值

DEL0:

LCALLDEL1;若按下,则延时10MS

JBP3.0,Z1;去抖动

JNBP3.0,$;检测设置键是否释放

INCR7

MOV30H,#30;规定时间内(10s)没有键按下的循环计数

CJNER7,#01H,REL2

REL1:

MOV24H,#0FEH;设置键按一下子程序

MOV25H,#0FDH

MOVR3,#0FBH;南北绿灯亮

MOVA,20H;显示初值送累加器

LCALLSWITCH2;调用数据转化及显示子程

MOVA,#0FFH

MOVP2,A;数码管闪烁

LCALLDEL2;延时160ms

MOVA,20H

MOV60H,20H

MOV70H,#99;数码管可以显示的最大者

JNBP3.0,BUF1;检测设置键是否按下

JNBP3.1,AD;检测增加键是否按下

JNBP3.2,Z3;检测减少键是否按下

DJNZ30H,REL1

LJMPSTAR;若10S没有任何键按下,跳回主程序

REL2:

MOV70H,#9

MOV30H,#30

CJNER7,#02H,Z4;设置键按两下子程序

MOV24H,#0FEH

MOV25H,#0FDH

MOVR3,#0FDH;南北黄灯亮

MOVA,21H;显示初值送累加器

LCALLSWITCH2;调用数据转化及显示子程序

MOVA,#0FFH

MOVP2,A;数码管闪烁

LCALLDEL2;延时160ms

MOVA,21H

MOV60H,21H

JNBP3.0,BUF1;检测设置键是否按下

JNBP3.1,AD;检测增加键是否按下

JNBP3.2,Z3;检测减少键是否按下

DJNZ30H,REL2;若10S没有任何键按下,跳回主程序

LJMPSTAR

Z3:

LJMPSU;由于跳转范围超过128个字节,用于缓跳

Z4:

LJMPREL3

AD:

LCALLDEL1;延时10ms

JBP3.1,SU;去抖动

MOV30H,#30

MOV4AH,#6;用于检查是否有持续按下计数(6次)1s

Q1:

LCALLDEL2;延时160ms

JBP3.1,Q2

DJNZ4AH,Q1;检测是否持续按下

MOVA,#0AH

ADDA,60H;若持续按下,则每次加10

MOV60H,A

SJMPQ3

Q2:

INC60H;不是持续按下,每次加1

Q3:

MOVA,60H;判断是否超过99

SUBBA,70H

JNCQ4;若超过,跳到Q4

MOVA,60H

LCALLSWITCH2

MOVA,#0FFH

MOVP2,A;数码管闪烁

LCALLDEL2

MOVA,60H

JNBP3.0,Z6;检测设置键是否按下

JNBP3.1,AD;检测增加键是否按下

JNBP3.2,SU;检测减少键是否按下

DJNZ30H,Q3

LJMPSTAR;若10S没有任何键按下,跳回主程序

Q4:

MOV5AH,#30

Q5:

MOVA,70H;最大计数值99给数码管(之后只能减或停止设置)

MOV60H,70H

LCALLSWITCH2

MOVA,#0FFH

MOVP2,A;数码管闪烁

LCALLDEL2;延时160ms

JNBP3.0,Z6;检测设置键是否按下

JNBP3.2,SU;检测减少键是否按下

DJNZ5AH,Q5

LJMPSTAR;若10S没有任何键按下,跳回主程序

SU:

LCALLDEL1;延时10s

JBP3.2,Z6;去抖动

MOV30H,#30

MOV4AH,#6

Q6:

LCALLDEL2;延时160ms

JBP3.2,Q7

DJNZ4AH,Q6;检测是否持续按下

MOVA,60H

SUBBA,#0AH;若持续按下,则每次减10

MOV60H,A

SJMPQ8

Q7:

DEC60H;若不是持续按下,每次减1

Q8:

MOVA,60H

JCZ5;若低于0,跳回主程序

LCALLSWITCH2

MOVA,#0FFH

MOVP2,A;数码管闪烁

LCALLDEL2;延时160ms

JNBP3.0,Z6;检测设置键是否按下

JNBP3.1,Z7;检测增加键是否按下

JNBP3.2,SU;检测减少键是否按下

DJNZ30H,Q8;若10S没有任何键按下,跳回主程序

LJMPSTAR

Z7:

LJMPAD;由于跳转范围超过128个字节,用于缓跳

Z6:

LJMPBUF1

Z5:

LJMPMAIN

REL3:

MOV70H,#99;设置键按三下子程序

MOV30H,#30

CJNER7,#03H,REL4

MOV24H,#0FBH

MOV25H,#0F7H;字位口送相应单元

MOVR3,#0DFH;东西绿灯亮

MOVA,22H

LCALLSWITCH2

MOVA,#0FFH

MOVP2,A;数码管闪烁

LCALLDEL2;延时160s

MOVA,22H

MOV60H,22H

JNBP3.0,Z8;检测设置键是否按下

JNBP3.1,Z9;检测增加键是否按下

JNBP3.2,SU;检测减少键是否按下

DJNZ30H,REL3;若10S没有任何键按下,跳回主程序

LJMPSTAR

Z8:

LJMPDEL0;由于跳转范围超过128个字节,用于缓跳

REL4:

MOV70H,#9

MOV30H,#30

CJNER7,#04H,REL5

MOV24H,#0FBH

MOV25H,#0F7H

MOVR3,#0EFH;东西黄灯亮

MOVA,23H

LCALLSWITCH2

MOVA,#0FFH

MOVP2,A;数码管闪烁

LCALLDEL2;延时160s

MOVA,23H

JNBP3.0,Z8;检测设置键是否按下

MOV60H,23H

JNBP3.1,Z9;检测增加键是否按下

JNBP3.2,Z10;检测减少键是否按下

DJNZ30H,REL4;若10S没有任何键按下,跳回主程序

LJMPSTAR

Z9:

LJMPAD

Z10:

LJMPSU

REL5:

LCALLDEL1;延时10s

JNBP3.0,$

LJMPBUF1

DEL1:

MOVR6,#2;延时10MS子程序

L1:

MOV35H,#22

DJNZ35H,$

DJNZR6,L1

RET

DEL2:

MOVR5,#16;延时160MS子程序

L2:

MOVR6,#22

L3:

MOV35H,#248

DJNZ35H,$

DJNZR6,L3

DJNZR5,L2

RET

ORG0300H

TABLE:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

END

四、心得体会

本次实习通过设计了一个简易的交通灯控制系统,加深了我们队单片机的了解。

单片机作为微电子控制的新兴技术,具有使用灵活,方便,功耗小,成本低等特点。

通过这次实习,使我组成员得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。

使我们在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧的掌握方面都向前迈了一大步,为日后步入社会加入工作打下坚实的基础。

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

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1