好好学习,天天向上,学科吧欢迎您!
当前位置:首页 >> 最新范文 内容页

单片机实验报告上交稿

单片机实验报告上交稿 本文关键词:单片机,实验,报告,交稿

单片机实验报告上交稿 本文简介:实验报告实验课程:单片机原理与应用实验学生姓名:学号:专业班级:实验一: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、

TAG标签: