微机原理上机实验报告
实验六:74HC138译码器实验 实验十:LED 16x16点阵显示实验
微机原理上机实验(六)实验报告
实验六: 74HC138译码器实验
一、
实验目的
1、掌握74HC138译码器的工作原理,熟悉74HC138译码器的具体运用连接方法,了解74HC138是如何译码的。
2、认真预习本节实验内容,尝试自行编写程序,填写实验报告 二、
实验内容
1、编写程序:使用8255的PC0、PC1、PC2控制74HC138的数据输入端,通过译码产生8选1个选通信号,轮流点亮8个LED指示灯。 2、运行程序,验证译码的正确性。 三、
实验原理图
四、
实验步骤
1、 连线说明: F7区:A、B、C
——
D3区:PC0、PC1、PC2 C1区:VCC、GND、GND F4区:JP18(LED指示灯) A3区:CS1、A0、A1
F7区:G1、G2A、G2B —— F7区:JP63 D3区:CS、A0、A1
—— ——
2、 调试程序,查看运行结果是否正确 五、
Con_8255 PC_8255 _STACK _STACK CODE
EQU EQU
0273H 0272H STACK 100 DUP(?)
;8255控制口 ;8255 PC口 ;设置堆栈段
实验代码
SEGMENT DW ENDS SEGMENT
START PROC ASSUME NEAR
CS:CODE, SS:_STACK MOV MOV
OUT
MOV
MOV
START1: OUT CALL INC JMP Delay PROC Delay1: XOR LOOP RET Delay ENDP START ENDP CODE ENDS END
六、
实验思考题
DX,Con_8255 AL,80H DX,AL
DX,PC_8255 AL,0 DX,AL Delay AL START1 NEAR CX,CX $ START
;8255初始化,PC口作输出用,向8255的控制口输入置位/复位控制字10000000B,PC0~PC7全部复位
将00000000B输入8255的PC口 延时 AL加一 循环 ;延时 ;CX清零
当前位置循环一次后推出
1. 在应用系统中,74HC138通常用来产生片选信号,请读者考虑一下,应如何处理?
将输入信号转换为三位无符号二进制数,将转换后的数据由低到高分别输入74HC138的A、B、C口,即可实现对最多8的模块的片选功能。 2. 绘制本实验的详细实验电路图。
3. 使用8255的PC口读入开关信号,实现编码控制8个LED灯的开关
本拓展实验的电路图在上个实验的基础上稍作修改
74CH138的G1、G2A、G2B分别接入PC3、PC4、PC5,其余接口接线不变,当开关4为开启时,控制信号有效
Con_8255 EQU PC_8255
EQU
0273H 0272H 0270H
STACK
PA_8255 EQU _STACK
SEGMENT
DW 100 DUP(?)
_STACK
ENDS
CODE SEGMENT
START PROC NEAR
ASSUME MOV MOV CS:CODE, SS:_STACK
DX, Con_8255 AL, 10010000B OUT
DX,AL
其
START1:
MOV DX, PA_8255 IN AL, DX
MOV DX, PC_8255 OUT
DX, AL
LED
JMP
START1
START ENDP CODE ENDS END START
;向8255的控制口输入控制字,PA口方式0输入,
余口作为输出
;从PA口读入开关当前状态
;将PA口读入的开关状态由PC口输出,以控制
灯的亮灭
循环执行,不断地由PA口读入开关状态
微机原理上机实验(十)实验报告
实验十:LED 16x16点阵显示实验
一、
实验目的
1、熟悉8255的功能,了解点阵显示的原理及控制方法;
2、学会使用LED点阵,通过编程显示不同字符;
3、认真预习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。 二、
实验内容
1、编写程序,用B4区的二片74HC273控制16X16点阵的行;8255的PA、PB口控制16X16点阵的列;显示字符。
2、按图连接线路;运行程序,观察实验结果,学会编程控制LED点阵显示字符。 三、
实验原理图
四、
实验步骤
1、 连线说明:
D3区:CS(8255)、A0、A1 —— A3区:CS1、A0、A1 D3区:JP23(PA)、JP20(PB) B4区:JP57(D0..D7) B4区:JP56(D8..D15) —— —— —— A2区:JP21、JP22(列输出线) A3区:JP42(D0..D7) A3区:JP40(D8..D15) A3区:CS5、BLE、BHE A3区:IOR、IOW A2区:JP14、JP15(行输出线) B4(I/O)区:CS273、BLE、BHE —— B4(I/O)区:RD、WR B4(I/O)区:JP51、JP55 (注意连线方向)
—— —— 2、 运行程序,观察实验结果。运行演示程序将会看到字符“欢迎使用星研实验仪”在点
阵上自下而上循环移动显示。
五、
实验代码
ADDR_8255_PA EQU 270H ;8255 PA口 ADDR_8255_PB EQU 271H ;8255 PB口 ADDR_8255_C EQU 273H ;8255控制口 ADDR_273 EQU 230H ;IO区74HC273(16位I/O) LINE EQU ADDR_273 ;行线1, 行线2 ROW1 EQU ADDR_8255_PA ;列线1 ROW2 EQU ADDR_8255_PB ;列线2 _STACK SEGMENT STACK DW 100 DUP(?) _STACK ENDS _DATA SEGMENT WORD PUBLIC 'DATA'
HUAN DB 00H,0C0H,00H,0C0H,0FEH,0C0H,07H,0FFH,0C7H,86H,6FH,6CH,3CH,60H,18H,60H
DB 1CH,60H,1CH,70H,36H,0F0H,36H,0D8H,61H,9CH,0C7H,0FH,3CH,06H,00H,00H
YING DB 60H,00H,31H,0C0H,3FH,7EH,36H,66H,06H,66H,06H,66H,0F6H,66H,36H,66H
DB 37H,0E6H,37H,7EH,36H,6CH,30H,60H,30H,60H,78H,00H,0CFH,0FFH,00H,00H
SHI DB 00H,00H,06H,30H,07H,30H,0FH,0FFH,0CH,30H,1FH,0FFH,3BH,33H,7BH,33H
DB 1BH,0FFH,1BH,33H,19H,0B0H,18H,0E0H,18H,60H,18H,0FCH,19H,8FH,1FH,03H
YONG DB 00,0,1FH,0FEH,18H,0C6H,18H,0C6H,18H,0C6H,1FH,0FEH,018H,0C6H,18H,0C6H
DB 18H,0C6H,1FH,0FEH,18H,0C6H,18H,0C6H,30H,0C6H,30H,0C6H,60H,0DEH,0C0H,0CCH
XING DB 00H,00H,1FH,0FCH,18H,0CH,1FH,0FCH,18H,0CH,1FH,0FCH,01H,80H,19H,80H
DB 1FH,0FEH,31H,80H,31H,80H,6FH,0FCH,01H,80H,01H,80H,7FH,0FFH,00H,00H
YAN DB 0,0,0FFH,0FFH,18H,0CCH,18H,0CCH,30H,0CCH,30H,0CCH,7FH,0FFH,7CH,0CCH DB 0FCH,0CCH,3CH,0CCH,3CH,0CCH,3DH,8CH,3DH,8CH,33H,0CH,06H,0CH,0CH,0CH
SHI0 DB 01H,80H,00H,0C0H,3FH,0FFH,3CH,06H,67H,0CCH,06H,0C0H,0CH,0C0H,07H,0C0H
DB 06H,0C0H,7FH,0FFH,00H,0C0H,01H,0E0H,03H,30H,06H,18H,1CH,1CH,70H,18H
YAN0 DB 00H,00H,0FCH,60H,0CH,60H,6CH,0F0H,6CH,0D8H,6DH,8FH,6FH,0F8H,7EH,00H
DB 06H,0C6H,07H,66H,3FH,0ECH,0E7H,0ECH,06H,18H,1FH,0FFH,0CH,00H,00H,00H
YI DB 0CH,0C0H,0CH,60H,18H,7CH,1BH,6CH,33H,0CH,73H,18H,0F1H,98H,31H,98H DB 30H,0F0H,30H,0F0H,30H,60H,30H,0F0H,31H,98H,33H,0FH,3EH,06H,30H,00H NONE DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H _DATA ENDS CODE SEGMENT START PROC NEAR ASSUME CS:CODE, DS:_DATA, SS:_STACK MOV AX,_DATA MOV DS,AX MOV ES,AX NOP CALL INIT_IO CALL TEST_LED ;调用测试子程序,测试LED是否全亮 CALL CLEAR ;滚动显示多个字符 CHS_SHOW: MOV CX,9 ;九个汉字 LEA SI,HUAN ;取首个汉字的有效地址 CHS_1: PUSH CX ;CHS_1可以滚动显示多个字符 MOV CX,16 CHS_2: CALL DISP_CH ;实现显示,DISP_CH可以把每个汉字
的32个字节读完并显示出来
INC SI 实现逐行滚动,SI每次循环自增两
次,体现为字模向上移动一行
INC SI LOOP CHS_2 POP CX LOOP CHS_1 ;读下一个循环对应的汉字 JMP CHS_SHOW ;显示一个16*16点阵字子程序,字型码放在DPTR指出的地址 DISP_CH PROC NEAR PUSH CX MOV CX,8 DISP_CH_1: CALL DISP1 LOOP DISP_CH_1 POP CX RET DISP_CH ENDP ;显示一个16*16点阵字子程序,字型码放在显示缓冲区XBUFF DISP1 PROC NEAR
PUSH SI PUSH CX MOV CX,16 MOV BL,0FEH MOV BH,0FFH REPEAT: MOV DX,LINE MOV AX,BX OUT DX,AX LODSB CALL ADJUST MOV DX,ROW1 OUT DX,AL LODSB CALL ADJUST MOV DX,ROW2 OUT DX,AL CALL DL10MS CALL CLEAR STC RCL BL,1 RCL BH,1 LOOP REPEAT POP CX POP SI RET DISP1 ENDP INIT_IO PROC NEAR MOV DX,ADDR_8255_C MOV AL,80H OUT DX,AL RET INIT_IO ENDP CLEAR PROC NEAR MOV AX,0FFFFH MOV DX,LINE OUT DX,AX MOV AL,0 MOV DX,ROW1 OUT DX,AL MOV DX,ROW2 OUT DX,AL RET CLEAR ENDP ;测试LED子程序,点亮LED并延时1S
;计数器,16列依次被扫描 ;上边列输出值 ;下边列输出值
;列输出
;调整AL,将AL中二进制数旋转180度
;左边行输出
;调整AL,将AL中二进制数旋转180度
;右边行输出
;循环移位BX,行线扫描输出0
;8255控制字地址
;设置8255的PA、PB、PC口为输出口;写控制字
TEST_LED PROC NEAR MOV DX,LINE XOR AX,AX OUT DX,AX MOV AL,0FFH MOV DX,ROW1 OUT DX,AL MOV DX,ROW2 OUT DX,AL CALL DL500ms CALL DL500ms RET TEST_LED ENDP
;调整AL中取到的字型码的一个字节,将最高位调整位最低位,最低位调整为最高位 ADJUST PROC NEAR PUSH CX MOV CX,8 ADJUST1: RCL AL,1 XCHG AL,AH RCR AL,1 XCHG AL,AH LOOP ADJUST1 MOV AL,AH POP CX RET ADJUST ENDP DL10ms PROC NEAR PUSH CX MOV CX,133 LOOP $ POP CX RET DL10ms ENDP DL500ms PROC NEAR PUSH CX MOV CX,0FFFFH LOOP $ POP CX RET DL500ms ENDP START ENDP CODE ENDS END START
六、
实验思考题
1. 修改程序,使显示的字符从左至右动态循环显示。
ADDR_8255_PA EQU 270H ;8255 PA口 ADDR_8255_PB EQU 271H ;8255 PB口 ADDR_8255_C EQU 273H ;8255控制口
ADDR_273 EQU 230H ;IO区74HC273(16位I/O) LINE EQU ADDR_273;行线1, 行线2 ROW1 EQU ADDR_8255_PA ;列线1 ROW2 EQU ADDR_8255_PB ;列线2
_STACK SEGMENT STACK DW 1024 DUP(?) _STACK ENDS
_DATA SEGMENT WORD PUBLIC 'DATA' HUAN DB
00H,0C0H,00H,0C0H,0FEH,0C0H,07H,0FFH,0C7H,86H,6FH,6CH,3CH,60H,18H,60H DB 1CH,60H,1CH,70H,36H,0F0H,36H,0D8H,61H,9CH,0C7H,0FH,3CH,06H,00H,00H
YING DB 60H,00H,31H,0C0H,3FH,7EH,36H,66H,06H,66H,06H,66H,0F6H,66H,36H,66H DB 37H,0E6H,37H,7EH,36H,6CH,30H,60H,30H,60H,78H,00H,0CFH,0FFH,00H,00H SHI DB 00H,00H,06H,30H,07H,30H,0FH,0FFH,0CH,30H,1FH,0FFH,3BH,33H,7BH,33H DB 1BH,0FFH,1BH,33H,19H,0B0H,18H,0E0H,18H,60H,18H,0FCH,19H,8FH,1FH,03H YONG DB 00,0,1FH,0FEH,18H,0C6H,18H,0C6H,18H,0C6H,1FH,0FEH,018H,0C6H,18H,0C6H DB
18H,0C6H,1FH,0FEH,18H,0C6H,18H,0C6H,30H,0C6H,30H,0C6H,60H,0DEH,0C0H,0CCH XING DB 00H,00H,1FH,0FCH,18H,0CH,1FH,0FCH,18H,0CH,1FH,0FCH,01H,80H,19H,80H
DB 1FH,0FEH,31H,80H,31H,80H,6FH,0FCH,01H,80H,01H,80H,7FH,0FFH,00H,00H YAN DB 0,0,0FFH,0FFH,18H,0CCH,18H,0CCH,30H,0CCH,30H,0CCH,7FH,0FFH,7CH,0CCH
DB 0FCH,0CCH,3CH,0CCH,3CH,0CCH,3DH,8CH,3DH,8CH,33H,0CH,06H,0CH,0CH,0CH SHI0 DB 01H,80H,00H,0C0H,3FH,0FFH,3CH,06H,67H,0CCH,06H,0C0H,0CH,0C0H,07H,0C0H
DB 06H,0C0H,7FH,0FFH,00H,0C0H,01H,0E0H,03H,30H,06H,18H,1CH,1CH,70H,18H YAN0 DB 00H,00H,0FCH,60H,0CH,60H,6CH,0F0H,6CH,0D8H,6DH,8FH,6FH,0F8H,7EH,00H
DB 06H,0C6H,07H,66H,3FH,0ECH,0E7H,0ECH,06H,18H,1FH,0FFH,0CH,00H,00H,00H YI DB 0CH,0C0H,0CH,60H,18H,7CH,1BH,6CH,33H,0CH,73H,18H,0F1H,98H,31H,98H
DB 30H,0F0H,30H,0F0H,30H,60H,30H,0F0H,31H,98H,33H,0FH,3EH,06H,30H,00H NONE DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H CHANGE_RESULT DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H _DATA ENDS
CODE SEGMENT START PROC NEAR
ASSUME CS:CODE, DS:_DATA, SS:_STACK MOV AX,_DATA MOV DS,AX MOV ES,AX NOP
CALL INIT_IO
CALL TEST_LED ;调用测试子程序,测试LED是否全亮 CALL CLEAR
LEA SI,HUAN ;取首个汉字的有效地址 ;CHS_1可以滚动显示多个字符 CHS_SHOW:
MOV CX,9 ;九个汉字 CALL WORD_MOVE ;字模拷贝 CHS_1: PUSH CX MOV CX,16
CHS_2: CALL DISP_CH ;实现显示,DISP_CH可以把每个汉字的32个字节读完并显示出来
;INC SI ;原程序用于滚动的指令 ;INC SI
LEA SI,CHANGE_RESULT ;除了第一次,每次的汉字读取都去CHANGE_RESULT找,只显
示CHANGE_RESULT开头的32个字节
CALL WORD_CHANGE ;将WORD_CHANGE中的字模左移一位 LOOP CHS_2 POP CX
LOOP CHS_1 ;读下一个汉字 CALL WORD_MOVE
LEA SI,CHANGE_RESULT JMP CHS_SHOW
WORD_MOVE PROC NEAR ;给CHANGE_RESULT赋初值HUAN,把十个汉字都拷贝过来 PUSH CX PUSH ES PUSH DS
PUSH SI PUSH DI
LEA SI,HUAN ;源 LEA DI,CHANGE_RESULT ;目的 MOV AX,DS MOV ES,AX MOV CX,320 WORD_MOVE1:
MOVSB ;执行完毕后SI,DI自动加一 LOOP WORD_MOVE1 POP DI POP SI POP DS POP ES POP CX RET
WORD_MOVE ENDP
;把字模拷出来,将WORD_CHANGE中的字模全部整体左移一位 WORD_CHANGE PROC NEAR ;16x2x10个字节 PUSH CX PUSH DS PUSH SI PUSH BX PUSHF XOR BX,BX
LEA SI,CHANGE_RESULT MOV CX,320 MOVE_TO_LAST: INC SI
LOOP MOVE_TO_LAST
MOV CX,16 ;16行 WORD_CHANGE1:
CLC ;CF置0 PUSH CX
MOV CX,10 ;10个字 WORD_CHANGE2: RCL [SI],1 DEC SI RCL [SI],1
SUB SI,31 ;SI=SI-31 LOOP WORD_CHANGE2 ADD SI,31
POP CX
ADD SI,255 ;16+16+7x32-1=255 LOOP WORD_CHANGE1 SUB SI,255
;LEA SI,CHANGE_RESULT;测试是否回到开头 POPF
POP BX POP SI POP DS POP CX RET
WORD_CHANGE ENDP
;显示一个16*16点阵字子程序,字型码放在DPTR指出的地址 DISP_CH PROC NEAR;把每个汉字的32个字节读完 PUSH CX MOV CX,8 DISP_CH_1:
CALL DISP1 LOOP DISP_CH_1 POP CX RET
DISP_CH ENDP
;显示一个16*16点阵字子程序,字型码放在显示缓冲区XBUFF DISP1 PROC NEAR PUSH SI PUSH CX
MOV CX,16 ;计数器,16列依次被扫描 MOV BL,0FEH ;上边列输出值 MOV BH,0FFH ;下边列输出值 REPEAT:
MOV DX,LINE MOV AX,BX
OUT DX,AX ;列输出 LODSB
CALL ADJUST ;调整AL,将AL中二进制数旋转180度 MOV DX,ROW1
OUT DX,AL ;左边行输出 LODSB
CALL ADJUST ;调整AL,将AL中二进制数旋转180度 MOV DX,ROW2
OUT DX,AL ;右边行输出 CALL DL10MS CALL CLEAR
STC RCL BL,1
RCL BH,1 ;循环移位BX,行线扫描输出0 LOOP REPEAT POP CX POP SI RET
DISP1 ENDP INIT_IO PROC NEAR
MOV DX,ADDR_8255_C ;8255控制字地址
MOV AL,80H ;设置8255的PA、PB、PC口为输出口 OUT DX,AL ;写控制字 RET
INIT_IO ENDP CLEAR PROC NEAR MOV AX,0FFFFH MOV DX,LINE OUT DX,AX MOV AL,0 MOV DX,ROW1 OUT DX,AL MOV DX,ROW2 OUT DX,AL RET
CLEAR ENDP
;测试LED子程序,点亮LED并延时1S TEST_LED PROC NEAR MOV DX,LINE XOR AX,AX OUT DX,AX MOV AL,0FFH MOV DX,ROW1 OUT DX,AL MOV DX,ROW2 OUT DX,AL
CALL DL500ms CALL DL500ms RET
TEST_LED ENDP
;调整AL中取到的字型码的一个字节,将最高位调整位最低位,最低位调整为最高位 ADJUST PROC NEAR PUSH CX MOV CX,8 ADJUST1:
RCL AL,1 XCHG AL,AH RCR AL,1 XCHG AL,AH LOOP ADJUST1 MOV AL,AH POP CX RET
ADJUST ENDP DL10ms PROC NEAR PUSH CX MOV CX,133 LOOP $ POP CX RET
DL10ms ENDP DL500ms PROC NEAR PUSH CX MOV CX,0FFFFH LOOP $ POP CX RET
DL500ms ENDP
START ENDP CODE ENDS END START
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- fenyunshixun.cn 版权所有 湘ICP备2023022495号-9
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务