并行输入与输出实验

上传人:平*** 文档编号:18083916 上传时间:2017-11-13 格式:DOC 页数:17 大小:603.02KB
返回 下载 相关 举报
并行输入与输出实验_第1页
第1页 / 共17页
并行输入与输出实验_第2页
第2页 / 共17页
并行输入与输出实验_第3页
第3页 / 共17页
并行输入与输出实验_第4页
第4页 / 共17页
并行输入与输出实验_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《并行输入与输出实验》由会员分享,可在线阅读,更多相关《并行输入与输出实验(17页珍藏版)》请在金锄头文库上搜索。

1、1学习情景四 并行输入与输出学习目标: 了解并行通信的基本概念; 掌握键盘的基本组成及工作原理; 掌握七段 LED 显示器的基本组成及工作原理。技能目标: 能够正确在 AT89S52 外连接键盘和显示设备。 能够灵活应用典型键盘、显示电路构成各种实际电路。在数据通信与计算机领域中,有两种基本的数据传送方式,即串行数据传送方式与并行数据传送方式,也称串行通信与并行通信。串行通信将在以后介绍。数据在多条并行传输线上各位同时传送的方式,称为并行传送方式,多用于近距离传送,如图 4.1(a)所示;而数据在单条一位宽的传输线上按时间先后一位一位地传送,称为串行数据传送方式,常用于远距离传送,如图 4.1

2、(b)所示。在单片机应用系统中,通常都有操作面板。操作人员通过操作面板实现与应用系统的信息交流,包括下达命令、修改程序和参数、干预应用系统的状态、显示运行状态和运行结果。本学习环境主要介绍人机对话通道中常用的输入设备键盘,输出设备LED显示器。图 4.1 (a)并行通信方式 (b)串行通信方式8 位数据 低位2项目一 矩阵式键盘电路设计第一部分 项目要求设计一个44矩阵键盘与AT89S52接口电路。要求用查询法读取行列键盘键码,并将键码存入内部RAM 32H单元。第二部分 相关知识键盘是由若干个按键组成的开关矩阵,它是最简单的单片机输入设备,操作员可以通过键盘输入数据或命令,实现简单的人机通信

3、。若键盘闭合键的识别是由专用硬件实现的,则称为编码键盘;若用软件实现闭合键识别的,则称为非编码键盘。非编码键盘又分为行列式和独立式两种。本项目主要讨论,非编码键盘的工作原理、接口技术和程序设计。键盘接口应有以下功能: 键扫描功能,即检测是否有键闭合; 键识别功能,确定被闭合键所在的行列位置; 产生相应的键值功能; 消除按键抖动功能。一、 键盘工作原理1按键去抖动常用键盘的按键是一个机械开关结构,被按下时,由于机械触点的弹性及电压突跳等原因,在触点闭合或断开的瞬间会出现电压抖动,如图 4.2 所示。抖动时间长短与按键的结构和机械特性有关,一般为 510 ms。而按健的闭合时间和操作者的按键动作有

4、关,大约为十分之几秒到几秒不等。去抖动有硬件和软件两种方法。硬件方法就是在键盘中附加去抖动电路,从根本上消除抖动产生的可能性,图 4.3 为利用双稳电路的去抖动电路;而软件方法则是采用时间延迟以躲过抖动(大约延时 20-30ms 即可) ,待行线上状态确定之后,再进行状态输入。一般为简单起见多采用软件方法。图 4.2 键闭合和断开时的电压抖动3图 4.3 去抖动电路2按键连接方式键盘和 CPU 的连接方式可分为独立式键盘和矩阵式键盘。 独立式键盘独立式是一组相互独立的按健,这些按键可直接与单片机的 I/O 口连接,即每个按键独占一条口线,接口简单。独立式键盘因占用单片机的硬件资源较多,只适合按

