学习“汇编”必须做的七个试验--实验三 查询式键盘、显示实验

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三查询式键盘、显示实验

一、实验目的

1.掌握键盘和显示器的接口方法和编程方法

2.掌握键盘和八段码显示器的工作原理

二、实验说明

本实验提供了8个按钮的小键盘,可接到单片机的并行口,如果有键按下,则相应输出为低,否则输出为高。单片机通过识别,判断按下什么键,然后通过数码管显示相应按键。有键按下后,要有一定的延时(10MS),防止由于键盘抖动而引起误操作。

为使CPU能正确地读出端口的状态,对每一次按键只作一次响应,就必须考虑如何去除抖动,常用的去抖动的方法有两种:硬件方法和软件方法。单片机中常用软件法,软件法其实很简单,就是在单片机获得端口为低的信息后,不是立即认定按键已被按下,而是延时10毫秒或更长一些时间后再次检测端口,如果仍为低,说明按键的确按下了,这实际上是避开了按键按下时的抖动时间。而在检测到按键释放后(端口为高)再延时5-10个毫秒,消除后沿的抖动,然后再对键值处理。不过一般情况下,我们通常不对按键释放的后沿进行处理,实践证明,也能满足一定的要求。以上是消除键抖动的原则。

三、电路原理图

四、实验步骤及内容

1.在proteus中按原理图画好电路图,途中电阻选200-500欧姆,数码管选用共阳极数码管。

2.打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着建立源程序,进行编译,直到编译无误,然后生成一个.hex文件。

5.进行软件设置,选择软件仿真,单步调试等,结合程序的运行情况,观察相应寄存器和RAM中单元的数据。

6. 在proteus软件的单片机中添加进Keil uVision2仿真软件生成的.hex文件,然后点击RUN按钮运行程序。在键盘上按下某个键,观察数显是否与按键值一致,键值从上至下为0~7。

五、参考源程序

/***************************************************************

*程序名:查询式键盘、数码管显示实验

*作者:熊春如

*日期:2009年4月26日

****************************************************************/

;符号名定义

KEYCODE EQU 70H ;键盘值存放单元

;复位矢量和中断矢量入口地址定义

ORG 0000H

JMP main

ORG 0030H

;主程序

MAIN:

ORL P1,#0FFH ;将立即数0FFH与P1口锁存器相或,使P1口各锁存器 ;为1,以便作输入引脚使用

MOV A,P1 ;读P1口引脚到累加器A

CJNE A, #0FFH, K00 ;有键按下

JMP MAIN ;无键按下,继续查询

K00:

CALL DELAY ;延时消抖

MOV A,P1 ;再读P1口引脚到累加器A

CJNE A, #0FFH, KEY ;确实有键按下,转去判断那个按键按下

JMP MAIN ;无键按下,继续查询

;判断那个按键被按下

KEY:

KEY0: JB P1.0,KEY1 ;P1.0有键按下,否则查询P1.1

MOV KEYCODE,#0 ;把键盘值送入70H

JMP KEYCONVERT ;转去键码转换程序

KEY1: JB P1.1,KEY2 ;P1.1有键按下,否则查询P1.2

MOV KEYCODE,#1 ;把键盘值送入70H

JMP KEYCONVERT ;转去键码转换程序

KEY2: JB P1.2,KEY3 ;P1.2有键按下,否则查询P1.3

MOV KEYCODE,#2 ;把键盘值送入70H

JMP KEYCONVERT ;转去键码转换程序

KEY3: JB P1.3,KEY4 ;P1.3有键按下,否则查询P1.4

MOV KEYCODE,#3 ;把键盘值送入70H

JMP KEYCONVERT ;转去键码转换程序

KEY4: JB P1.4,KEY5 ;P1.4有键按下,否则查询P1.5

MOV KEYCODE,#4 ;把键盘值送入70H

JMP KEYCONVERT ;转去键码转换程序

KEY5: JB P1.5,KEY6 ;P1.5有键按下,否则查询P1.6

MOV KEYCODE,#5 ;把键盘值送入70H

JMP KEYCONVERT ;转去键码转换程序

KEY6: JB P1.6,KEY7 ;P1.6有键按下,否则查询P1.7

MOV KEYCODE,#6 ;把键盘值送入70H

JMP KEYCONVERT ;转去键码转换程序

KEY7: JB P1.7,MAIN ;P1.7有键按下,否则重新开始查询

MOV KEYCODE,#7 ;把键盘值送入70H

JMP KEYCONVERT ;转去键码转换程序

;键码转换

KEYCONVERT:

MOV A,KEYCODE ;键盘值(即偏移量)送入A

MOV DPTR,#SEGTAB ;共阳极笔段码的表头地址送入数据指针DPTR

MOVC A,@A+DPTR ;把A+DPTR指定单元的内容复制到A

MOV P2,A ;将A中(键盘值)查的结果(相应段码)送P2口显示

JMP MAIN

;延时子程序

DELAY:

MOV R4, #10 ;10MS延时子程序

D1: MOV R5, #250 ;1MS,12M晶振

D0: NOP

NOP

DJNZ R5, D0

DJNZ R4, D1

RET

;共阳极笔段码0-9

SEGTAB:

DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

;程序结束

END

六、参考源程序

1、画出该程序设计的流程图。

相关文档
最新文档