华电电气微机原理综合交通灯设计.docx

上传人:b****7 文档编号:10550656 上传时间:2023-02-21 格式:DOCX 页数:47 大小:273.30KB
下载 相关 举报
华电电气微机原理综合交通灯设计.docx_第1页
第1页 / 共47页
华电电气微机原理综合交通灯设计.docx_第2页
第2页 / 共47页
华电电气微机原理综合交通灯设计.docx_第3页
第3页 / 共47页
华电电气微机原理综合交通灯设计.docx_第4页
第4页 / 共47页
华电电气微机原理综合交通灯设计.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

华电电气微机原理综合交通灯设计.docx

《华电电气微机原理综合交通灯设计.docx》由会员分享,可在线阅读,更多相关《华电电气微机原理综合交通灯设计.docx(47页珍藏版)》请在冰豆网上搜索。

华电电气微机原理综合交通灯设计.docx

华电电气微机原理综合交通灯设计

微机原理与接口技术实验报告

综合实验红绿灯仿真及实现

专业:

电力系班级:

电气1409

学号:

************姓名:

WAY

预习报告成绩实验成绩:

实验日期及时间:

(1)2017/5/13机位号:

(2)2017/5/20机位号:

B11

*******

综合实验项目基本要求(任务书):

设计实现交通信号灯系统。

设A车道与B车道交叉组成十字路口,A是主道,B是支道,直接对车辆进行交通管理,基本要求如下:

(1)用发光二极管模拟交通信号灯;

(2)正常情况下,A、B两车道轮流放行,A车道放行绿灯亮,其中3秒用于警告(黄灯亮);B车道放行绿灯亮,其中3秒用于警告(黄灯亮);A、B车道放行、禁止通行时间自己定义;

(3)有紧急车辆通过时,按下某开关使A、B车道均为红灯,紧急情况解除后,恢复正常控制。

注意:

除上述基本要求外,其它各种功能,可以自由发挥。

一实验一:

在Proteus仿真实现交通信号灯系统。

(1)交通信号灯系统设计描述(实现内容)

用发光二极管模拟交通信号灯;

正常情况下,A、B两车道轮流放行。

A车道绿灯放行,直行箭头亮,人行道红灯亮,B道红灯亮,直行红箭头亮,人行道绿灯亮延时10秒;A车道绿灯闪烁两次B车道红灯禁止放行,然后A车道延时3秒用于警告(黄灯亮);A车道红灯亮,A车道左转箭头亮,延时5秒;B车道绿灯,直行箭头亮,人行道红灯亮,A车道禁止放行红灯亮直行红箭头亮,人行道绿灯亮延时10秒,B车道绿灯闪烁2次,A车道禁止放行红灯亮,然后3秒用于警告(黄灯亮);B车道红灯亮,B车道左转箭头亮,延时5秒;恢复到初始状态.

有紧急车辆通过时,按下某开关使A、B车道均为红灯,紧急情况延时5秒;

A道有特种车辆通过时,按下某开关使A车道为绿灯B车道为红灯,延时5秒;

用数码管显示绿灯通行、黄灯等待时间;

(2)Proteus中实现原理图

下图为矢量图可以放大看

(3)源程序清单

;8253的端口地址

A1_PORTEQU220H;0#

B1_PORTEQU222H;1#

C1_PORTEQU224H;2#

CT1_PORTEQU226H;CONTROL

;8255#1端口地址

A_PORTEQU200H

B_PORTEQU202H

C_PORTEQU204H

CT_PORTEQU206H

;8255#2(A道LED)端口地址

A2_PORTEQU230H

B2_PORTEQU232H

C2_PORTEQU234H

CT2_PORTEQU236H

;8255#3(B道LED)端口地址

A3_PORTEQU228H

B3_PORTEQU22AH

C3_PORTEQU22CH

CT3_PORTEQU22EH

;8255#4(A、B道左转LED)端口地址

A4_PORTEQU238H

B4_PORTEQU23AH

C4_PORTEQU23CH

CT4_PORTEQU23EH

;8259A的端口地址

O_ADREQU212H;奇地址

