模拟交通灯.docx

上传人:b****7 文档编号:9830688 上传时间:2023-02-06 格式:DOCX 页数:24 大小:206.83KB
下载 相关 举报
模拟交通灯.docx_第1页
第1页 / 共24页
模拟交通灯.docx_第2页
第2页 / 共24页
模拟交通灯.docx_第3页
第3页 / 共24页
模拟交通灯.docx_第4页
第4页 / 共24页
模拟交通灯.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

模拟交通灯.docx

《模拟交通灯.docx》由会员分享,可在线阅读,更多相关《模拟交通灯.docx(24页珍藏版)》请在冰豆网上搜索。

模拟交通灯.docx

模拟交通灯

微机原理与接口技术

课程设计

 

题目:

十字路口交通灯模拟

院(系):

计算机科学与技术学院

专业班级:

计科0804班

姓名:

李媛李学梅

学号:

08080304070808030405

2011年7月4日

班级

计科0804班

姓名

李媛,李学梅

学号

0808030407

0808030405

实验时间

2011年7月4日

实验名称

交通灯显示系统

实验地点

机房

实验目的

本实验是对并行口、中断控制器、定时器/计数器的一次综合性自行设计练习

实验性质

设计型实验

实验设备

唐都仪器

指导教师

薛萍

成绩

实验步骤

一、分析问题

二、绘制流程图

三、设计硬件电路

四、程序代码书写

五、装入程序、调试

六、结果分析

实验记录

(见实验详细部分)

实验结果(或测试记录分析)

(见实验详细部分)

目录

摘要3

一、题目要求和方案分析4

1.题目要求:

4

2.方案分析4

二、方案设计4

1.十字路口4

2.硬件连线图4

3.流程图:

5

三、实现程序7

四、设计结果及分析14

五、心得体会15

六、参考文献15

摘要

本设计以唐都仪实验箱为载体,结合中断控制器8259A、并行接口8255、中断定时器8253、七段数码显示管LED及八个发光二极管的功能,用汇编语言编程实现了十字路口交通灯模拟的实验。

8255A的两个端口在本次实验中均有用处,A口为方式0用作输出,与七段数码管LED连接,用于向七段数码管输入数据的。

B口为方式0用作输出,与八个发光二极管连接,用于向发光二极管输入数据。

C口低四位在本实验中做输出与LED数码管相连,高四位没有用到,但在初始化中将C口均初始化为输出。

8253A芯片在本实验中用了计数器2工作在方式3下,计数初值赋为59500,工作箱的时钟频率为1.19MHz,即计时50ms,它的OUT2接到8259A的IRQ7上,让IRQ7每隔50ms发一次中断,这样就可以通过控制发中断的次数来得到想要的时间。

8259A芯片在本实验中被用到了4个中断,作为计时或在特殊情况下的特殊功能。

IRQ1是在遇到特殊情况,东西干道和南北干道都显示红灯,LED显示‘SP'表示‘STOP'由按键k1来控制。

IRQ2是在午夜车流量较少时,LED显示倒数6秒由按键k2控制。

IRQ6是用于控制交通灯由特殊情况恢复为通常情况。

IRQ7是用于控制计时的。

 

一、题目要求和方案分析

1.题目要求:

(1)显示红绿灯等待时间,时间限制(30秒)。

(2)黄灯要求出现,时间限制(5秒)。

(3)东西,南北分别显示。

2.方案分析:

本实验用到了8253A,8255A,8259A芯片,用8253A来计时,8255A的A、B口来做输出与七段数码管和发光二极管相连,8255A来发中断控制计时和特殊情况。

二、方案设计

1.十字路口

2.硬件连线图:

3.流程图:

总体流程图

VIP情况:

夜晚模式:

显示子程序:

延时子程序:

三、实现程序

STACKSEGMENTSTACK

DB200DUP(0)

STACKENDS

DATASEGMENT

