实验五 串转并与并转串实验
一、实验目的
1.掌握使用74LS164 扩展输出的方法。 2.掌握使用74LS165 扩展输入的方法。
二、实验内容
使用74LS165 扩展输入数据,使用74LS164 扩展输出数据。74LS165 的并行口接八位逻辑电平输出(开关),CPU 使用P1.0、P1.1 和P1.2 串行读入开关状态;74LS164 的并行口接一只数码管,CPU 使用P1.3 和P1.4 串行输出刚读入的开关状态,使之在数码管上显示出来。
三、实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验步骤
1)系统各跳线器处在初始设置状态。用导线对应连接八位逻辑电平输出模块的QH165、CLK165、SH/LD 到CPU 模块的P10、P11、P12。用导线对应连接静态数码管显示模块的DIN、CLK 到CPU 模块的P13、P14。
2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。
3)观察数码(八段码)管的亮灭与拨动开关的状态是否一致。拨动开关拨下输出为低电平,段码点亮。
五、实验参考程序
;//**************************************************************** ;//*文件名:164165 串转并,并转串实验程序
;功能:把开关量通过74**165串行输入到内存,并通过74**164串行输出到数 ;码管上显示。
;接线:P1.0接QH165,P1.1接CLK165,P1.2接SH_LD, ;P1.3、P1.4接静态数码显示的DIN、CLK。
;//**************************************************************** QH165 BIT P1.0 CLK165 BIT P1.1 SH_LD BIT P1.2
DAT164 BIT P1.3 CLK164 BIT P1.4 MEMORY EQU 30H
ORG 0000H AJMP START ORG 00B0H START: SETB CLK165 CLR SH_LD SETB SH_LD MOV R7, #8 INPUT: RR A
MOV C, QH165 MOV ACC.7, C CLR CLK165 NOP
SETB CLK165 DJNZ R7, INPUT MOV MEMORY,A MOV A,MEMORY MOV R6,#8 OUTPUT:
RRC A MOV DAT164,C CLR CLK164 SETB CLK164
DJNZ R6, OUTPUT ACALL DELAY SJMP START DELAY:
MOV R0,#5 DD2: MOV R1,#0FFH DJNZ R1,$ DJNZ R0,DD2 RET END
六、实验结果
当把E4区的八位逻辑电平的拨码开关K0~K7向上拨时,即逻辑电平输出高电平时,B4区的四位数码管的段码A~H依次点亮,即K0~K7每一段向上拨时,对应的A~H数码管段码点亮。
七、结果分析
实验通过74LS165八位逻辑电平的并行输出数据转成串行数据,输入单片机的P1.0口,再通过P1.3输出到74LS164的数据输入端,再由164的串转并输出口驱动数码管的八位段码,从而实现了并转串、串转并的功能。
实验六 8255 控制键盘与显示实验
一、实验目的
1.掌握8255 输入、输出编程方法。
2.掌握阵列键盘和数码管动态扫描显示的控制方法。
二、实验内容
用8255 可编程并行口做一个键盘、显示扫描实验,把按键输入的键值,显示在8255 控制的七段数码管上。8255 PB 口做键盘输入线,PC 口做显示扫描线,PA 口做显示数据线。
三、实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验步骤
1)系统各跳线器处在初始设置状态,S11E 和S12E 红开关全部打到下方(OFF)。 2)用8 位数据线对应连接8255 模块的JD3C(PA 口)、JD4C(PB 口)、JD5C(PC 口)到8279 模块的JD3E、JD2E、JD4E;用导线连接8255 模块的CS_8255 到地。
3)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。
4)在键盘上按任一单键,观察数码管的显示,数码管低位显示按键值。
五、实验参考程序
;//********************************************************* ;文件名: 8255KD FOR MCU51 ;功能: 8255控制键盘显示实验
;接线: 连接8279键盘显示模块的JD3E到8255模块的JD3C(PA口); ;JD2E到8255模块的JD4C(PB口); ;JD4E到8255模块的JD5C(PC口);
;用导线连接8255模块的CS_8255到地。
;//********************************************************* D8255A EQU 8000H ;8255 PA 口地址 D8255B EQU 8001H ;8255 PB 口地址 D8255C EQU 8002H ;8255 PC 口地址 D8255 EQU 8003H ;8255 状态/命令口地址 LEDBUF EQU 50H ;显示缓存 KEYVAL EQU 60H ;读到的键码 ORG 0000H LJMP START
ORG 0100H
START: MOV SP,#80H
MOV DPTR,#D8255
MOV A,#90H ;方式0,PB,PC口输出,PA口输入 MOVX @DPTR,A MOV LEDBUF,#10H MOV LEDBUF+1,#11H MOV LEDBUF+2,#11H MOV LEDBUF+3,#11H MOV LEDBUF+4,#5 MOV LEDBUF+5,#5 MOV LEDBUF+6,#2 MOV LEDBUF+7,#8 KB_DIS:
LCALL RD_KB ; MOV A,#0FFH
CJNE A,KEYVAL,TOSHOW ; SJMP SHOW ;TOSHOW:
MOV LEDBUF,KEYVAL SHOW: LCALL DISPLAY
SJMP KB_DIS
RD_KB: ; MOV A,#02H ; MOV DPTR,#D8255C
MOVX @DPTR,A
MOV DPTR,#D8255A MOVX A,@DPTR MOV R1,#00H
CJNE A,#0FFH,KEYCAL ; MOV A,#01H ; MOV DPTR,#D8255C MOVX @DPTR,A
MOV DPTR,#D8255A MOVX A,@DPTR MOV R1,#08H CJNE A,#0FFH,KEYCAL
SJMP NOKEY ;KEYCAL: MOV R0,#08H ;SHIFT: RRC A
JNC TORET
INC R1
DJNZ R0,SHIFT
SJMP NOKEY ;读键盘 判读到键
没有则继续读键 键盘扫描 扫描第一行 判键是否按下 扫描第二行 无键按下
计算键码 无键按下