5、键较少的场合。图 4.4(a)是一个具有 4 个按键的独立式键盘,每一个按键的一端都接地,另一端接AT89S52 的 I/O 口。从图中可以看出,独立式键盘每一按键都需要一根 I/O 线,占用AT89S52 的硬件资源较多。图 4.4 独立式键盘和矩阵式键盘4 矩阵式键盘也称行列式键盘,因为键的数目较多,所以按键按行列组成矩阵。图 7.4(b)是由 4根行线和 4 根列线组成的 16 个按键的键盘。与独立式键盘相比, 16 个按键只占用了 8个 I/O 口线,因此适用于按键较多的场合。矩阵式键盘接口处理的内容:A键扫描键盘上的键按行列组成矩阵,在行列的交点上都对应有一个键。为判定有无键被按下(

6、闭合健)以及被按键的位置,可使用扫描法说明查找闭合健的方法。首先是判定有没有键被按下。如图 4.5 所示,键盘的行线一端经电阻接5V 电源,另一端接单片机的输入口线。各列线的一端接单片机的输出口线,另一端悬空。为判定有没有键被按下,可先经输出口向所有列线输出低电平,然后再输入各行线状态。若行线状态皆为高电平,则表明无健按下;若行线状态中有低电平,则表明有健被按下。图 4.5 键扫描示意图然后再判定被按键的位置。判定键位置的扫描是这样进行的:先使输出口输出0FEH,即 Y0 为低电平“0”,其它列线为高电平“1”,然后输入行线状态,测试行线状态中是否有低电平的。如果没有低电平,再使输出口输出 0

7、FDH,即 Y1 为“0” ,其它列线为“1” ,再测试行线状态。以次类推,直检测到行线中有低电平,则闭合健找到,通过此次扫描的列线值和行线值就可以知道闭合健的位置。B去抖动判断有键按下后,延时一段时间,再判断键盘状态,如果仍为有键按下状态,则认为有键按下,否则按抖动处理。C确定按键的键值如图 4.6 所示,以键的排列顺序安排健号,则键值的计算公式为:键值=行首号列号5图 4.6 键值表D判断闭合键是否释放计算键值之后,等待键释放是为了保证键的一次闭合仅进行一次处理。二、 键盘接口的控制方式在单片机的运行过程中,扫描键盘只是 CPU 的工作任务之一,何时执行键盘扫描和处理,可以有两种方式:程序

8、扫描方式和中断扫描方式。程序扫描是指 CPU 空闲时执行键盘扫描,或每隔一定时间执行一次键盘扫描,定时可由单片机的定时器完成。中断扫描是指,当有键闭合时才向CPU 发出中断请求,中断响应后执行键盘扫描程序。三、 应用举例【例 4.1】硬件连接如图 4.7 所示,编程完成如下功能:按键按下后,对应的小灯亮,再按下,对应的小灯灭。 编程如下: KEY: MOV P1, #0FFH ;灯全灭MOV P2 , #0FFH ;P2 口为输入状态MOV A, P2 ;读键值,键按下相应位为 0CPL A ;取反,键按下相应位为 1ANL A, #0FH ;屏蔽高 4 位,保留低 4 位JZ LRET ;全

9、零,无键按下,返回LCALL DEL20 ;非全零,有键按下,延时,软件去抖MOV A, P2 ;重读键值CPL AANL A, #0FH图 4.7 硬件连接示意图89S526JZ LRET ;全零,无键按下,返回JB ACC.0, K0 ;K0 按下,转 K0 程序JB ACC.1, K1 ;K1 按下,转 K1 程序JB ACC.2, K2 ;K2 按下,转 K2 程序JB ACC.3, K3 ;K3 按下,转 K3 程序SJMP LRETK0: CPL P1.0 ;P1.0 状态取反,小灯 LED0 亮变灭,灭变亮SJMP LRETK1: CPL P1.1 ;P1.1 状态取反,小灯 L