E_ADREQU210H;偶地址

DATASSEGMENT

;七段码

ORG0F0000H

TABDB00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,10H,11H,12H,13H,14H,15H

AB_FLAGDB0;0表示A道,1表示B道

ORG6000H

;人行道段码表

ROW1DB01H,02H,04H,08H,10H,20H,40H,80H

CEL1DB0F7H,0F7H,0F7H,0F7H,0E7H,0DBH,0BDH,7EH

;箭头段码表

CEL2DB0E7H,0C3H,0A5H,66H,0E7H,0E7H,0E7H,0E7H

UNABLEDB7EH,0BDH,0DBH,0E7H,0E7H,0DBH,0BDH,7EH

ALFTDB0F3H,0F9H,0H,79H,73H,7FH,7FH,7FH

DATASENDS

CODESEGMENTPUBLIC'CODE'

ASSUMECS:

CODE,DS:

DATAS

ORG2000H

START:

;Writeyourcodehere

PUSHDS

CLI

;8253计数器0的初始化

MOVAL,36H;控制字00110110B,计数器0,方式3,二进制

MOVDX,CT1_PORT

OUTDX,AL;送控制端口

;8253计数器1的初始化

MOVAL,70H;控制字01110000B,计数器1,方式0,二进制

MOVDX,CT1_PORT

OUTDX,AL;送控制端口

;8259A的初始化

;00010011,ICW1,边沿触发,无从片,写ICW4

MOVAL,13H

MOVDX,E_ADR;偶地址

OUTDX,AL

;ICW2,IR0中断向量码为08H

MOVAL,08H

MOVDX,O_ADR;奇地址

OUTDX,AL

MOVAL,0FH

MOVDX,O_ADR;奇地址

OUTDX,AL

;ICW4,CPU为80X86系列,非自动结束,无缓冲,全嵌套方式

MOVAL,01H

OUTDX,AL

MOVAL,7EH

OUTDX,AL;OCW1,只允许IR0开放

;中断向量表的初始化

MOVAX,0000H

MOVDS,AX

MOVSI,08H*4

MOVAX,OFFSETIR0

MOVBX,SEGIR0

MOV[SI],AX

MOV[SI+2],BX

;IR7中断向量

MOVSI,0FH*4

MOVAX,OFFSETIR7

MOVBX,SEGIR7

MOV[SI],AX

MOV[SI+2],BX

;8255#1初始化

MOVAL,88H;正定控制字1000,1000,方式0,A口输出,C口输入

MOVDX,CT_PORT

OUTDX,AL

;8255#2初始化

MOVAL,80H;正定控制字1000,1000,方式0,A口、B、C输出

MOVDX,CT2_PORT

OUTDX,AL

;8255#3初始化

MOVAL,80H;正定控制字1000,1000,方式0,A口、B、C输出

MOVDX,CT3_PORT

OUTDX,AL

;8255#4初始化

MOVAL,80H;正定控制字1000,1000,方式0,A口、B、C输出

MOVDX,CT4_PORT

OUTDX,AL

;A道绿灯,B道红灯,延时10s,默认是A道,即AB_FLAG=0

LP:

PUSHDS

CLI

STI;开中断

POPDS

MOVAL,0F3H

MOVDX,A_PORT;A道绿灯,B道红灯

OUTDX,AL

;延时10S

MOVCX,10

YS1:

CALLNORMALDELAY1S

LOOPYS1

;A道绿灯闪烁,B道红灯禁止,闪两次

MOVAL,0F7H

MOVDX,A_PORT;A道绿灯灭,B道红灯禁止,第一次

OUTDX,AL

CALLNORMALDELAY1S

MOVAL,0F3H

MOVDX,A_PORT;A道绿灯亮,B道红灯禁止,第一次

OUTDX,AL

CALLNORMALDELAY1S

MOVAL,0F7H

MOVDX,A_PORT;A道绿灯灭,B道红灯禁止,第二次

OUTDX,AL

CALLNORMALDELAY1S

MOVAL,0F3H

MOVDX,A_PORT;A道绿灯亮,B道红灯禁止,第二次

