南昌大学2014年单片机实验报告 下载本文

实验五 串转并与并转串实验

一、实验目的

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 ;读键盘 判读到键

没有则继续读键 键盘扫描 扫描第一行 判键是否按下 扫描第二行 无键按下

计算键码 无键按下