3.5.4键盘的接口技术在单片机应用系统中,常常需要人机对话。这就需要键盘及显示器的等部分。对于键盘来说,要有:(1)键扫描功能,即检测是否有健按下;(2)产生相应的键代码(键值);(3)消除按键抖动及多键按下的问题。一、键盘工作原理以4×4键盘为例,原理见下图:识别按键的方法有两种:一是行扫描法,二是线反转法。行扫描法:通过行线发出低电平信号,从列线上读数据。线反转法:行、列均要外加上拉阻。该方法先将行线作为输出线,列线作为输入线,行线输出全“0”,读入列线的值,然后将行线和列线的输入输出关系互换,并且将刚才读到的列线值从列线所接的端口输出,再读取行线的输入值。那么在闭合键所在的行线上值必为“0”。这样,当一个键被按下时,必定可读到一对唯一的行列值。二、键盘与单片机的接口一般有:独立的按键法、矩阵按键法和中断按键法三种。3.5.5显示器接口技术常用的显示器有:发光二极管显示器(LED)和液晶显示器(LCD)。一、LED数码管显示器的结构为了显示字符和数字,往往要编码。在按下列顺序排列时:共阴与共阳编码见表3-30。二、LED数码管显示器的原理与接口点亮LED显示器:有静态和动态两种方法。(一)静态显示接口(二)动态显示接口(三)LED点阵接口3.5.5A/D转换器接口技术A/D转换的种类很多,根据转换原理主要分为逐次逼近式、双积分式、量化反馈式和并行式等。一、双积分A/D转换器及接口双积分型A/D转换器,一般具有精度高,抗干扰性好,价格便宜等优点,但转换速度慢,广泛用于数字仪表。常用的有:三位半(相当于11位的二进制数)的MC14433、ICL7126和四位半(相当于14位的二进制数)的ICL7135等。二、逐次逼近式A/D转换器及接口逐次逼近式A/D转换器有8位、12位、16位和并行输出、串行输出等多种型号。从转换速度考虑并行较快,但输出接线较多,而串行A/D虽然输出速度较慢,但接口简单,目前被广泛使用。教材以TLC2543为例作了说明,这里以TLC549为例,讨论其用法(参考P286页,A/D转换实验)。(一)实验电路描述(二)软件编程练习#includereg51.h//51的头文件sbitDATA=P1^0;//数据线sbitCLK=P1^6;//时钟信号线sbitCS=P1^5;//片选控制线,低电平有效unsignedcharADconver(void)//TLC549A/D转换函数{unsignedchari,ad=0;DATA=1;//置输入状态CS=1;//芯片复位CS=0;CLK=0;//芯片起始for(i=0;i8;i++){CLK=0;//输出一个时钟0ad=ad1;//串行数据向左移一位CLK=1;//输出一个时钟1if(DATA==1)ad=ad|0x01;//在时钟的高电平时,读数据elsead=ad|0x00}CLK=0;CS=1;//时钟0,转换完毕returnad;//返回转换结果}voidmain(void)//测试主程序{unsignedchartemp;while(1){temp=ADconver();//AD转换//调显示程序}}调试时可以通过串口把AD函数得到的值在电脑上显示,如本例中可以在“temp=ADconver();”函数后加上一句“printf(“temp=%c\n”,temp);”就可以在串口调试工具软件中看到值了,当然别忘了串口初始化和设置波特率。3.5.6D/A转换器接口技术在计算机应用领域中,特别是在实时控制系统中,除需要把外界模拟量变成数字量输入计算机进行加工、处理外,也需要把单片机计算结果的数字量转换成连续变化的模拟量输出,用以控制。一、D/A转换器与单片机的接口D/A转换器分并行和串行。前者,速度快,后者较慢。但串行接口简单。一般,位数越多(8bit、10bit、12bit、16bit等),价格越贵。这里以TLC5615串行10位D/A转换器为例,说明其用法,这是SPI接口。二、D/A转换器的应用以串口为例说明。(一)硬件电路(二)编程练习#includereg51.h//51的头文件sbitDIN=P2^0;//数据线sbitSCLK=P2^1;//时钟信号线sbitCS=P2^2;//片选控制线,低电平有效voidDAconver(unsignedintx)//D/A转换函数{unsignedchark;CS=1;SCLK=1;//芯片复位SCLK=0;//把时钟线置低x=x&0x03ff;//10bitD/Ax=x2;//调整格式最后两位为0CS=0;//CS置低,芯片起始for(k=0;k16;k++)//按16位传送{DIN=(bit)(x&0x8000);//取最高位SCLK=1;SCLK=1;SCLK=0;SCLK=0;//给时钟x=x1;//向高位移一位}CS=1;//开始转换}voidmain(void)//测试主程序{unsignedinttemp=0;while(1){temp++;if(temp0x3ff)temp=0;DAconver(temp);//输出锯齿波//调显示程序}}3.5.7开关电路及驱动电路接口在单片机应用系统中,有时需用单片机输出控制各种各样的开关电路器件(如继电器、无触点开关等)或高压大电流负载,这些大功率负载显然不能用单片机的I/O口线来直接驱动,而必须施加各种驱动电路。此外,为了隔离和抗干扰,有时需加接光电耦合器。一、开关电路接口二、光电耦合器接口常用的光电耦合器有晶体管输出型和晶闸管输出型。3.5.8I2C、SPI总线与单片机的接口目前,对控制系统微型化的要求越来越高,为了使仪器微型化,首先要设法减少仪器锁用芯片的引脚数。因此就出现了I2C和SPI总线的器件。I2C:(Inter-IntegratedCircuit),即:内部集成电路。SPI:(SerialPeripheralInterface),即:串行的外围接口。I2C,需要二根信号线(时钟、数据)。SPI,需要四根信号线(时钟、数据进、数据出、片选)。(时序见相关材料,实例见P292相关说明)