微机原理及接口技术课程设计——交通灯
目 录
一、前言………………………………………………………………………………3
二、实验目的…………………………………………………………………………3
三、实验内容…………………………………………………………………………3
四、交通信号灯控制和管理的总体设计……………………………………………4
(一) 芯片选择及端口选择…………………………………………………………4
(二) 实验连接线路图及相关说明…………………………………………………4
(三) 设计思想………………………………………………………………………5
(四) 设计流程图……………………………………………………………………5
五、实验环境及条件…………………………………………………………………7
六、源程序……………………………………………………………………………7
七、程序运行结果……………………………………………………………………11
八、课程设计总结……………………………………………………………………11
一、前言
微机原理和接口技术是一门实践性强的学科,不但要求有较高的理论水平,而且还要求有实际的动手能力,其中很多的原量、规则、现象等仅仅靠学习教科书是无法完全掌握的,必须通过实践才能比较直观和深刻的理解。本课程设计的主要目的是提高实践能力,包括提高汇编等语言的编程能力及对接口等硬件的理解分析能力和设计接口电路的能力,在进行课程设计的过程中,可以让学生体验分析问题、提出解决方案、通过编程等手段实现解决方案、不断调试最终达到设计要求的全过程,从而帮助学生系统地掌握微机原理的接口技术的相关知识,达到将知识融会贯通的目的。
十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯—绿灯”转换间隔,并自动切换。但是,实际上不同时刻的车辆流通状况是十分复杂的,是高度非线性的、随机的,还经常受人为因素的影响,例如在救护车以及警车开过的情况下,交通灯应当为其开辟“绿色通道”,使其畅通无阻。
本次关于交通灯的课程设计在控制东西、南北方向红灯—绿灯—黄灯自动转换的情况下,利用控制中断芯片8259A控制在紧急情况下东西、南北红绿灯全红让特殊车辆通过。
二、实验目的
1、了解交通灯管理的基本工作原理
2、熟悉8259A中断控制器的工作原理和应用编程
3、熟悉8255A并行接口的各种工作方式和应用
4、学习单板方式下扩展简单I/O接口的方法以双色灯的使用。
5、进一步学习微处理器的编程技术。
三、实验内容
通过汇编程序通过8255A控制交通灯的状态,通过8259A控制紧急情况下交通灯的状态,具体要求如下:
1、初始状态0为东西红灯,南北红灯。
2、然后转状态1南北绿灯通车,东西红灯。
3、过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。
4、再转状态,东西绿灯通车,南北灯灯。
5、过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯。
6、最后循环至状态1。
7、按下脉冲键,产生脉冲作为外中断源,转入中断服务程序,交通灯东西南北全红。
四、交通信号灯控制和管理的总体设计
(一) 芯片选择及端口选择
1、8255A:实现对信号灯红—绿—黄自动转换的控制。
8259A:实现在特殊情况下让信号灯全红的控制。
2、8259A的端口地址为:210H、211H
8255A的端口地址为:端口A-200H、端口B-201H、端口C-202H、控制端口-203H
(二)实验连接线路图及相关说明
线路图:
片选信号引脚连接:
8259A的片选信号引脚连接:210-217
8255A的片选信号引脚连接:200-207
(三)设计思想
将8255A控制字设置为全输出,利用端口A输出控制交通灯东西、南北方向红绿灯的变换,利用延时程序控制各种状态显示的时间。利用脉冲作为外中断源,向8259A的IRQ0请求中断,每按下一次表示出现紧急情况,中断子程序为交通灯显示全红,同样用延时程序控制全红的时间。
(四)设计流程图
主程序流程图:
中断服务程序流程图:
五、实验环境及条件
1、微机原理及接口技术试验箱
2、导线
六、源程序清单
D1 EQU 10H
D2 EQU 200H
;数据段
DATA SEGMENT
PB DB ?
DATA ENDS
;堆栈段
STACK SEGMENT STACK
STA DW 50 DUP(?)
TOP EQU LENGTH STA
STACK ENDS
;代码段
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: CLI ;关中断
XOR BX,BX ;BX,DS清零
PUSH BX
POP DS
;设置中断向量
LEA AX,IRQ0_INTERRUPT ;将外中断IRQ0的首地址赋给AX
MOV DS:WORD PTR[40],AX ;在堆栈段中开设个空间存中断入口地址的偏
;移地址IP
MOV DS:WORD PTR[42],CS ;存中断入口地址的基地址CS
NOP ;延时
PUSH CS
POP DS
;8259初始化
MOV DX,210H ;设置ICW1
MOV AL,00010011B
OUT DX,AL
JMP $+2 ;延时
MOV DX,211H ;设置ICW2,设置中断向量号08H
MOV AL,08H
OUT DX,AL
JMP $+2 ;延时
MOV DX,211H ;设置ICW4
MOV AL,01H
OUT DX,AL
JMP $+2 ;延时
MOV AL,0FEH ;设置OCW1,允许IR0中断,禁止其他中断
OUT DX,AL
MOV CX,0FFFH
LOOP $
MOV DX,210H ;设置OCW2,选择普通EOI命令,全嵌套方式
MOV AL,20H
OUT DX,AL
MOV CX,0FFFH
LOOP $
PUSH CS
POP DS
;8253初始化
MOV DX,203H ;设置为全输出
MOV AL,80H
OUT DX,AL
MOV DX,200H
MOV AL,00
OUT DX,AL ;清LED
STI
MOV DX,200H ;全红
MOV AL,0F0H
OUT DX,AL
MOV BX,7fH
CALL DLY
BG: MOV AL,01011010B ;南北绿,东西红
OUT DX,AL
MOV BX,D2
CALL DLY
MOV CX,03H
XH1: AND AL,0F5H ;绿灭
OUT DX,AL
MOV BX,D1
CALL DLY
OR AL,0aH ;绿亮
OUT DX,AL
MOV BX,D1
CALL DLY
LOOP XH1
OR AL,0a0H ;南北黄,东西红
OUT DX,AL
MOV BX,D1
CALL DLY
MOV BX,D1
CALL DLY
MOV AL,10100101B ;南北红,东西绿
OUT DX,AL
MOV BX,D2
CALL DLY
MOV CX,03
XH2: AND AL,0FaH ;绿灭
OUT DX,AL
MOV BX,D1
CALL DLY
OR AL,05H ;绿亮
OUT DX,AL
MOV BX,D1
CALL DLY
LOOP XH2
OR AL,50H ;南北红,东西黄
OUT DX,AL
MOV BX,D1
CALL DLY
MOV BX,D1
CALL DLY
JMP BG
;中断程序
IRQ0_INTERRUPT PROC NEAR
CLI
PUSH DX
PUSH AX
MOV DX,200H
MOV AL,0F0H
OUT DX,AL
MOV DX,210H
MOV AL,20H
OUT DX,AL
MOV CX,0FFFFH
LOOP $
POP AX
POP DX
STI
IRET
IRQ0_INTERRUPT ENDP
;延时程序
DLY PROC NEAR
PUSH CX
DDD: MOV CX,05ffH
CCC: LOOP CCC
DEC BX
CMP BX,0
JNE DDD
POP CX
RET
DLY ENDP
CODE ENDS
END START
注:双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,公用负端。当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。
七、程序运行结果
1、初始状态为东西红灯,南北红灯。过一段时间后,南北方向交通灯变绿,东西仍然红灯。一段时间后,南北绿灯闪,闪三次后变成黄灯,东微机原理及接口技术课程设计——交通灯
目 录
一、前言………………………………………………………………………………3
二、实验目的…………………………………………………………………………3
三、实验内容…………………………………………………………………………3
四、交通信号灯控制和管理的总体设计……………………………………………4
(一) 芯片选择及端口选择…………………………………………………………4
(二) 实验连接线路图及相关说明…………………………………………………4
(三) 设计思想………………………………………………………………………5
(四) 设计流程图……………………………………………………………………5
五、实验环境及条件…………………………………………………………………7
六、源程序……………………………………………………………………………7
七、程序运行结果……………………………………………………………………11
八、课程设计总结……………………………………………………………………11
一、前言
微机原理和接口技术是一门实践性强的学科,不但要求有较高的理论水平,而且还要求有实际的动手能力,其中很多的原量、规则、现象等仅仅靠学习教科书是无法完全掌握的,必须通过实践才能比较直观和深刻的理解。本课程设计的主要目的是提高实践能力,包括提高汇编等语言的编程能力及对接口等硬件的理解分析能力和设计接口电路的能力,在进行课程设计的过程中,可以让学生体验分析问题、提出解决方案、通过编程等手段实现解决方案、不断调试最终达到设计要求的全过程,从而帮助学生系统地掌握微机原理的接口技术的相关知识,达到将知识融会贯通的目的。
十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯—绿灯”转换间隔,并自动切换。但是,实际上不同时刻的车辆流通状况是十分复杂的,是高度非线性的、随机的,还经常受人为因素的影响,例如在救护车以及警车开过的情况下,交通灯应当为其开辟“绿色通道”,使其畅通无阻。
本次关于交通灯的课程设计在控制东西、南北方向红灯—绿灯—黄灯自动转换的情况下,利用控制中断芯片8259A控制在紧急情况下东西、南北红绿灯全红让特殊车辆通过。
二、实验目的
1、了解交通灯管理的基本工作原理
2、熟悉8259A中断控制器的工作原理和应用编程
3、熟悉8255A并行接口的各种工作方式和应用
4、学习单板方式下扩展简单I/O接口的方法以双色灯的使用。
5、进一步学习微处理器的编程技术。
三、实验内容
通过汇编程序通过8255A控制交通灯的状态,通过8259A控制紧急情况下交通灯的状态,具体要求如下:
1、初始状态0为东西红灯,南北红灯。
2、然后转状态1南北绿灯通车,东西红灯。
3、过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。
4、再转状态,东西绿灯通车,南北灯灯。
5、过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯。
6、最后循环至状态1。
7、按下脉冲键,产生脉冲作为外中断源,转入中断服务程序,交通灯东西南北全红。
四、交通信号灯控制和管理的总体设计
(一) 芯片选择及端口选择
1、8255A:实现对信号灯红—绿—黄自动转换的控制。
8259A:实现在特殊情况下让信号灯全红的控制。
2、8259A的端口地址为:210H、211H
8255A的端口地址为:端口A-200H、端口B-201H、端口C-202H、控制端口-203H
(二)实验连接线路图及相关说明
线路图:
片选信号引脚连接:
8259A的片选信号引脚连接:210-217
8255A的片选信号引脚连接:200-207
(三)设计思想
将8255A控制字设置为全输出,利用端口A输出控制交通灯东西、南北方向红绿灯的变换,利用延时程序控制各种状态显示的时间。利用脉冲作为外中断源,向8259A的IRQ0请求中断,每按下一次表示出现紧急情况,中断子程序为交通灯显示全红,同样用延时程序控制全红的时间。
(四)设计流程图
主程序流程图:
中断服务程序流程图:
五、实验环境及条件
1、微机原理及接口技术试验箱
2、导线
六、源程序清单
D1 EQU 10H
D2 EQU 200H
;数据段
DATA SEGMENT
PB DB ?
DATA ENDS
;堆栈段
STACK SEGMENT STACK
STA DW 50 DUP(?)
TOP EQU LENGTH STA
STACK ENDS
;代码段
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: CLI ;关中断
XOR BX,BX ;BX,DS清零
PUSH BX
POP DS
;设置中断向量
LEA AX,IRQ0_INTERRUPT ;将外中断IRQ0的首地址赋给AX
MOV DS:WORD PTR[40],AX ;在堆栈段中开设个空间存中断入口地址的偏
;移地址IP
MOV DS:WORD PTR[42],CS ;存中断入口地址的基地址CS
NOP ;延时
PUSH CS
POP DS
;8259初始化
MOV DX,210H ;设置ICW1
MOV AL,00010011B
OUT DX,AL
JMP $+2 ;延时
MOV DX,211H ;设置ICW2,设置中断向量号08H
MOV AL,08H
OUT DX,AL
JMP $+2 ;延时
MOV DX,211H ;设置ICW4
MOV AL,01H
OUT DX,AL
JMP $+2 ;延时
MOV AL,0FEH ;设置OCW1,允许IR0中断,禁止其他中断
OUT DX,AL
MOV CX,0FFFH
LOOP $
MOV DX,210H ;设置OCW2,选择普通EOI命令,全嵌套方式
MOV AL,20H
OUT DX,AL
MOV CX,0FFFH
LOOP $
PUSH CS
POP DS
;8253初始化
MOV DX,203H ;设置为全输出
MOV AL,80H
OUT DX,AL
MOV DX,200H
MOV AL,00
OUT DX,AL ;清LED
STI
MOV DX,200H ;全红
MOV AL,0F0H
OUT DX,AL
MOV BX,7fH
CALL DLY
BG: MOV AL,01011010B ;南北绿,东西红
OUT DX,AL
MOV BX,D2
CALL DLY
MOV CX,03H
XH1: AND AL,0F5H ;绿灭
OUT DX,AL
MOV BX,D1
CALL DLY
OR AL,0aH ;绿亮
OUT DX,AL
MOV BX,D1
CALL DLY
LOOP XH1
OR AL,0a0H ;南北黄,东西红
OUT DX,AL
MOV BX,D1
CALL DLY
MOV BX,D1
CALL DLY
MOV AL,10100101B ;南北红,东西绿
OUT DX,AL
MOV BX,D2
CALL DLY
MOV CX,03
XH2: AND AL,0FaH ;绿灭
OUT DX,AL
MOV BX,D1
CALL DLY
OR AL,05H ;绿亮
OUT DX,AL
MOV BX,D1
CALL DLY
LOOP XH2
OR AL,50H ;南北红,东西黄
OUT DX,AL
MOV BX,D1
CALL DLY
MOV BX,D1
CALL DLY
JMP BG
;中断程序
IRQ0_INTERRUPT PROC NEAR
CLI
PUSH DX
PUSH AX
MOV DX,200H
MOV AL,0F0H
OUT DX,AL
MOV DX,210H
MOV AL,20H
OUT DX,AL
MOV CX,0FFFFH
LOOP $
POP AX
POP DX
STI
IRET
IRQ0_INTERRUPT ENDP
;延时程序
DLY PROC NEAR
PUSH CX
DDD: MOV CX,05ffH
CCC: LOOP CCC
DEC BX
CMP BX,0
JNE DDD
POP CX
RET
DLY ENDP
CODE ENDS
END START
注:双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,公用负端。当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。
七、程序运行结果
1、初始状态为东西红灯,南北红灯。过一段时间后,南北方向交通灯变绿,东西仍然红灯。一段时间后,南北绿灯闪,闪三次后变成黄灯,东西仍为红灯。一段时间,南北红灯亮,同时东西方向变成绿灯。同样,一段时间后,东西绿灯闪,闪三次后变黄灯,南北为红灯。一段时间又回到南北绿灯,东西红灯,如此往复循环。
2、当按下脉冲键,产生一个脉冲,交通灯东西南北方向都变成红灯,一段时间后又恢复到变成红灯前的状态。
八、课程设计总结
二、实验目的
1、了解交通灯管理的基本工作原理
2、熟悉8259A中断控制器的工作原理和应用编程
3、熟悉8255A并行接口的各种工作方式和应用
4、学习单板方式下扩展简单I/O接口的方法以双色灯的使用。
5、进一步学习微处理器的编程技术。