并行输入与输出实验.doc_第1页
并行输入与输出实验.doc_第2页
并行输入与输出实验.doc_第3页
并行输入与输出实验.doc_第4页
并行输入与输出实验.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学习情景四 并行输入与输出学习目标: 了解并行通信的基本概念; 掌握键盘的基本组成及工作原理; 掌握七段LED显示器的基本组成及工作原理。技能目标: 能够正确在AT89S52外连接键盘和显示设备。 能够灵活应用典型键盘、显示电路构成各种实际电路。在数据通信与计算机领域中,有两种基本的数据传送方式,即串行数据传送方式与并行数据传送方式,也称串行通信与并行通信。串行通信将在以后介绍。数据在多条并行传输线上各位同时传送的方式,称为并行传送方式,多用于近距离传送,如图4.1(a)所示;而数据在单条一位宽的传输线上按时间先后一位一位地传送,称为串行数据传送方式,常用于远距离传送,如图4.1(b)所示。在单片机应用系统中,通常都有操作面板。操作人员通过操作面板实现与应用系统的信息交流,包括下达命令、修改程序和参数、干预应用系统的状态、显示运行状态和运行结果。本学习环境主要介绍人机对话通道中常用的输入设备键盘,输出设备LED显示器。低位8位数据图4.1 (a)并行通信方式 (b)串行通信方式项目一 矩阵式键盘电路设计第一部分 项目要求设计一个44矩阵键盘与AT89S52接口电路。要求用查询法读取行列键盘键码,并将键码存入内部RAM 32H单元。第二部分 相关知识键盘是由若干个按键组成的开关矩阵,它是最简单的单片机输入设备,操作员可以通过键盘输入数据或命令,实现简单的人机通信。若键盘闭合键的识别是由专用硬件实现的,则称为编码键盘;若用软件实现闭合键识别的,则称为非编码键盘。非编码键盘又分为行列式和独立式两种。本项目主要讨论,非编码键盘的工作原理、接口技术和程序设计。键盘接口应有以下功能: 键扫描功能,即检测是否有键闭合; 键识别功能,确定被闭合键所在的行列位置; 产生相应的键值功能; 消除按键抖动功能。一、 键盘工作原理图4.2 键闭合和断开时的电压抖动1按键去抖动常用键盘的按键是一个机械开关结构,被按下时,由于机械触点的弹性及电压突跳等原因,在触点闭合或断开的瞬间会出现电压抖动,如图4.2所示。抖动时间长短与按键的结构和机械特性有关,一般为510 ms。而按健的闭合时间和操作者的按键动作有关,大约为十分之几秒到几秒不等。去抖动有硬件和软件两种方法。硬件方法就是在键盘中附加去抖动电路,从根本上消除抖动产生的可能性,图4.3为利用双稳电路的去抖动电路;而软件方法则是采用时间延迟以躲过抖动(大约延时20-30ms即可),待行线上状态确定之后,再进行状态输入。一般为简单起见多采用软件方法。图4.3去抖动电路2按键连接方式键盘和CPU的连接方式可分为独立式键盘和矩阵式键盘。 独立式键盘独立式是一组相互独立的按健,这些按键可直接与单片机的I/O口连接,即每个按键独占一条口线,接口简单。独立式键盘因占用单片机的硬件资源较多,只适合按键较少的场合。图4.4(a)是一个具有4个按键的独立式键盘,每一个按键的一端都接地,另一端接AT89S52的I/O口。从图中可以看出,独立式键盘每一按键都需要一根I/O线,占用AT89S52的硬件资源较多。图4.4独立式键盘和矩阵式键盘 矩阵式键盘也称行列式键盘,因为键的数目较多,所以按键按行列组成矩阵。图7.4(b)是由4根行线和4根列线组成的16个按键的键盘。与独立式键盘相比,16个按键只占用了8个I/O口线,因此适用于按键较多的场合。矩阵式键盘接口处理的内容:A键扫描键盘上的键按行列组成矩阵,在行列的交点上都对应有一个键。为判定有无键被按下(闭合健)以及被按键的位置,可使用扫描法说明查找闭合健的方法。首先是判定有没有键被按下。如图4.5所示,键盘的行线一端经电阻接5V 电源,另一端接单片机的输入口线。各列线的一端接单片机的输出口线,另一端悬空。为判定有没有键被按下,可先经输出口向所有列线输出低电平,然后再输入各行线状态。若行线状态皆为高电平,则表明无健按下;若行线状态中有低电平,则表明有健被按下。图4.5键扫描示意图然后再判定被按键的位置。判定键位置的扫描是这样进行的:先使输出口输出0FEH,即Y0为低电平“0”,其它列线为高电平“1”,然后输入行线状态,测试行线状态中是否有低电平的。如果没有低电平,再使输出口输出0FDH,即Y1为“0”,其它列线为“1”,再测试行线状态。以次类推,直检测到行线中有低电平,则闭合健找到,通过此次扫描的列线值和行线值就可以知道闭合健的位置。B去抖动判断有键按下后,延时一段时间,再判断键盘状态,如果仍为有键按下状态,则认为有键按下,否则按抖动处理。C确定按键的键值如图4.6所示,以键的排列顺序安排健号,则键值的计算公式为: 键值=行首号列号图4.6键值表D判断闭合键是否释放计算键值之后,等待键释放是为了保证键的一次闭合仅进行一次处理。二、 键盘接口的控制方式在单片机的运行过程中,扫描键盘只是CPU的工作任务之一,何时执行键盘扫描和处理,可以有两种方式:程序扫描方式和中断扫描方式。程序扫描是指CPU空闲时执行键盘扫描,或每隔一定时间执行一次键盘扫描,定时可由单片机的定时器完成。中断扫描是指,当有键闭合时才向CPU发出中断请求,中断响应后执行键盘扫描程序。89S52三、 应用举例图4.7硬件连接示意图【例4.1】硬件连接如图4.7所示,编程完成如下功能:按键按下后,对应的小灯亮,再按下,对应的小灯灭。 编程如下: KEY:MOV P1, #0FFH ;灯全灭 MOV P2 , #0FFH ;P2口为输入状态 MOV A, P2 ;读键值,键按下相应位为0 CPL A ;取反,键按下相应位为1 ANL A, #0FH ;屏蔽高4位,保留低4位 JZ LRET ;全零,无键按下,返回 LCALL DEL20 ;非全零,有键按下,延时,软件去抖 MOV A, P2 ;重读键值 CPL A ANL A, #0FH JZ 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状态取反,小灯LED1亮变灭,灭变亮 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, LOOP1 DJNZ R7, LOOP2 RET第三部分 项目实施一、项目实施分析(一)硬件电路见图4.8。是一44矩阵键盘。图中P1.4P1.7用于控制行线,P1.0P1.3用于控制列线。行、列线通过上拉电阻接+5V,没有键按下时,被钳在高电平状态。通过发送扫描字确定键码,具体方法如下:(1) 由列线输出0,然后读入P1口的值存入内部RAM 30H单元。(2) 由行线输出0,然后读入P1口的值存入内部RAM 31H单元。(3) 把30H的低4位与31H的高4位的值相加存入累加器A。(4) 最后判断累加器A的值,如果累加器A的数据全为1,说明无键按下,否则说明有键按下,且累加器A的数据就是被按下键的键值(程序中对累加器A取反,目的是用JNZ指令判断是否有键按下)。图4.8 矩阵键盘与AT89S52接口连接图AT89S52+5VP1.05.1 kW4P1.7P1.6P1.5P1.4+5V5.1 kW4P1.3P1.2P1.1(二)参考程序键盘扫描流程图见图4.9。图4.9键盘扫描流程键扫描程序如下:BOAD:LCALL BOADD JNZ BOAD1 ;无键按下转BOAD LCALL DELAY ;调延时子程序 AJMP BOAD ;继续扫描键盘BOAD1:LCALL DELAY ;消除键抖动(延时子程序略) LCALL BOADD ;确认是否有键按下 JNZ BOAD2 LCALL DELAY SJMP BOAD ;转键扫描BOAD2:CPL A MOV 32H,A ;取键值BOAD3:LCALL DELAY LCALL BOADD JNZ BOAD3 ;等待键松开 B2: RET ;返回 ;获取键值子程序BOADD:MOV P1,#0FH ;置行线为0 MOV A,P1 MOV 30H,A MOV P1,#0F0H ;置列线为0 MOV A,P1 MOV 31H,A ANL 30H,#0FH ;取列值MOV A,30H ANL 31H,#0F0H ;取行值 ADD A,31H ;行值加列值 CPL A ;A全0无键按下 RET键盘扫描程序的运行结果是把闭合键的键码放在32单元中。接下来的程序是根据键码进行程序转移,转去执行该键对应的操作。二、项目实施要求(一)项目设备要求1装有Keil C51 Vision2集成开发环境、编程器软件、在线下载软件的计算机。2单片机最小系统开发平台。3通用编程器(二)项目实施步骤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矩阵键盘,编写程序,运行并观察RAM 32H单元的数据。 30分小题分值(1) 10分(2) 10分(3) 20分(4) 30分(5) 30分总分小题得分项目二 字符显示第一部分 项目要求设计一个八位显示电路,要求8只数码管从左到右顺序显示1、2、3、4、5、6、7、8共8个字符;将内存10H、11H、12H、13H中存放的压缩BCD码显示出来。第二部分 相关知识在单片机系统中,常用的显示器有:发光二极管显示器,简称LED (Light Emitting Diode);液晶显示器,简称LCD (Liquid Crystal Display);荧光管显示器。三种显示器中,以荧光管显示器亮度最高,发光二极管次之,而液晶显示器最弱,为被动显示器,必须有外光源。一、发光二极管及LED显示器发光二极管是由半导体发光材料做成的PN结,只要在发光二极管两端通过正向电流5-20mA就能达到正常发光。LED的发光颜色通常有红、绿、黄、白,其外形和电气图形符号如图4.10所示。单个LED通常是通过亮、灭来指示系统运行状态和用快速闪烁来报警。通常所说的LED显示器由7个发光二极管组成,因此也称之为七段LED显示器,其排列形状如图4.11(a)所示。显示器中还有一个圆点型发光二极管(在图中以dp表示),用于显示小数点。通过七个发光二极管亮暗的不同组合,可以显示多种数字、字母以及其它符号。 图4.10发光二极管LED显示器中的发光二极管共有两种连接方法:1共阳极接法把发光二极管的阳极连在一起构成公共阳极,图4.11(b)所示。使用时公共阳极接5V。阴极端输入低电平的段发光二极管导通点亮,输入高电平的则不点亮。2共阴极接法把发光二极管的阴极连在一起构成公共阴极,图4.11(c)所示。使用时会共阴极接地,阳极端输入高电平的段发光二极管导通点亮,输入低电平的则不点亮。图4.11七段LED显示器用LED显示器显示十六进制数的字型代码如表4.1所示:表4.1 十六进制数的字型代码字型共阳极代码共阴极代码字型共阳极代码共阴极代码0C0H3FH990H6FH1F9H06HA88H77H2A4H5BHB83H7CH3B0H4FHCC6H39H499H66HDA1H5EH592H6DHE86H79H682H7DHF8EH71H7F8H07H灭FFH00H880H7FH二、七段LED显示器的工作原理七段LED显示器需要由驱动电路驱动。在七段LED显示器中,共阳极显示器,用低电平驱动;共阴极显示器,用高电平驱动。点亮显示器有静态和动态两种方式。1静态显示器所谓静态显示,就是当显示器显示某一字符时,相应段的发光二极管恒定地导通或截止。图4.12为一个四位静态LED显示器电路。该电路各位可独立显示,只要在该位的段选线上送相应的段码,该位就能保持响应的显示字符。这种显示方法的每一位都需要有一个8位输出口控制。静态显示器的优点是显示稳定,在发光二极管导通电流一定的情况下显示器的亮度高,控制系统在运行过程中,仅仅在需要更新显示内容时,CPU才执行一次显示更新子程序,这样大大节省了CPU的时间,提高了CPU的工作效率;缺点是位数较多时,所需的I/O口太多,硬件开销太大。图4.12四位静态LED显示电路例如在AT89S52的串行口上扩展多片串行输人并行输出的移位寄存器74LS164作为静态显示器接口,图4.13给出了8位共阳极静态显示器的逻辑接口。设要显示的数据放在78H-7FH中。图4.13串行扩展静态显示电路静态显示程序如下: DISPLAY:MOV R7,8;8位显示计数器 MOV R0,78H;78H-7FH为显示器缓冲区 MOV DPTR,TABLE;显示字形码表首地址 LOOP1:MOV A,R0;取出要显示的数据 INC R0;指向缓冲区下一地址 MOVC A,ADPTR;取出显示字形码 MOV SBUF,A;送出该LED上的字形码 LOOP2:JNB TI,LOOP2;输出完否? CLR TI;完,清发送中断标志 DJNZ R7,LOOP1;8位显示未完,继续 RET TABLE:DB 0C0H,0F9H,0A4H,0BH,99H ;0,1,2,3,4 DB 92H,82H,0FBH,80H,90H ;5,6,7,8,9 DB 88H,83H,0C6H,0A1H,86H ;A, b,C, d,E DB 8EH,0FFH ;F,暗2动态显示器图4.14 四位动态LED显示电路所谓动态显示就是一位一位地轮流点亮各位显示器(扫描),对于显示器的每一位而言,每隔一段时间点亮一次。在同一时刻只有一位显示器在工作(点亮),利用人眼的视觉暂留效应和发光二极管熄灭时的余辉效应,看到的却是多个字符“同时”显示。显示器亮度既与点亮时的导通电流有关,也与点亮时间和间隔时间的比例有关。调整电流和时间参数,可实现亮度较高较稳定的显示。图4.14为一个4位动态LED显示器电路。其中段选线占用一个I/O口,控制各位LED显示器所显示的字形(称为段码或字形口);位选线需要一个I/O口,控制显示器公共极电位(称为位码或字位口)。 动态显示器的优点是节省硬件资源,成本较低。但在控制系统运行过程中,要保证显示器正常显示,CPU必需每隔一段时间执行一次显示子程序,占用CPU大量时间,降低了CPU的工作效率,同时显示亮度较静态显示器低。第三部分 项目实施一、项目实施分析(一)硬件电路图4.15是一个动态扫描方式驱动的8只数码管显示电路,要求8只数码管从左到右顺序显示1、2、3、4、5、6、7、8共8个字符。89S52图4.15 八位LED显示电路反向驱动芯片ULN2803在“项目实训一”中已做详尽介绍。电路选用共阴极数码管。AT89S52的Pl口为位驱动口,当输出为“l”时对应的位被选中,显示字符。Pl口的8个位中,任意时刻只能有一个输出为“l”,其他均为“0”。P1口输出与对应显示位的关系见表4.2。表4.2 P1口输出与对应显示位的关系端口P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7位码01H02H04H08H10H20H40H80H数码管L1L2L3L4L5L6L7L8AT89S52的P2口为段驱动口,当输出为“l”时IC2的输出为“0”,对应的段“灭”;当输出为“0”时,对应的段“亮”。P2口与数码管笔画的对应关系见表4.3。表4.3 P2口与数码管笔画的对应关系abCedfgdpP2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7(二)程序清单程序清单如下:DPLAY:MOV R0,78H ;显示数据缓冲区首地址送R0 MOV R3,10000000B ;使显示器最左边位亮 LPl: MOV A,R3 MOV P1,A ;扫描值送P1口 MOV A,R0 ;取欲显示数据 ADD A,0DH ;加上查表指令地址偏移量 MOVC A,A+PC ;取出段码 MOV P2,A ;送出显示 ACALL DELAY ;调用延时子程序 INC R0 ;指向下一个显示缓冲区地址 MOV A,R3 JB ACC0,LP2 ;扫描到第八个显示器否? RR A ;未到,扫描码右移1位 MOV R3,A AJMP LPl LP2:RET TAB:DB 0C0H,0F9H,0A4H,0BOH,99H,92H ;0,1,2,3,4,5 DB 82H, 0F8,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论