LIVINGDB'HAVEAGOODDAY!

',0AH,0DH,00H

NIGHTDB'NOCARPASSBY6MINUTES!

',0AH,0DH,00H

VIPDB'ITISVIPTIME!

',0AH,0DH,00H

TIMEDB00H,03H,05H,03H

LEDTALDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,73H

COUNTDW0

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

PUSHDS

MOVAX,0000H

MOVDS,AX

MOVAX,OFFSETIRQ6

ADDAX,2000H

MOVSI,0038H

MOV[SI],AX

MOVAX,0000H

MOVSI,003AH

MOV[SI],AX

CLI

POPDS

INAL,21H

ANDAL,0BFH

OUT21H,AL

PUSHDS

MOVAX,0000H

MOVDS,AX

MOVAX,OFFSETIRQ1

ADDAX,2000H

MOVSI,0024H

MOV[SI],AX

MOVAX,0000H

MOVSI,0026H

MOV[SI],AX

CLI

POPDS

INAL,21H

ANDAL,0FDH

OUT21H,AL

PUSHDS

MOVAX,0000H

MOVDS,AX

MOVAX,OFFSETIRQ2

ADDAX,2000H

MOVSI,0028H

MOV[SI],AX

MOVAX,0000H

MOVSI,002AH

MOV[SI],AX

CLI

POPDS

INAL,21H

ANDAL,0FBH

OUT21H,AL

PUSHDS

MOVAX,0000H

MOVDS,AX

MOVAX,OFFSETIRQ7

ADDAX,2000H

MOVSI,003CH

MOV[SI],AX

MOVAX,0000H

MOVSI,003EH

MOV[SI],AX

CLI

POPDS

INAL,21H

ANDAL,7FH

OUT21H,AL

F1:

MOVAH,06H

MOVBX,OFFSETLIVING

INT10H

MOVAL,80H

OUT63H,AL

MOVAL,0B6H

OUT43H,AL

MOVAX,59500

OUT42H,AL

MOVAL,AH

OUT42H,AL

MOVCOUNT,0

STI

S1:

MOVAL,0C3H

OUT61H,AL

CALLDISP

CMPCOUNT,20

JLS1

MOVCOUNT,0

MOVDI,OFFSETTIME

MOVAL,[DI+1]

CMPAL,00H

JZA5

MOVAL,[DI]

CMPAL,00H

JZA6

DECAL

MOV[DI],AL

A2:

MOVAL,[DI+2]

CMPAL,00H

JZA3

DECAL

MOV[DI+2],AL

JMPS1

A3:

MOVAL,9

MOV[DI+2],AL

MOVAL,[DI+3]

DECAL

MOV[DI+3],AL

JMPS1

A5:

MOVAL,[DI]

CMPAL,01H

JZA0

DECAL

MOV[DI],AL

JMPA2

A6:

MOVAL,9

MOV[DI],AL

MOVAL,[DI+1]

DECAL

MOV[DI+1],AL

JMPA2

A0:

MOVAL,05H

MOV[DI],AL

MOV[DI+2],AL

JMPS21

S21:

MOVAL,0CCH

OUT61H,AL

CALLDISP

CMPCOUNT,20

JLS21

MOVCOUNT,0

MOVDI,OFFSETTIME

MOVAL,[DI]

CMPAL,00H

JZA7

DECAL

MOV[DI],AL

MOVAL,[DI+2]

DECAL

MOV[DI+2],AL

JMPS22

A7:

MOVAL,3

MOV[DI+1],AL

MOVAL,5

MOV[DI],AL

MOVAL,3

MOV[DI+3],AL

MOVAL,0

MOV[DI+2],AL

JMPS3

S22:

MOVAL,0CFH

OUT61H,AL

CALLDISP

CMPCOUNT,20

JLS22

MOVCOUNT,0

MOVDI,OFFSETTIME

MOVAL,[DI]

CMPAL,00H