OUTDX,AL

CALLNORMALDELAY1S

;A道黄灯亮,B道红灯禁止,延时3s

MOVAL,0F5H

MOVDX,A_PORT;A道黄灯亮,B道红灯禁止

OUTDX,AL

;延时3S

MOVCX,3

YS2:

CALLNORMALDELAY1S

LOOPYS2

;A道直行红灯亮,左转绿灯,人行道红灯亮,B道红灯,延时5秒

MOVCX,5

AZZYS1:

CALLAZZDELAY1S

LOOPAZZYS1

;B道绿灯放行,A道红灯禁止,延时10s,修改标志为B道

MOVAL,AB_FLAG

INCAL

MOVAB_FLAG,AL

MOVAL,0DEH

MOVDX,A_PORT;B道绿灯放行,A道红灯禁止

OUTDX,AL

;延时10S程序

MOVCX,10

YS3:

CALLNORMALDELAY1SS

LOOPYS3

;B道绿灯闪烁,A道红灯禁止,闪两次

MOVAL,0FEH

MOVDX,A_PORT;B道绿灯灭,A道红灯禁止,第一次

OUTDX,AL

CALLNORMALDELAY1SS

MOVAL,0DEH

MOVDX,A_PORT;B道绿灯亮,A道红灯禁止,第一次

OUTDX,AL

CALLNORMALDELAY1SS

MOVAL,0FEH

MOVDX,A_PORT;B道绿灯灭,A道红灯禁止,第二次

OUTDX,AL

CALLNORMALDELAY1SS

MOVAL,0DEH

MOVDX,A_PORT;B道绿灯亮,A道红灯禁止,第二次

OUTDX,AL

CALLNORMALDELAY1SS

;B道黄灯亮,A道红灯禁止,延时3s

MOVAL,0EEH

MOVDX,A_PORT;B道黄灯亮,A道红灯禁止

OUTDX,AL

;延时3S程序

MOVCX,3

YS4:

CALLNORMALDELAY1SS

LOOPYS4

;B道直行红灯亮,左转绿灯,A道红灯,延时5秒

MOVCX,5

BZZYS1:

CALLBZZDELAY1S

LOOPBZZYS1

;修改标志为A道

MOVAL,AB_FLAG

DECAL

MOVAB_FLAG,AL

JMPLP

IR0PROC

CLI

PUSHCX

MOVAL,0F6H;A道B道红灯禁止

MOVDX,A_PORT

OUTDX,AL

MOVCX,6

ZDYS1:

CALLUNNORMALDELAY1S

LOOPZDYS1

POPCX

MOVAL,20H

MOVDX,E_ADR

OUTDX,AL;OCW2发结束命令EOI=1

TESTAB_FLAG,1

JZLIA

JMPLIB

LIA:

MOVAL,0F3H

MOVDX,A_PORT;A道绿灯,B道红灯

OUTDX,AL

JMPDONE

LIB:

MOVAL,0DEH

MOVDX,A_PORT;B道绿灯放行,A道红灯禁止

OUTDX,AL

DONE:

STI

IRET

IR0ENDP

IR7PROC

CLI

PUSHCX

MOVAL,0F3H;A道绿灯,B道红灯禁止

MOVDX,A_PORT

OUTDX,AL

MOVCX,5

ZDYS2:

CALLNORMALDELAY1S

LOOPZDYS2

POPCX

MOVAL,20H

MOVDX,E_ADR;偶地址

OUTDX,AL;OCW2发结束命令EOI=1

TESTAB_FLAG,1

JZLIA

JMPLIB

LIA:

MOVAL,0F3H

MOVDX,A_PORT;A道绿灯,B道红灯

OUTDX,AL

JMPDONE

LIB:

MOVAL,0DEH

MOVDX,A_PORT;B道绿灯放行,A道红灯禁止

OUTDX,AL

DONE:

STI

IRET

IR7ENDP

;1s精确延时

NORMALDELAY1SPROC

MOVAL,AB_FLAG

CMPAL,0

JZAPATH

;设置PC0为高

