您的当前位置:首页正文

单片机实验报告

来源:个人技术集锦
 家 级

题 培 训 专 学 员 姓 参 训 时

职 骨 干 教 师

优 秀 作 品

目:

单片机实验报告

业: 电子电器应用与维修

名: 勾小均

间: 2007年第三期

培 训

国 中

单片机实验报告

实验一、I/O端口输出不同波形的练习

一、实验目的:通过单片机的I/O端口实验,进一步掌握单片机I/O端口的结构,学会初始化单片机的IO端口控制寄存器,学会利用循环结构程序实现延时, 熟悉单片机应用系统的基本设计方法。

二、实验内容:利用单片机的IO 端口输出不同波形,分别显示方波、三角波、

锯齿波。

三、实验步骤:

(1)先在单片机面板上根椐原理图连好线。 (2)编写好实验所要的程序。 (3)对程序进行检查、调试。 (4)用示波器测试波形。 (5)整理好实验器材。 四、在该实验中应注意:

(1)先根据fosc计算出延时时间,并计算出延时子程序的相关参数。 (2)确定I/O端口的工作 方式,并确定控制字。 (3)确定移位控制过程。

(4)通过调整时间间隔获得最加效果。 (5)注意考虑单片机I/O端口的驱动能力。 五、实验程序 :

方波:

MOV DPTR ,#0A000H

LOOP:MOV A,#00H

MOVX @DPTR ,A LCALL DELAY MOV A, #0FFH MOVX @DPTR ,A

LCALL DELAY

DELAY:MOV R1,#250

LE1:MOV R0,#250

1

LE2:DYNZ R0,LE1 DJNZ R1,LE2 RET 三角波:

MOV DPTR ,#0A000H

MOV A,#00H

LOP1: MOVX @DPTR ,A INC A

CJNZ A,#0FFH,LOP1 LOP2: MOVX @DPTR,A DEC A

LCALL DELAY CJNZ A,#0H,LOP2 SJMP LOP1

DELAY: MOV R1,#250

LE1: MOV R0,#2 LE2: DYNZ R0,LE1 DJNZ R1,LE2

锯齿波:

MOV DPTR,#0A000H

MOV A,#0 LOOP:MOVX @DPTR,A INC A SJMP LOOP

实验二、 I/O接口直接扩展键盘实验

一、实验目的

1. 了解行列式键盘的工作原理;

2

2. 掌握键盘与80C51单片机的接口方法; 3. 掌握按键的动态扫描计数及键码读取技术 4. 掌握消除按键抖动的方法

二、实验设备

5. 微型计算机 1台 6. 单片机仿真器 1台 7. 实验仪 1台 8. 示波器 1台 9. 实验连线 若干

三、实验原理

单片机系统的一般应用中,需要用键盘输入参数或对程序的进程进行管理。因此在单片机的应用设计中,键盘是人机界面不可缺少的部分。键盘扩展一般使用下表几种方法:

扩展方法 硬件成本 中 低 软件处理时间 少 中 多 最多可以扩展的按键数量 一般8行*8列 依赖于具体芯片 依赖于I/O口数 用专用的键盘/显示处理芯片,如8279、7290等 较高 用移位寄存器扩展I/O接口组成行、列式键盘 直接使用单片机的I/O接口组成行、列式键盘 当直接用单片机的引脚作为键盘的行、列线使用时,需要编写较复杂的案件扫描处理程序,同时,对单片机I/O口的拉电流和灌电流能力也有较高的要求。尽管用这种方法扩展的键盘的按键数量还受到I/O引脚数量的限制,但是键盘电路简单、硬件成本低,而且扩展容易。

为了使硬件设计简单化,直接利用单片机的I/O口进行扩展,成为由8行*2列组成的行列式键盘。

本实验使用查询方式来扫描按键,需要编写按键扫描程序来处理按键输入,在扫描按键时应注意对按键抖动的处理。

键盘接口处理的内容: 1.键扫描

首先判定有没有键按下。为判定有没有键被按下,可先经输出口向所有列线

3

输出低电平,然后再输入各行线的状态。若行线状态皆为高电平,则表明无键按下;若行线状态中有低电平,则表明有键被按下。然后再判定被按键的位置。因为在键盘矩阵中有键被按下时,被按键处的行线和列线被接通,使穿过闭合键的那条行线变为低电平。

