SPCE061A语音处理应用第十讲人机接口10.1显示器接口•显示器的作用和地位人机对话窗口,显示工作状态和参数,测量结果•特点:软件简单,但占用I/O口线多,功耗大举例举例举例举例举例举例举例举例第10讲键盘和显示器接口硬件去抖动软件去抖动前沿抖动稳定后沿抖动图1按键抖动信号波形二、按键过程的基本特点如果按键较多,常用软件方法去抖,即检测出键闭合后执行一个延时程序,产生5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。硬件取抖电路•在键数较少时可用硬件方法消除键抖动。下图所示的RS触发器为常用的硬件去抖电路。图中两个“与非”门构成一个RS触发器。当按键未按下时,输出为1;当键按下时,输出为0。此时即使用按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),中要按键不返回原始状态A,双稳态电路的状态不改变,输出保持为0,不会产生抖动的波形。也就是说,即使B点的电压波形是抖动的,但经双稳态电路之后,其输出为正规的矩形波。这一点通过分析RS触发器的工作过程很容易得到验证。•键盘的两种形式独立式键盘每一个按键的电路是独立的,占用一条数据线。这种键盘占用硬件资源多,适合少量按键的情况。编码式键盘又叫矩阵式键盘、行列式键盘。用I/O口线组成行、列结构,键位设置在行列的交点上。例如4×4的行、列结构可组成16个键的键盘,比一个键位用一根I/O口线的独立式键盘少了一半的I/O口线五、按键的基本接口方法10.2.2独立式键盘接口方法和应用程序设计独立式键盘与单片机接口程序框图键闭合吗?置P1口为输入方式开始延时10ms消除抖动有键闭合吗?是K1键闭合吗?20H单元加1YYYYYYNNNNNN图5独立键盘程序框图流程是K2键闭合吗?是K3键闭合吗?是K4键闭合吗?20H单元减121H单元清021H单元置FF独立式键盘与单片机接口SPCE061A4×4键盘IOA15IOA9IOA10IOA11IOA12IOA13IOA14IOA8L1C4C3C2C1L4L3L26位数码管IOA0IOA1IOA2IOA3IOA4IOA5IOA6IOA7agDPfedcbIOB15IOB14IOB13IOB12IOB2IOB1IOB012DD6543试验箱上的键盘和LED显示器10.3LED点阵模块10.3LED点阵模块10.3LED点阵模块10.4AT89C51与液晶显示器(LCD)的接口LCD(LiquidCrystalDisplay):液晶显示器的缩写,被动式显示器-液晶本身并不发光,而是经液晶经过处理后能改变光线通过方向的特性,而达到白底黑字或黑底白字显示的目的。液晶显示器具有功耗低、抗干扰能力强等优点,广泛用在仪器仪表和控制系统中。10.4.1LCD显示器的分类按排列形状分:字段型、点阵字符型和点阵图形。(1)字段型广泛用于电子表、数字仪表、计算器中。(2)点阵字符型显示字母、数字、符号。它是由5×7或5×10点阵组成,广泛用在单片机系统中。(3)点阵图形型笔记本电脑和彩色电视等设备中。10.4.2点阵字符型液晶显示模块介绍点阵字符型LCD显示器,需相应的LCD控制器、驱动器,来对LCD显示器进行扫描、驱动,以及一定空间的RAM和ROM来存储写入的命令和显示字符的点阵。现已将上述元部件和LCD显示器用PCB连接到一起,称为液晶显示模块LCM(LCDModule)。只向LCM送入相应的命令和数据就可实现所需要的显示内容,接口简单,灵活方便。分字符和图形两种。1.基本结构(1)液晶板在上面排列着若干5×7或5×10点阵的字符显示位,从规格上分为每行8、16、20、24、32、40位,有1行、2行及4行三类,根据需要,来选择。(2)模块电路框图图10-17为字符型LCD模块电路框图,由控制器HD44780、驱动器HD44100及几个电阻电容组成。HD44100是扩展显示字符位用的(例如:16字符×1行模块就可不用HD44100,16字符×2行模块就要用一片HD44100)。图10-17模块14个引脚,其中有8条数据线,3条控制线,3条电源线,见表10-14。通过单片机写入模块的数据和指令,就可对显示方式和显示内容作出选择。RSR/W*操作00命令寄存器写入01忙标志和地址计数器读出10数据寄存器写入11数据寄存器读出表10-15寄存器的选择2.命令格式及命令功能说明(1)内部寄存器控制器HD44780内有多个寄存器,如表10-15所示。RS位和R/W*引脚上的电平来选择寄存器,读还是写,而DB7~DB0则决定命令功能。(2)命令功能说明。命令共11种:功能:清除屏幕显示,并给地址计数器AC置“0”。功能:置DDRAM(显示数据RAM)及显示RAM的地址为“0”,显示返回到原始位置。功能:设置光标的移动方向,并指定整体显示是否移动。其中:I/D=1,为增量方式;I/D=0,为减量方式。如S=1,表示移位;如S=0,表示不移位。(3)有关说明①显示位与DDRAM地址的对应关系,如表10-16所示。②标准字符库图10-18所示为字符库的内容、字符码和字型的对应关系。例如,“A”的字符码为41H,“B”的字符码为42H。图10-18③字符码(DDRAMDATA)、CGRAM地址与自编字型点阵数据(CGRAM数据)之间的关系,如表10-17所示。10.4.3AT89C51单片机与LCD的接口及软件编程1.AT89C51单片机与LCD模块的接口接口电路见图10-19。将LCM挂接在89C51的总线上,通过对数据总线的读写实现对LCM的控制。图10-192.软件编程(1)初始化单片机开始运行时必须先对LCD模块进行初始化,否则模块无法正常显示。下面介绍两种初始化方法。①利用模块内部的复位电路进行初始化。LCM有内部复位电路,能进行上电复位。复位期间BF=1,在电源电压VDD达4.5V以后,此状态可维持10ms,复位时执行下列命令。●清除显示。●功能设置,DL=1为8位数据长度接口;N=0单行显示;F=0为57点阵字符。●开/关设置,D=0关显示;C=0关光标;B=0关闪烁功能。●进入方式设置,I/D=1地址采用递增方式;S=0关显示移位功能②软件初始化。软件初始化流程如图10-20所示。图10-2010.5AT89C51与TPμP-40A/16A微型打印机的接口内部有一个控制用单片机,固化有控打程序,智能化程度高。常用的微型打印机:TPμP-40A/16A、GP16以及XLF嵌入仪器面板上的汉字微型打印机。1.TPμP-40A/16A微型打印机单片机控制的微型智能打印机。TPμP-40A与TPμP-16A的接口信号与时序完全相同,操作方式相近,硬件电路及插脚完全兼容,只是指令代码不完全相同。TPμP-40A每行40个字符,TPμP-16A则打印16个字符。2.主要性能、接口要求及时序(1)TPμP-40A主要技术性能•单片机控制,2KB控打程序及标准的Centronics并行接口。•可打印全部ASCII代码字符及128个非标准字符和图符。用户定义的16个代码字符(6×7点阵)。•可打印出8×240点阵的图样(汉字或图案点阵)。•字符、图符和点阵图可在宽和高的方向放大为×2、×3、×4倍。•每行字符的点行数(包括字符的行间距)可用命令更换。即字符行间距空点行在0~256间任选。(2)Centronics接口信号采用国际上流行的Centronics打印机并行接口,与单片机间是通过一条20芯扁平电缆及接插件相连。打印机有一个20线扁平插座,信号引脚排列如图10-21所示。引脚介绍:•DB0~DB7:数据线,单向传输,由单片机输入给打印机。•STB*:数据选通信号。在该信号的上升沿时,数据线上的8位并行数据被打印机读入机内锁存。图10-21•BUSY:打印机“忙”状态信号。当该信号有效(高电平)时,表示打印机正忙。此时,单片机不得向打印机送入新的数据。•ACK*:打印机的应答信号。低电平有效,表明打印机已取走数据线上的数据。•ERR*:“出错”信号。当送入打印机的命令格式出错时,打印机立即打印一行出错信息,提示出错。在打印出错信息之前,该信号线出现一个负脉冲,脉冲宽度为30μs。(3)接口信号时序接口信号时序如图10-22所示。图10-22选通信号STB*宽度需大于0.5μs。应答信号ACK*可与STB*信号作为一对应答联络信号,也可与BUSY作为一对应答联络信号。3.字符代码及打印命令写入的全部代码共256个,其中00H无效。代码:01H~0FH为打印命令;代码:10H~1FH为用户自定义代码;代码:20H~7FH为标准ASCII代码;代码:80H~FFH为非ASCII代码,如图10-23所示。其中包括少量汉字、希腊字母、块图图符和一些特殊字符。图10-23(1)字符代码。TPP-40A/16A中全部字符代码为10H~FFH,回车换行代码0DH为字符串的结束符。但当输入代码满40/16个时,打印机自动回车。举例子如下。①打印“$2356.73”。输送代码串为24,32,33,35,36,2E,37,33,0D。②打印“23.7cm3”。输送代码为32,33,2E,37,63,6D,9D,0D。(2)打印命令。打印命令由一个命令字和若干参数字节组成,表10-18所示为TPP-40A/16A命令代码及功能。有关打印命令的更详细说明,参见技术说明书。4.TPμP-40A/16A与89C51单片机接口设计TPP-40A/16A在输入电路中有锁存器,在输出电路中有三态门控制,因此可以直接与单片机相接。TPP-40A/16A没有读、写信号,只有握手线STB*、BUSY(或ACK*),接口电路如图10-24所示。用一条地址线(图10-24中使用P2.7,即A15)来控制写选通STB*信号和读取BUSY状态。图10-24图10-25所示为通过扩展的并行I/O口82C55连接的打印机接口电路。采用查询法,即通过读与82C55的PC0脚的相连的BUSY状态,来判断送给打印机的一个字节的数据是否处理完毕。也可用中断法(BUSY直接与单片机的P3.3引脚相连)。图10-2510.6单片机与BCD码拨盘的接口设计1.BCD码拨盘需输入一些控制参数,设定完将维持不变。使用的最方便的拨盘是十进制输入,BCD码输出的BCD码拨盘。这种拨盘如图10-26,为四片BCD码拨盘组。图10-304位BCD码拨盘组图10-26拼接的4位十进制输入拨盘组。每片拨盘具有0~9十个位置,每个位置都有相应的数字显示。BCD码拨盘后面有5个接点,A为输入控制线,另外4是BCD码输出线。拨盘拨到不同位置时,输入控制线A分别与4根BCD码输出线中的某根或某几根接通,其接通的BCD码输出线状态正好与拨盘指示的十进制数相一致。表10-19为BCD码拨盘的输入输出状态表。拨盘输入控制端A输出状态8421010000110001210010310011410100510101610110710111811000911001表10-19BCD码拨盘的输入输出状态2.单片BCD码拨盘与单片机的接口图10-27是89C51通过P1.0~P1.3与单片BCD码拨盘的接口电路。图10-27A端接+5V,当拨盘拨至某十进制数时,相应的8,4,2,1有效端输出高电平(如拨至“6”时,4,2,端为“1”)无效端为低电平。输出的BCD码为正逻辑(原码)。A端接地,8,4,2,1输出端通过电阻上拉至高电平时,拨盘输出的BCD码为负逻辑(反码)。软件编程,只需读入P1.0~P1.3端口的状态即可,例如:MOVA,P1;读入P1.0~P1.7的状态ANLA,0FH;屏蔽P1.4~P1.7MOV40H,A;将BCD码拨盘的值存入40HRAM单;元中