《微机原理与接口技术》
课程设计
题目:开关控制霓虹灯 专业班级:
姓名: 同组人:
日期:2011年1月4日
设计内容:通过一个可编程并行接口芯片8255A,用四个开关
控制十六种霓虹灯的状态,每个状态中有8个灯(4个红灯,2个绿灯,2个红灯)并且每个状态都可循环。
霓虹灯变化规律:
(1) S0:①②绿灯亮①②黄灯亮、①②红灯亮,循环; (2) S1:①②红灯亮、①②绿灯亮①②黄灯亮、③④红灯亮、
①②绿灯亮①②黄灯亮、①②红灯亮、①②黄灯亮③④红灯亮,循环;
(3) S2:8灯全亮、8灯全灭、①②红灯亮、①②红灯亮①②
绿灯亮①②黄灯亮、①②③④红灯亮①②黄灯亮,循环;
(4) S3:①黄灯亮、①绿灯亮、④红灯亮,循环;
(5) S4:③④红灯亮、①②红灯亮、①②绿灯亮①②黄灯亮、
8灯全亮,循环;
(6) S5:8灯全亮、4红灯全亮、①④红灯亮,循环; (7) S6:②绿灯亮①②黄灯亮①红灯亮、②③④红灯亮,循环; (8) S7:①黄灯亮、②黄灯亮、①绿灯亮、②绿灯亮、①红灯
亮、②红灯亮、③红灯亮、④红灯亮,循环;
(9) S8:②黄灯亮②③④红灯亮、①②绿灯亮①黄灯亮①红灯
亮,循环;
(10) S9:①黄灯亮、①红灯亮、①黄灯亮、②黄灯亮、②红灯
亮、④红灯亮、②绿灯亮、①绿灯亮,循环;
(11) S10:在实验箱上从左到右依次亮灯,每到下一个灯前一
个灯就会熄灭,当到最右边时再从右到左亮灯,每到下一个灯时前一个灯就会熄灭,循环;
(12) S11:在实验箱上的一排灯中间的两盏灯最开始亮,之后
向两边扩展亮,8灯全亮后再8灯全灭,循环;
(13) S12:在实验箱上的一排灯开始最左边的灯亮,向右一个
一个逐次增加亮灯,直到8灯全亮,循环;
(14) S13: 在实验箱上的一排灯开始最左边的2个灯亮,向右
两个两个逐次增加亮灯,直到8灯全亮,循环;
(15) S14: 在实验箱上的一排灯开始最左边的2个灯亮,向右
依次亮灯,每到下两个灯时前两个灯就会熄灭,循环;
(16) S15: 在实验箱上的最右边三个灯亮,其中左边的一个亮
灯向左推进,到最左边后停止不动;然后第二个亮灯向左推进,到达左边第二个灯时停止不动;之后第三个亮灯向左推进;当左边三灯全亮时按照相反的顺序向右推进,直到右边三灯再次全亮;循环。
附加功能:(1)程序开始运行后可以按任意键开始,且有提示信
息;
(2)每循环完一次状态在显示屏上都有提示信息提示
当前所处的状态;
(3)按任意键退出程序。
设计资料:
一、硬件电路设计原理图以及各功能描述系统工作原理
1、可编程并行接口芯片8255A
图一 8255A
CS:片选信号线,用来传送数据。 A1,A2:地址线,用来选择内部端口。 RD:读出信号线,允许数据读出。 WR:写入信号线,允许数据写入。
RESET:复位信号线,将所有内部寄存器清0。 PA7~PA0:A口输入信号线。 PC7~PC0:C口输出信号线 2、开关
四个开关用来控制状态
图二 开关 3、发光二极管
八个发光二极管作为霓虹灯
图三 发光二极管 二、实验电路的连线图
图四 实验电路的连线图
三、软件流程图
开始 ↓ 显示提示信息 ↓
设控制字为90H ↓ ← ←
读端口A数据
↓ 丨
开关A3状态 ↓ 丨
开关A2状态 ↓ 丨
开关A1状态 ↓ 丨
开关A0状态 ↓ 丨
霓虹灯处于哪种状态S ↓ 丨 有任意键按下? ↓Y N→
结束
四、汇编程序清单
DATA SEGMENT
IOPORT EQU 0D880H-280H IO8255A EQU IOPORT+280H IO8255C EQU IOPORT+282H IO8255T EQU IOPORT+283H
;控制口地址
PB DB ?
TAB DB 'AGAIN',0DH,0AH,'$'
MESS DB 'PLEASE ENTER ANY KEY WHEN READY!',0DH,0AH,'$' MES0 MES1 MES2 MES3
DB DB DB DB
'OUTPUT STATE S0!',0DH,0AH,'$' 'OUTPUT STATE S1!',0DH,0AH,'$' 'OUTPUT STATE S2!',0DH,0AH,'$' 'OUTPUT STATE S3!',0DH,0AH,'$'
MES4 DB 'OUTPUT STATE S4!',0DH,0AH,'$' MES5 DB 'OUTPUT STATE S5!',0DH,0AH,'$' MES6 DB 'OUTPUT STATE S6!',0DH,0AH,'$'
MES7 DB 'OUTPUT STATE S7!',0DH,0AH,'$' ME1 DB 'OUTPUT STATE S8!',0DH,0AH,'$'
ME2 DB 'OUTPUT STATE S9!',0DH,0AH,'$' ME3 DB 'OUTPUT STATE S10!',0DH,0AH,'$' ME4 DB 'OUTPUT STATE S11!',0DH,0AH,'$' ME5 DB 'OUTPUT STATE S12!',0DH,0AH,'$' ME6
DB
'OUTPUT STATE S13!',0DH,0AH,'$'
ME7 DB 'OUTPUT STATE S14!',0DH,0AH,'$' ME8 DB 'OUTPUT STATE S15!',0DH,0AH,'$'
DATA ENDS
STACK SEGMENT STACK STA DW 50 DUP(?) STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AH,09H
MOV DX,OFFSET MESS INT 21H MOV AH,01H INT 21H
MOV DX,IO8255T
MOV AL,90H
OUT DX,AL
MOV DX,IO8255C
IN AL,DX MOV PB,AL
CC: MOV DX,IO8255A IN AL,DX AND AL,08H JNZ LL2
JMP LL1
LL1: MOV DX,IO8255A IN AL,DX AND AL,04H JNZ L1
JMP L2
L2: MOV DX,IO8255A
IN AL,DX AND AL,02H JNZ K1 JMP K2
K2: MOV DX,IO8255A
;显示提示信息;按任意键开始;控制端口 ;控制字 ;访问C口
;访问A3口
;访问A2口
;访问A1口
A0口
;访问 IN AL,DX AND AL,01H JNZ S1 JMP S0
S0: MOV DX,IO8255C MOV AL,PB OR AL,0F0H OUT DX,AL CALL DELAY10 ;访问C口 ;进入状态S0 ;黄绿灯全亮 ;延时 MOV OUT CALL MOV MOV INT JMP L1: MOV IN AND JNZ JMP K4: MOV IN AND JNZ JMP S4: MOV MOV OR OUT CALL MOV OUT CALL MOV OUT CALL MOV OUT CALL MOV MOV INT JMP AL,0CH DX,AL DELAY10
AH,09H
DX,OFFSET MES0 21H
AA
DX,IO8255A AL,DX AL,02H K3 K4
DX,IO8255A AL,DX AL,01H S5
S4
DX,IO8255C AL,PB AL,03H DX,AL DELAY10 AL,0CH DX,AL DELAY10 AL,0F0H DX,AL DELAY10 AL,0FFH DX,AL DELAY10 AH,09H
DX,OFFSET MES4 21H AA
;①②红灯亮 ;延时
;显示状态信息;访问A1口
;访问A0口
;访问C口 ;进入状态S4 ;显示状态信息 K1: MOV DX,IO8255A IN AL,DX AND AL,01H JNZ S3 JMP S2
S2: MOV DX,IO8255C MOV AL,PB OR AL,0FFH OUT DX,AL ;访问A0口
;访问C口 ;进入状态S2
CALL MOV OUT CALL MOV OUT CALL MOV OUT CALL MOV OUT CALL MOV MOV
INT JMP K3: MOV IN AND JNZ JMP S6: MOV MOV OR OUT CALL MOV OUT CALL MOV MOV INT JMP S1: MOV DELAY10 AL,00H DX,AL DELAY10 AL,0CH DX,AL DELAY10 AL,0FCH DX,AL DELAY10 AL,0CFH DX,AL DELAY10 AH,09H
DX,OFFSET MES2 21H
AA
DX,IO8255A AL,DX AL,01H S7
S6
DX,IO8255C AL,PB AL,78H DX,AL DELAY10 AL,07H DX,AL DELAY10 AH,09H
DX,OFFSET MES6 21H
AA
DX,IO8255C
;显示状态信息 ;访问A0口
;访问C口 ;进入状态S6
C口
;显示状态信息
;访问 MOV AL,PB
OR AL,0CH OUT DX,AL CALL DELAY10 MOV AL,0F0H
;进入状态S1
OUT DX,AL CALL DELAY10 MOV AL,03H OUT DX,AL CALL MOV OUT CALL MOV OUT CALL MOV OUT CALL MOV MOV INT JMP S3: MOV MOV OR OUT CALL MOV OUT CALL MOV OUT CALL MOV MOV INT JMP S5: MOV MOV OR OUT CALL MOV DELAY10 AL,0F0H DX,AL DELAY10 AL,0CH DX,AL DELAY10 AL,33H DX,AL DELAY10 AH,09H
DX,OFFSET MES1 21H
AA
DX,IO8255C AL,PB AL,20H DX,AL DELAY10 AL,80H DX,AL DELAY10 AL,01H DX,AL DELAY10
AH,09H
DX,OFFSET MES3 21H
AA
DX,IO8255C AL,PB AL,0FFH DX,AL DELAY10 AL,0FH
;显示状态信息;访问C口 ;进入状态S3
C口 S5
;显示状态信息;访问;进入状态 OUT DX,AL
CALL DELAY10 MOV AH,09H
MOV DX,OFFSET MES5 INT 21H
;显示状态信息 ;访问C口 ;进入状态S7
JMP AA
S7: MOV DX,IO8255C MOV AL,PB OR AL,20H OUT CALL MOV OUT CALL MOV OUT CALL MOV OUT CALL MOV OUT CALL MOV
OUT CALL MOV OUT CALL MOV OUT CALL MOV MOV INT JMP LL2: MOV IN AND JNZ JMP E1: MOV IN AND DX,AL DELAY10 AL,10H DX,AL DELAY10 AL,80H DX,AL DELAY10 AL,40H DX,AL DELAY10 AL,08H DX,AL DELAY10 AL,04H DX,AL
DELAY10 AL,02H DX,AL DELAY10 AL,01H DX,AL DELAY10
AH,09H
DX,OFFSET MES7 21H
AA
DX,IO8255A AL,DX AL,04H E2
E1
DX,IO8255A AL,DX AL,02H
;显示状态信息;访问A2口
;访问A1口
JNZ F2
JMP F1
E2: MOV DX,IO8255A IN AL,DX AND AL,02H JNZ F4
JMP F3
F1: MOV DX,IO8255A IN AL,DX ;访问A0口 ;访问A1口
AND JNZ JMP F2: MOV IN AND JNZ JMP F3: MOV IN AND JNZ JMP F4: MOV IN AND JNZ JMP S8: MOV MOV OR OUT CALL MOV OUT CALL MOV MOV INT 息
JMP S9: MOV MOV OR OUT AL,01H S9 S8
DX,IO8255A AL,DX AL,01H S11
S10
DX,IO8255A AL,DX AL,01H S13
S12
DX,IO8255A AL,DX AL,01H S15 S14
DX,IO8255C AL,PB AL,17H DX,AL DELAY10 AL,0E8H DX,AL DELAY10 AH,09H
DX,OFFSET ME1 21H AA
DX,IO8255C AL,PB AL,20H DX,AL
;访问A0口
;访问A0口 ;访问A0口 ;访问C口 ;进入状态S8
;显示状态信;访问C口 ;进入状态S9 CALL DELAY10
MOV AL,08H OUT DX,AL CALL DELAY10 MOV AL,02H
OUT DX,AL CALL DELAY10 MOV AL,10H OUT DX,AL CALL MOV OUT CALL MOV OUT CALL MOV OUT CALL MOV OUT CALL MOV MOV
INT JMP S10: MOV MOV OR OUT CALL MOV OUT CALL MOV OUT CALL MOV OUT CALL MOV OUT CALL MOV DELAY10 AL,04H DX,AL DELAY10 AL,01H DX,AL DELAY10 AL,40H DX,AL DELAY10 AL,80H DX,AL DELAY10 AH,09H
DX,OFFSET ME2 21H
AA
DX,IO8255C AL,PB AL,20H DX,AL DELAY10 AL,08H DX,AL DELAY10 AL,02H DX,AL DELAY10 AL,10H DX,AL DELAY10 AL,04H DX,AL DELAY10 AL,01H
C口 S10
;显示状态信息 ;访问;进入状态 OUT DX,AL
CALL DELAY10 MOV AL,40H OUT DX,AL CALL DELAY10
MOV AL,80H OUT DX,AL CALL DELAY10 MOV AL,80H OUT CALL MOV OUT CALL MOV OUT CALL MOV OUT CALL MOV OUT CALL MOV
OUT CALL MOV OUT CALL MOV OUT CALL MOV MOV INT JMP S11: MOV MOV OR OUT CALL MOV OUT CALL DX,AL DELAY10 AL,40H DX,AL DELAY10 AL,01H DX,AL DELAY10 AL,04H DX,AL DELAY10 AL,10H DX,AL DELAY10 AL,02H DX,AL
DELAY10 AL,08H DX,AL DELAY10 AL,20H DX,AL DELAY10 AH,09H
DX,OFFSET ME3 21H
AA
DX,IO8255C AL,PB AL,14H DX,AL DELAY10 AL,17H DX,AL DELAY10
;访问C口 ;进入状态S11
;显示状态信息 MOV AL,5FH
OUT DX,AL CALL DELAY10 MOV AL,0FFH OUT DX,AL
CALL DELAY10 MOV AL,00H OUT DX,AL CALL DELAY10 MOV MOV INT JMP S12: MOV MOV OR OUT CALL MOV OUT CALL MOV OUT CALL
MOV OUT CALL MOV OUT CALL MOV OUT CALL MOV OUT CALL MOV OUT CALL MOV MOV INT JMP S13: MOV AH,09H
DX,OFFSET ME4 21H
AA
DX,IO8255C AL,PB AL,20H DX,AL DELAY10 AL,28H DX,AL DELAY10 AL,2AH DX,AL DELAY10 AL,3AH
DX,AL DELAY10 AL,3EH DX,AL DELAY10 AL,3FH DX,AL DELAY10 AL,7FH DX,AL DELAY10 AL,0FFH DX,AL DELAY10 AH,09H
DX,OFFSET ME5 21H
AA
DX,IO8255C
;显示状态信息 ;访问C口 ;进入状态S12
;访问C口
;显示状态信息 MOV AL,PB
OR AL,0A0H OUT DX,AL CALL DELAY10 MOV AL,0E8H
;进入状态S13
OUT DX,AL CALL DELAY10 MOV AL,0EBH OUT DX,AL CALL MOV OUT CALL MOV MOV INT JMP S14: MOV MOV OR OUT CALL MOV OUT
CALL MOV OUT CALL MOV OUT CALL MOV MOV INT JMP S15: MOV MOV OR OUT CALL MOV OUT CALL MOV DELAY10 AL,0FFH DX,AL DELAY10 AH,09H
DX,OFFSET ME6 21H
AA
DX,IO8255C AL,PB AL,0C0H DX,AL DELAY10 AL,05H DX,AL DELAY10
AL,12H DX,AL DELAY10 AL,28H DX,AL DELAY10 AH,09H
DX,OFFSET ME7 21H
AA
DX,IO8255C AL,PB AL,0C1H DX,AL DELAY10 AL,0C4H DX,AL DELAY10 AL,0D0H
;显示状态信息
;访问C口 ;进入状态S14
;显示状态信息 ;访问C口 ;进入状态S15
OUT DX,AL CALL DELAY10 MOV AL,0C2H OUT DX,AL
CALL DELAY10
MOV AL,0C8H OUT DX,AL CALL DELAY10 MOV AL,0E0H OUT DX,AL CALL DELAY10 MOV AL,0A1H OUT DX,AL CALL DELAY10 MOV AL,0A4H OUT DX,AL CALL DELAY10 MOV AL,0B0H OUT DX,AL CALL DELAY10 MOV AL,0A2H OUT DX,AL CALL DELAY10 MOV AL,0A8H
OUT DX,AL
CALL DELAY10 MOV AL,68H OUT DX,AL CALL DELAY10 MOV AL,29H OUT DX,AL CALL DELAY10 MOV AL,2CH OUT DX,AL CALL DELAY10 MOV AL,38H OUT DX,AL CALL DELAY10 MOV AL,2AH OUT DX,AL CALL DELAY10 MOV AH,09H
MOV DX,OFFSET ME8 INT 21H
;显示状态信息
JMP AA
AA: MOV AH,06H MOV DL,0FFH INT 21H MOV AH,09H
MOV DX,OFFSET TAB INT 21H JZ CC
;是否有键按下?
;提示循环信息
;没有按下继续 PPP: MOV AX,4C00H INT 21H DELAY1 PROC NEAR PUSH CX
MOV CX,0FFFFH CCC: LOOP CCC POP CX RET
DELAY1 ENDP
DELAY10 PROC NEAR PUSH AX PUSH CX MOV CX,0F00H UUU: CALL DELAY1 LOOP UUU POP CX POP AX RET DELAY10 ENDP
CODE ENDS
END START
;有键按下退出 ;延时子程序
;结束
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo2.com 版权所有 湘ICP备2023021991号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务