1、第4章 并行I/O口的 应用与扩展,本章学习目标,掌握MCS-51单片机并行I/O口的应用掌握键盘与显示器的扩展原理及方法,4.1 单片机的并行接口P0P3MCS-51单片机有P0、P1、P2、P3四个8位双向I/O口,每个端口可以按字节输入或输出,也可以按位进行输入或输出,四个口共32根口线,用作位控制十分方便。 一、四个并行口使用的注意事项如下:如果单片机内部有程序存贮器,不需要扩展外部存贮器和I/O接口,单片机的四个口均可作I/O口使用。 四个口在作输入口使用时,均应先对其写“1”,以避免误读。 P0口作I/O口使用时应外接10K的上拉电阻,其它口则可不必。 P2可某几根线作地址使用时,
2、剩下的线不能作I/O口线使用。 P3口的某些口线作第二功能时,剩下的口线可以单独作I/O口线使用 P0驱动8个TTL电路,P1,P2,P3可驱动4个TTL电路。,3.读-修改-写: 修改输出锁存器的内容。锁存器中的数据通过上三态门进入内部总线,修改后再写入到锁存器中。读-修改-写指令:并行口为目的操作数的指令:如:ANL P1,A,1.输出锁存:输出将使数据写入输出锁存器。输出指令:MOV P1,AMOV P1.0,C 2.输入三态:输入从I/O引脚上输入信号,读信号打开,引脚信号通过下三态门进入内部总线。为保证可靠输入,先写入“1”。MOV P1,#0FFH ;使输出驱动器截止MOV A,P
3、1 ;输入P0P3的复位状态均为FFH,自动处于输入状态。,二、并行接口的三种操作:,首先,在应用设计中应理解,计算机内由 数字电路组成只存在两种TTL电平,高电平 3.55V和低 电平0V,对应着的数字为“1”和 “0”。外设的状态要通过电路转换成高、低电 平,计算机才能识别(如开关电路)。计算机输出数据“1”即输出3.5V5V,输出 数据“0”即输出0V,根据外设需要的电平要求 输出“1”或“0”数据,这就是程序控制外设的本 质。,4.2 并行I/O口的直接应用,从P1.0P1.3 输入开关状态,再经P1.4P1.7输出去驱动发光二极管,使发光二极管显示开关的状态。,接成灌电流形式,能增加
4、驱动能力,使二极管更亮些。,并行I/O口的直接应用举例,控制程序如下: ORG 0000HAJMP MAINORG 0030H MAIN:MOV A,#0FFH MOV P1,A ;熄灭发光二极管,; P1口低位写 “1”MOV A,P1 ;读入开关状态SWAP A ;A高低半字节交换MOV P1,A ;开关状态输出AJMP MAINEND,4.3 LED显示器的扩展,单片机应用系统中,常常使用发光二极管(LED)来指示系统运行状态,使用数码管显示检测参数和数据。显示程序涉及到硬件电路的连接,显示结果最为直观,所以,学习单片机显示程序编写有利于提高读者的学习兴趣,同时也为后续调试较大程序提供故
5、障诊断的方法。单片机应用系统中,最常用的是七段式LED显示器,又称数码管。,4.3.1 LED数码显示器的结构与原理 常见数码管的管脚排列如下图(a)所示,其中COM为公共 点。根据内部发光二极管的接线形式,可分为共阴极型(图(b) 和共阳极型(图(c)。,共阴极,共阳极,图(a),图(b),图(c),LED数码管的ga七个发光二极管因加正电压而发亮,因加零电压而不能发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为段码(或称字型码) ,显然共阳极和共阴极的字形码是不同的 ,其字形码见下表。LED数码管每段需1020ma的驱动电流,可用TTL或CMOS器件驱动。字形码的控制输出可采用硬件译
6、码方式,如采用BCD 7段译码/驱动器74LS48、74LS49、CD4511(共阴极)或74LS46、74LS47、CD4513(其阳极)也可用软件查表方式输出。,十六进制数字形码表,4.3.2 LED接口电路:,两种显示电路:静态显示和动态显示。,特点:显示亮度高,硬件和软件都较简单;但占用口线多。,1静态显示:每位的段码线(adp) 分别与一个8位的锁存器 输出相连。显示字符一确 定,相应锁存器的段码输 出将维持不变,直到送入 另一个段码为止。 各位的公共端连接在一起(接地或+5V)。,2动态显示:,所有位的段码线相应段并在一起,由一个8位I/O口控制,各位的公共端分别由相应的I/O线控
7、制。分时轮流选通数码管的公共端,使得各数码管轮流导通,在选通的LED 上得到显示字形码。 一个接口完成字形码的输出(字形选择),另一接口完成各数码管的轮流点亮(字位选择)。,2动态显示:,动态显示采用各数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性 ,看不出闪烁显示现象。 特点:节省硬件资源,成本较低,但要保证显示器正常显示,CPU必需每隔一段时间执行一次显示子程序,降低了CPU的工作效率;同时显示亮度较静态显示低。,例3-52 单片机显示电路下图所示,试编写一个系统上电自检程序。要求使6个数码管从右到左轮流显示“8.”1秒后,再全部显示“8.”3秒,最后最右边的数码管显示
8、“0”,其余全部熄灭。设时钟频率为11.0592MH。,4.4 矩阵式键盘的扩展,1. 键盘输入的特点,键盘:一组按键开关的集合。,行线电压信号通过键盘开关机械触点的断开、闭合,输出波形如图。,4.4.1 键盘接口原理,2. 按键的确认,检测行线电平高电平:断开;低电平:闭合,,常用软件来消除按键抖动。,基本思想:检测到有键按下,键对应的行线为低,软 件延时10ms后,行线如仍为低,则确认该行有键按下。,3.如何消除按键的抖动,有键松开时,行线变高,软件延时10ms后,行线仍为 高,说明按键已松开。,采取以上措施,躲开了两个抖动期t1和t3的影响。,4.4.2 键盘接口的工作原理,独立式按键接
9、口和矩阵式键盘接口。,1.独立式键盘接口,各键相互独立,每个按键各接一根输入线,通过检测输入线的电平状态可很容易判断哪个键被按下。,此种接口适于键数较少或操作速度较高的场合。,2. 矩阵式键盘接口,由行线和列线组成,按键位于行、列的交叉点上。 如图所示。,用于按键数目较多的场合,行列式键盘与独立式 键盘相比,要节省很多的I/O口线。,按键 输出,(1)、行列式键盘工作原理,无键按下,该行线为高电平,当有键按下时,行线电平由列线的电平来决定。由于行、列线为多键共用,各按键彼此将相互发生影响,必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置。,(2) 、按键的识别方法,常用的为扫描法
10、,图8-5中6号键被按下为例,来说明此键是如何被识别出来的。,扫描法进行按键识别的方法,分两步进行:,第1步:识别键盘有无键按下,第2步:如有键被按下,识别出具体的按键。,把所有列线置0,检查各行线电平是否有变化,如有变化,说明有键按下,如无变化,则无键按下。,依次把某一列置低电平,其余各列为高电平,检查各行线电平的变化,如果某行线电平为低,可确定此行列交叉点处的按键被按 下。,扫描结果:列线Y2为低电平,行线Xl为低电平,可采用依次排列键号的方式对按键进行编码。以图8-5中的 44键盘为例,可将键号编码为:0、1、2、F等16个键 号。编码相互转换可通过计算或查表的方法实现。计算法转换按键的
11、键号:键号(值)=行号每行的按键个数+列号对应的44矩阵键盘的按键键号,如表8-1所示。,(3)键盘的编码,(4)键盘的扫描方式,通常,键盘扫描方式有3种,即编程扫描、定时扫描和中断扫描。,1). 编程扫描方式,只有当单片机空闲时,才调用键盘扫描子程序, 扫描键盘。,键盘扫描程序一般应包括以下内容: 判别有无键按下。 有键按下,用软件延时的方法消除按键抖动的影响。 键盘扫描取得闭合键的位置码,既行、列值。 用计算法或查表法将键的位置码转换为键值(0、1、2F)。 返回闭合键的键值。,特点:CPU需不停的扫描键盘,工作效率较低。,2). 定时扫描扫方式,利用单片机内的定时器,产生10ms的定时中断,对 键盘进行扫描。,3).中断扫描方式,只有在键盘有键按下时,才执行键盘扫描程序,如无键按下,单片机将不理睬键盘。,4.4.3键输入过程与软件结构,实验内容 1、检查实验板电源及地电位是否正常; 2、模拟调试实验板各模块电路(注意万用表的正确使用); 2、自学课本相关内容完成以下实验 实验二 自学内容:P68-P74调试课本例程 实验三 自学内容:P236-P239调试课本例程,END,