2.去抖动

当扫描表明有按键被按键按下之后,紧接着应进行去抖动处理。采用软件方法进行延时去抖动。 3.键码计算

键码= 行首号 +列号

连线说明: B4区(JP52)PC口---G5区(JP92)列线

B4区(JP53)PB口---G6区(JP65)发光管 B4区(JP56)PA口----G5区(JP47)行线 A3区(CS1)---B4区(CS/)

B4区8255的 A0 A1分别接边上74HC573的A0 A1 ;

4

四、实验流程图

五、实验内容

要求:用8255的PA口接键盘的行线(RL0~RL7),PC0、PC1接键盘的列线,用动态扫描的方法检测键盘按键的状态,当有键按下时读取按下键的键码并显示在发

5

光二极管上

用PA口做行线,PC口做列线,PB输出状态,采用行扫描的方法,检查是否有按键,若有按键则扫描按键,没有按键就循环检查。扫描按键时,使行8位循环,检查列的电平。

COM_8255 XDATA 0F003H PA_8255 XDATA 0F000H PB_8255 XDATA 0F001H PC_8255 XDATA 0F002H

六、实验程序

ORG 0000H

START:

MOV SP, #60H MOV DPTR, #COM_8255

MOV A,#89H 入

MOVX @DPTR, A

MOV R1,#00H ACALL DIR

RE: ACALL KEY1

ACALL DIR AJMP RE

KEY1: ACALL KS1 JNZ LK1 ACALL DELAY AJMP KEY1

LK1: ACALL DELAY ACALL DELAY ACALL KS1 JNZ LK2 ACALL DELAY AJMP KEY1

LK2: MOV R2,#0FEH MOV R4,#00H LK4: MOV DPTR,#PA_8255 MOV A, R2

MOVX @DPTR,A

;初始化8255,设置A口输出 B口输出 C口输

;控制字10001001

;R1为LED输出显示 显示

检查是否有按键按下 非0则有按键,跳转 有键闭合二次延时 延时去抖动

再检查是否有键按下 有键闭合,则跳转LK2 置扫描初值 置行号 6

; ; ;A ; ;; ; ; ; MOV DPTR,#PC_8255

MOVX A,@DPTR ;读输入口

JB ACC.0,LONE ;ACC.0=1,第0列无键按下,转至LONE MOV A,#00H ;装第0列号 AJMP LKP ;跳至拼键码

LONE: JB ACC.1,NEXT ;ACC.1=1,第1列无键按下,转至NEXT MOV A,#08H ;装第1列列号 AJMP LKP

LKP: ADD A,R4 ;键码=行号+列号 LK3: NEXT:

KEND:

KS1: DIR:

DELAY: DELAY1: PUSH ACC ACALL DELAY ACALL KS1 JNZ LK3

POP ACC MOV R1, A RET

INC R4 MOV A, R2

JNB ACC.7,KEND RL A MOV R2, A

AJMP LK4 AJMP KEY1 MOV DPTR,#PA_8255 MOV A, #00H MOVX @DPTR, A

MOV DPTR, #PC_8255 MOVX A,@DPTR CPL A

ANL A, #03H RET PUSH ACC MOV A, R1 CPL A

MOV DPTR, #PB_8255

MOVX @DPTR,A POP ACC RET MOV R7,#5 MOV R6,#200 DJNZ R6, $

;保存键码

;检查键是否继续闭合,若闭合再延时 ;若键起,将键码送至A ;扫描行号加1 ;若第7位为0,则已扫描完最高行则转KEND ;循环左移一位 ;进行下一行的扫描 ;扫描完毕,开始新的一轮 ;输出扫描值00H至输出口 ;保留0,1位 即检查ACC.0和ACC.1是否有按键 ;A=0无键按下,A非0 有键按下 ;显示 ;输出键码对应字符 ;延时 7

DJNZ R7, DELAY1 RET

END

实验相关设置:

在缺省项目中,选择INTEL 80c51 , 选择地址总线

附加工作方式控制字:

实验小结:

通过这次实验,我们对8051单片机有了一个基本的认识,编程技术也

有了新的提高。特别是对8051单片机的I/O接口的应用。同时通过这个实验也激发了我学习单片机的兴趣。

勾小均

2008-1

8

因篇幅问题不能全部显示,请点此查看更多更全内容