开关量输入输出通道与人机接口.ppt
第二章 开关量输入输出通道与人机接口,2.1 过程通道的分类 2.2 开关量输入输出通道 2.3 人机接口键盘 2.4 人机接口数字显示方法习题,为了实现计算机对生产过程或装置的控制,需要将对象的各种测量参数按要求的方式送入计算机;经计算机运算处理后的数字信号也要变换成适合于对生产过程或装置进行控制的形式。因此,在计算机和生产过程之间必须设置信息传递和变换的装置,这种装置就称为过程输入输出通道,简称为过程通道或IO通道。,一般来说,计算机不会自主地工作,需要接收操作人员键入的指令,其运行状态和结果也需要显示或打印,在现代大规模控制系统中还应有通信和数据存盘功能,所有这些都是由人与计算机之间的连接装置来完成的,我们称这种装置为人机接口。有了过程通道与人机接口,才能将人、计算机和生产过程组成有机的整体,如图2-1所示。,图2-1 过程通道与人机接口,过程通道与人机接口是每个计算机控制系统中都必须具有的重要组成部分,在计算机控制系统的设计中,许多精力都花费在过程通道和人机接口的设计或选择上。许多控制计算机生产厂家都设计和生产了各种各样的IO模块供选用,近年来还出现了硬件卡+软件驱动程序(driver)等应用更为方便的产品。这一章我们主要介绍计算机控制系统中过程通道的分类、开关量输入输出通道与人机接口的设计及应用方法。有关模拟量输入输出通道将在第四章讨论。,2.1 过程通道的分类,过程通道包括模拟量输入通道、模拟量输出通道、数字量输入通道和数字量输出通道。(1)模拟量输入通道:主要功能是将随时间连续变化的模拟输入信号经检测、变换和预处理,最终变换为数字信号送入计算机。常见的模拟量有压力、温度、液体流量和成分等。(2)模拟量输出通道:它将计算机输出的数字信号转换为连续的电压或电流信号,经功率放大后送到执行部件对生产过程或装置进行控制。,(3)数字量输入通道:也称开关量输入通道。凡是以电平高低和开关通断等两位状态表示的信号统称为数字量或开关量。主要有三种形式:一种是以若干位二进制数表示的数字量,它们并行输入到计算机,如拨码盘开关输出的BCD码等;另一种是仅以一位二进制数表示的开关量,如启停信号和限位信号等;还有一种是频率信号,它是以串行形式进入计算机的,如来自转速表,涡轮流量计、感应同步器等信号。这些信号都要通过数字量输入通道进入计算机。,(4)数字量输出通道:有的执行部件只要求提供数字量,例如步进电机,控制电机启停和报警信号等,这时应采用数字量输出通道。应该注意,过程通道分类是以经过通道的信号形式来划分的,并不以连续的对象来划分,如模拟对象的模拟量可以转换为频率信号(VF变换)连接于数字输入通道;同样,数字输出通道完全可以接直流电动机,组成脉冲调宽控制(PWM)。,2.2 开关量输入输出通道,221 开关量输入输出通道的一般结构形式开关量输入输出通道一般由三部分组成:CPU接口逻辑、输入缓冲器和输出锁存器、输入输出电气接口(亦即开关量输入信号调理和输出信号驱动电路)。一般情况下,各种开关量输入输出通道的前两部分往往大同小异,所不同的主要在于输入输出(IO)电气接口。典型的开关量输入输出通道结构如图2-2所示。,图2-2 典型的开关量输入输出通道结构图,1 CPU接口逻辑 这部分电路一般由数据总线缓冲器驱动器、输入输出口地址译码器、读写等控制信号组成。,2 输入缓冲器和输出锁存器 输入缓冲器是对外部输入的信号起缓冲、加强以及选通的作用,CPU通过读缓冲器读入数据。输出锁存器的作用是锁存CPU送来的输出数据,供外部设备使用。输入缓冲器和输出锁存器可以使用各种可编程的外围接口电路,如8255、8155等,也可以使用简单的中小规模集成电路,如74LS240、74LS244、74LS245、74LS273、74LS377等。,3 输入输出电气接口典型的开关量输入输出电气接口的功能主要是滤波、电平转换、隔离和功率驱动等,关于这些内容,将在后面详细介绍。,222 开关量输入信号的调理 开关量输入通道的基本功能就是接收外部的状态信号,这些状态信号是以逻辑“1”或逻辑“0”出现的,其信号的形式可能是电压、电流或开关的触点。在有些情况下,外部输入的信号可能会引起瞬时的高电压、过电压、接触抖动以及噪声等干扰。为了将外部的开关量信号输入到计算机,必须将现场输入的状态信号经转换、保护、滤波、隔离等措施转换成计算机能接收的逻辑信号,这就是开关量输入信号调理的任务。下面针对不同的情况分别介绍相应的调理方法。,1 信号转换电路(1)电压或电流转换电路如图2-3(a)所示,可根据电压或电流的大小选择电阻R1和R2。(2)开关触点型信号输入电路如图2-3(b)所示,这种电路使得开关的通和断变成输出电平的高和低。,图2-3 信号转换电路(a)电压或电流输入;(b)开关触点输入,图2-4 RC低通滤波电路,2滤波电路由于长线传输、电路、空间等干扰的原因,输入信号常常夹杂着各种干扰信号,这些干扰信号有时可能使读入信号出错,这就需要用滤波电路来消除干扰。图2-4是一个RC低通滤波电路。这种电路的输出信号与输入信号之间会有一个延迟,可根据需要来调整RC网络的时间常数。,3保护电路 为了防止因过电压、瞬态尖峰或反极性信号损坏接口电路,在开关量输入电路中,应采取适当的保护措施。图2-5和图2-6分别是几种常用的保护电路,其中,图25(a)和图2-5(b)分别是采用齐纳二极管和压敏电阻将瞬态尖峰干扰箝位在安全电位的保护电路。图2-6(a)和(b)分别是反极性保护和高压保护电路。,图2-5 瞬态尖峰保护电路(a)采用齐纳二极管;(b)采用压敏电阻,图2-6 反极性和高压保护(a)反极性保护;(b)高压保护,4 消除触点抖动 若开关量输入信号来自机械开关或继电器触点,由于开关触点闭合及断开时,常常会发生抖动,因此,输入信号的前沿及后沿常常是非清晰信号,如图2-7所示。,图2-7 开关或触点闭合及断开时的抖动,解决开关或触点的抖动问题可采用图2-8所示的双向消抖电路。双向消抖电路是由两个与非门组成RS触发器,把开关信号输入到RS触发器的一个输入端A,当抖动的第一个脉冲信号使RS触发器翻转时,D端处于高电平状态,故第一个脉冲消失后RS触发器仍保持原状态,以后的抖动所引起的数个脉冲信号对RS触发器的状态无影响,这样就消除了抖动。,图2-8 双向消抖电路,5.光电隔离技术 在计算机控制系统中,为了提高系统的抗干扰能力,常需将工业现场的控制对象和计算机部分在电气上隔离开来。过去一般使用脉冲变压器、继电器等完成隔离任务,而现在普遍采用光耦合器,它具有可靠性高、体积小、成本低等优点。光耦合器由发光器件和光接收器件两部分组成,它们封装在同一个外壳内,其图形符号如图2-9所示。发光二极管的作用是将电信号转换为光信号,光信号作用于光敏三极管的基极上,使光敏三极管受光导通。这样,通过电光电的转换,把输入侧的电信号传送到了输出侧,而输入与输出侧并无电气上的联系,这样控制对象和计算机部分便被隔离开来了。,图2-9 光耦合器,光耦合器输入侧的工作电流一般为10 mA左右,正常工作电压一般小于1.3 V。所以光耦合器输入电路可直接用TTL电路驱动。而MOS电路不能直接驱动它,必须通过一个三极管来驱动,如图2-10所示。,图2-10 光耦合器的输入驱动电路(a)直接用TTL电路驱动;(b)MOS电路通过三极管驱动,光耦合器的输出可直接驱动DTL、TTL、HTL、MOS等电路器件。图2-11给出了一个用光耦合器隔离开关信号的电路图。当输入Ui为高电平时,A点为低电平,发光二极管导通发光,光敏三极管受光导通,B点为低电平,三极管V截止,输出Uo为高电平。当输入Ui为低电平时,A点为高电平,发光二极管截止,光敏三极管截止,B点为高电平,三极管V饱和导通,输出Uo为低电平。这样就将输入侧的信号传递到了输出侧。由于E1、E2两电源不共地,因此输入侧与输出侧电气上无任何联系,便被完全隔离开来。,由图2-11可知,通过光耦合器,还可实现电平转换。,图2-11 用光耦合器隔离开关信号的电路图,223 开关量输出驱动电路在计算机控制系统中,开关量的输出常常要求有一定的驱动能力,以控制不同的装置。常用的驱动电路有以下几种:1小功率驱动电路 这类电路一般用于驱动发光二极管、LED显示器、小功率继电器等元件或装置,要求电路的驱动能力一般为1040 mA,可采用小功率的三极管或集成电路如75451、75452等来驱动。图 2-12 为典型的小功率驱动电路。,图2-12 小功率驱动电路,图2-13 中功率驱动电路,2中功率驱动电路这类电路常用于驱动中功率继电器、电磁开关等装置,一般要求具有50500 mA的驱动能力,可采用达林顿复合晶体管或中功率三极管来驱动,如图2-13所示。目前常用达林顿阵列驱动器如MC1412、MC1413、MC1416等来驱动中功率负载。图2-14是MC1416的结构图及每个复合管的内部结构,它的集电极电流可达500 mA,输出端耐压可达100 V,特别适合于驱动中功率继电器。,图2-14 MC1416达林顿阵列驱动器(a)MC1416结构图;(b)复合管内部结构,需要指出的是,对于感性负载,在输出端必须加装克服反电动势的保护二极管。对于MC1416等,可使用内部的保护二极管。,3 固态继电器及其使用方法 固态继电器(简写为SSR)是一种四端有源器件,其中两个低功耗输入控制端可与TTL及CMOS电平兼容,另外两个为晶闸管输出端。固态继电器分为单向直流型(DCSSR)和双向交流型(AC SSR)两种,双向交流型又有过零触发型(Z型)和调相型(P型)之分,输入电路和输出电路之间采用光电隔离,绝缘电压达2500 V以上,输出端有保护电路,负载能力强。固态继电器的结构如图2-15所示。,图2-15 固态继电器的结构(a)过零型固态继电器的结构;(b)调相型固态继电器的结构,调相型固态继电器又称随机开启型固态继电器,具有快速开启性能,输出端随控制信号同步导通,控制信号消失后,过零时关断。过零型固态继电器具有零电压开启、零电流关断的特点,输出端在控制信号有效并保持到过零时导通,控制信号消失后,过零时关断。固态继电器的驱动方法如图2-16所示。,图2-16 固态继电器的驱动方法,224 开关量输入输出通道的设计1 开关量输入输出通道设计中应考虑的问题 在开关量输入输出通道的设计中,主要应考虑输入信号的拾取、转换、滤波、保护、隔离以及输出信号的驱动等问题。对于开关量输入信号的转换、滤波、保护、隔离以及开关量输出信号的驱动等,前面已有详细讨论。这里主要讨论一下开关量输入信号的拾取方式。,(1)开关状态型开关量输入信号的拾取:这是最常见的一种开关量输入形式,如生产设备或过程中某个开关或继电器的断开与闭合等。这种类型的开关量可通过前面已介绍的转换电路将开关的状态转换为电平的高低。(2)位置型开关量输入信号的拾取:这种类型的开关量输入信号需要通过合适的传感器来拾取,常用的有行程开关、光电装置及干簧继电器等。,(3)计数型开关量输入信号的拾取:这种类型的开关量输入信号也需通过合适的传感器来拾取。如用于测量转速时可使用光电对管、霍尔传感器、光电编码器等;测量位移时可使用光栅、磁栅等。其他类型的开关量输入信号还有液位、荷重的上限和下限、电流或电压的有或无等,均需通过合适的方式来拾取。,2 开关量输入输出通道设计实例 图2-17是一种典型的开关量输入输出通道原理图。它具有16路开关量输入及16路开关量输出。输入及输出通道均采用光电隔离,输出通道采用达林顿管输出的光耦合器TIL113,可直接用于驱动中小功率继电器或其他中小功率装置。,图2-17 开关量输入输出通道原理图,2.3 人机接口键盘,2.3.1 非编码键盘 非编码键盘是由一些按键排列成的一个行、列矩阵。按键的作用只是简单地实现开关的接通或断开,但必须有一套相应的程序与之配合,来解决按键的识别,键值的产生以及防止抖动等工作。因此,键盘接口电路和软件程序必须解决以下一些问题:(1)检查是否有键按下。(2)若有键按下,判断是哪一个键并确定其键号或键值。,(3)去抖动:一个电压信号是通过机械触点的闭合、断开过程来实现信号传递的,其波形如图2-18所示。抖动时间一般为510 ms。按键的稳定闭合期为几百毫秒到几秒钟时间。为了保证CPU对按键闭合仅作一次键输入处理,必须去除抖动影响,通常可用硬件或软件延时10 ms处理。,图2-18 按键闭合及断开时的电压抖动,(4)处理多键同时按下:对于同时有两个以上的键被按下的情况,有两种处理方法。第一,“双键同时按下”。用软件扫描键盘处理,当只有一个键按下时才读取键盘的输出,并认为最后按下的键为有效键。第二,“N键锁定”。多键按下时只处理一个键,任何其他按下又松开的键不产生任何键值;通常第一个被按下或最后一个被松开的键产生键值。这种方法简单实用。,(5)键输入软件处理:当有键按下时,单片机应能够完成该按键所设定的功能。一般键盘管理程序是整个应用程序的核心。8031的散转指令JMP A+DPTR可看成是键输入信息的软件接口。图2-19是单片机键输入处理流程图。键盘通过接口与CPU连接,CPU采用查询或中断方式检查有无键按下,再将该键号送A,然后通过散转指令JMP A+DPTR转入执行该键功能的处理程序入口,最后又返回到键盘管理程序的入口。,图2-19 单片机键输入处理流程图,1 独立式连接的非编码键盘 独立式连接是指:每一个按键单独占用一根IO线,每根IO线上的按键的工作状态不会影响其他IO线的工作状态,如图2-20所示。在图2-20中,用P1口8根I/O线连接8个按键。当没有键按下时,与之对应的输入线为1;任何一个键按下时,与之相连的输入线被置成0,CPU输入P1口状态;用查询指令可方便地判断哪一个键被按下。,图2-20 独立式连接的非编码键盘,非编码键盘结构的优点是简单,软件识别方便,缺点是占用较多的IO口线。在系统配置中需要按键数量较少时,常采用这种按键方式。图2-20中键值输入采用查询方式,不包括延时去抖动程序,只包括按键查询、键功能转移和8个键号处理程序入口等三部分。程序清单如下:,START:MOV A,0FFH;置P1为输入状态,读引脚 MOV P1,A;P1口锁存器写1,读引脚有效 MOV A,P1;输入按键状态供查询用 JNB ACC.0,P1.0;0号键按下转 JNB ACC.1,P1.1;1号键按下转 JNB ACC.2,P1.2;2号键按下转 JNB ACC.3,P1.3;3号键按下转 JNB ACC.4,P1.4;4号键按下转 JNB ACC.5,P1.5;5号键按下转 JNB ACC.6,P1.6;6号键按下转 JNB ACC.7,P1.7;7号键按下转 JMP START;返回接着查询,P1.0:LJMP PORT0;转07号键处理程序入口P1.1:LJMP PORT1;P1.7:LJMP PORT7;,以下是各功能键处理程序结构:PORT0:;0号键处理程序 LJMP START;从0号键程序执行完返回PORT1:;1号键处理程序LJMP START;从1号键程序执行完返回 PORT7:;7号键处理程序 LJMP START;从7号键程序执行完返回,2.矩阵式连接非编码键盘矩阵式又称为行列式。在按键数量较多时,可以少占用IO线。用IO线组成行、列结构,行、列线不相通,而是通过一个按键设置在行、列交叉点上来连通。若需要设置NM 个按键,则需要MN根IO线。,(1)矩阵式键盘工作原理:4行4列键盘工作原理如图2-21所示。,图2-21 44简单键盘结构,由图可见,16个键分两部分,十个数字键09;六个命令键AF。对按键的识别由软件来完成。用两个并行IO接口电路,采用步进式行扫描法。CPU每次通过接口对某一行Xi输出扫描信号0,然后输入列线Yj的状态来确定键闭合的位置。列线Y接+5 V。无按键时,行X和列Y线断开,列线Y1Y4呈现高电平。当某一按键闭合时,该键所在行、列线短接。若该行线输出为0,则该列线电平被拉成0(其余3根列线仍为1),此时CPU可判断出按键闭合所在行、列及键号。,若扫描从第一行有效开始,则CPU输出X4X3X2X1=1110,以下类推:第二行为X4X3X2X1=1101,第三行为1011,第四行为0111。设4号键按下闭合,代表4号键闭合的特征信号为:列信号:Y4Y3Y2Y1=0111,第4列有效。行信号:X4X3X2X1=1011,第3行有效。,为了便于CPU处理,将行、列信号拼装成一个字节,然后求反得到4号键对应的“特征字”,也叫键值,即:列线Y 行线X 0111 10111000 0100=84H CPU操作时,先输出行有效信号,再输入列信号,经过拼装、求反得到键值,由于这种对应是唯一的,因此可用来识别键盘上所有的键,根据上述关系可求出其他键的键值如下:CPU在得到键值后,用一个软件计数器通过键值表,很容易判断按键闭合的号码。不同的接线方式,得到的键值可能不同,但键号和键值的对应关系是唯一的。,(2)矩阵式非编码键盘接口及程序设计:用8155作键盘接口,A口作为扫描输出口,接键盘8条行线,C口作为输入口,用PC3PC0接键盘4条列线,8155作84键盘接口如图2-22所示。设A口地址0101H,C口地址0103H。子程序:键盘扫描程序中要调用两个子程序:DIR LED显示器显示子程序(程序略)。该程序具有延时功能,其延时时间为6 ms。KS1判断子程序。该程序判断是否有键闭合。程序如下:,图2-22 用8155作矩阵式非编码键盘接口电路,KS1:MOV DPTR,0101H MOV A,00HMOVX DPTR,AINC DPTRINC DPTR;建立C口地址MOVX A,DPTR;读C口CPL A,;A取反,无键按下则全0ANL A,0FH;屏蔽A高半字节,执行KS1判断子程序的结果是:有键闭合,则(A)0,无键闭合,则(A)=0。,键盘扫描程序:KEY1:ACALL KS1;检查有键闭合否JNZ LK1;A非0则转移NI:ACALL DIR;显示一次(延时6 ms)AJMP KEY1;LK1:ACALL DIR;有键闭合二次延时ACALL DIR;共12 ms去抖动ACALL KS1;再检查有键闭合否JNZ LK2;有键闭合转LK2 ACALL DIR AJMP KEY1;无键闭合,延时6 ms后转KEY1,LK2:MOV R2,0FEH;扫描初值送R2MOV R4,00H;扫描行号送R4LK4:MOV DPTR,0101H;设A口地址MOV A,R2 MOVX DPTR,A;扫描初值送A口INC DPTR INC DPTR;指向C口MOVX A,DPTR;读C口JB ACC.0,LONE;ACC.0=1,第1列无键 闭合,转LONE MOV A,00H;装第1列列值 AJMP LKP,LONE:JB ACC.1,LTWO;ACC.1=1,第2列无键闭合,转LTWOMOV A,08H;装第2列列值AJMP LKP LTWO:JB ACC.2,LJHR;ACC.2=1,第3列无键闭合,转LTHRMOV A,10H;装第3列列值AJMP LKP LTHR:JB ACC.3,NEXT;ACC.3=1,第4列无 键闭合,转NEXMOV A,18H;装第4列列值,LKP:ADD A,R4;计算键值 PUSH A;保护键值LK3:ACALL DIR;延时6 ms ACALL KS1;查键是否继续闭合,若闭合 再延时 JNZ LK3;若键起,键值送A POP A RET NEXT:INC R4;扫描行号加1 MOV A,R2,JNB ACC.7,KND;第7位为0,已扫完最高列,转KNDRL A;循环左移1位MOV R2,AAJMP LK4;扫描下一行KND:AJMP KEY1;扫描完毕,开始新的一次扫 描,键盘扫描程序的运行结果是把闭合键键值放在累加器A中,然后再根据键值进行下一步工作,本程序键值未求反处理。,232 编码键盘上面所述的非编码键盘都是通过软件方法来实现键盘扫描、键值处理和消除抖动干扰的。显然,这将占用较多的CPU时间。在一个较大的控制系统中,不可能允许CPU总是执行键盘程序。下面以二进制编码键盘为例,介绍一种用硬件方法来识别键盘和解决抖动干扰的键盘编码器及其接口电路。,具有优先级的8位编码器CD4532B的真值见表2-1。表示芯片优先级的输入允许端Ein为“0”时,无论编码器的信号输入I7I0为何状态,编码器输出全为“0”(即编码器处于屏蔽状态),当输入允许端Ein为“1”时,而编码器的信号输入I7I0全为“0”时,编码器输出也为“0”,但输出允许端Eout为“1”,表明此编码器输入端无键按下,却允许优先级低的相邻编码器处于编码状态。这两种情形下的工作状态端GS均为“0”。,表2-1 具有优先级的8位编码器CD4532B真值表,同一芯片中,I0的优先级最高,I7的优先级最低,当有多个键按下时,优先级高的被选中。比如处于正常编码状态即Ein为“1”时,I0端为“1”(即S0键按下),其余输入端无论为“1”或“0”(即其余键是否按下),编码输出均为00H,同时GS端为“1”,Eout端为“0”。以此类推,输入端的键值号与二进制编码输出一一对应。,图2-23是一种采用两片CD4532B构成的16个按键的二进制编码接口电路。其中,由于U1的Eout作为U2的Ein,因此按键S0的优先级最高,S15的优先级最低。U1和U2的输出Q0Q2经门A1A3输出,以便形成低三位编码D0D2。而最高位D3则由U2的GS产生,当按键S8S15中有一个闭合时,其输出为“1”。从而,S0S15中任意一个键被按下,由编码位D3D0均可输出相应的4位二进制码。,图2-23 二进制编码键盘电路,为了消除键盘按下时产生的抖动干扰,该接口电路还设置了单稳态电路(B1、B2、R2和C2)和延时电路(A4、R3和C1),电路中E、F、G和H这四点的波形如图2-24所示。由于U1和U2的GS接或门A4的输入端,因此当按下某键时,A4为高电平,其输出经R3和C1延时后使G点也为高电位,作为与非门B3的输入之一。同时,U2的输出信号Eout触发单稳态(B1和B2),在单稳态持续时间T内,其F点输出为低电位,也作为与非门B3的输入之一。由于单稳态期间(T)E点电位的变化(即按键的抖动)对其输出F点电位无影响,因此此时不论G点电位如何,与非门B3的输出(H点)均为高电位。,图2-24 消抖电路波形图,2.4 人机接口数字显示方法,2.4.1 发光二极管LED显示1.7段LED显示器结构与原理7段LED显示器由7个发光二极管组成显示字段,并按“8”字形排列。这7段发光管分别称为a、b、c、d、e、f、g,有的还带有一个小数点dp,7段LED由此得名。将7段发光二极管阴极都连在一起,称为共阴极接法,当某个字段的阳极为高电平时,对应的字段就点亮。共阳极接法是将LED显示器的所有阳极并接后连到+5 V电源上,当某一字段的阴极为0时,对应的字段就点亮,如图2-25所示。,图2-25 7段LED显示器件(a)共阴极;(b)共阳极;(c)段排列,由图可见,通过7段的不同组合控制,可以显示09和AF共16个数字、字母,实现十六进制显示。下面举例说明显示字符和数字量与段选码的关系。对于共阴极接法,当加到阳极的数字量为0011 1111B=3FH时,除g、dp不发光外,其他6段均发光,因此显示一个0字符;对于共阳极接法,加到阴极的数字量为1100 0000B=C0H时,则显示“0”。由此看出,共阳极接法的段选码与共阴极接法的段选码是逻辑“非”关系。,表2-2 LED段选码和显示字符之间的关系,2.LED显示器两种显示方式点亮LED显示器有两种方式:静态显示和动态显示,下面以共阴极接法为例说明。(1)LED静态显示方式:所谓静态显示就是将N位共阴极LED显示器的阴极连在一起接地,每一位LED的8位段选线与一个8位并行口相连,当显示某一个字符时,相应的发光二极管就恒定地导通或截止。一个4位静态显示电路如图2-26所示。,图2-26 4位静态LED显示电路,在图中,每一位LED可独立显示。由于每一位LED由一个8位输出口控制段选码,故在同一时间里每一位显示的字符可以各不相同。静态显示的优点是所需驱动电流较小,可以由8155或8255直接驱动,显示稳定。缺点是N位LED要求有N8位IO口线,占用IO口线太多,故多在显示位数较少时使用。,(2)LED动态显示方式:所谓动态显示就是用扫描方式轮流点亮LED显示器的各个位。特点是将多个7段LED显示器同名端的段选线复接在一起,只用一个8位IO控制各个LED显示器的公共阴极轮流接地,逐一扫描点亮,使每位LED显示该位应当显示的字符。恰当地选择点亮LED的时间间隔(15 ms),会给人一种视觉暂停效应,似乎多位LED都在“同时”显示。图2-27是一个8位动态显示原理图。,图2-27 8位LED动态显示原理图,在图中,控制每个LED显示位轮流接地点亮的代码称为“位选码”。由IO(2)口输出8位代码控制。特点是每次输出只有一位是0(点亮),其余7位均为1(熄灭),因此每一位LED都有一个唯一的8位“位选码”。按图2-27从左向右轮流显示8位LED的位选码可用8031右移循环指令实现:MOV A,7FH;点亮左1 LED的位选码LOOP:MOVX DPTR,A;从IO(2)口输出位选码 RR A;右移一位,指向下一个LED位 LCALL DELAY;调延时3 ms子程序 LJMP LOOP;返回显示下一位LED,动态显示的操作由软件完成。每次由IO(1)口输出段选码、再由IO(2)口输出位选码,经过延时,以获得稳定的显示效果。从上述分析的显示原理可知,为了显示数字和字母,最终需要转换成相应的段选码。这种转换可以通过硬件译码器或软件译码完成。,3.用硬件译码的8位静态LED显示接口电路 在单片机显示中,要求LED显示十进制或十六进制数。因此在选择硬件译码器时,要能够完成对输入BCD码及十六进制数的锁存、译码并具有直接驱动LED功能。MC14495 BCD7段十六进制锁存、译码驱动芯片能够完成上述任务。(1)MC14495使用功能介绍:该芯片有16条引脚。内部结构如图2-28所示。,图2-28 MC14495 BCD-7段十六进制锁存译码驱动器,由图2-28可见,4位锁存器对A、B、C和D端输入的BCD码进行锁存。由选通线LE控制锁存器,当LE=0时,允许输入数据,在LE=1时,锁存输入数据。输入译码电路将输入的BCD码:00001001、10101111译成7段a、b、c、d、e、f、g。电路特点是用字母A、B、C、D、E、F来显示对应的十进制数10、11、12、13、14、15。引脚hi为输入数据值指示端:当输入值大于10时,hi=1;输入数值小于10时,hi=0。,当输入ABCD=1111(15)时,UCR=0。驱动器输出10 mA电流,并有内部输出限流电阻,可直接与显示器相连接,故LED不需外加限流电阻。MC14495输入、输出及显示字符关系如表2-3所示。,表2-3 MC14495输入、输出及显示字符表,(2)MC14495与8031单片机和显示器接口:使用8片MC14495和8位7段LED显示器与8031单片机接口电路如图2-29所示。由图2-29可见,8个7段LED采用共阴极接法。用P1口的低4位输出BCD待显示的数字到A、B、C、D公共输入端。由P1口高4位P1.4P1.7控制74LS138译码器的输出,Y0Y7分别决定MC14495哪一个输入锁存器的LE有效。这样由P1口一次输出8位代码即可完成一位LED静态显示。,图2-29 使用MC14495的8位静态LED显示接口,图2-29的软件驱动显示程序如下:P1.7=1选中74LS138译码器有效,由P1.6、P1.5、P1.4控制LE端依次选中18LED之一。然后根据表2-3由P1.0P1.3写入BCD码,再使LE由01时锁存该数据并译码,驱动和显示。若使1号LED显示0字符,则P1口输出1000 0000B=80H,用程序实现:MOV A,80H;选中1号LED,显示0字符MOV P1,A;输出,Y0=0,ABCD=0000其他位的选择和显示0F字符可根据需要按上述规律编写。,4.用软件译码的8位动态LED显示接口电路 在单片机人机联系中,显示器采用软件译码并不复杂,而且软件译码逻辑可根据用户的要求任意编程设定,不受硬件译码器的逻辑限制,可以简化硬件接口电路结构。下面以一个8位7段动态LED显示用软件译码的设计为例加以说明。(1)软件译码的动态显示硬件接口设计:8位7段LED显示器需要两个8位并行输出口,一个输出段选码,另一个输出8位位选码。用8031扩展一片8155 IO接口可满足要求,用PB口输出段选码,PA口由动态扫描方式输出位选码,用74LS07作为驱动器,实现上述功能的硬件接口电路如图2-30所示。,图2-30 通过8155扩展 IO口控制的8位LED动态显示硬件接口电路,(2)8位动态LED显示程序设计:动态显示程序设计要点有三方面。8155初始化,设定PA口、PB口工作在输出状态,PC口工作在输入状态,且为ALT1方式,控制字为03H。代码转换,从PB口输出段选码,应将待显示的字符09,AF自动转换成段选码,为此,应在EPROM中开辟一个换码表,表中关系由表2-3决定,由指令查表取出段选码。,位选码的形成。显示从最左边第1位LED开始,位选码为7FH,由PA口输出,然后右移一位选择左边第2位,依次轮流。在两次输出之间延时1 ms,形成动态显示。按上述要求编制的程序应在8031片内RAM区开辟一个显示缓冲区,存放要进行显示的十六进制数。需要8个单元,首地址为10H单元,存放送往最左边的LED数据,如图2-31所示。根据上述分析,8位动态LED显示子程序框图如图2-32所示。,图2-31 LED数字显示缓冲区,图2-32 8位动态LED显示子程序流程图,根据图2-32编写的程序清单如下:,DIS:MOV A,03H;8155命令字PA、PB口基本输出MOV DPTR,7F00H;8155 IO命令口地址MOVX DPTR,A;写入8155方式命令字MOV R0,10H;送片内显示缓冲区RAM首地址MOV R3,7FH;位选码,最左一位先亮MOV A,R3;暂存于A中LDO:MOV DPTR,7F01H;指向PA口地址MOVX DPTR,A;从PA口输出位选码MOV A,R0;取待显示数据送A,MOV DPTR,TABLE;指向换码表首地址MOVC A,A+DPTR;取出对应段选码MOV DPTR,7F02H;指向PB口地址MOVX DPTR,A;从PB口输出段选码ACALL DLL;调用延时1 ms子程序MOV A,R3JNB ACC.0,LD1;判断8位LED显示完转(ACC.0=0)RR A;未显示完右移一位,变成 下一位位选码MOV R3,A;暂存INC R0;指向下一个RAM显示地址LJMP LD0;转回,显示下一个数码,LD1:RET以下是待显示数据对应的段选码换码表:TABLE:DB 3FH;对应字符0 DB 06H;对应字符1 DB 5BH;对应字符2 DB 4FH;对应字符3 DB 66H;对应字符4 DB 6DH;对应字符5 DB 7DH;对应字符6 DB 07H;对应字符7 DB 7FH;对应字符8 DB 6FH;对应字符9 DB 77H;对应字符A DB 7CH;对应字符B,DB 39H;对应字符C DB 5EH;对应字符D DB 79H;对应字符E DB 71H;对应字符F以下是软件延时1 ms子程序(相对于8031为6 MHz时钟):DLL:MOV R7,64HDLAY:NOP NOP NOP DJNZ R7,DLAY RET,显示程序每次只能在一个显示位上显示一种字型,利用软件延时,将该字符显示保存1 ms再移向下一位。上述程序设计成子程序,一次只能从左向右显示一次。为了使显示字符稳定下来,必须反复调用该程序。,2.4.2 LCD显示接口技术 液晶就是液态晶体(Liquid Crystal)。通常我们将物质分为三态:固态、液态和气态。而液晶是一种不属于上述三态中任何一种状态的中间状态。这种中间状态的物质是外观呈流动性的混浊液体,同时它具有光学各向异性和晶体所特有的双折射性。这种能在某个温度范围内兼有液体和晶体二者特性的物质就称为液晶,因此也有人将其称为物质的第四态。用液晶材料做成显示器就称为液晶显示器(Liquid Crystal display),简称LCD。,由于液晶材料具有介电各向异性、电导各向异性及双折射性,因此外加电场能使液晶分子排列发生变化,显示出旋光性、光干涉性和光散射性等特殊的光学性质,这种现象被称为电光效应(Electrooptic Effect)。扭曲向列型(TN)液晶显示器件是最常见的一种液晶显示器件,手表、数字仪表、电子钟及大部分计算器所用的液晶显示器件都是TN型器件。液晶显示器的驱动分静态方式和动态方式。显示方式分笔段式、点阵字符式、点阵图形式。,1.LCD的驱动方式(1)静态驱动:静态驱动的液晶显示器件,各液晶像素的背电极BP是连在一起引出的,各像素的段电极SEG是分立引出的,如图2-33(a)所示。此时,在背电极BP上加一个正电压(如5 V),在所要显示的像素的段电极(如SEGf)上加上0 V电压,该像素电极间的电位差便为UBP-USEGf=5 V,呈显示状态;不显示像素的段电极(如SEGa)加上5 V电压,该像素电极间的电压便为UBP-USEGa=0 V,呈不显示状态。,当然液晶驱动要求是交流驱动,所以在另一段时间内背极BP上加的是0 V电压,所要显示像素的段电极上(如SEGf)加上5 V电压,不显示像素的段电极(如SEGa)上加0 V电压,从而造成显示像素电极间电压为UBP-USEGf=-5 V,不显示像素电极间电压为UBP-USEGa=0 V,产生了与上述相同的效果,而各像素上的平均电压差为0 V。,依照交流驱动的原则,可在背电极BP上加入一个正脉冲序列,在显示像素的段电极(如SEGf)上加入一个与背电极脉冲相位差180的等幅脉冲序列,那么在该像素上便会产生+5 V-5 V的显示驱动脉冲序列;而在不显示像素的段电极(如SEGa)上加入一个与背电极脉冲同相位的等幅正脉冲序列时,则在该像素上产生0 V电压差,从而形成液晶显示的交流驱动。这就是液晶显示的静态驱动方式。静态驱动波形及静态驱动电路原理如图2-33(b)和(c)所示。静态驱动电路工作时序如图2-33(d)所示。,图2-33 静态驱动方式原理,图2-33(c)中A是控制端,以选择某位像素是否被显示。A=1时,像素的段电极SEG与背电极上信号的相位差正好相差180,在该像素上便产生+5 V-5 V的显示驱动脉冲序列;当A=0时,像素的段电极SEG与背电极上信号的相位差为0,则其合成电压(UBP-USEG)也为0 V,该像素就不显示。,(2)动态驱动:当液晶显示器件上显示像素较多时,若使用静态驱动结构将需要很多的电气连接和庞大的硬件驱动电路。为了解决这个问题,在液晶显示器电极的制作和排布上做一定的修改,采用矩阵结构,即把水平一组显示像素的背电极连在一起引出,称之为行电极,又称为公共极,用COM表示;把纵向一组显示像素的段电极连在一起,称之为段电极,又称为列电极,用SEG或COL表示。每个液晶显示像素都由其所在行和列的位置确定。在驱动方式上采用了类似CRT光栅逐行扫描的方法,这种驱动方式称为动态驱动法,或多路寻址驱动法。,下面介绍动态驱动的原理。图2-34(a)给出一个57点阵的液晶像素阵列,设定行驱动电压和列驱动电压。行、列选择电压:U1(行)、U6(列);行驱动电压:U2(行)、U5(列);列驱动电压:U3(行)、U4(列)。同时有:U1U2U3U4U5U6。由于驱动器使用逻辑电路,因此U1=UCC=+5 V(逻辑电源),为了提高液晶的驱动电压,U6的变化是往负电