资源描述
《微机接口技术》
课程设计说明书
题 目 十字路口灯火控制系统设计(VI)
机械电子工程 系
机械电子 专业 班 学号
学生姓名
指导老师
完成日期 2009年12月28日—2010年1月8日
湖南工程学院机械系
湖 南 工 程 学 院
课 程 设 计 任 务 书
-—-—————- ☆ —————-——
设计题目:十字路口灯火控制系统设计(VI)
姓名 *** 系别 机械系 专业 机械电子工程 班级 *** 学号 ***
指导 教研室主任
一、 基本任务及要求
1、设计任务
(1)硬件 扩展8031、74LS373、ROM、RAM、8279(显示)、74LS138、74LS273、7407
8255(基本I/O);PC口接开关控制系统的启动/停止;PO口接彩灯;扩展外部中断做应急控制 ,定时器T0(50ms)。
(2)软件
从左至右定位显示“行人通行时间 车辆通行时间 ” 控制程序。
环岛十字路口灯火控制系统(车通行—绿、人通行—黄);
启动/停止、开关控制程序,启动时先屏1S问候语“HELLO”,停止黑屏、熄灯;
定时器T0初始化程序,基本时间10ms;应急控制程序,应急状态时闪烁红灯。
2、要求
(1)绘制硬件接线框图;绘制系统控制流程框图。
(2)撰写设计说明书(5-8千字),并附程序清单及其功能注释。
(3)控制程序必须调试通过。
二 、进度安排及完成时间
1、设计时间 二周(从2009年12月28日至2010年1月8日)
2、进度安排 星期一~ 三布置任务;查阅资料;讲授相关知识;做相关实验
第17周: 星期四 设计硬件电路图;编写各功能子程序。
星期五 调试各功能子程序,并记录存在的问题与解决的方法。
第18周: 星期一~ 二 整理资料链接所有程序,进行总体调试。
星期三~ 四 按格式撰写设计说明书。
星期五 上交设计作业,文本文档打印稿及电子文档,并参加答辩。
目 录
1 设计任务和要求………………………………………………………………1
1.1 设计任务………………………………………………………………1
1.2 设计要求…………………………………………………………………1
1.3系统设计工作原理……………………………………………………1
2 控制软件设计……………………………………………………………………2
2.1 程序流程框图…………………………………………………………………2
2.1.1 主程序流程框图…………………………………………………………2
2.1.2 中断服务程序流程框图…………………………………………………3
2.2 主程序设计及其功能…………………………………………………………4
2.3 子程序设计及其功能…………………………………………………………4
2.3.1 8279初始化子程序…………………………………………………4
2.3.2 倒计时显示子程序……………………………………………………4
2.3.3 问候语显示程序……………………………………………………4
2.3.4 中断应急程序………………………………………………………4
3 控制电路设计……………………………………………………………………7
3.1 硬件设计原理………………………………………………………………7
3.1.1 时间显示电路………………………………………………………7
3.1.2 开关控制电路………………………………………………………7
3.1.3 交通灯电路……………………………………………………………7
3.1.4 储存器扩展电路……………………………………………………7
4 调试结果及说明…………………………………………………………………8
4.1 硬件调试……………………………………………………………………8
4.2 软件调试……………………………………………………………………8
4.3 遇到的问题及解决方案…………………………………………………8
4.3.1 遇到的问题…………………………………………………………8
4.3.2 解决方案………………………………………………………8
5 系统功能及使用说明……………………………………………………………9
5.1 系统功能………………………………………………………………9
5.2 操作说明……………………………………………………………………9
6 心得体会………………………………………………………………………10
7参考文献……………………………………………………………11
附录1(系统电路原理图)…………………………………………………12
附录2(程序清单)……………………………………………………………13
1 设计任务及要求
1.1 设计任务
(1)硬件扩展8031、74LS373、ROM、RAM、8279(显示)、74LS138、74LS273、7407、8255(基本I/O);PC口接开关控制系统的启动/停止;PO口接彩灯;扩展外部中断做应急控制,定时器T0(50ms)。
(2)软件
从左至右定位显示“行人通行时间 车辆通行时间”控制程序;
环岛十字路口灯火控制程序(车通行—绿、人通行—黄);
启/停止开关控制程序,启动时先1S问候语“HELLO”停止黑屏、熄灯;
定时器T0初始化,基本时间10ms;应急控制程序,应急状态时闪烁红灯。
1.2 设计要求
(1)绘制硬件接线图;绘制系统控制流程框图。
(2)撰写设计说明书(5-8千字),并附程序清单机其功能注释,
(3)控制程序必须调试通过。
1.3 系统设计工作原理
设计环岛十字路口交通灯火控制系统所用的控制信号为2个双色LED灯,可显示红、黄、绿三种状态;车通行状态为车辆通行时间40S,人禁止通行,LED显示屏显示车辆通行的倒计时,双色灯1呈绿色,双色灯2熄灭。人通行为人通行时间为20S,车辆都禁止通行,LED显示屏显示人通行时间的倒计时,双色灯1呈黄色色,双色灯2绿色。在系统启动的时候需要判断8255的PC7处的开关是否处于启动状态,来决定是继续执行下面的程序还是继续等待。在系统的整个运行过程中要实现随时停止的功能,我们则在延时程序中设计,在延时程序中判断8255的PC口是否处于停止状态,如果不是则继续执行下面的程序,否则进行清屏和熄灭所有交通灯的处理。应急处理采用的是扩展外部中断来实现的,响应外部中断,并做好保护现场的措施,闪烁红灯,中断返回,恢复现场。继续执行下面的程序。
2控制软件设计
2.1 程序流程框图
2.1.1 主程序流程框图
开始
初始化8279、8255、开放中断INT0
熄灭交通灯,清除LED显示屏
N
开关开启?
Y
显示1S问候语“HELLO”
状态1,黄灯亮,人行走
Y
计时,PC.7=0?
N
N
状态1,绿灯亮,车辆通行
Y
计时,PC.7=0?
图1
2.1.2 中断服务程序流程框图
中断入口
保护现场
交通指示灯亮绿灯
延时20S
交通指示灯熄灭
延时15S
N
P3.2=1?
Y
恢复现场,恢复灯状态
中断返回
图2
2.2主程序设计及功能
主程序满足的功能是:人通行状态时,车辆控制灯显示黄色时,行人控制灯显示绿色,同时LED数码管显示器显示人通行的20S倒计时;车辆通行状态时,车辆控制灯显示绿色,行人控制灯熄灭,,同时LED数码管显示器显示车辆通行的40S倒计时;当有紧急情况发生的时候,通过拨动中断开关K2置为低电平使道路交通灯为红灯闪烁,禁止车辆和行人通行。
2.3 子程序设计及功能
子程序包括:8279初始化程序、启动停止开关控制程序、倒计时显示程序、中断应急程序、显示问候语“HELLO”程序、硬件延时程序(基本时间10ms)、中断服务程序。
2.3.1 8279初始化子程序
此系统8279初始化程序的作用是设置8279的工作方式、分频系数、清楚显示RAM。
2.3.2倒计时显示子程序
此系统的两个倒计时程序分别为行人通行时间车辆通行时间进行倒计时,第7位和第6位显示行人通行倒计时20S;第1位和第0位显示车辆通行倒计时40S。
2.3.3 问候语显示程序
问候语显示程序时用来显示问候语“HELLO”。
2.3.4中断应急程序
此系统采用的是外部中断INT0,在执行中断服务程序时要使交通灯闪烁红灯,在中断返回时能够恢复到原来的状态。其具体程序如下:
INT0: ;INT0/中断服务程序
PUSH ACC ;保护现场
PUSH DPL
PUSH DPH
PUSH 1
PUSH 2
PUSH 3
PUSH 4
LOOP3: MOV DPTR, #8000H ;指向273的端口地址
MOV A, #0FDH ;赋交通灯控制字
MOVX @DPTR, A
MOV R2, #3 ;延时0.3S
LCALL DELAY3
MOV DPTR, #8000H
MOV A, #0FFH
MOVX @DPTR, A ;熄灭交通灯
MOV R2, #3 ;延时0.3S
LCALL DELAY3
JNB P3.2, LOOP3 ;判断是否恢复中断
POP 4 ;恢复现场
POP 3
POP 2
POP 1
POP DPH
POP DPL
POP ACC
MOV A, 31H ;读取交通灯的状态
MOV DPTR, #8000H
MOVX @DPTR, A ;恢复交通灯的状态
RETI
DELAY3: ;延时子程序
DELAY1:
MOV R1, #00H ;R1=00H
DELAY2:
MOV R0, #0B2H ;R2=B2H
DJNZ R0, $
DJNZ R1, DELAY2 ;延时100ms
DJNZ R2, DELAY1 ;R2的初值由调用程序给定
RET
3 控制电路设计
3.1 硬件设计原
根据课程设计的要求,确定该控制系统的硬件设计方案,该硬件电路由时间显示电路、开关控制电路、交通灯显示电路、存储器扩展电路4个部分组成。
3.1.1 时间显示电路
时间显示电路图如图(3)所示
D0-D7
8
路
驱动器
138
SL0-SL2
8031
Q1
CS
Q0
A0
GND
G
IRQ
ALE
8279
LED数码显示器
驱动器
RD
RD
A0-A3
B0-B3
WR
WR
图3
3.1.2开关控制电路
开关控制利用8255扩展输入输出口,将PC.7作为开关控制信号端口,实现整个程序的启动和停止。
3.1.3交通灯电路
交通灯电路采用74LS138和74LS273组成。
3.1.4存储器扩展电路
扩展外部程序存储器ROM时。单片机与外部程序存储器ROM(27128)其接法大致与片外数据存储器的接法一样,但外部程序存储器ROM(27128)的片选信号CS\直接接地。
4调试结果及说明
4.1 硬件调试
在做实验之前,检查二极管无故障、导线是否可用、连续接头无互相搭连后,依次检查发光二极管是否点亮,若没点亮则需要检查数码管是否完好,接线是否良好,依次检查直到电路能够正常工作。
4.2 软件调试
本系统的软件采用汇编语言编写的,在试验机上进行编译只能检查出语法和逻辑错误。在编译没错误但全速运行后结果有问题时,采用跟踪型单步运行,查出错误所在,并修改。直至全速运行结果正常为止。
4.3 遇到的问题及解决方案
4.3.1遇到的问题:
(1)编译时出现多处错误。
(2)显示问候语“HELLO”只显示不完整,只显示其中某几位。
(3)中断返回之后,倒计时时间显示不继续工作。
4.3.2解决方案:
(1)修改了输入符号是的输入法。
(2)在:“HELLO”显示子程序后加上延时程序。
(3)重新设计在中断服务程序中的延时程序而不直接调用原来的延迟程序。
5控制系统使用说明
5.1 系统功能
此系统是环岛十字路口的交通灯火控制系统,此控制系统能很好的指挥行人和车辆按有规则通行。当有紧急状况发生的时候,按下应急按钮交通指示灯会闪烁红灯,这时行人和车辆都禁止通行,当紧急状况解除后,在按上应急按钮交通灯控制系统会恢复到原来的状态,然后继续指挥车辆和行人通行。
5.2 操作说明
依据艾迪克单片机实验系统进行硬件接线,8255的PC.7接开关K1,单片机的P3.2接开关K5,片选信号CS/接138译码器的端口地址8400H,74LS273的输出口PO0接DG1、PO1接DR1、PO7接DG3,74LS273的片选CS/接138译码器的端口地址8000H。K1的初始状态为低电平,K5的初始状态为高电平。连接号线之后,打开艾迪克单片机试验系统,用软件把主程序传送到单片机,编译,全速运行。再按下启动\停止按钮K1,开始启动系统,首先显示屏会显示1S的问候语“HELLO”。然后分别进行行人和车辆通行的倒计时,行人通行倒计时时控制车行的灯为黄色,控制人行的灯为绿色;车辆通行倒计时时控制车行的灯为绿色,控制人行的灯为熄灭状态。在运行过程中随时可以按下应急控制按钮K5进行应急中断,按下K5后,所有的显示灯都闪烁红灯,并且倒计时全部暂停,按上K5后显示灯恢复中断前的状态,倒计时继续进行。按上K1停止系统,熄灯,熄屏。
6 心得体会
两个星期的的课程设计,就这样结束了。通过这此的微机接口技术课程设计,使我深深的体会到了自己在知识掌握上很不全面。本次课程设计巩固、扩大和加深我们从课堂上所学的理论知识。这次课程设计虽然分了组,但每个人分配好了任务。必须独自完成自己的任务,这样不但加强了我们的动手能力,同时加强了我们解决问题的能力。在做课程设计的过程中我们遇到了很多问题,有些问题自己解决不了,就必须和同组同学进行讨论。但有些问题我们同学之间也讨论不出结果,当然就要问老师了。真的非常感谢周慧和谭季秋两位老师指导我们,要不是他们细心的教导,我们也不可能这么顺利的完成此次课程设计。这也是毕业设计的一次预演。通过课程设计,让我们找出自身状况与实际需要的差距,并在以后的学习期间及时补充相关知识,为求职与正式工作做好充分的知识、能力准备,从而缩短从校园走向社会的心理转型期,让我们更快了适应社会。
7 参考文献
《单片机原理与接口技术》. 黄菊生 .国防工业出版社。
《单片机原理与接口实验指导书》.周慧、黄菊生.湖南工程学院机电教研室。
《单片机原理及应用教程》.刘瑞新. 机械工业出版社。
附录一:系统硬件原理图
附件2:程序清单
Z8279 EQU 0FF82H ;8279命令/状态口地址
D8279 EQU 0FF80H ;8279数据口地址
LEDMOD EQU 00H ;左边输入,八位字符显示,外部译码
LEDFEQ EQU 2FH ;扫描速率
LEDCLS EQU 0C1H ;清楚显示RAM
LEDWR0 EQU 80H ;设定将要写入的显示RAM地址
ORG 0000H
LJMP MAIN
ORG 0003H
AJMP INT0
ORG 0030H
MAIN:
MOV SP, #60H ;设置堆栈指针
MOV DPTR, #8000H ;指向74LS273的端口地址
MOV A, #0FFH ;赋值给累积起
MOVX @DPTR, A ;熄灭所有交通灯
SETB EX0 ;允许外部中断源请求中断
SETB EA ;允许CPU受理中断请求
CLR IT0 ;设置低电平触发INT0/中断
LCALL INIT8279 ;8279初始化
MOV DPTR, #8406H ;指向8255的控制口地址
LI: MOV A, #89H ;工作方式控制字
MOVX @DPTR, A ;写控制字到控制口
MOV DPTR, #8404H ;8255PC口地址
MOVX A, @DPTR ;读取8255PC口的数据
JNB ACC.7, LI ;判断PC7是否等于1
LCALL HELLO ;调用“HELLO”子程序
LCALL DELAY ;调用延时程序
LCALL INIT8279 ;8279初始化
L1: LCALL HUANG ;调用人通行的子程序
LCALL INIT8279 ;8279初始化
LCALL LU ;调用车辆通行子程序
LCALL INIT8279 ;8279初始化
SJMP L1
INIT8279: ;8279初始子化程序
MOV DPTR, #Z8279
MOV A, #LEDMOD ;置8279工作方式字
MOVX @DPTR, A
MOV A, #LEDFEQ ;置键盘扫描速率
MOVX @DPTR, A
MOV A, #LEDCLS ;置清楚LED显示字
MOVX @DPTR, A
RET
HUANG: ;人通行的子程序
MOV DPTR, #8000H ;指向74LS273的端口地址
MOV A, #7CH ;写交通灯的控制字
MOV 31H, A ;控制字存储在31H单元
MOVX @DPTR, A
LCALL DJS ;调用倒计时子程序
RET
DJS: ;倒计时子程序
MOV R7, #07
MOV R6, #02H
MOV A, R6
LCALL DISLED1 ;显示在第7位
MOV R7, #06
MOV R5, #00H
MOV A, R5
LCALL DISLED1 ;显示在第6位
LCALL DELAY ;调用延时程序
MOV R7, #07
MOV R6, #01H
MOV A, R6
MOV R4, #02H
LCALL DISLED1 ;显示在第7位
LOOP1: MOV A, R6
MOV R7, #07
DEC R6
LCALL DISLED1 ;显示在第7位
MOV R5, #09H
MOV R7, #06
MOV R3, #0AH
LOOP: MOV A, R5
DEC R5
LCALL DISLED1 ;显示在第6位
LCALL DELAY ;延时1S
DJNZ R3, LOOP
DJNZ R4, LOOP1
RET
DISLED1: ;显示子程序
PUSH DPH;保存现场
PUSH DPL
PUSH ACC
MOV B, A
MOV A, #LEDWR0 ;置显示显示RAM起始地址
ADD A, R7 ;加显示位偏移量
MOV DPTR, #Z8279
MOVX @DPTR, A ;设定显示位置
MOV DPTR, #LEDSEG ;置显示常数表起始位置
MOV A, B
MOVC A, @A+DPTR ;在段码表中取显示字符
MOV DPTR, #D8279
MOVX @DPTR, A ;送显示字符
POP ACC ;恢复现场
POP DPL
POP DPH
RET
LU: ;车辆通行子程序
MOV DPTR, #8000H
MOV A, #0FEH ;赋交通灯控制字
MOV 31H, A
MOVX @DPTR, A
LCALL DJS1 ;调用倒计时程序
RET
DJS1: ;倒计时子程序
MOV R7, #04
MOV R6, #02H
MOV A , R6
LCALL DISLED1 ;显示在第2位
MOV R7, #00H
MOV R5, #00H
MOV A, R5
LCALL DISLED1 ;显示在第去1位
LCALL DELAY ;延时1S
MOV R7, #01
MOV R6, #03H
MOV A, R6
MOV R4, #04H
LCALL DISLED1 ;显示在第1位
LOOP10:
MOV A, R6
MOV R7, #01
DEC R6
LCALL DISLED1
MOV R5, #09H
MOV R7, #00
MOV R3, #0AH
LOOP9:
MOV A, R5
DEC R5
LCALL DISLED1
LCALL DELAY
DJNZ R3, LOOP9
DJNZ R4, LOOP10
RET
HELLO: ;显示“HELLO”子程序
MOV R5, #00H
MOV R4, #4
LCALL DISLED ;显示在第0位
MOV R5, #01H
MOV R4, #3
LCALL DISLED ;显示在第1位
MOV R5, #02H
MOV R4, #2
LCALL DISLED ;显示在第2位
MOV R5, #03H
MOV R4, #1
LCALL DISLED ;显示在第3位
MOV R5, #04H
MOV R4, #0
LCALL DISLED ;显示在第4位
LCALL DELAY ;延时1S
RET
DISLED: ;合成显示位置子程序
PUSH DPH
PUSH DPL
PUSH ACC
MOV A, #LEDWR0 ;置显示显示RAM起始地
ADD A, R4 ;加显示位偏移量
MOV DPTR, #Z8279
MOVX @DPTR, A ;设定显示位置
MOV DPTR, #TAB ;置显示常数表起始位置
MOV A, R5
MOVC A, @A+DPTR ;在段码表中取显示字符
MOV DPTR, #D8279
MOVX @DPTR, A ;送显示字符
POP ACC ;恢复现场
POP DPL
POP DPH
RET
DELAY: ;延时子程序
MOV DPTR, #8404H ;指向8255的PC口
MOVX A, @DPTR ;读取8255的PC口状态
JB ACC.7, L2 ;判断PC.7是否为1
LJMP MAIN ;转移到主程序
L2: MOV R2, #100
MOV TMOD, #01H ;设置T0工作方式
MOV TH0, #0D8H ;T0赋初值
MOV TL0, #0F0H
SETB TR0 ;启动T0工作
LOOP7: JBC TF0, NEXT ;查询TF0,为1转NEXT
SJMP LOOP7 ;TF0为0,继续查询等待
NEXT: MOV TH0, #0D8H ;重装初值
MOV TL0, #0F0H
DJNZ R2, LOOP7 ;不为0转移到LOOP7
CLR TR0 ;R2为0,关闭定时器
RET
INT0: ;INT0/中断服务程序
PUSH ACC ;保护现场
PUSH DPL
PUSH DPH
PUSH 1
PUSH 2
PUSH 3
PUSH 4
LOOP3: MOV DPTR, #8000H ;指向273的端口地址
MOV A, #0FDH ;赋交通灯控制字
MOVX @DPTR, A
MOV R2, #3 ;延时0.3S
LCALL DELAY3
MOV DPTR, #8000H
MOV A, #0FFH
MOVX @DPTR, A ;熄灭交通灯
MOV R2, #3 ;延时0.3S
LCALL DELAY3
JNB P3.2, LOOP3 ;判断是否恢复中断
POP 4 ;恢复现场
POP 3
POP 2
POP 1
POP DPH
POP DPL
POP ACC
MOV A, 31H ;读取交通灯的状态
MOV DPTR, #8000H
MOVX @DPTR, A
展开阅读全文