10、ED1 亮变灭,灭变亮SJMP LRETK2: CPL P1.2 ;P1.2 状态取反,小灯 LED2 亮变灭,灭变亮SJMP LRETK3: CPL P1.3 ;P1.3 状态取反,小灯 LED3 亮变灭,灭变亮LRET: RETDEL20:MOV R7, #27H ;延时 20ms 左右LOOP1:MOV R6, #0FFHLOOP2:DJNZ R6, LOOP1DJNZ R7, LOOP2RET第三部分 项目实施一、项目实施分析(一)硬件电路见图 4.8。是一 44 矩阵键盘。图中 P1.4P1.7 用于控制行线,P1.0P1.3 用于控制列线。行、列线通过上拉电阻接+5V,没有键按下时

11、,被钳在高电平状态。通过发送扫描字确定键码,具体方法如下:(1) 由列线输出 0,然后读入 P1 口的值存入内部 RAM 30H 单元。(2) 由行线输出 0,然后读入 P1 口的值存入内部 RAM 31H 单元。(3) 把 30H 的低 4 位与 31H 的高 4 位的值相加存入累加器 A。(4) 最后判断累加器 A 的值,如果累加器 A 的数据全为 1,说明无键按下,否则说明有键按下,且累加器 A 的数据就是被按下键的键值( 程序中对累加器 A 取反,目的是用 JNZ 指令判断是否有键按下 )。7(二)参考程序键盘扫描流程图见图 4.9。图 4.8 矩阵键盘与AT89S52接口连接图A=0

12、H开 始键 扫 描键 按 下 ?去 抖 动键 码 计 算键 释 放JMPA+DPTR0#键处 理 程 序 n#键处 理 程 序#键处 理 程 序01#键处 理 程 序NYA=01H A=H A=nHAT89S52+5VP1.05.1 k 4P1.7P1.6P1.5P1.4+5V5.1 k4P1.3P1.2P1.1图 4.9 键盘扫描流程8键扫描程序如下:BOAD:LCALL BOADD JNZ BOAD1 ;无键按下转 BOADLCALL DELAY ;调延时子程序AJMP BOAD ;继续扫描键盘BOAD1:LCALL DELAY ;消除键抖动(延时子程序略)LCALL BOADD ;确认是

13、否有键按下JNZ BOAD2LCALL DELAYSJMP BOAD ;转键扫描BOAD2:CPL AMOV 32H,A ;取键值BOAD3:LCALL DELAYLCALL BOADDJNZ BOAD3 ;等待键松开 B2: RET ;返回;获取键值子程序BOADD:MOV P1,#0FH ;置行线为 0MOV A,P1 MOV 30H,AMOV P1,#0F0H ;置列线为 0MOV A,P1MOV 31H,AANL 30H,#0FH ;取列值MOV A,30HANL 31H, #0F0H ;取行值ADD A,31H ;行值加列值CPL A ;A 全 0 无键按下RET键盘扫描程序的运行结

14、果是把闭合键的键码放在 32 单元中。接下来的程序是根据键码进行程序转移,转去执行该键对应的操作。二、项目实施要求(一)项目设备要求1装有Keil C51 Vision2 集成开发环境、编程器软件、在线下载软件的计算机。2单片机最小系统开发平台。3通用编程器9(二)项目实施步骤1断电,连接计算机、实验板2给计算机、实验板通电。3打开计算机,进入 Keil C51 开发环境。4正确设置通信口,连接好开发环境和实验板。5新建一个项目,并将该项目建立在指定的文件下。6新建一个文件,存储器的路径与刚才建的项目相同。7将新建的文件添加到项目中,保存项目。8在编辑窗口输入程序,对程序进行汇编、生成和下载。9全速运行程序,观察内部 RAM 32H 单元的键值数据。10随机按下任一按键,观察 RAM 32 单元的情况。三、成绩评定1熟悉用户板,电路如图 4.8 所示。10 分2在计算机中输入并调试程序,记录调试中出现的问题。 10 分3使用编程器将程序文件传送到用户板中,运行程序,观察内部 RAM 32H 单元的数据。20 分4随机按下任一按键,观察 RAM 32 单元的情况,并与理论分析数据进行比较。 30 分5若改为 24 矩阵键盘

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号