智能交通信号控制器程序设计DOC.docx
- 文档编号:15809663
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:27
- 大小:155.45KB
智能交通信号控制器程序设计DOC.docx
《智能交通信号控制器程序设计DOC.docx》由会员分享,可在线阅读,更多相关《智能交通信号控制器程序设计DOC.docx(27页珍藏版)》请在冰点文库上搜索。
智能交通信号控制器程序设计DOC
1.设计主要内容及要求;
编写智能交通信号控制器程序。
要求:
1)进行正常交通信号的控制。
2)显示信号剩余时间。
3)能够利用车辆数量控制信号切换信号等多种控制方法。
2.对设计论文撰写内容、格式、字数的要求;
(1).课程设计论文是体现和总结课程设计成果的载体,一般不应少于3000字。
(2).学生应撰写的内容为:
中文摘要和关键词、目录、正文、参考文献等。
课程设计论文的结构及各部分内容要求可参照《沈阳工程学院毕业设计(论文)撰写规范》执行。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
(3).论文要求打印,打印时按《沈阳工程学院毕业设计(论文)撰写规范》的要求进行打印。
(4).课程设计论文装订顺序为:
封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、参考文献。
3.时间进度安排;
顺序
阶段日期
计划完成内容
备注
1
月日
教师讲解题目,学生查阅相关资料
2
月日
查阅相关资料、进行方案论证
3
月日
确定智能控制算法
4
月日
编写程序
5
月日
调试程序
6
月日
撰写论文
7
月日
验收作品、答辩
一设计任务描述
1.1设计题目:
智能交通信号控制器程序设计
1.2设计要求
1.2.1基本要求:
编写智能交通信号控制器程序。
要求:
1)进行正常交通信号的控制。
2)显示信号剩余时间。
3)能够利用车辆数量控制信号切换信号等多种控制方法。
二设计思路
第一部分:
利用I/O口的低端口(P1口)控制发光二极管(信号灯)的亮与灭。
利用延时程序控制发光二极管(信号灯)的亮与灭的时间间隔。
第二部分:
利用液晶显示控制发光二极管(信号灯)亮与灭时间的倒计时显示。
第三部分:
利用外部中断(外部中断6、外部中断7)来控制不同车流量情况下,发光二极管(信号灯)亮与灭的时间的可调性。
三设计方框图
四设计原理
4.1发光二级管(信号灯)显示控制
发光二极管(信号灯)为低电平有效,即“0”电平时发光二极管亮。
并利用I/O口(P1口)控制发光二极管的亮与灭。
P1.0、P1.1、P1.2依次为东西方向的红、绿、黄,P1.3、P1.4、P1.5依次为南北方向的红、绿、黄。
4.1.1状态一
东西绿灯亮,南北红灯亮时P1口送11110101即F5H。
东西绿灯亮,南北红灯亮的时间为10秒。
4.1.2状态二
东西黄灯灭,南北红灯亮时P1口送11110111即F7H。
东西黄灯亮,南北红灯亮时P1口送11110011即F3H。
异或指令(XRL):
欲取反的位置“1”欲保留的位置“0”。
(11110111)XRL(00000100)为(11110011)即F7H同04H异或为F3H。
东西黄灯闪烁,南北红亮灯的时间为04秒,黄灯闪烁2次。
4.1.3状态三
东西红灯亮,南北绿灯亮时P1口送11101110即EEH。
东西红灯亮,南北绿灯亮的时间为04秒。
4.1.4状态四
东西红灯亮,南北黄灯灭时P1口送11111110即FEH。
东西红灯亮,南北黄灯亮时P1口送11011110即DEH。
异或指令(XRL):
欲取反的位置“1”欲保留的位置“0”。
(11111110)XRL(00100000)为(11011110)即FEH同20H异或为DEH。
东西红灯亮,南北黄灯闪烁时间为04秒,黄灯闪烁2次。
4.2液晶显示控制
4.2.1系统时钟初始化
系统时钟初始化为片内的4MHz时钟,即OSCICN送00000101即05H。
4.2.2通用I/O口及交叉开关初始化
通用I/O口及交叉开关初始化:
1、没有选择数字外设,即XBR0送00000000即00H。
2、P4~P7口设为推拉方式,即P74OUT送11110000即F0H。
4.2.3LCD初始化
LCD初始化,写命令操作
1、功能设置:
两行显示,5×7点阵,即P7口送00111000即38H。
写命令,即P6口送00000001即01H。
结束写命令,即P6口送00000000即00H。
2、开显示,开光标,字符不闪烁,即P7口送00001110即0EH。
写命令,即P6口送00000001即01H。
结束写命令,即P6口送00000000即00H。
3、I/D=1,AC自动增1;S=0,整体显示不移动,即P7口送00000110即06H。
写命令,即P6口送00000001即01H。
结束写命令,即P6口送00000000即00H。
4、清除DDRAM,置AC=0,即P7口送00000001即01H。
写命令,即P6口送00000001即01H。
结束写命令,即P6口送00000000即00H。
4.2.4液晶显示
将要显示的数送给累加器A,将10送给累加器B即0AH。
用除法指令DIV即A除以B,其结果商保存在累加器A中,余数保留在累加器B中。
再将累加器A中的数与累加器B中的数分别依次查表即取ASCII码字符并显示出来。
查表时利用DPTR。
先把所查表的首地址送给DPTR指针,然后再查表。
4.3发光二级管(信号灯)在紧急状况下的显示控制
4.3.1紧急状况一
利用外部中断6来实现。
CPU中断总允许为置“1”即SETBEA。
允许外部中断6输入引脚的中断请求即EIE2送00010000即10H。
清除外部中断标志位即置“0”,外部触发方式选择上升沿触发即置“1”,即P3IF总00000100即04H。
状态一:
东西黄灯闪烁,南北黄灯闪烁,时间为4秒,闪烁2次。
状态二:
东西绿灯亮,南北红灯亮,时间为5秒。
4.3.2紧急状况二
利用外部中断7来实现。
CPU中断总允许为置“1”即SETBEA。
允许外部中断7输入引脚的中断请求即EIE2送00100000即20H。
清除外部中断标志位即置“0”,外部触发方式选择上升沿触发即置“1”,即P3IF总00001000即08H。
状态一:
东西黄灯闪烁,南北黄灯闪烁,时间为4秒,闪烁2次。
状态二:
东西红灯亮,南北绿灯亮,时间为5秒。
五程序设计
5.1发光二级管(信号灯)显示控制
1、交叉开关使能。
MOVXBR2,#40H
2、东西绿灯亮,南北红灯亮的时间为10秒。
MOVP1,#0F5H
LCALLDELAY10S
3、东西黄灯闪烁,南北红灯亮的时间为4秒,黄灯闪烁2次。
东西方向黄灯闪烁次数为2次。
MOVR2,#02H
东西黄灯灭,南北红灯亮的时间为1秒。
MOVP1,#0F7H
LCALLDELAY1S
东西黄灯亮,南北红灯亮的时间为1秒。
XRLP1,#04H
LCALLDELAY1S
4、东西红灯亮,南北绿灯亮的时间为4秒。
MOVP1,#0EEH
LCALLDELAY4S
5、东西红灯亮,南北黄灯闪烁时间为4秒,黄灯闪烁2次。
南北方向黄灯闪烁次数为2次。
MOVR2,#02H
东西红灯亮,南北黄灯灭的时间为1秒。
MOVP1,#0FEH
LCALLDELAY1S
东西红灯亮,南北黄灯亮的时间为1秒。
XRLP1,#20H
LCALLDELAY1S
6、延时程序:
DELAY1S:
MOVR3,#30
DLY1:
MOVR4,#100
DLY2:
MOVR5,#150
DLY3:
DJNZR5,DLY3
DJNZR4,DLY2
DJNZR3,DLY1
RET
DELAY10S:
MOVR6,#0AH
DLY4:
LCALLDELAY1S
DJNZR6,DLY4
RET
DELAY4S:
MOVR7,#04H
DLY5:
LCALLDELAY1S
DJNZR7,DLY5
RET
7、发光二级管(信号灯)显示控制程序:
$INCLUDE(C8051F020.INC)
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVWDTCN,#0DEH
MOVWDTCN,#0ADH
//关狗
MOVXBR2,#40H//交叉开关使能
GGRR:
MOVP1,#0F5H//东西绿灯亮,南北红灯亮
LCALLDELAY10S//调用延时程序
MOVR2,#02H//东西方向黄灯闪烁次数
YYRR:
MOVP1,#0F7H//东西黄灯灭,南北红灯亮
LCALLDELAY1S//调用延时程序
XRLP1,#04H//东西黄灯亮,南北红灯亮
LCALLDELAY1S//调用延时程序
DJNZR2,YYRR//判断黄灯闪烁是否完成
RRGG:
MOVP1,#0EEH//东西红灯亮,南北绿灯亮
LCALLDELAY4S//调用延时程序
MOVR2,#02H//南北方向黄灯闪烁次数
RRYY:
MOVP1,#0FEH//东西红灯亮,南北黄灯灭
LCALLDELAY1S//调用延时程序
XRLP1,#20H//东西红灯亮,南北黄灯亮
LCALLDELAY1S//调用延时程序
DJNZR2,RRYY//判断黄灯闪烁是否完成
AJMPMAIN
DELAY1S:
MOVR3,#30
DLY1:
MOVR4,#100
DLY2:
MOVR5,#150
DLY3:
DJNZR5,DLY3
DJNZR4,DLY2
DJNZR3,DLY1
RET
//延时程序
DELAY10S:
MOVR6,#0AH
DLY4:
LCALLDELAY1S
DJNZR6,DLY4
RET
//延时程序
DELAY4S:
MOVR7,#04H
DLY5:
LCALLDELAY1S
DJNZR7,DLY5
RET
//延时程序
END
5.2液晶显示控制
1、系统时钟初始化。
SYSCLK_INIT:
MOVOSCICN,#05H
RET
2、通用I/O口及交叉开关初始化。
PORT_INIT:
CLRA
MOVXBR0,A
MOVP74OUT,#0F0H
RET
3、LCD初始化。
LCD_INIT:
LCALLDELAY
MOVP7,#038H
MOVP6,#01H
MOVP6,#0H
LCALLDELAY
MOVP7,#0EH
MOVP6,#01H
MOVP6,#0H
LCALLDELAY
MOVP7,#06H
MOVP6,#01H
MOVP6,#0H
LCALLDELAY
MOVP7,#01H
MOVP6,#01H
MOVP6,#0H
LCALLDELAY
RET
4、液晶显示。
MOVDPTR,#NCDDATA
AAA:
MOVR1,#0AH
BBB:
LCALLLINE1
DJNZR1,BBB
MOVR1,#04H
CCC:
LCALLLINE1
DJNZR1,CCC
MOVR1,#08H
DDD:
LCALLLINE1
DJNZR1,DDD
AJMPAAA
LINE1:
MOVA,R1
MOVB,#0AH
DIVAB
MOVCA,@A+DPTR
MOVP7,A
MOVP6,#05H
MOVP6,#04H
LCALLDELAY
MOVA,B
MOVCA,@A+DPTR
MOVP7,A
MOVP6,#05H
MOVP6,#04H
LCALLDELAY
LCALLDELAY
MOVP7,#01H
MOVP6,#01H
MOVP6,#0H
LCALLDELAY
RET
5、延时程序:
DELAY:
MOVR7,#10H
D1:
MOVR6,#80H
D2:
MOVR5,#00H
D3:
DJNZR5,D3
DJNZR6,D2
DJNZR7,D1
RET
6、ASCII码表。
NCDDATA:
DB30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
7、液晶显示控制程序:
$INCLUDE(C8051F020.INC)
ORG0000H
AJMPMAIN
ORG0030H
MAIN:
MOVWDTCN,#0DEH
MOVWDTCN,#0ADH
//关狗
LCALLSYSCLK_INIT//调用系统时钟初始化
LCALLPORT_INIT//调用通用I/O口及交叉开关初始化
LCALLLCD_INIT//调用LCD初始化
LCALLDELAY//调用延时程序
MOVDPTR,#NCDDATA//DPTR指针指向ASCII码表的首位
AAA:
MOVR1,#0AH//从10秒开始倒计时
BBB:
LCALLLINE1//调用液晶显示
DJNZR1,BBB//判断10秒倒计时是否完成
MOVR1,#04H//从4秒开始倒计时
CCC:
LCALLLINE1//调用液晶显示
DJNZR1,CCC//判断4秒倒计时是否完成
MOVR1,#08H//从8秒开始倒计时
DDD:
LCALLLINE1//调用液晶显示
DJNZR1,DDD//判断8秒倒计时是否完成
AJMPAAA
LINE1:
MOVA,R1
MOVB,#0AH
DIVAB//A除以B所得的商存在A中,余数存在B中
MOVCA,@A+DPTR//查表,取ASCII码字符
MOVP7,A//字符送数据口P7
MOVP6,#05H//写数据操作
MOVP6,#04H//结束写操作
LCALLDELAY//调用延时程序
MOVA,B
MOVCA,@A+DPTR//查表,取ASCII码字符
MOVP7,A//字符送数据口P7
MOVP6,#05H//写数据操作
MOVP6,#04H//结束写操作
LCALLDELAY//调用延时程序
LCALLDELAY//调用延时程序
MOVP7,#01H//清除DDRAM,置AC=0
MOVP6,#01H//写命令
MOVP6,#0H//结束写命令
LCALLDELAY//调用延时程序
RET
SYSCLK_INIT:
MOVOSCICN,#05H//系统时钟初始化为片内的4MHz时钟
RET
PORT_INIT:
CLRA
MOVXBR0,A//没有选择数字外设
MOVP74OUT,#0F0H//P4~P7口设为推拉方式
RET
LCD_INIT:
LCALLDELAY
MOVP7,#038H//功能设置:
两行显示,5×7点阵
MOVP6,#01H//写命令
MOVP6,#0H//结束写命令
LCALLDELAY
MOVP7,#0EH//开显示,开光标,字符不闪烁
MOVP6,#01H//写命令
MOVP6,#0H//结束写命令
LCALLDELAY
MOVP7,#06H//I/D=1,AC自动增1;S=0,整体显示不移动
MOVP6,#01H//写命令
MOVP6,#0H//结束写命令
LCALLDELAY
MOVP7,#01H//清除DDRAM,置AC=0
MOVP6,#01H//写命令
MOVP6,#0H//结束写命令
LCALLDELAY
RET
DELAY:
MOVR7,#10H
D1:
MOVR6,#80H
D2:
MOVR5,#00H
D3:
DJNZR5,D3
DJNZR6,D2
DJNZR7,D1
RET
//延时程序
NCDDATA:
DB30H,31H,32H,33H,34H,35H,36H,37H,38H,39H//ASCII码表
END
5.3发光二级管(信号灯)在紧急状况下的显示控制
5.3.1紧急状况一
1、中断使能。
(外部中断6)
MOVP3IF,#04H
MOVEIE2,#10H
SETBEA
2、东西黄灯闪烁,南北黄灯闪烁,时间为4秒,闪烁2次。
东西、南北方向黄灯亮的时间为1秒。
MOVP1,#0DBH
LCALLDELAY
东西、南北方向黄灯灭的时间为1秒。
MOVP1,#0FFH
LCALLDELAY
3、东西绿灯亮,南北红灯亮,时间为5秒。
MOVP1,#0F5H
LCALLDELAY
LCALLDELAY
LCALLDELAY
LCALLDELAY
LCALLDELAY
4、清中断标志位。
MOVP3IF,#00H
5、紧急状况一程序:
$INCLUDE(C8051F020.INC)
ORG0000H
LJMPMAIN
ORG0093H
LJMPINT6
ORG0100H
MAIN:
MOVWDTCN,#0DEH
MOVWDTCN,#0ADH
//关狗
MOVXBR2,#40H//交叉开关使能
MOVP3IF,#04H//清中断标志位,选择上升沿触发方式
MOVEIE2,#10H//外部中断6使能
SETBEA//总使能
MOVP1,#00H//发光二极管亮
AJMP$
INT6:
MOVP1,#0DBH//东西、南北方向黄灯亮
LCALLDELAY//调用延时程序
MOVP1,#0FFH//东西、南北方向黄灯灭
LCALLDELAY//调用延时程序
MOVP1,#0DBH//东西、南北方向黄灯亮
LCALLDELAY//调用延时程序
MOVP1,#0FFH//东西、南北方向黄灯灭
LCALLDELAY//调用延时程序
MOVP1,#0F5H//东西绿灯亮,南北红灯亮
LCALLDELAY//调用延时程序
LCALLDELAY//调用延时程序
LCALLDELAY//调用延时程序
LCALLDELAY//调用延时程序
LCALLDELAY//调用延时程序
MOVP3IF,#00H//清中断标志位,选择下降沿触发方式
MOVP1,#00H//发光二极管亮
RETI
DELAY:
MOVR3,#30
DLY1:
MOVR4,#100
DLY2:
MOVR5,#150
DLY3:
DJNZR5,DLY3
DJNZR4,DLY2
DJNZR3,DLY1
RET
//延时程序
END
5.3.2紧急状况二
1、中断使能。
(外部中断7)
MOVP3IF,#08H
MOVEIE2,#20H
SETBEA
2、东西黄灯闪烁,南北黄灯闪烁,时间为4秒,闪烁2次。
东西、南北方向黄灯亮的时间为1秒。
MOVP1,#0DBH
LCALLDELAY
东西、南北方向黄灯灭的时间为1秒
MOVP1,#0FFH
LCALLDELAY
3、东西红灯亮,南北绿灯亮,时间为5秒。
MOVP1,#0EEH
LCALLDELAY
LCALLDELAY
LCALLDELAY
LCALLDELAY
LCALLDELAY
4、清中断标志位。
MOVP3IF,#00H
5、紧急状况二程序:
$INCLUDE(C8051F020.INC)
ORG0000H
LJMPMAIN
ORG009BH
LJMPINT7
ORG0100H
MAIN:
MOVWDTCN,#0DEH
MOVWDTCN,#0ADH
//关狗
MOVXBR2,#40H//交叉开关使能
MOVP3IF,#08H//清中断标志位,选择上升沿触发方式
MOVEIE2,#20H//外部中断7使能
SETBEA//总使能
MOVP1,#00H//发光二极管亮
AJMP$
INT7:
MOVP1,#0DBH//东西、南北方向黄灯亮
LCALLDELAY//调用延时程序
MOVP1,#0FFH//东西、南北方向黄灯灭
LCALLDELAY//调用延时程序
MOVP1,#0DBH//东西、南北方向黄灯亮
LCALLDELAY//调用延时程序
MOVP1,#0FFH//东西、南北方向黄灯灭
LCALLDELAY//调用延时程序
MOVP1,#0EEH//东西红灯亮,南北绿灯亮
LCALLDELAY//调用延时程序
LCALLDELAY//调用延时程序
LCALLDELAY//调用延时程序
LCALLDELAY//调用延时程序
LCALLDELAY//调用延时程序
MOVP3IF,#00H//清中断标志位,选择下降沿触发方式
MOVP1,#00H//发光二极管亮
RETI
DELAY:
MOVR3,#30
DLY1:
MOVR4,#100
DLY2:
MOVR5,#150
DLY3:
DJNZR5,DLY3
DJNZR4,DLY2
DJNZR3,DLY1
RET
//延时程序
END
5.4延时程序
1、延时程序:
DELAY:
MOVR3,#30
DLY1:
MOVR4,#100
DLY2:
MOVR5,#150
DLY3:
DJNZR5,DLY3
DJNZR4,DLY2
DJNZR3,DLY1
RET
六程序调试
6.1关狗指令
MOVWDTCN,#0DEH
MOVWDTCN,#0ADH
关狗指令势必可少的,如果在程序设计过程中缺少了关狗指令,则程序中的延时程序将不会有任何作用。
C8051F020单片机内部有一个使用系统时钟的可编程看门狗定时器WDT(WatchDogTimer),当看门狗定时器溢出时,WDT将强制单片机进入复位状态。
为了防止复位,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 交通信号 控制器 程序设计 DOC
![提示](https://static.bingdoc.com/images/bang_tan.gif)