MOVAL,1

MOVDX,C_PORT

OUTDX,AL

JMPSEC_DIS

APATH:

;设置PC0为低

MOVAL,0

MOVDX,C_PORT

OUTDX,AL

SEC_DIS:

;保存所余秒数

MOVBX,CX

;从PB口输出剩余秒数到LED

LEASI,TAB

ADCBX,SI

MOVAX,DS:

[BX]

MOVDX,B_PORT

OUTDX,AL

;设置计数器0的初值

MOVAX,1000

MOVDX,A1_PORT

OUTDX,AL

MOVAL,AH

OUTDX,AL

;设置计数器1的初值

MOVAX,1000

MOVDX,B1_PORT

OUTDX,AL

MOVAL,AH

OUTDX,AL

;判断计数时间是否达到1s

PUSHSI

PUSHDI

PUSHBX

PUSHCX

N:

MOVCX,8

LEASI,ROW1

LEADI,CEL1

LEABX,CEL2

LOOP2:

MOVAL,[SI]

MOVDX,A2_PORT

OUTDX,AL

MOVAL,[BX]

MOVDX,C2_PORT

OUTDX,AL

MOVAL,[SI]

MOVDX,A2_PORT

OUTDX,AL

MOVAL,[DI]

MOVDX,B2_PORT

OUTDX,AL

INCSI

INCDI

INCBX

PUSHCX

MOVCX,150

LOOP$

POPCX

LOOPLOOP2

MOVDX,C_PORT

INAL,DX

ANDAL,80H

CMPAL,80H

JNZN

DONE1:

POPCX

POPBX

POPDI

POPSI

RET

NORMALDELAY1SENDP

NORMALDELAY1SSPROC

MOVAL,AB_FLAG

CMPAL,0

JZAPATH

;设置PC0为高

MOVAL,1

MOVDX,C_PORT

OUTDX,AL

JMPSEC_DIS

APATH:

;设置PC0为低

MOVAL,0

MOVDX,C_PORT

OUTDX,AL

SEC_DIS:

;保存所余秒数

MOVBX,CX

;从PB口输出剩余秒数到LED

LEASI,TAB

ADCBX,SI

MOVAX,DS:

[BX]

MOVDX,B_PORT

OUTDX,AL

;设置计数器0的初值

MOVAX,1000

MOVDX,A1_PORT

OUTDX,AL

MOVAL,AH

OUTDX,AL

;设置计数器1的初值

MOVAX,1000

MOVDX,B1_PORT

OUTDX,AL

MOVAL,AH

OUTDX,AL

;判断计数时间是否达到1s

PUSHSI

PUSHDI

PUSHBX

PUSHCX

N:

MOVCX,8

LEASI,ROW1

LEADI,CEL1

LEABX,CEL2

LOOP2:

MOVAL,[SI]

MOVDX,A3_PORT

OUTDX,AL

MOVAL,[BX]

MOVDX,C3_PORT

OUTDX,AL

MOVAL,[SI]

MOVDX,A3_PORT

OUTDX,AL

MOVAL,[DI]

MOVDX,B3_PORT

OUTDX,AL

INCSI

INCDI

INCBX

PUSHCX

MOVCX,150

LOOP$

POPCX

LOOPLOOP2

MOVDX,C_PORT

INAL,DX

ANDAL,80H

CMPAL,80H

JNZN

POPCX

POPBX

POPDI

POPSI

RET

NORMALDELAY1SSENDP

;中断1调用延时

UNNORMALDELAY1SPROC

MOVAL,AB_FLAG

CMPAL,0

JZAPATH

;设置PC0为高

MOVAL,1

MOVDX,C_PORT

OUTDX,AL

JMPSEC_DIS

APATH:

;设置PC0为低

MOVAL,0

MOVDX,C_PORT

OUTDX,AL

SEC_DIS:

;保存所余秒数

MOVBX,CX

;从PB口输出剩余秒数到LED

LEASI,TAB

ADCBX,SI

MOVAX,DS:

[BX]

MOVDX,B_PORT

OUTDX,AL

;设置计数器0的初值