JZA7

DECAL

MOV[DI],AL

MOVAL,[DI+2]

DECAL

MOV[DI+2],AL

JMPS21

S3:

MOVAL,3CH

OUT61H,AL

CALLDISP

CMPCOUNT,20

JLS3

MOVCOUNT,0

MOVDI,OFFSETTIME

MOVAL,[DI+3]

CMPAL,00H

JZA8

MOVAL,[DI+2]

CMPAL,00H

JZA9

DECAL

MOV[DI+2],AL

A11:

MOVAL,[DI]

CMPAL,00H

JZA12

DECAL

MOV[DI],AL

JMPS3

A8:

MOVAL,[DI+2]

CMPAL,01H

JZA1

DECAL

MOV[DI+2],AL

JMPA11

A9:

MOVAL,9

MOV[DI+2],AL

MOVAL,[DI+3]

DECAL

MOV[DI+3],AL

JMPA11

A12:

MOVAL,9

MOV[DI],AL

MOVAL,[DI+1]

DECAL

MOV[DI+1],AL

JMPS3

A1:

MOVAL,05H

MOV[DI+2],AL

MOV[DI],AL

JMPS41

S41:

MOVAL,0FH

OUT61H,AL

CALLDISP

CMPCOUNT,20

JLS41

MOVCOUNT,0

MOVDI,OFFSETTIME

MOVAL,[DI]

CMPAL,00H

JZA10

DECAL

MOV[DI],AL

MOVAL,[DI+2]

DECAL

MOV[DI+2],AL

JMPS42

A10:

MOVAL,3

MOV[DI+1],AL

MOVAL,0

MOV[DI],AL

MOVAL,3

MOV[DI+3],AL

MOVAL,5

MOV[DI+2],AL

JMPS1

S42:

MOVAL,3FH

OUT61H,AL

CALLDISP

CMPCOUNT,20

JLS42

MOVCOUNT,0

MOVDI,OFFSETTIME

MOVAL,[DI+2]

CMPAL,00H

JZA10

DECAL

MOV[DI+2],AL

MOV[DI],AL

JMPS41

IRQ6:

MOVAL,20H

OUT20H,AL

MOVDI,OFFSETTIME

MOVAL,3

MOV[DI+1],AL

MOVAL,0

MOV[DI],AL

MOVAL,3

MOV[DI+3],AL

MOVAL,5

MOV[DI+2],AL

JMPF1

IRET

IRQ1:

MOVAL,20H

OUT20H,AL

MOVAH,06H

MOVBX,OFFSETVIP

INT10H

L7:

STI

MOVDI,OFFSETTIME

MOVAL,5

MOV[DI+1],AL

MOV[DI+3],AL

MOVAL,10

MOV[DI],AL

MOV[DI+2],AL

MOVAL,0FH

OUT61H,AL

CALLDISP

JMPL7

IRET

IRQ2:

MOVAL,20H

OUT20H,AL

MOVAH,06H

MOVBX,OFFSETNIGHT

INT10H

STI

L0:

MOVDI,OFFSETTIME

MOVAL,0

MOV[DI+1],AL

MOVAL,6

MOV[DI],AL

MOVAL,0

MOV[DI+3],AL

MOVAL,6

MOV[DI+2],AL

L1:

MOVAL,0C3H

OUT61H,AL

CALLDISP

CMPCOUNT,20

JLL1

MOVCOUNT,0

MOVDI,OFFSETTIME

MOVAL,[DI]

CMPAL,00H

JZL3

DECAL

MOV[DI],AL

MOV[DI+2],AL

JMPL1

L3:

MOVDI,OFFSETTIME

MOVAL,0

MOV[DI+1],AL

MOVAL,6

MOV[DI],AL

MOVAL,0

MOV[DI+3],AL

MOVAL,6

MOV[DI+2],AL

JMPL2

L2:

MOVAL,3CH

OUT61H,AL

