资源描述
,*,基于,C,语言的单片机原理及应用电子课件,第8章 AT89C51单片机的接口技术,张定祥制作,贵州电子信息职业技术学院,贵州省人才培养优秀单位,8.1 键盘接口技术,8.2 显示器接口技术,8.3 A/D转换器及其接口技术,8.4 D/A转换器及其接口技术,实训九:基于ADC0832的数字电压表,小结,习题与思考题,接口:指各种不同特性部件的相互交接部分。,接口分为硬件接口和软件接口两种类型。,硬件接口:指两个部件实体之间的连线和逻辑电路。,软件接口:主程序与控制外围电路和部件正常工作的子程序之间的联系。,8.1 键盘接口技术,键盘接口是最常用的人机接口。键盘按照是否进行硬件编码可分为编码键盘与非编码键盘。,8.1.1 键盘的工作原理,(1)键盘分类,键盘通常由外壳、按键和电路板3大部分构成。,根据按键开关结构对键盘分类,有触点式和无触点式两大类。有触点式键盘手感差、易磨损、故障率高;无触点式键盘手感好、寿命长、故障率低。,根据键盘的按键码识别方式分类,有编码键盘和非编码键盘。非编码键盘又可分为独立式和矩阵式两种类型。,(2)按键的输入原理分为独立式,在单片机应用系统中,通常使用机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系。通过按键的接通与断开,产生两种相反的逻辑状态低电平“0”与高电平“1”。也就是说,它能提供标准的TTL逻辑电平,以便与通用数字系统的逻辑电平相容。,(3)键盘的抖动干扰与消除方法,键盘是由若干独立的按键组成的,按键的按下与释放又是通过机械触点的闭合与断开来实现的。由于机械触点的弹性振动,按键在按下时不会马上稳定地接通而在弹起时也不能一下子完全地断开,因而在按键闭合和断开的瞬间均会出现一连串的抖动,这称为按键的抖动干扰,其产生的波形如图8-1所示。当按键按下时会产生前沿抖动,当按键弹起时会产生后沿抖动。抖动的时间长短取决于按键的机械特性与操作状态,一般为10100ms,此为按键处理设计时要考虑的一个重要参数。,图8-2 双稳态去抖动电路,去抖动的方法有硬件方法和软件方法两种。,硬件方法,见图8-2。,软件方法,软件方法是指编制一段时间大于10ms的延时子程序,在第一次检测到有键按下时,执行这段延时子程序,使按键的前沿抖动消失后再检测该键的状态。如果该按键仍保持闭合状态电平,则确认该键已稳定按下,否则认为无键按下,从而消除了抖动的影响。,(4)键盘系统设计,8.1.2 独立式按键,(1)独立式按键结构,独立式按键就是各按键相互独立,每个按键单独占用一根I/O口线,每根I/O口线的按键工作状态不会影响其他I/O口线上的工作状态。因此,只要通过检测输入线的电平状态就可以很容易判断哪个按键被按下了。,(2)独立式按键的软件结构,一般把键盘扫描程序设计成子程序,以便其它各程序调用。程序设计通常采用查询法。假设键盘扫描程序的名称为KEY,则键盘扫描子程序KEY应具有以下功能:,判断有无按键动作;,去抖动;,确认是否真正有闭合键;,计算并保存闭合键键码(键号);,判定闭合键是否释放;,恢复闭合键键码(键号)。,独立式按键也可采用中断方式(见图8-3(b)),键盘除连接到P1口外,还连接到与门的输入端,与门的输出端作为外部中断的中断请求输入。当有键按下时,产生中断请求,CPU响应中断后进入中断子程序,在中断服务程序中查询哪个键按下。,8.1.3 矩阵式按键,(1)矩阵式键盘的结构及原理,在矩阵键盘上,其按键按行列排放,故矩阵式键盘又叫行列式键盘。,当端口线数量为8时,可以将4根端口线定义为行线,另外4根端口线定义为列线,形成44键盘,可以配置16个按键,如图8-4所示。在图中,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入端。当按钮没有按下时,所有的输入端都是高电平,代 表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,通过读入输入线的状态就可得知是否有键按下了。,(2)矩阵式键盘的键码识别,键码识别是指矩阵结构的键盘识别被按键的方法。一般有行扫描法、行列反转法和行列扫描法三种。,行扫描法,行扫描法又称为逐行(或列)扫描查询法,其工作原理为:CPU首先向所有行输出低电平,如果没有按键按下,则所有列线输出为高电平。如果有某一键按下,则该键所在的列因为与行线低电平短路,该列线变为低电平。CPU在此时通过读取列线的值即可判断有无键按下。,在有键按下的情况下,CPU再来确定是哪一个键按下,采用的方法是行扫描法。先向第0行输出低电平,其余行输出高电平,然后读取所有列线的电平值。如果有某一列为低电平,则说明0行和该列跨接位置的那个键被按下了。确定了键的位置就可以退出扫描了。如果列线全为高电平,说明本行没有键按下,则继续将下一行输出低电平,其余行输出高电平,然后读取所有列线的电平值。依此类推,直到找到按下键的位置,则退出扫描。,找到按下键的位置,即该键的行号和列号,就可以获得该键的键码。这种通过行列位置表示的键码称为行列码或扫描码,也称为键盘扫描码。,行列反转法,行列扫描法,(3)键处理,键处理就是根据所按下的键散转进入相应的功能程序,从而完成所按下键的功能。为了散转的方便,通常应先得到按下键的键号。键号是键盘上每个键的编号,可以是十进制或十六进制。键号一般通过键盘扫描程序取得的键值求出。键值是各键所在行号和列号的组合码。,根据键值中行号和列号信息可以计算出键号,如:,键号=所在行号键盘列+所在列号,即34+0=12。,根据键号就可以方便地通过散转进入相应键的功能程序。,(4)矩阵式键盘的编程思路,【例8-1】数码管显示4X4矩阵键盘按键号。,硬件设计。按下任意键时,数码管都会显示其键的序号。扫描程序首先判断按键发生在哪一列,然后根据所发生的行附加不同的值,从而得到按键的序号。电路图见教材184页。,软件设计思路:键盘扫描采用逐行扫描方式。源程序见教材184页。,8.2 显示器接口技术,单片机系统中最常用的显示器有发光二极管(LED)显示器和液晶(LCD)显示器两种。LED、LCD显示器有两种显示结构:段显示(七段、米字型等)和点阵显示(58、88点阵等)。,8.2.1 LED显示器及其接口,LED发光二极管显示器有多种结构形式,单个的圆形或方形LED常用来显示设备的运行状态,8段LED可以显示各种数字和字符,所以也称为LED数码管。LED的伏安特性类似于普通二极管。,(1)发光二极管,发光二极管与普通二极管一样是由一个PN结组成的,也具有单向导电性。发光二极管的两根引线中较长的一根为正极,应接电源正极。,发光二极管的特点是:工作电压很低;工作电流很小;抗冲击和抗震性能好,可靠性高,寿命长;通过调制电流的强弱可以方便地调制发光的强弱。常用的是发红光、绿光或黄光的二极管。,发光二极管的反向击穿电压约5伏。在使用发光二极管时,限流电阻阻值过大或过小二极管都将不能正常发光,甚至烧毁器件。限流电阻的取值范围是在150700欧之间,一般来说建议选用470欧姆。,图8-8 双联LED数码管的外型及内部机构,(2)数码管,数码管的结构与显示原理,LED数码管实际上是由七个发光二极管组成8字形构成的,加上小数点就是8个,故又称八段显示器。通过控制8个发光二极管的不同亮灭组合就可以显示数字09、字符AF、H、L、P、R、U、Y、符号“-”及小数点“”等。,根据连接方式的不同可以将数码管分为共阴极和共阳极两种。在共阴极结构中,所有发光二极管的阴极接在一起形成公共端COM,使用时COM端接低电平,当某段发光二极管的阳极接高电平时,则该段二极管发光显示字符;而在共阳极结构中:所有发光二极管的阳极接在一起形成公共端COM,使用时COM端接高电平,当某段发光二极管的阴极接低电平时,则该段二极管发光显示字符。,表8-2 段码位于各发光二极管的对应关系,段码位,D7,D6,D5,D4,D3,D2,D1,D0,显示段,dp,g,f,e,d,c,b,a,表8-3 十六进制字形编码(段码)表,显示字符,共阴段码,共阳段码,显示字符,共阴段码,共阳段码,0,3FH,C0H,A,77H,88H,1,06H,F9H,b,7CH,83H,2,5BH,A4H,C,39H,C6H,3,4FH,B0H,d,5EH,A1H,4,66H,99H,E,79H,86H,5,6DH,92H,F,71H,8EH,6,7DH,82H,P,73H,8CH,7,07H,F8H,40H,BFH,8,7FH,80H,全灭,00H,FFH,9,6FH,90H,80H,7FH,在段码字节中,段码位于各段发光二极管的对应关系见表8-2。,如果要想让数码管显示数字0,那么共阴极数码管的字符编码为00111111,即,3FH,;,共阳极数码管的字符编码为11000000,即,C0H,。可以看出两个编码的各位正好相反。以此类推,可得数码管的字形编码(段码)见表8-3所示。,(3)LED显示器显示方式,在单片机应用系统中,一般要同时使用N片七段LED构成N位LED显示器。LED的公共端COM叫显示器的位选线,ag称为段选线。位选线控制LED的每一位是否显示,段选线控制每一位的显示字符。根据LED显示器的段选线、位选线与控制端口的连接方式不同,LED显示器有静态显示与动态显示两种方式。,LED数码管静态显示方式,静态显示就是每一个显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码。,静态显示方式的关键是多个LED需与多个I/O并行口相连,所有的位选线COM连接到一起接低电平(共阴极)或接高电平(共阳极),每一位LED的段选线连接到一个8位显示输出口上,这样N位显示器共需要8,N根显示输出线,显示时位与位之间是相互独立的。,【例8-2】单只数码管循环显示09。电路图与源程序见教材188页。,LED数码管动态显示方式,动态显示的特点是将所有数码管的段选线相应并联在一起接一个并行I/O口,各数码管的公共端分别由一位I/O线控制,即由位选线控制是哪一位数码管有效。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选码,利用发光二极管的余辉效应和人眼的视觉暂留特性,再加轮流显示的速度快,使人的感觉好像各位数码管在同时显示。,【例8-3】数码管从左到右依次动态显示数字1-8。电路图与源程序见教材190页。,8.2.2 LED点阵显示器及其接口,(1)LED点阵模块结构,LED点阵显示器以发光二极管为图素,它用高亮度LED晶粒进行阵列组合后,再透过环氧树脂和塑模封装而成。具有亮度高、功耗低、引脚少、视角大、寿命长、耐湿、耐冷热、耐腐蚀等特点。,点阵显示器有单色和双色两类,可显示红,黄,绿,橙等颜色。LED点阵有44、57、88、1616、2424等多种。,若只要显示阿拉伯数字、英文字母、特殊符号等,则可采用57的点阵即可够用,若要显示中文字,则需要4片88的点阵组成1616的点阵显示器才能显示一个中文字。,根据图素的数目分为单原色、双原色、三原色等。,88LED点阵是最基本的点阵显示模块。88点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上的。当对应的某一列(Y)置1电平,某一行(X)置 0电平,则相应的二极管就亮;要实现显示图形或字体,只需考虑其显示方式即可。通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。,图8-11 88LED点阵外观及引脚,(2)LED点阵显示原理,人眼的亮度感觉不会因光源的消失而立即消失,要有一个延迟时间,这就是视觉的惰性。,LED点阵显示模块的显示方式有静态和动态显示两种。静态显示原理简单、控制方便,但硬件接线复杂,在实际应用中一般采用动态显示方式。,LED点阵显示动态扫描方式就是逐行或逐列轮流点亮,这样扫描驱动电路就可以实现多行或多列的同名列(同名行)共用一套列(行)驱动器。动态扫描的方法有两种:,水平方向(X方向)扫描,即逐列扫描的方式:此时用一个并行I/O口输出列码决定哪一列能亮(相当于位码),用另一个并行I/O口输出行码(列数据),决定该列上哪个LED亮(相当于段码)。能亮的列从左到右扫描完8列(相当于位码循环移动8次)即显示出一个完整的图像。,竖直方向(Y方向)扫描,即逐行扫描方式:此时用一个并行I/O口输出决定哪一行能亮(相当于位码),另一个并行I/O口输出列码(行数据,行数据为将列数据的点阵旋转90度的数据)决定该行上哪些LED灯亮(相当于段码)。能亮的行从上向下扫描完8行(相当于位码循环移位8次)即显示一帧完整的图像。,(3)一个88点阵字符串显示,【例8-4】用88LED点阵显示字符串“0123456789”,试用C语言编写程序。,字符串“0123456789”点阵显示代码的形成如图8-13所示。由图可知“0”形成的列代码为00H,00H,3EH,41H,41H,41H,3EH,00H;只要把这些代码送到相应的列线上面,即可实现“0”的数字显示。送代码过程如下:送第一列线代码到P3端口,同时置第一行线为“0”,其他行线为“1”,延时2ms左右,再送第二列线代码到P3端口,同时置第二行线为“0”,其他行线为“1”,延时2ms左右,如此下去,直到送完最后一列代码,又从头开始送。,图8-13 字符串“0123456789”点阵显示代码,(4)1616点阵的汉字显示,在使用电子屏显示汉字中,由于88点阵无法有效显示较为复杂的汉字,为此一般采用1616点阵来显示。即每一个字由16行16列的点阵形成显示。,我们以水平方向(x方向)扫描显示汉字的“大”为例来说明其扫描原理。每一个字由16行16列的点阵组成显示,如图8-15所示。如果用8位的AT89C51的单片机来控制,一个字需要拆分成两个部分。一般我们把它分解成上部分和下部分,上部分由8*16的点阵组成,下部分也由8*16的点阵组成。,在本例中单片机首先显示的是左上角的第一列的上半部分,即第0列的p00p07口。方向为p00到p07,显示汉字“大”时,p05点亮,其余位灭。由上往下排列,为p0.0灭,p0.1灭,p0.2灭,p0.3灭,p0.4灭,p0.5亮,p0.6灭,p0.7灭。即二进制00000100,转换为16进制为04H。,上半部第一列完成后,继续扫描下半部的第一列,为了接线的方便,我们仍设计成由上往下扫描,即从p27向p20方向扫描,从图8-15可以看到,这一列全部为不亮,即为00000000,16进制则为00H。然后单片机转向上半部第二列,仍为p05点亮,为00000100,即16进制04H。这一列完成后继续进行下半部分的扫描,p21点亮,为二进制00000010,即16进制02H。,依照这个方法,继续进行下面的扫描,一共扫描32个8位。,图8-15 1616点阵显示汉字原理,由此可以得出汉字“大”的扫描代码为:,04H,00H,04H,02H,04H,02H,04H,04H,,04H,08H,04H,30H,05H,C0H,0FEH,00H,,05H,80H,04H,60H,04H,10H,04H,08H,,04H,04H,0CH,06H,04H,04H,00H,00H,【例8-5】使用一个1616共阴极LED点阵显示汉字字符串“贵州电子信息职业技术学院”,试用C语言编写程序。,硬件设计电路图见教材195页。,源程序见教材195页。,8.2.3 LCD显示器及其接口,液晶,即液态晶体(Liquid Crystal,LC),是相态的一种,因为具有特殊的理化与光电特性,从20世纪中叶开始就被广泛应用在轻薄型的显示技术上。,液晶显示器(LCD)具有功耗低、体积小、重量轻、超薄等许多其它显示器无法相比的优点。液晶显示器的分类方法有很多种,通常按其显示方式可分为段式、字符式、点阵式等;按其显示颜色可分为黑白显示、多灰度显示、彩色显示等。,各种型号的液晶通常是按照显示字符的行数或液晶点阵的行、列数来命名的。比如,1602液晶的意思是每行显示16个字符,显示两行,属于字符型液晶,即只能显示ASCII码字符,如数字、大小写字母、各种字符等。而12864液晶则属于图形型液晶,由128列、64行组成,即共有128*64个点来显示各种图形,可通过程序控制128*64个点中的任何一个点显示或不显示,和LED点阵显示类似。本节主要介绍1602液晶。,图8-17 1602液晶外形图,图8-18 12864液晶外形图,(1)1602液晶的基本参数及引脚功能,1602液晶分为带背光和不带背光两种类型,其控制器大部分为HD44780。带背光的比不带背光的厚,是否带背光在应用中并无差别。,主要技术参数。,表8-8 1602液晶主要技术参数,显示容量,162个字符,芯片工作电压,4.,5,5.5V,工作电流,2.0mA(5.0V),模块最佳工作电压,5.0V,字符尺寸,2.954.35(WH)mm,引脚功能说明 1602液晶采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表8-9所示。,表8-9 1602液晶引脚接口,功能说明,编号,符号,引脚说明,编号,符号,引脚说明,1,VSS,电源地,9,D2,数据,2,VDD,电源正极,10,D3,数据,3,VL,液晶显示对比度调节端,11,D4,数据,4,RS,数据/命令选择端(H/L),12,D5,数据,5,R/W,读/写选择端(H/L),13,D6,数据,6,E,使能信号(下降沿触发),14,D7,数据,7,D0,数据,15,BLA,背光源正极,8,D1,数据,16,BLK,背光源负极,1602液晶的RAM地址映射,液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。1602液晶内部RAM显示缓冲区地址的映射图如图8-20所示。其中000FH、404FH分别对应1602液晶的上下两行的每一个字符,只要往对应的RAM地址写入要显示字符的ASCII代码,就可以显示出该字符来。例如要在1602液晶屏幕的第一行第一列显示一个“A”字,就只要向RAM的00H地址写入“A”字的ASCII代码(41H)就行了。,但若要在RAM地址中显示数据,就必须用控制器内部的数据指针进行指引。比如想在00H地址显示数据,就必须在00H上加80H,即0X80+0X00;若要在01H显示出数据,则须将01H加上80H,即0X80+0X01,依此类推。当写入到10H27H或50H67H地址处时,必须通过移屏指令将它们移入可显示区域方能正常显示。,图8-20 1602液晶的,RAM地址映射图,1602液晶的指令说明,1602液晶模块内部的控制器共有11条控制指令,如表8-10所示。,指令1:清显示,指令码01H,光标复位到地址00H位置。,指令2:光标复位,光标返回到地址00H。,指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移。,S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。,指令4:显示开关控制。,D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示。,C:控制光标的开与关,高电平表示有光标,低电平表示无光标。,B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。,指令5:光标或显示移位。,S/C:高电平时移动显示的文字,低电平时移动光标。,指令6:功能设置命令。,DL:高电平时为4位总线,低电平时为8位总线。,N:低电平时为单行显示,高电平时双行显示。,F:低电平时显示57的点阵字符,高电平时显示510的点阵字符,指令7:字符发生器RAM地址设置。,指令8:DDRAM地址设置。,指令9:读忙信号和光标地址,BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。,指令10:写数据。,指令11:读数据。,基本操作时序。1602液晶显示器的基本操作时序如表8-11所示。,1602液晶的一般初始化(复位)过程,表8-11,基本操作时序表,读状态,输入,RS=L,R/W=H,E=H,输出,D,0,D7=状态字,写指令,输入,RS=L,R/W=L,D0,D7=指令码,E=高脉冲,输出,无,读数据,输入,RS=H,R/W=H,E=H,输出,D0,D7=数据,写数据,输入,RS=H,R/W=L,D0,D7=数据,E=高脉冲,输出,无,1602液晶与单片机的连接,1602液晶与AT89C51系列单片机的连接主要有两种,一种是总线方式;另一种是模拟口线方式,也称为独立方式或间接方式。,【例8-6】在P1口接4个独立式按键K1、K2、K3、K4,当按下不同的键时在字符型1602液晶上显示不同的字符,试用C语言编写程序。,a.硬件设计。,本例采用总线方式连接,地址线P2.0、P2.1分别与1602液晶的RS、R/W直接相连。P2.7则与P3.6、P3.7进行逻辑运算后控制1602液晶的使能端E。电路图见教材 202页。由图可得:。因此1602液晶写指令寄存器的地址为:0 x0000(RS=0,RW=0);1602液晶读出数据到D0D7的地址为:0 x0200(RS=0,RW=1);1602液晶写数据寄存器的地址为:0 x0100(RS=1,RW=0);1602液晶读数据寄存器的地址为:0 x0300(RS=1,RW=1)。4个独立式按键K1、K2、K3、K4分别与P1.4、P1.5、P1.6、P1.7相连。,b.源程序见教材 202页。,【例8-7】在1602液晶显示器上显示“-This is a LCD-!”和“-Design by WJM-!”两个字符串,显示过程如下:两个字符串从右移到显示屏,接着向右推出显示屏;闪烁5次;从右移到显示屏,向左退出显示屏,无限循环,试用C语言编写程序。,a.硬件设计。,本例采用间接方式连接,硬件设计电路图见教材205页。由图可见,P2.0、P2.1、P2.2分别与1602液晶的RS(数据/命令选择端)、R/W(读/写选择端)和E(使能端)直接相连。,b.,源程序见教材205页。,8.3 A/D转换器及其接口技术,8.3.1 A/D转换器概述,当计算机用于数据采集和过程控制的时候,采集对象往往是连续变化的物理量,但计算机处理的只能是离散的数字量,因此需要对连续变化的物理量(模拟量)进行采样、保持,再把模拟量转换为数字量交给计算机处理、保存等。,模拟量转换成数字量的过程被称为模数转换,简称A/D转换。从原理上A/D转换器通常可分为四类:计数器式A/D转换器、双积分式A/D转换器、逐次逼近式A/D转换器和并行A/D转换器。,这里以应用最多的逐次逼近式A/D转换器为例,说明A/D转换器的工作原理。,(1)逐次逼近式A/D转换器的工作原理,逐次逼近型A/D转换器是目前采用最多的一种直接A/D转换器。逐次逼近转换过程与用天平称物体重量非常相似,将输入模拟信号与不同的参考电压做多次比较,使转换所得的数字量在数值上逐次逼近输入模拟量对应值。,逐次逼近型A/D转换器由,N,位寄存器、,N,位D/A转换器、比较器以及控制逻辑四部分组成。其工作原理如下:,当启动信号作用后,时钟信号在控制逻辑作用下,首先使,N,位寄存器的D,N,-1=1,,N,位寄存器的数字量一方面作为输出用,另一方面经D/A转换器转换成模拟量,U,C后,送到比较器。在比较器中与被转换的模拟量,U,X进行比较,控制逻辑根据比较器的输出进行判断。若,U,X,U,C,保留这一位;若,U,X,U,C,则D,N,-1=0。D,N,-1位比较完后,再对D,N,-2进行比较,使D,N,-2=1,与D,N,-1位一起进入D/A转换器,转换后再进入比较器,与,U,X进行比较,如此一位一位的继续下去,直到最后一位D0比较完为止。此时,N位寄存器的数字量即为,U,X所对应的数字量。,(2)A/D转换器的主要性能参数,分辨率,它表明A/D转换器对模拟信号的分辨能力,由它确定能被A/D辨别的最小模拟量变化。常以输出二进制代码的位数来表示分辨率的高低。位数越多,说明量化误差越小,则转换的精度越高。,转换时间,转换时间是指A/D转换器从接到转换启动信号开始,到输出端获得稳定的数字信号所经过的时间。通常用完成一次A/D转换操作所需时间来表示转换速度。一般转换速度越快越好。,A/D转换器的转换速度主要取决于转换电路的类型,不同类型A/D转换器的转换速度相差很大。,a.双积分型A/D转换器的转换速度最慢,需几百毫秒左右;,b.逐次逼近式A/D转换器的转换速度较快,需几十微秒;,c.并行比较型A/D转换器的转换速度最快,仅需几十纳秒时间。,转换精度,A/D转换器的转换精度是指与数字输出量所对应的模拟输入量的实际值与理论值之间的差值。转换精度分为绝对精度和相对精度。,输入模拟电压范围,输入模拟电压范围指ADC允许输入的电压范围。超过这个范围,A/D转换器将不能正常工作。,8.3.2 典型A/D转换器芯片ADC0809,ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D转换器。其内部有模拟多路转换开关和A/D转换两大部分,可对8路05V的输入模拟电压信号分时进行转换。是目前国内应用最广泛的8位通用A/D芯片。,(1)主要特点,8路输入通道,8位A/D转换器,即分辨率为8位。,具有转换起停控制端。,转换时间为100s(时钟为640kHz时),130s(时钟为500kHz时),单个+5V电源供电,模拟输入电压范围0+5V,不需零点和满刻度校准。,工作温度范围为-40+85摄氏度,低功耗,约15mW。,(2)内部结构,ADC0809是CMOS单片型逐次逼近式A/D转换器,其内部结构如图8-26所示。它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近寄存器、三态输出锁存器以及定时与控制逻辑等组成。,图8-26 ADC0809内部结构图,通道选择开关,八选一模拟开关,实现分时采样8路模拟信号。,通道地址锁存和译码,通过ADDA、ADDB、ADDC三个地址选择端及译码作用控制通道选择开关。,逐次逼近A/D转换器,包括比较器、8位开关树型D/A转换器、逐次逼近寄存器。,8位锁存器和三态门,当数据输出允许信号OE有效时,打开三态门,将锁存器中的数字量经数据总线送到CPU。当OE=0时,数据被锁存,输出为高阻态;当OE=1时,即可从三态输出寄存器读转换的数据量结果。,(3)外部特性(引脚功能),ADC0809芯片有28条引脚,采用双列直插式封装,如图8-27所示。,图8-27 ADC0809引脚图,8.3.3 ADC0809与AT89C51单片机的接口及应用,(1)ADC 0809的接口设计需考虑的问题。,ADDA、ADDB、ADDC三端可直接连接到CPU地址总线A0、A1、A2三端,但此种方法占用的I/O口地址多。每一个模拟输入端对应一个口地址,8个模拟输入端占用8个口地址,对于微机系统外设资源的占用太多,因而一般ADDA、ADDB、ADDC分别接在数据总线的D0、D1、D2端,通过数据线输出一个控制字作为模拟通道选择的控制信号。,ALE信号为启动ADC0809选择开关的控制信号,该控制信号可以和启动转换信号START同时有效。,ADC0809芯片只占用一个I/O口地址,即启动转换用此口地址,输出数据也用此口地址,区别是启动转换还是输出数据用IOR,IOW信号来区分。,当A/D转换结束,ADC输出一个转换结束信号数据。CPU可有多种方法读取转换结果,主要使用三种:a.查询方式;b.中断方式;c.延时方式。,(2)ADC0809的应用实例。,【例8-8】利用ADC0809设计一个5V直流数字电压表,使用数码管显示。控制开关SW1用于选择所需转换的模拟输入通道,并将所选择的模拟输入通道号在第一位数码管上显示出来。频率计测量CLK时钟脉冲频率。试用C语言编写程序。,硬件设计。,由于在PROTEUS仿真环境中,ADC0809并没有仿真功能,所以选用ADC0808(与ADC0809完全兼容)代替。硬件设计电路图见教材213页。其中电位器RV1用于调节输入直流电压的大小,直流电压表用于显示输入的直流电压值。以便与经ADC0808转换后数码管显示的电压值相比较。,源程序见教材213页。,8.4 D/A转换器及其接口技术,8.4.1 D/A转换器概述,D/A转换器就是将数字量转换为模拟量的电路。数字量输入的位数有8位、12位和16位等,输出的模拟量有电流和电压两种。D/A转换器根据数模转换原理可以分为R-2R倒T形电阻网络、二进制权电阻DAC等类型,根据数据接口也可分为并行和串行等。常见的型号有DAC0832、AD7564、MAX521、TLC5615等。,(1)D/A转换器的原理,D/A转换器是利用电阻网络和模拟开关,将多位二进制数,D,转换为与之成比例的模拟量的一种转换电路,因此,输入应是一个,n,位的二进制数,它可以按二进制数转换为十进制数的通式展开为:,D,n=dn-12n-1+dn-22n-2+d121+d020,而输出应当是与输入的数字量成比例的模拟量,A,:,A,=,KD,n=,K,(dn-12n-1+dn-22n-2+d121+d020),式中的,K,为转换系数。,D/A转换器基本上由4个部分组成,即权电阻网络、运算放大器、基准电源和模拟开关。这里以二进制权电阻DAC为例说明D/A转换器的工作原理,见图8-29所示。,由图可得,,对于,n,位权电阻DAC有:,权电阻DAC的优点是电路简单,但当位数较多时,电阻的值域范围太宽。,图8-29 四位二进制权电阻D/A转换器电路,(2)D/A转换器的主要性能参数,分辨率,分辨率指最小输出电压(对应的输入数字量只有最低有效位为“1”)与最大输出电压(对应的输入数字量所有有效位全为“1”)之比。,转换精度,D/A转换器的转换精度是指输出模拟电压的实际值与理想值之差,即最大静态转换误差。D/A转换器的转换精度与D/A转换器的集成芯片的结构和接口电路配置有关。,在D/A转换过程中,影响转换精度的主要因素有失调误差、增益误差、非线性误差和微分非线性误差。,建立时间,通常用建立时间来定量描述数模转换器的转换速度。从输入的数字量发生突变开始,到输出电压进入与稳定值相差0.5LSB范围内所需要的时间,称为建立时间。,温度系数,在输入数字量不变的情况下,输出模拟电压随温度变化所产生的变化量。一般用满刻度输出条件下温度每升高1,输出电压变化的百分数作为温度系数。,8.4.2 典型D/A转换器芯片DAC0832,DAC0832是8位分辨率的D/A转换集成芯片,是并行输入、电流输出的数/模转换电路,它也可以通过运算放大器连成电压输出型。这个D/A芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。,(1)主要特性参数,分辨率为8位;,电流稳定时间1us;,可单缓冲、双缓冲或直接数字量输入;,只需在满量程下调整其线性度;,单一电源供电(+5V+15V);,低功耗,20mW。,(2)内部结构,DAC0832由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成,见图8-31所示。具有双缓冲功能,输入数据可分别经过两个寄存器保存。,DAC0832具有一组8位数据线D0D7,用于输入数字量。一对模拟输出端IOUT1和IOUT2用于输出与输入数字量成正比的电流信号,一般外部连接由运算放大器组成的电流/电压转换电路。,(3)引脚功能,DAC0832是采用CMOS工艺制成的20引脚双列直插式封装的8位D/A转换器,见图8-31所示。,8.4.3 DAC0832与AT89C51单片机的接口及应用,(1)DAC0832与AT89C51的连接方式,直通方式,当ILE接高电平,、和 都接数字地时,DAC处于直通方式,8位数字量一旦到达D0D7输入端,就立即加到D/A转换器,被转换成模拟量。在D/A实际连接中,要注意区分“模拟地”和“数字地”的连接,为了避免信号串扰,数字量部分只能连接到数字地,而模拟量部分只能连接到模拟地。这种方式可用于不采用微机的控制系统中。直通方式连接如图8-32所示。,单缓冲方式,单缓冲方式是将一个锁存器处于缓冲方式,另一个锁存器处于直通方式,输入数据经过一级缓冲送入D/A转换器。如把 和 都接地,使寄存锁存器2处于直通状态,ILE接+5V,接CPU系统总线的 信号,接端口地址译码信号,这样CPU可执行一条OUT指令,使 和 有效,写入数据并立即启动D/A转换。单缓冲方式连接如图8-33所示。,图8-32 DAC0832直通方式接口,图8-33 DAC0832单缓冲方式接口,双缓冲方式,即数据通过两个寄存器锁存后再送入D/A转换电路,执行两次写操作才能完成一次D/A转换。这种方式可在D/A转换的同时,进行下一个数据的输入,以提高转换速度。,(2)DAC0832的应用实例,【例8-9】利用DAC0832设计一个信号发生器,用开关控制分别产生锯齿波、三角波和方波,试用C语言编写程序。,硬件设计。DAC0832采用单缓冲方式连接,它的选通地址为7FFFH。在P1口接3个独立式按键K01、K02和K03,当按下K01时输出锯齿波,当按下K02时输出三角波,当按下K03时输出方波。硬件设计见教材218页。,源程序见教材218页。,实训九:基于ADC0832的数字电压表,1实训目的,通过本次实训,(1)学会A/D转换器ADC0832的控制使用方法;(2)学会用1602液晶显示输出数据;(3)进一步熟悉调试C51源程序的方法与技巧。,2知识要点,(1)硬件电路及工作原理,本实训是通过ADC0832模数转换器设计数字电压表,并用1602液晶显示输出电压值。其中ADC0832为美国国家半导体公司生产的一种八位分辨率、双通道A/D转换芯片。利用ADC0832接受输入的模拟电压信号,经模数变换后,由单片机AT89C51将数字电压值用液晶1602显示出来。通过电位器改变电压值,用电压表测量模拟电压值,使其和液晶显示电压值一致。硬件电路见教材。,(2),参考程序。,本电路通过ADC0832模数转换器将电压信号转换为数字信号,再通过单片机将数字量用液晶1602显示出来,实现数字电压表的功能。参考程序见教材。,3实训器材,(1)DICE-5208K开发型单片机综合实验仪1套。,(2)PC机1台。,(3)DICE-3000仿真器1台。,(4)带插针的导线若干。,4实训内容及步骤,(1)启动ISIS7 professional软件(具体使用方法见本教材附录五),并用其绘制图8-36所示电路原理图。,(2)启动Keil C51 uvision4软件(具体使用方法见本教材附录四)。建立工程,输入上述C51参考源程序并编译调试生成二进制的目标文件。,(3)将第(2)步生成的二进制目标文件加载到第(1)步所绘图8-36所示电路原理图的AT89C51单片机中,然后仿真运行观察1602液晶的显示情况是否符合要求。,(4)按硬件电路焊好电路板,将参考程序写入AT89C51单片机中,通电,观察1602液晶的的显示情况是否符合要求。,5思考题,(1)简述A/D转换器ADC0832的功能和作用。,(2)说明液晶1602如何显示数据?,(3)本实训有哪些注意事项?,(4)如何用汇编语言编程实现该功能?,小 结,本章主要讲述了AT89C51单片机与外围电路和部件的接口技术。,第一,键盘接口。主要介绍常用的独立式按键和矩阵式按键,按键的抖动软件消除方法。,第二,显示器接口。单片机最常用的显示器是LED和LCD。LED中介绍数码管的静态显示和动态显示,88LED点阵显示字符和1616LED点阵显示汉字。LCD液晶显示器主要介绍LCD1602的应用。,第三,A/D转换器的工作原理和技术参数。ADC0809的特点和应用。,第四,D/A转换器的工作原理和技术参数。DAC0832的特点和应用。,习题与思考题,一、填空题,1根据键盘的按键码识别方式分类,有,键盘和,键盘。,2消除抖动的方法有,方法和,方法两种。,3根据发光二极管的连接方式的不同,可以将数码管分为,极和,极两种。
展开阅读全文