单片机实验报告上交稿 本文关键词:单片机,实验,报告,交稿
单片机实验报告上交稿 本文简介:实验报告实验课程:单片机原理与应用实验学生姓名:学号:专业班级:实验一:I/O口输入、输出实验一、实验目的掌握单片机P1口、P3口的使用方法。二、实验内容以P1口为输出口,接八位逻辑电平显示,LED显示跑马灯效果。以P3口为输入口,接八位逻辑电平输出,用来控制跑马灯的方向。三、实验说明与电路原理图P
单片机实验报告上交稿 本文内容:
实
验
报
告
实验课程:
单片机原理与应用实验
学生姓名:
学
号:
专业班级:
实验一:I/O
口输入、输出实验
一、实验目的
掌握单片机P1口、P3口的使用方法。
二、实验内容
以P1
口为输出口,接八位逻辑电平显示,LED
显示跑马灯效果。以P3
口为输入口,接八位逻辑电平输出,用来控制跑马灯的方向。
三、实验说明与电路原理图
P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。因为内部上拉电阻阻值是20K~40K,故不会对外部输入产生影响。若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。
本实验需要用到CPU模块(F3区)和八位逻辑电平输出模块(E4区)和八位逻辑电平显示模块(B5区),八位逻辑电平输出电路原理图参见图1-1。八位逻辑电平显示电路原理图参见图1-2。
2
四、实验步骤
1)系统各跳线器处在初始设置状态。用导线连接八位逻辑电平输出模块的K0
到CPU
模块的RXD(P3.0
口);用8
位数据线连接八位逻辑电平显示模块的JD4B
到CPU
模块的JD8(P1
口)。
2)启动PC
机,打开THGMW-51
软件,输入源程序,并编译源程序。编译无误后,下载程序运行。
3)观察发光二极管显示跑马灯效果,拨动K0
可改变跑马灯的方向。
五、实验程序
DIR
BIT
P3.0
ORG
0000H
LJMP
START
ORG
0100H
START:
Output1:
mov
a,#0fEH
mov
r5,#8
loop1:
CLR
C
mov
C,DIR
JC
Output2
mov
P1,a
rl
a
Acall
Delay
djnz
r5,loop1
Sjmp
Output1
Output2:
mov
a,#07fH
mov
r5,#8
loop2:
CLR
C
mov
C,DIR
JNC
Output1
mov
P1,a
rr
a
Acall
Delay
djnz
r5,loop2
Sjmp
Output2
Delay:
mov
r6,#0
DelayLoop1:
mov
r7,#0
DelayLoop2:
NOP
NOP
djnz
r7,DelayLoop2
djnz
r6,DelayLoop1
ret
六、实验现象
当ko处于低电平时,跑马灯从当前位置左移;当ko处于高电平时,跑马灯从当前值右移。
7、
程序分析
本程序运行后,拨动开关ko,可以实现左移和右移的灯方式。这主要是由语句JC
Output2和JNC
Output1语句实现的。当ko拨到下面时,其状态为0跳转到Output1,所以跑马灯从右向左一次点亮。当ko拨到上面时,其状态为1,跳转到Output2,所以跑马灯为从左向右一次点亮。综合分析,本实验主要有三个模块:左移模块,右移模块,延时模块。
八、实验心得
从这个实验中我们了解到如何用PI口输出来点亮二极管,也学会了如何根据具体的单片机的原理图进行编写程序,及线路的连接。通过这次实验我了解到单片机芯片的结构及编程方法,巩固了汇编语言编程的能力。通过实验和学会了流水灯的实验方法和实现延时的程序编写方法,为下面的实验做好了充分的准备。
实验二:外部中断实验
一、实验目的
学习外部中断技术的基本使用方法。
二、实验内容
INT0
端接单次脉冲发生器。按一次脉冲产生一次中断,CPU
使P1.0
状态发生一次反转,P1.0接LED
灯,以查看信号反转。
三、实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验说明
1)
外部中断的初始化设置共有三项内容:中断总允许即EA=1,外部中断允许即EXi=1(i=0或1),中断方式设置。中断方式设置一般有两种方式:电平方式和脉冲方式,本实验选用后者,其前一次为高电平后一次为低电平时为有效中断请求。因此高电平状态和低电平状态至少维持一个周期,中断请求信号由引脚INT0(P3.2)和INT1(P3.3)引入。
2)中断服务的关键:
a、保护进入中断时的状态。堆栈有保护断点和保护现场的功能使用PUSH
指令,在转中断服务程序之前把单片机中有关寄存单元的内容保护起来。
b、必须在中断服务程序中设定是否允许中断重入,即设置EX0
位。
c、用POP
指令恢复中断时的现场。
3)中断控制原理:中断控制是提供给用户使用的中断控制手段。实际上就是控制一些寄存器,51
系列用于此目的的控制寄存器有四个:TCON
、IE
、SCON
及IP。
4)中断响应的过程:首先中断采样然后中断查询最后中断响应。采样是中断处理的第一步,对于本实验的脉冲方式的中断请求,若在两个相邻周期采样先高电平后低电平则中断请求有效,IE0
或IE1
置“1”;否则继续为“0”。所谓查询就是由CPU
测试TCON
和SCON
中各标志位的状态以确定有没有中断请求发生以及是那一个中断请求。中断响应就是对中断请求的接受,是在中断查询之后进行的,当查询到有效的中断请求后就响应一次中断。
本实验需要用到CPU
模块(F3
区)和八位逻辑电平显示模块(B5
区)、单次脉冲模块(E3
区)。
五、实验步骤
1)系统各跳线器处在初始设置状态,用导线连接单次脉冲模块的输出端到CPU
模块的P32;CPU
模块的P10
接八位逻辑电平显示模块的灯。
2)启动PC
机,打开THGMW-51
软件,输入源程序,并编译源程序。编译无误后,下载程序运行。
3)连续按动单次脉冲产生电路的按键,发光二极管L0
每按一次状态取反,即隔一次点亮。
六、实验程序
LED
BIT
P1.0
LEDBuf
BIT
20H
org
0
ljmp
Start
org
3
Interrupt0:
push
PSW
cpl
LEDBuf
mov
c,LEDBuf
mov
LED,c
pop
PSW
reti
Start:
clr
LEDBuf
clr
LED
mov
TCON,#01h
mov
IE,#81h
OK:
ljmp
OK
end
七、实验现象
程序运行,没按下脉冲产生键时,LED灯没有变化,以后每按一次脉冲产生键时,LED灯的状态取反一次,即每隔一次点亮。。
8、
程序分析
本实验主要有两个模块:中断模块和主程序模块,主程序主要是用来初始化中断的,包括中断模式的选择,中断开关的打开,当脉冲变化时触发中断,硬件自动产生ACALL指令,跳转到中端口执行程序。
九、实验心得
从这个实验中,我们了解到单次脉冲产生电路,也学会了如何通过外部的控制,达到对中端的处理。通过这次实验我了解了单片机芯片的结构及编程的方法,巩固了汇编语言编程的能力,进一步加深了对汇编语言的认识,以及软件、硬件的结合有了深入的理解。
实验三:定时/计数器实验
一、实验目的
学习MCS-51
内部计数器的使用和编程方法。
二、实验内容
使用MCS-51
内部定时/计数器,定时一秒钟,CPU
运用定时中断方式,实现每一秒钟输出状态发生一次反转,即发光管每隔一秒钟亮一次。
三、实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验说明
关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。内部计数器在单片机中主要有定时器和计数器两个功能。本实验使用的是定时器,定时为一秒钟。
定时器有关的寄存器有工作方式寄存器TMOD
和控制寄存器TCON。TMOD
用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON
主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。
内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12
个振荡器周期。假设实验系统的晶振是12MHZ,程序工作于方式2,即8
位自动重装方式定时器,定时器100uS中断一次,所以定时常数的设置可按以下方法计算:
机器周期=12÷12MHz=1uS
(256-定时常数)×1uS=100uS
定时常数=156。然后对100uS
中断次数计数10000
次,就是1
秒钟。
在本实验的中断处理程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。
本实验需要用到CPU
模块(F3
区)和八位逻辑电平显示模块(B5
区)。
五、实验步骤
1)系统各跳线器处在初始设置状态,用导线连接CPU
模块P10
到八位逻辑电平显示模块的L0。
2)启动PC
机,打开THGMW-51
软件,输入源程序,并编译源程序。编译无误后,下载程序运行。
3)运行程序观察发光二极管隔一秒点亮一次,点亮时间为一秒。
六、实验程序
Tick
equ
10000
T100us
equ
156
C100us
equ
30h
LEDBuf
bit
20h
org
0
ljmp
Start
org
000bh
T0Int:
push
PSW
mov
a,C100us+1
jnz
Goon
dec
C100us
Goon:
dec
C100us+1
mov
a,C100us
orl
a,C100us+1
jnz
Exit
mov
C100us,#27H
mov
C100us+1,#10H
cpl
LEDBuf
Exit:
pop
PSW
reti
Start:
mov
TMOD,#02h
mov
TH0,#t100us
mov
TL0,#t100us
mov
IE,#10000010b
setb
TR0
clr
LEDBuf
clr
P1.0
mov
C100us,#27H
mov
C100us+1,#10H
Loop:
mov
c,LEDBuf
mov
P1.0,c
ljmp
Loop
end
七、实验现象
程序运行后,发光二极管LO每隔一秒点亮一次。
八、程序分析
本实验主要有两个模块:定时初始化模块和中断模块。主程序主要是用来初始化定时的,包括定时模式的选择,为方式2模式,该模式精度高能够准确定时,还包括定时器的初值设定,设定为100us。当定时标志位高电位自动跳转到中断程序中,如果未满10000次就得继续返回主程序,无法实现CPL
LEDBuf指令。而要实现本功能,最重要的是orl
a,C100us+1这条语句,只有当计数单元的高位和地位都位0才使得a为0,也就是说只有计满10000次才能调转。否则跳转到exit.
九、实验心得
通过本次实验,我对单片机的定时/计数功能有了一定的了解,熟悉了定时/计数的设置。
另外我也掌握了它的控制和最基本的应用,初步获悉了定时/计数器的内部结构,再结合上一次实验对中断的了解,二者配合,巩固了对中断和定时/计数的知识,为下一步的学习打下坚实的基础。
实验四:交通灯控制实验
一、实验目的
掌握十字路口交通灯控制方法。
二、实验内容
利用系统提供的双色LED
显示电路,和四位静态数码管显示电路模拟十字路口交通信号灯。4
位LED
数码管显示时间,LED
显示红绿灯状态。
三、实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验说明与电路原理图
交通信号灯控制逻辑如下:假设一个十字路口为东西南北走向。开始为四个路口的红灯全部亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段时间后(20
秒),东西路口的绿灯,闪烁若干次后(3
秒),东西路口的绿灯熄灭,同时东西路口的黄灯亮,延时一段时间后(2
秒),东西路口的红灯亮,南北路口的绿灯亮,南北路口方向通车,延时一段时间后(20
秒),南北路口的绿灯闪烁若干次后(3
秒),南北路口的绿灯熄灭,同时南北路口的黄灯亮,延时一段时间后(2
秒),再切换到东西路口的绿灯亮,南北路口的红灯亮,之后重复以上过程。
双色LED
是由一个红色LED
管芯和一个绿色LED
管芯封装在一起,共用负极,当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。本实验需要用到CPU
模块(F3
区)、静态数码管/双色LED
显示模块(B4
区)双色LED显示电路原理参见下图。
五、实验程序框图
实验示例程序框图如图4-2。
图4-2
程序流程图
六、实验步骤
1)系统各跳线器处在初始设置状态。P10
同时接G1、G3;P11
同时接R1、R3;P1.2
同时接G2、G4;P1.3
同时接R2、R4;P1.6、P1.7
分别接静态数码显示的DIN、CLK。
2)启动PC
机,打开THGMW-51
软件,输入源程序,并编译源程序。编译无误后,下载程序运行。
3)观察十字路口交通灯效果。
七、实验程序
SECOND1
EQU
30H
SECOND2
EQU
31H
DBUF
EQU
40H
TEMP
EQU
44H
LED_G1
BIT
P1.0
LED_R1
BIT
P1.1
LED_G2
BIT
P1.2
LED_R2
BIT
P1.3
Din
BIT
P1.6
CLK
BIT
P1.7
ORG
0000H
LJMP
START
ORG
0100H
START:
LCALL
STATE0
LCALL
DELAY
MOV
TMOD,#01H
MOV
TH0,#3CH
MOV
TL0,#0B0H
SETB
TR0
CLR
EA
LOOP:
MOV
R2,#20
MOV
R3,#20
MOV
SECOND1,#25
MOV
SECOND2,#25
LCALL
DISPLAY
LCALL
STATE1
WAIT1:
JNB
TF0,WAIT1
CLR
TF0
MOV
TH0,#3CH
MOV
TL0,#0B0H
SETB
TR0
DJNZ
R2,WAIT1
MOV
R2,#20
DEC
SECOND1
DEC
SECOND2
LCALL
DISPLAY
DJNZ
R3,WAIT1
MOV
R2,#5
MOV
R3,#3
MOV
R4,#4
MOV
SECOND1,#5
MOV
SECOND2,#5
LCALL
DISPLAY
WAIT2:
LCALL
STATE2
JNB
TF0,WAIT2
CLR
TF0
MOV
TH0,#3CH
MOV
TL0,#0B0H
DJNZ
R4,WAIT2
CPL
LED_G1
MOV
R4,#4
DJNZ
R2,WAIT2
MOV
R2,#5
DEC
SECOND1
DEC
SECOND2
LCALL
DISPLAY
DJNZ
R3,WAIT2
MOV
R2,#20
MOV
R3,#2
MOV
SECOND1,#2
MOV
SECOND2,#2
LCALL
DISPLAY
WAIT3:
LCALL
STATE3
JNB
TF0,WAIT3
CLR
TF0
MOV
TH0,#3CH
MOV
TL0,#0B0H
DJNZ
R2,WAIT3
MOV
R2,#20
DEC
SECOND1
DEC
SECOND2
LCALL
DISPLAY
DJNZ
R3,WAIT3
MOV
R2,#20
MOV
R3,#20
MOV
SECOND1,#25
MOV
SECOND2,#25
LCALL
DISPLAY
WAIT4:
LCALL
STATE4
JNB
TF0,WAIT4
CLR
TF0
MOV
TH0,#3CH
MOV
TL0,#0B0H
DJNZ
R2,WAIT4
MOV
R2,#20
DEC
SECOND1
DEC
SECOND2
LCALL
DISPLAY
DJNZ
R3,WAIT4
MOV
R2,#5
MOV
R4,#4
MOV
R3,#3
MOV
SECOND1,#5
MOV
SECOND2,#5
LCALL
DISPLAY
WAIT5:
LCALL
STATE5
JNB
TF0,WAIT5
CLR
TF0
MOV
TH0,#3CH
MOV
TL0,#0B0H
DJNZ
R4,WAIT5
CPL
LED_G2
MOV
R4,#4
DJNZ
R2,WAIT5
MOV
R2,#5
DEC
SECOND1
DEC
SECOND2
LCALL
DISPLAY
DJNZ
R3,WAIT5
MOV
R2,#20
MOV
R3,#2
MOV
SECOND1,#2
MOV
SECOND2,#2
LCALL
DISPLAY
WAIT6:
LCALL
STATE6
JNB
TF0,WAIT6
CLR
TF0
MOV
TH0,#3CH
MOV
TL0,#0B0H
DJNZ
R2,WAIT6
MOV
R2,#20
DEC
SECOND1
DEC
SECOND2
LCALL
DISPLAY
DJNZ
R3,WAIT6
LJMP
LOOP
STATE0:
MOV
P1,#0
CLR
LED_G1
SETB
LED_R1
CLR
LED_G2
SETB
LED_R2
RET
STATE1:
SETB
LED_G1
CLR
LED_R1
CLR
LED_G2
SETB
LED_R2
RET
STATE2:
CLR
LED_R1
CLR
LED_G2
SETB
LED_R2
RET
STATE3:
SETB
LED_G1
SETB
LED_R1
CLR
LED_G2
SETB
LED_R2
RET
STATE4:
CLR
LED_G1
SETB
LED_R1
SETB
LED_G2
CLR
LED_R2
RET
STATE5:
CLR
LED_G1
SETB
LED_R1
CLR
LED_R2
RET
STATE6:
CLR
LED_G1
SETB
LED_R1
SETB
LED_G2
SETB
LED_R2
RET
DISPLAY:
MOV
A,SECOND1
MOV
B,#10
DIV
AB
MOV
DBUF+1,A
MOV
A,B
MOV
DBUF,A
MOV
A,SECOND2
MOV
B,#10
DIV
AB
MOV
DBUF+3,A
MOV
A,B
MOV
DBUF+2,A
MOV
R0,#DBUF
MOV
R1,#TEMP
MOV
R7,#4
DP10:MOV
DPTR,#LEDMAP
MOV
A,@R0
MOVC
A,@A+DPTR
MOV
@R1,A
INC
R0
INC
R1
DJNZ
R7,DP10
MOV
R0,#TEMP
MOV
R1,#4
DP12:MOV
R7,#8
MOV
A,@R0
DP13:RLC
A
MOV
DIN,C
CLR
CLK
SETB
CLK
DJNZ
R7,DP13
INC
R0
DJNZ
R1,DP12
RET
LEDMAP:
DB
3FH,6,5BH,4FH,66H,6DH
;0,1,2,3,4,5
DB
7DH,7,7FH,6FH,77H,7CH
;6,7,8,9,A,B
DB
58H,5EH,7BH,71H,0,40H
;C,D,E,F,,-
Delay:
mov
r5,#5
DLoop0:mov
r6,#0
DLoop1:mov
r7,#0
DLoop2:
NOP
NOP
djnz
r7,DLoop2
djnz
r6,DLoop1
djnz
r5,DLoop0
ret
END
8、
实验现象
运行程序后,开始四个路口的红灯全部亮之后,东西路口的绿灯亮,南北路口的红灯亮,路口方向通车。延时一段时间后(20s),东西路口的绿灯,闪烁若干次后(3s),东西路口的绿灯熄灭,同时东西路口的黄灯亮,延时一段时间后(2s),东西路口的红灯亮,南北路口的绿灯亮,南北路口方向通车,延时一段时间后(20s),南北路口的绿灯闪烁若干次后(3s),南北路口的绿灯熄灭,同时南北路口的黄灯亮,延时一段时间后(2s),再切换到东西路口的绿灯亮,南北路口的红灯亮,之后重复以上过程。
九、程序分析
本实验共分为五个模块,交通灯初始模块,6种交通状态的调用模块,6种交通状态和1个初始状态模块,显示模块,以及延时模块,每一个状态的原理如下:首先调用交通状态模块中的各状态,以此达到个I/O端口的设置,然后进行延时,设置定时器的工作方式,初值,接着采用中断查询的方式来判断状态是否结束,最后调用显示模块。在每个状态也是需要进行循环设置和显示的。另外显示模块中,采用动态显示的方式,利用数据线和控制线船型显示数码管,节约了导线成本,只有2个输入端。
10、
实验心得
通过本次实验,我对交通灯有了更进一步的了解。交通灯是有6种状态的。本实验让我学会和巩固了以前的知识。另外我对数码管的显示原理也有了进一步的理解,收获很大。
实验五:串转并与并转串实验
一、实验目的
1.掌握使用74LS164
扩展输出的方法。
2.掌握使用74LS165
扩展输入的方法。
二、实验内容
使用74LS165
扩展输入数据,使用74LS164
扩展输出数据。74LS165
的并行口接八位逻辑电平输出(开关),CPU
使用P1.0、P1.1
和P1.2
串行读入开关状态;74LS164
的并行口接一只数码管,CPU
使用P1.3
和P1.4
串行输出刚读入的开关状态,使之在数码管上显示出来。
三、实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验说明与电路原理图
1)74LS165
为8
位移位寄存器,其引脚功能如下:
S/L:移位/置数端,低电平有效。
P0~P7:并行数据输入端。
QH、QH:串行数据输出端。
CLK、CKLINH:时钟信号输入端。
2)74LS164
为串行输入并行输出移位寄存器,其引脚功能如下:
A、B:串行输入端;
Q0~Q7:并行输出端;
MR:清零端,低电平有效;
CLK:时钟脉冲输入端,上升沿有效。
3)用P1
端口输出数据时,要编程位移数据,每操作一个数据位,对应一个移位脉冲。
4)本实验需要用到CPU
模块(F3
区)、八位逻辑电平输出模块(E4
区)和静态数码管显示模块(B4
区)。74LS165
电路原理图参见图5-1,74LS164
电路原理图参见图8-2。
注:74LS164
集成电路芯片在主板反面。
图5-1
74LS165
电路
16
图5-2
74LS164电路
五、实验步骤
1)系统各跳线器处在初始设置状态。
用导线对应连接八位逻辑电平输出模块的QH165、CLK165、SH/LD
到CPU
模块的P10、
P11、P12。用导线对应连接静态数码管显示模块的DIN、CLK
到CPU
模块的P13、P14。
2)启动PC
机,打开THGMW-51
软件,输入源程序,并编译源程序。编译无误后,下载程序运行。
3)观察数码(八段码)管的亮灭与拨动开关的状态是否一致。拨动开关拨上输出为高电平,段码点亮。
六、实验程序
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
七、实验现象
程序运行后,波动开关,对应的发光二极管发光,且波动开关拨下的时候输出低电平。
八、程序分析
本实验主要是74LS165与74LS164这两块芯片的使用,CPU使用P1.0、P1.1、P1.2串行读入开关状态。74LS164的并行口接一只数码管,CPU使用P1.3、P1.4串行输出刚读入的开关状态,使之在数码管上显示出来。实验流程主要是先将并行口的开关通过74LS165进行转换成串行输出,然后经过单片机的控制,再在74LS164的作用下将串行数据转换成并行数据,从而使得对应的静态数码管点亮。
九、实验心得
通过本次实验,我对串行并和并转串的原理和结构有了进一步的了解。通过单片机的控制可以使得74LS165与74LS164进行完美的结合,二结构主要是个芯片的连接。在实验室当中我们体会到了实验的神奇,激励我们不断学习。
实验六:8255
控制键盘与显示实验
一、实验目的
1.掌握8255
输入、输出编程方法。
2.掌握阵列键盘和数码管动态扫描显示的控制方法。
二、实验内容
用8255
可编程并行口做一个键盘、显示扫描实验,把按键输入的键值,显示在8255
控制的七段数码管上。8255
PB
口做键盘输入线,PC
口做显示扫描线,PA
口做显示数据线。
三、实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验说明
本实验需要用到
CPU
模块(F3
区)、8255
模块(C6
区)、8279
键盘与显示模块(E7
区)。CS_8255
接8000H,则8255
状态/命令口地址为8003H,PA
口地址为8000H,PB
口地址为8001H、PC
口地址为8002H。8255
键盘与显示电路原理图参见图7-1A、图7-1B。
图7-1A
键盘显示电路1
22
图7-1B
键盘显示电路2
五、实验步骤
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)在键盘上按任一单键,观察数码管的显示,数码管低位显示按键值。
六、实验程序
D8255A
EQU
8000H
D8255B
EQU
8001H
D8255C
EQU
8002H
D8255
EQU
8003H
LEDBUF
EQU
50H
KEYVAL
EQU
60H
ORG
0000H
LJMP
START
ORG
0100H
START:
MOV
SP,#80H
MOV
DPTR,#D8255
MOV
A,#90H
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
TORET:
MOV
KEYVAL,R1
RET
NOKEY:
MOV
KEYVAL,#0FFH
RET
Display:MOV
R7,#8
MOV
R5,#0
MOV
R0,#LEDBUF
DLOOP:
MOV
A,R5
RL
A
RL
A
RL
A
ANL
A,#11111011B
INC
R5
MOV
DPTR,#D8255C
MOVX
@DPTR,A
MOV
A,@R0
MOV
DPTR,#LEDSEG
MOVC
A,@A+DPTR
INC
R0
MOV
DPTR,#D8255B
MOVX
@DPTR,A
LCALL
Delay
DJNZ
R7,DLOOP
RET
Delay:
PUSH
R7
MOV
R7,#200
DelayLoop:
NOP
DJNZ
R7,DelayLoop
POP
R7
RET
LEDSEG:
DB
3FH,06H,5BH,4FH,66H,6DH;0,1,2,3,4,5
DB
7DH,07H,7FH,6FH,77H,7CH;6,7,8,9,A,B
DB
39H,5EH,79H,71H,00H,40H;C,D,E,F,,-
END
七、实验现象
运行程序后,本次实验共有2排键盘,各个键盘上面都有数字,在键盘上按任意键,可以看到数码管上显示了按键的数字。
八、程序分析
程序通过对输入量的识别,跳转到不同的程序段执行来实现不同按键输出。并且通过查表来实现不同字符的显示。实验通过8255芯片来对键盘的输入和显示,并采用扫描法对键盘输入进行识别,并采用动态显示结果。通过程序的编写和电路的连接基本上实现实验的要求。
九、实验小结
通过本次实验我基本上掌握了键盘输入和显示的方法。通过实验基本上掌握了8255的使用方法,并且掌握了键盘按键识别的方法,可以为以后的电路设计提供方法。
实验七:LCD
显示实验
一、实验目的
掌握点阵式(128×64点)带汉字字库液晶显示屏的程序设计方法。
二、实验内容
根据系统提供的电路,掌握128×64
点阵LCD
的工作原理,编程实现显示字符、汉字和图片。
三、实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验说明
系统使用OCMJ4X8C_3型液晶显示屏(奥可拉中文集成模块)。此模块可以显示字母、数字符号、中文字型及图形,具有绘图及文字画面混合显示功能。提供三种控制接口,分别是8位微处理器接口,4位微处理器接口及串行接口(OCMJ4X16A/B无串行接口)。所有的功能,包含显示RAM,字型产生器,都包含在一个芯片里面,只要一个最小的微处理系统,就可以方便操作模块。内置2M-位中文字型ROM
(CGROM)
总共提供8192个中文字型(16x16点阵),16K位半宽字型ROM(HCGROM)
总共提供126
个符号字型(16x8点阵),64x16位字型产RAM(CGRAM),另外绘图显示画面提供一个64x256点的绘图区域(GDRAM),可以和文字画面混和显示。提供多功能指令:画面清除(Display
clear)、光标归位(Return
home)、显示打开/关闭(Display
on/off)、光标显示/隐藏(Cursor
on/off)、显示字符闪烁(Displaycharacter
blink)、光标移位(Cursor
shift)、显示移位(Displayshift)、垂直画面卷动(Vertical
line
scroll)、反白显示(By_line
reverse
display)、待命模式(Standbymode)。
本实验需要用到CPU模块(F3区)、LCD液晶显示模块(B3区)。
五、实验步骤
1)系统各跳线器处在初始设置状态,JT2B
跳线器的两只短路帽置位上端。用导线对应连接液晶显示模块的RS、R/W、E、PSB、