微机原理及应用课程设计.docx
《微机原理及应用课程设计.docx》由会员分享,可在线阅读,更多相关《微机原理及应用课程设计.docx(7页珍藏版)》请在冰点文库上搜索。
微机原理及应用课程设计
微机原理及应用课程设计
计时红绿灯的设计和制作
一、课程设计目的
课程设计要求学生自行设计和搭建有关微机应用的电路,编制和调试有关软件。
通过课程设计的教学,使学生巩固和深化已学的理论知识,加强综合应用能力,训练学生掌握分析问题、解决问题的方法,培养较强的动手能力和一定的微机应用系统的设计和调试能力。
二、课程设计内容
用实验系统的发光二极管模拟交通红绿灯,并能用数码管显示灯亮的时间剩余值。
计数原则:
红灯绿灯灯亮的时间为20秒种,在替换间隔绿灯的路口的黄灯闪烁4秒。
具体:
1、通过8255A并行口传输数据的方法,来控制LED发光二极管的亮灭。
用8255A的B端口和C端口控制12个LED发光二级管的亮和灭(输出为0则亮,输出为1则灭)。
2、过8253A应用为计数提供硬件计时,为整个红绿灯系统提供时间计数。
3、通过中断控制器8259A为红绿灯系统提供中断服务,以实现中断。
编程思路:
要完成本实验,首先必须了解交通路灯的亮灭规律。
设有一个十字路口,1、3为南,北方向,2、4为东,西方向。
初始化之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车。
延迟一段时间(20秒)后,1、3路口的绿灯熄灭,而1、3路口的黄灯开始闪烁。
闪烁若干次(延时4秒)后,1、3路口的红灯亮,同时2、4路口的绿灯亮,2、4路口方向开始通车。
延迟一段时间(20秒)后,2、4路口的绿灯熄灭,而黄灯开始闪烁。
闪烁若干次(延时4秒)后,再切换到1、3路口方向。
之后,重复上述过程。
各集成块接线:
8253连线:
(1)8253的GATE0接+5V。
(2)8253的CLK0插孔接分频器74LS393(左上方)的T5插孔。
(3)8253OUT0插孔和8259的3号中断IR3插孔相连。
8259连线:
(1)8259模块上的INT连8088的INTR(在主板键盘矩阵下面)。
(2)8253模块上的INTA连8088的INTA(在主板键盘矩阵下面)。
(3)8253OUT0插孔和8259的3号中断IR3插孔相连。
(4)8259模块上的D0~D7连到BUS2区的XD0~XD7。
(5)8259模块上的CS端接Y6。
(6)8259模块上的A0连到BUS区的XA0上。
(7)8259模块上的RD、WR信号线分别连到BUS3区的XRD、XWR上。
8255连线:
(1)L1—PC0L4—PC1L7—PC2L10—PC3
L2—PB4L5—PB5L8—PB6L11—PB7
L3—PC4L6—PC5L9—PC6L12—PC7
各集成块:
8253集成块引脚图:
8255A集成块引脚图:
8253集成块:
8255集成块:
8259集成块:
实验框图
程序
IOCONPTEQU0FF2BH;定义8255各寄存器地址
IOAPTEQU0FF28H
IOBPTEQU0FF29H
IOCPTEQU0FF2AH
INTPORT1EQU0060H
INTPORT2EQU0061H
INTQ3EQUINTREEUP3;定义中断向量
TCONTROEQU0043H;定义8253控制口和0通道地址
TCON0EQU0040H
INTQ7EQUINTREEUP7
CODESEGMENT
ASSUMECS:
CODE
ORG1000H
START:
CLD;关中断
MOVDX,IOCONPT
MOVAL,80H;写8255控制字,三个口均为0输出
OUTDX,AL
MOVAL,10100101B;13L(绿)24H(红)
MOVDX,IOCPT
OUTDX,AL
MOVBYTEPTRDS:
[0770H],20;红绿灯(数码管)
MOVBYTEPTRDS:
[0771H],1;状态
MOVBYTEPTRDS:
[0772H],0;黄灯
CALLVONBCD
CALLWRINTVER;WRITEINTRRUPT;调用写中断向量子程序
MOVAL,13H
MOVDX,INTPORT1;循环等待中断
OUTDX,AL
MOVAL,08H
MOVDX,INTPORT2
OUTDX,AL
MOVAL,09H
OUTDX,AL
MOVAL,0F7H
OUTDX,AL
MOVBYTEPTRDS:
[0771H],01H;TIME=1
MOVDX,TCONTRO
MOVAL,36H;写控制字,0通道输出方波
OUTDX,AL
MOVDX,TCON0;计数初值送0通道寄存器
MOVAL,00H
OUTDX,AL
MOVAL,00H
OUTDX,AL
STI
WAINT:
CALLDISP;调用初始显示子程序
CALLTRY
JMPWAINT
WRINTVER:
MOVAX,0H
MOVES,AX
MOVDI,002CH
LEAAX,INTQ3
STOSW
MOVAX,0000h
STOSW
RET
INTREEUP3:
CLI
DECBYTEPTRDS:
[0770H]
CMPBYTEPTRDS:
[0771H],1;判断状态
JZCH1
CMPBYTEPTRDS:
[0771H],2
JZCH2
CMPBYTEPTRDS:
[0771H],3
JZCH3
CMPBYTEPTRDS:
[0770H],0
JZCH5
MOVAL,BYTEPTRDS:
[0772H]
XORAL,01010000B
MOVBYTEPTRDS:
[0772H],AL
MOVDX,IOBPT
OUTDX,AL
JMPCHEND
CH5:
MOVBYTEPTRDS:
[0771H],1
MOVBYTEPTRDS:
[0770H],20
MOVAL,10100101B;13L24H
MOVDX,IOCPT
OUTDX,AL
MOVAL,00000000B;13L24H
MOVDX,IOBPT
OUTDX,AL
JMPCHEND
CH1:
CMPBYTEPTRDS:
[0770H],0
JNZCHEND
MOVBYTEPTRDS:
[0770H],4
MOVBYTEPTRDS:
[0771H],2
MOVAL,00000101B;13L24H
MOVDX,IOCPT
OUTDX,AL
MOVAL,10100000B
MOVBYTEPTRDS:
[0772H],AL
MOVDX,IOBPT
OUTDX,AL
JMPCHEND
CH2:
CMPBYTEPTRDS:
[0770H],0
JZCH6
MOVAL,BYTEPTRDS:
[0772H]
XORAL,10100000B
MOVBYTEPTRDS:
[0772H],AL
MOVDX,IOBPT
OUTDX,AL
JMPCHEND
CH3:
CMPBYTEPTRDS:
[0770H],0
JNZCHEND
MOVBYTEPTRDS:
[0770H],4
MOVBYTEPTRDS:
[0771H],4
MOVAL,00001010B;13L24H
MOVDX,IOCPT
OUTDX,AL
MOVAL,01010000B
MOVBYTEPTRDS:
[0772H],AL
MOVDX,IOBPT
OUTDX,AL
JMPCHEND
CH6:
MOVBYTEPTRDS:
[0770H],20
MOVBYTEPTRDS:
[0771H],3
MOVAL,01011010B;13L24H
MOVDX,IOCPT
OUTDX,AL
MOVAL,00000000B
MOVBYTEPTRDS:
[0772H],AL
MOVDX,IOBPT
OUTDX,AL
JMPCHEND
CHEND:
CALLVONBCD
INTRE2:
MOVAL,20H
MOVDX,INTPORT1
OUTDX,AL
STI
IRET
VONBCD:
PUSHAX;BCD转换
PUSHBX
MOVAL,BYTEPTRDS:
[0770H]
CBW
MOVBL,10
DIVBL
MOVBYTEPTRDS:
[077BH],AL
MOVBYTEPTRDS:
[077AH],AH
POPBX
POPAX
RET
disp:
movdx,077Bh;显示子程序
movah,02h
disp0:
movcx,00ffh
movbx,dx
movbl,ds:
[bx]
movbh,0h
pushdx
movdx,0ff22h
moval,cs:
[bx+1500h]
OUTDX,AL
movdx,0ff21h
moval,ah
OUTDX,AL
disp1:
loopdisp1
popdx
decdx
shrah,01h
jnzdisp0
movdx,0ff22h
moval,0FFH
OUTDX,AL
ret
ORG1500H
data1:
db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h
db80h,90h,88h,83h,0c6h,0a1h,86h,8eh
db0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh
db90h,0a3h,0a1h,86h,8fh
CODEENDS
ENDSTART
感想:
一个星期的课程设计终于过去,使我受益非浅,以前对这一门课程并没有多少的兴趣,但是这个星期的课程设计让我看到了这门课程的神奇。
起初我对这门课程没有太多的了解,但是经过了这个星期的课程设计,使我知道了平时日常生活中所看到的红绿灯运转的真正原理,也使我懂得学好这门功课的重要性。