CALLDISP

CMPCOUNT,20

JLL2

MOVCOUNT,0

MOVDI,OFFSETTIME

MOVAL,[DI]

CMPAL,00H

JZL0

DECAL

MOV[DI],AL

MOV[DI+2],AL

JMPL2

IRET

IRQ7:

INCCOUNT

MOVAL,20H

OUT20H,AL

IRET

DISPPROCNEAR

MOVDI,OFFSETTIME

MOVCL,0FEH

ST1:

MOVAL,CL

TESTAL,10H

JZED

OUT62H,AL

ROLAL,01H

MOVCL,AL

MOVAL,[DI]

MOVBX,OFFSETLEDTAL

XLAT

OUT60H,AL

CALLDELAY

INCDI

JMPST1

ED:

RET

DISPENDP

DELAYPROCNEAR

PUSHCX

MOVCX,1000

WAIT1:

LOOPWAIT1

POPCX

RET

DELAYENDP

CODEENDS

ENDSTART

四、设计结果及分析

装入程序运行后,程序进入正常状态。

先是东西干道绿灯,南北干道红灯,LED显示30秒和35秒的倒计时;其次东西干道黄灯每隔1秒亮一次,南北干道红灯一直亮,LED显示5-0秒倒计时;再次东西干道红灯,南北干道绿灯,LED显示35秒和30秒的倒计时;最后南北干道一直保持红灯次干道绿灯闪每隔1秒亮一次,东西干道红灯一直亮,LED显示5-0秒倒计时。

这时一个周期结束,再次跳入进入起始状态,重新循环一遍。

在上述正常状态中,可由8259A发中断控制特殊情况,具体如下:

1.遇到特殊情况,所有干道都显示红灯,LED显示‘SP'表示‘STOP',由按键K1控制。

2.在午夜车流量较少时,可由按键K2发中断,LED显示倒数6秒钟。

3.上述两种特殊情况结束后,可由开关K6完成复位从35秒和30秒开始进入正常状态。

五、心得体会

这次十字路口交通灯模拟设计虽然不是我们小组自己编的但也从中学到了不少知识。

首先涉及了不少汇编语言的编程,复习了汇编语言的知识,其中对偏移地址理解不是很好,再看此程序时发现跳转相当的乱,同时从这次设计验证了老师所说的读别人的程序比自己写程序更加难,因为很难了解别人的设计思路,经过了尝试和同学的探讨,读懂了此程序,并在其基础上进行了修改,成为我们小组内的程序。

其次在编程过程中虽然初始化了中断向量是没有写进去相关如“ANDAL,0FB”的开中断程序,因此出现了按键k2夜间倒数6秒没有反应的情况;再者是延时一开始做的不好,使得数码管一闪一闪,不是很稳定,最后通过将原来设定的延时有2000H,改为1000H之后上述情况得以解决。

最后对8259中断没有掌握好,还是在老师进行检查时发现此程序存在的中断问题,低级中断无法打断高级中断,但在执行时却可以使低级中断打断高级中断,即在拨动k1进行特权请求,再拨动k6进行恢复时可以进行恢复,但按理论是无法进行的,在进行屏蔽了MOVAL,20HOUT20H,AL之后再执行发现确实无法再打断特权中断,从中得出因一开始就写中断字,输出中断,所以之后的中断都可以响应。

总之,通过这次实验发现在汇编语言方面有很大欠缺,还无法达到自己编程的水平,发现读别人的程序相当困难,还是应加强在汇编语言编程上的能力,同时对知识点的理解还不够深入,掌握的还不够熟练,还需大量的实践练习。

六、参考文献

【1】龚尚福,等,微机原理与接口技术,西安;西安电子科技大学出版社,2008

【2】龚尚福,等,微机原理与接口技术习题分析和实验指导,西安;西安电子科技大学出版社;2009

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

当前位置:首页 > 总结汇报 > 学习总结

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

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