模拟交通灯.docx
- 文档编号:9830688
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:24
- 大小:206.83KB
模拟交通灯.docx
《模拟交通灯.docx》由会员分享,可在线阅读,更多相关《模拟交通灯.docx(24页珍藏版)》请在冰豆网上搜索。
模拟交通灯
微机原理与接口技术
课程设计
题目:
十字路口交通灯模拟
院(系):
计算机科学与技术学院
专业班级:
计科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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模拟 交通灯