微机原理上机实验六+十实验报告 74HC138译码器实验 16x16点阵显示实验.docx
- 文档编号:9176318
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:25
- 大小:170.29KB
微机原理上机实验六+十实验报告 74HC138译码器实验 16x16点阵显示实验.docx
《微机原理上机实验六+十实验报告 74HC138译码器实验 16x16点阵显示实验.docx》由会员分享,可在线阅读,更多相关《微机原理上机实验六+十实验报告 74HC138译码器实验 16x16点阵显示实验.docx(25页珍藏版)》请在冰豆网上搜索。
微机原理上机实验六+十实验报告74HC138译码器实验16x16点阵显示实验
微机原理上机实验报告
实验六:
74HC138译码器实验
实验十:
LED16x16点阵显示实验
微机原理上机实验(六)实验报告
实验六:
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
F7区:
G1、G2A、G2B
——
C1区:
VCC、GND、GND
F7区:
JP63
——
F4区:
JP18(LED指示灯)
D3区:
CS、A0、A1
——
A3区:
CS1、A0、A1
2、调试程序,查看运行结果是否正确
五、实验代码
Con_8255
EQU
0273H
;8255控制口
PC_8255
EQU
0272H
;8255PC口
_STACK
SEGMENT
STACK
;设置堆栈段
DW
100DUP(?
)
_STACK
ENDS
CODE
SEGMENT
START
PROC
NEAR
ASSUME
CS:
CODE,SS:
_STACK
MOV
DX,Con_8255
MOV
AL,80H
OUT
DX,AL
;8255初始化,PC口作输出用,向8255的控制口输入置位/复位控制字10000000B,PC0~PC7全部复位
MOV
DX,PC_8255
MOV
AL,0
START1:
OUT
DX,AL
将00000000B输入8255的PC口
CALL
Delay
延时
INC
AL
AL加一
JMP
START1
循环
Delay
PROC
NEAR
;延时
Delay1:
XOR
CX,CX
;CX清零
LOOP
$
当前位置循环一次后推出
RET
Delay
ENDP
START
ENDP
CODE
ENDS
END
START
六、实验思考题
1.在应用系统中,74HC138通常用来产生片选信号,请读者考虑一下,应如何处理?
将输入信号转换为三位无符号二进制数,将转换后的数据由低到高分别输入74HC138的A、B、C口,即可实现对最多8的模块的片选功能。
2.绘制本实验的详细实验电路图。
3.使用8255的PC口读入开关信号,实现编码控制8个LED灯的开关
本拓展实验的电路图在上个实验的基础上稍作修改
74CH138的G1、G2A、G2B分别接入PC3、PC4、PC5,其余接口接线不变,当开关4为开启时,控制信号有效
Con_8255EQU0273H
PC_8255EQU0272H
PA_8255EQU0270H
_STACKSEGMENTSTACK
DW100DUP(?
)
_STACKENDS
CODESEGMENT
STARTPROCNEAR
ASSUMECS:
CODE,SS:
_STACK
MOVDX,Con_8255
MOVAL,10010000B
OUTDX,AL;向8255的控制口输入控制字,PA口方式0输入,其
余口作为输出
START1:
MOVDX,PA_8255
INAL,DX;从PA口读入开关当前状态
MOVDX,PC_8255
OUTDX,AL;将PA口读入的开关状态由PC口输出,以控制LED
灯的亮灭
JMPSTART1循环执行,不断地由PA口读入开关状态
STARTENDP
CODEENDS
ENDSTART
微机原理上机实验(十)实验报告
实验十:
LED16x16点阵显示实验
一、实验目的
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)
——
A2区:
JP21、JP22(列输出线)
B4区:
JP57(D0..D7)
——
A3区:
JP42(D0..D7)
B4区:
JP56(D8..D15)
——
A3区:
JP40(D8..D15)
B4(I/O)区:
CS273、BLE、BHE
——
A3区:
CS5、BLE、BHE
B4(I/O)区:
RD、WR
——
A3区:
IOR、IOW
B4(I/O)区:
JP51、JP55
——
A2区:
JP14、JP15(行输出线)
(注意连线方向)
2、运行程序,观察实验结果。
运行演示程序将会看到字符“欢迎使用星研实验仪”在点阵上自下而上循环移动显示。
五、实验代码
ADDR_8255_PA
EQU
270H
;8255PA口
ADDR_8255_PB
EQU
271H
;8255PB口
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
100DUP(?
)
_STACK
ENDS
_DATA
SEGMENT
WORDPUBLIC'DATA'
HUANDB00H,0C0H,00H,0C0H,0FEH,0C0H,07H,0FFH,0C7H,86H,6FH,6CH,3CH,60H,18H,60H
DB1CH,60H,1CH,70H,36H,0F0H,36H,0D8H,61H,9CH,0C7H,0FH,3CH,06H,00H,00H
YINGDB60H,00H,31H,0C0H,3FH,7EH,36H,66H,06H,66H,06H,66H,0F6H,66H,36H,66H
DB37H,0E6H,37H,7EH,36H,6CH,30H,60H,30H,60H,78H,00H,0CFH,0FFH,00H,00H
SHIDB00H,00H,06H,30H,07H,30H,0FH,0FFH,0CH,30H,1FH,0FFH,3BH,33H,7BH,33H
DB1BH,0FFH,1BH,33H,19H,0B0H,18H,0E0H,18H,60H,18H,0FCH,19H,8FH,1FH,03H
YONGDB00,0,1FH,0FEH,18H,0C6H,18H,0C6H,18H,0C6H,1FH,0FEH,018H,0C6H,18H,0C6H
DB18H,0C6H,1FH,0FEH,18H,0C6H,18H,0C6H,30H,0C6H,30H,0C6H,60H,0DEH,0C0H,0CCH
XINGDB00H,00H,1FH,0FCH,18H,0CH,1FH,0FCH,18H,0CH,1FH,0FCH,01H,80H,19H,80H
DB1FH,0FEH,31H,80H,31H,80H,6FH,0FCH,01H,80H,01H,80H,7FH,0FFH,00H,00H
YANDB0,0,0FFH,0FFH,18H,0CCH,18H,0CCH,30H,0CCH,30H,0CCH,7FH,0FFH,7CH,0CCH
DB0FCH,0CCH,3CH,0CCH,3CH,0CCH,3DH,8CH,3DH,8CH,33H,0CH,06H,0CH,0CH,0CH
SHI0DB01H,80H,00H,0C0H,3FH,0FFH,3CH,06H,67H,0CCH,06H,0C0H,0CH,0C0H,07H,0C0H
DB06H,0C0H,7FH,0FFH,00H,0C0H,01H,0E0H,03H,30H,06H,18H,1CH,1CH,70H,18H
YAN0DB00H,00H,0FCH,60H,0CH,60H,6CH,0F0H,6CH,0D8H,6DH,8FH,6FH,0F8H,7EH,00H
DB06H,0C6H,07H,66H,3FH,0ECH,0E7H,0ECH,06H,18H,1FH,0FFH,0CH,00H,00H,00H
YIDB0CH,0C0H,0CH,60H,18H,7CH,1BH,6CH,33H,0CH,73H,18H,0F1H,98H,31H,98H
DB30H,0F0H,30H,0F0H,30H,60H,30H,0F0H,31H,98H,33H,0FH,3EH,06H,30H,00H
NONEDB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB00H,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
;计数器,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
六、实验思考题
1.修改程序,使显示的字符从左至右动态循环显示。
ADDR_8255_PAEQU270H;8255PA口
ADDR_8255_PBEQU271H;8255PB口
ADDR_8255_CEQU273H;8255控制口
ADDR_273EQU230H;IO区74HC273(16位I/O)
LINEEQUADDR_273;行线1,行线2
ROW1EQUADDR_8255_PA;列线1
ROW2EQUADDR_8255_PB;列线2
_STACKSEGMENTSTACK
DW1024DUP(?
)
_STACKENDS
_DATASEGMENTWORDPUBLIC'DATA'
HUANDB00H,0C0H,00H,0C0H,0FEH,0C0H,07H,0FFH,0C7H,86H,6FH,6CH,3CH,60H,18H,60H
DB1CH,60H,1CH,70H,36H,0F0H,36H,0D8H,61H,9CH,0C7H,0FH,3CH,06H,00H,00H
YINGDB60H,00H,31H,0C0H,3FH,7EH,36H,66H,06H,66H,06H,66H,0F6H,66H,36H,66H
DB37H,0E6H,37H,7EH,36H,6CH,30H,60H,30H,60H,78H,00H,0CFH,0FFH,00H,00H
SHIDB00H,00H,06H,30H,07H,30H,0FH,0FFH,0CH,30H,1FH,0FFH,3BH,33H,7BH,33H
DB1BH,0FFH,1BH,33H,19H,0B0H,18H,0E0H,18H,60H,18H,0FCH,19H,8FH,1FH,03H
YONGDB00,0,1FH,0FEH,18H,0C6H,18H,0C6H,18H,0C6H,1FH,0FEH,018H,0C6H,18H,0C6H
DB18H,0C6H,1FH,0FEH,18H,0C6H,18H,0C6H,30H,0C6H,30H,0C6H,60H,0DEH,0C0H,0CCH
XINGDB00H,00H,1FH,0FCH,18H,0CH,1FH,0FCH,18H,0CH,1FH,0FCH,01H,80H,19H,80H
DB1FH,0FEH,31H,80H,31H,80H,6FH,0FCH,01H,80H,01H,80H,7FH,0FFH,00H,00H
YANDB0,0,0FFH,0FFH,18H,0CCH,18H,0CCH,30H,0CCH,30H,0CCH,7FH,0FFH,7CH,0CCH
DB0FCH,0CCH,3CH,0CCH,3CH,0CCH,3DH,8CH,3DH,8CH,33H,0CH,06H,0CH,0CH,0CH
SHI0DB01H,80H,00H,0C0H,3FH,0FFH,3CH,06H,67H,0CCH,06H,0C0H,0CH,0C0H,07H,0C0H
DB06H,0C0H,7FH,0FFH,00H,0C0H,01H,0E0H,03H,30H,06H,18H,1CH,1CH,70H,18H
YAN0DB00H,00H,0FCH,60H,0CH,60H,6CH,0F0H,6CH,0D8H,6DH,8FH,6FH,0F8H,7EH,00H
DB06H,0C6H,07H,66H,3FH,0ECH,0E7H,0ECH,06H,18H,1FH,0FFH,0CH,00H,00H,00H
YIDB0CH,0C0H,0CH,60H,18H,7CH,1BH,6CH,33H,0CH,73H,18H,0F1H,98H,31H,98H
DB30H,0F0H,30H,0F0H,30H,60H,30H,0F0H,31H,98H,33H,0FH,3EH,06H,30H,00H
NONEDB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
CHANGE_RESULTDB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
_DATAENDS
CODESEGMENT
STARTPROCNEAR
ASSUMECS:
CODE,DS:
_DATA,SS:
_STACK
MOVAX,_DATA
MOVDS,AX
MOVES,AX
NOP
CALLINIT_IO
CALLTEST_LED;调用测试子程序,测试LED是否全亮
CALLCLEAR
LEASI,HUAN;取首个汉字的有效地址
;CHS_1可以滚动显示多个字符
CHS_SHOW:
MOVCX,9;九个汉字
CALLWORD_MOVE;字模拷贝
CHS_1:
PUSHCX
MOVCX,16
CHS_2:
CALLDISP_CH;实现显示,DISP_CH可以把每个汉字的32个字节读完并显示出来
;INCSI;原程序用于滚动的指令
;INCSI
LEASI,CHANGE_RESULT;除了第一次,每次的汉字读取都去CHANGE_RESULT找,只显
示CHANGE_RESULT开头的32个字节
CALLWORD_CHANGE;将WORD_CHANGE中的字模左移一位
LOOPCHS_2
POPCX
LOOPCHS_1;读下一个汉字
CALLWORD_MOVE
LEASI,CHANGE_RESULT
JMPCHS_SHOW
WORD_MOVEPROCNEAR;给CHANGE_RESULT赋初值HUAN,把十个汉字都拷贝过来
PUSHCX
PUSHES
PUSHDS
PUSHSI
PUSHDI
LEASI,HUAN;源
LEADI,CHANGE_RESULT;目的
MOVAX,DS
MOVES,AX
MOVCX,320
WORD_MOVE1:
MOVSB;执行完毕后SI,DI自动加一
LOOPWORD_MOVE1
POPDI
POPSI
POPDS
POPES
POPCX
RET
WORD_MOVEENDP
;把字模拷出来,将WORD_CHANGE中的字模全部整体左移一位
WORD_CHANGEPROCNEAR;16x2x10个字节
PUSHCX
PUSHDS
PUSHSI
PUSHBX
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理上机实验六+十实验报告 74HC138译码器实验 16x16点阵显示实验 微机 原理 上机 实验 报告 74 HC138 译码器 16 x16 点阵 显示