MOVAX,1000

MOVDX,A1_PORT

OUTDX,AL

MOVAL,AH

OUTDX,AL

;设置计数器1的初值

MOVAX,1000

MOVDX,B1_PORT

OUTDX,AL

MOVAL,AH

OUTDX,AL

;判断计数时间是否达到1s

PUSHSI

PUSHDI

PUSHBX

PUSHCX

N:

MOVCX,8

LEASI,ROW1

LEADI,UNABLE

LEABX,UNABLE

LOOP2:

MOVAL,[SI]

MOVDX,A3_PORT

OUTDX,AL

MOVAL,[BX]

MOVDX,C3_PORT

OUTDX,AL

MOVAL,[SI]

MOVDX,A3_PORT

OUTDX,AL

MOVAL,[DI]

MOVDX,B3_PORT

OUTDX,AL

INCSI

INCDI

INCBX

PUSHCX

MOVCX,150

LOOP$

POPCX

LOOPLOOP2

MOVDX,C_PORT

INAL,DX

ANDAL,80H

CMPAL,80H

JNZN

POPCX

POPBX

POPDI

POPSI

RET

UNNORMALDELAY1SENDP

AZZDELAY1SPROC

MOVAL,0DEH

MOVDX,A_PORT;B道绿灯放行,A道红灯禁止

OUTDX,AL

MOVAL,AB_FLAG

CMPAL,0

JZAPATH

;设置PC0为高

MOVAL,1

MOVDX,C_PORT

OUTDX,AL

JMPSEC_DIS

APATH:

;设置PC0为低

MOVAL,0

MOVDX,C_PORT

OUTDX,AL

SEC_DIS:

;保存所余秒数

MOVBX,CX

;从PB口输出剩余秒数到LED

LEASI,TAB

ADCBX,SI

MOVAX,DS:

[BX]

MOVDX,B_PORT

OUTDX,AL

;设置计数器0的初值

MOVAX,1000

MOVDX,A1_PORT

OUTDX,AL

MOVAL,AH

OUTDX,AL

;设置计数器1的初值

MOVAX,1000

MOVDX,B1_PORT

OUTDX,AL

MOVAL,AH

OUTDX,AL

;判断计数时间是否达到1s

PUSHSI

PUSHDI

PUSHBX

PUSHCX

N:

MOVCX,8

LEASI,ROW1

LEADI,ALFT

LEABX,UNABLE

LOOP2:

MOVAL,[SI]

MOVDX,A4_PORT

OUTDX,AL

MOVAL,[BX]

MOVDX,C4_PORT

OUTDX,AL

MOVAL,[SI]

MOVDX,A4_PORT

OUTDX,AL

MOVAL,[DI]

MOVDX,B4_PORT

OUTDX,AL

INCSI

INCDI

INCBX

PUSHCX

MOVCX,150

LOOP$

POPCX

LOOPLOOP2

MOVDX,C_PORT

INAL,DX

ANDAL,80H

CMPAL,80H

JNZN

POPCX

POPBX

POPDI

POPSI

RET

 

AZZDELAY1SENDP

BZZDELAY1SPROC

MOVAL,0F3H

MOVDX,A_PORT;A道绿灯,B道红灯

OUTDX,AL

MOVAL,AB_FLAG

CMPAL,0

JZAPATH

;设置PC0为高

MOVAL,1

MOVDX,C_PORT

OUTDX,AL

JMPSEC_DIS

APATH:

;设置PC0为低

MOVAL,0

MOVDX,C_PORT

OUTDX,AL

SEC_DIS:

;保存所余秒数

MOVBX,CX

;从PB口输出剩余秒数到LED

LEASI,TAB

ADCBX,SI

MOVAX,DS:

[BX]

MOVDX,B_PORT

OUTDX,AL

;设置计数器0的初值

MOVAX,1000

MOVDX,A1_PORT

OUTDX,AL

MOVAL,AH

OUTDX,AL

;设置计数器1的初值

MOVAX,1000

MOVDX,B1_PORT

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

当前位置:首页 > 医药卫生 > 基础医学

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

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