基于51单片机的交通灯控制系统Word文档格式.docx
- 文档编号:22656497
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:19
- 大小:188.15KB
基于51单片机的交通灯控制系统Word文档格式.docx
《基于51单片机的交通灯控制系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于51单片机的交通灯控制系统Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
系统复位键。
本系统的工作流程:
接通电源时或系统复位后,系统按程序给定的时间工作,即南北向通行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:
MOVTH0,#63H
SETB8CH;
启动定时器T0
JNBTF0,$
LCALLLOOP1;
调用显示程序
DJNZR6,MAIN1
MOVR6,#25
LCALLSWITCH1;
调用数码管数据转换程序
DJNZ31H,MAIN1
MOVR3,#0F5H;
南北黄灯亮,东西红灯亮
MOV31H,21H
MOV2AH,21H
MAIN2:
DJNZR6,MAIN2
DJNZ31H,MAIN2
MOVR3,#0DEH;
南北红灯亮,东西绿灯亮
MOV2AH,27H
MOV31H,22H
MOV2BH,22H
MAIN3:
JNBTF0,$
LCALLLOOP1
DJNZR6,MAIN3
DJNZ31H,MAIN3
MOVR3,#0EEH;
南北红灯亮,东西黄灯亮
MOV31H,23H
MOV2BH,23H
MAIN4:
DJNZR6,MAIN4
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
查表取个位显示码
MOVR2,A;
个位显示码存在R2里
MOVA,2BH;
东西数码管显示初值送A
DIVAB
MOV45H,A
MOV44H,A
RET
LOOP1:
MOVA,R2;
南北数码管个位给A
MOVR4,24H;
南北数码管个位位选给R4
ACALLDISP;
调用显示子程序
MOVA,R1;
南北数码管十位给A
MOVR4,25H;
南北数码管十位位选给R4
MOVA,44H;
东西数码管个位给A
MOVR4,51H
ACALLDISP
MOVA,45H;
东西数码管十位给A
MOVR4,52H
MOVA,R3
MOVP1,A;
信号灯控制从P1口输出
SWITCH2:
MOVB,#0AH;
用于设置时的数码管数据转换子程序
MOVCA,@A+DPTR
需要显示的十位
MOVR2,A;
需要显示的个位
LOOP2:
MOVA,R2
MOVR4,24H
MOVA,R1
MOVR4,25H
MOVA,R3
MOVP1,A
DISP:
MOVR0,#0FFH;
显示子程序
MOVR5,A
DISP1:
MOVA,R4
MOVP2,A
MOVA,R5
MOVP0,A
DJNZR0,DISP1;
延时显示时间,增加亮度
Z1:
LJMPSWITCH1;
Z2:
LJMPMAIN;
REL:
MOVR7,#00H;
设置子程序
MOV60H,20H
SJMPDEL0
BUF1:
CJNER7,#01H,BUF2
MOV20H,60H;
保存修改后的值
BUF2:
CJNER7,#02H,BUF3
MOV21H,60H;
BUF3:
CJNER7,#03H,BUF4
MOV22H,60H;
BUF4:
CJNER7,#04H,Z2
MOV23H,60H;
DEL0:
LCALLDEL1;
若按下,则延时10MS
JBP3.0,Z1;
去抖动
JNBP3.0,$;
检测设置键是否释放
INCR7
MOV30H,#30;
规定时间内(10s)没有键按下的循环计数
CJNER7,#01H,REL2
REL1:
设置键按一下子程序
MOV25H,#0FDH
MOVR3,#0FBH;
南北绿灯亮
MOVA,20H;
显示初值送累加器
LCALLSWITCH2;
调用数据转化及显示子程
MOVA,#0FFH
MOVP2,A;
数码管闪烁
LCALLDEL2;
延时160ms
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
MOVR3,#0FDH;
南北黄灯亮
MOVA,21H;
调用数据转化及显示子程序
MOVP2,A;
数码管闪烁
MOVA,21H
MOV60H,21H
JNBP3.0,BUF1;
DJNZ30H,REL2;
若10S没有任何键按下,跳回主程序
LJMPSTAR
Z3:
LJMPSU;
Z4:
LJMPREL3
AD:
延时10ms
JBP3.1,SU;
MOV30H,#30
MOV4AH,#6;
用于检查是否有持续按下计数(6次)1s
Q1:
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
LCALLDEL2
JNBP3.0,Z6;
JNBP3.2,SU;
DJNZ30H,Q3
Q4:
MOV5AH,#30
Q5:
MOVA,70H;
最大计数值99给数码管(之后只能减或停止设置)
MOV60H,70H
LCALLSWITCH2
DJNZ5AH,Q5
SU:
延时10s
JBP3.2,Z6;
MOV4AH,#6
Q6:
JBP3.2,Q7
DJNZ4AH,Q6;
SUBBA,#0AH;
若持续按下,则每次减10
SJMPQ8
Q7:
DEC60H;
若不是持续按下,每次减1
Q8:
JCZ5;
若低于0,跳回主程序
MOVP2,A;
LCALLDEL2;
延时160ms
JNBP3.0,Z6;
JNBP3.1,Z7;
DJNZ30H,Q8;
Z7:
LJMPAD;
Z6:
LJMPBUF1
Z5:
LJMPMAIN
REL3:
设置键按三下子程序
CJNER7,#03H,REL4
MOV24H,#0FBH
MOV25H,#0F7H;
字位口送相应单元
MOVR3,#0DFH;
东西绿灯亮
延时160s
MOV60H,22H
JNBP3.0,Z8;
JNBP3.1,Z9;
DJNZ30H,REL3;
Z8:
LJMPDEL0;
REL4:
CJNER7,#04H,REL5
MOV24H,#0FBH
MOV25H,#0F7H
MOVR3,#0EFH;
东西黄灯亮
MOVA,23H
MOV60H,23H
JNBP3.2,Z10;
DJNZ30H,REL4;
Z9:
LJMPAD
Z10:
LJMPSU
REL5:
延时10s
JNBP3.0,$
LJMPBUF1
DEL1:
MOVR6,#2;
延时10MS子程序
L1:
MOV35H,#22
DJNZ35H,$
DJNZR6,L1
DEL2:
MOVR5,#16;
延时160MS子程序
L2:
MOVR6,#22
L3:
MOV35H,#248
DJNZR6,L3
DJNZR5,L2
ORG0300H
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
四、心得体会
本次实习通过设计了一个简易的交通灯控制系统,加深了我们队单片机的了解。
单片机作为微电子控制的新兴技术,具有使用灵活,方便,功耗小,成本低等特点。
通过这次实习,使我组成员得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。
使我们在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧的掌握方面都向前迈了一大步,为日后步入社会加入工作打下坚实的基础。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 交通灯 控制系统