题 培 训 专 学 员 姓 参 训 时
职 骨 干 教 师
优 秀 作 品
目:
单片机实验报告
业: 电子电器应用与维修
名: 勾小均
间: 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
因篇幅问题不能全部显示,请点此查看更多更全内容