MCS–51单片机的接口与应用_第1页
MCS–51单片机的接口与应用_第2页
MCS–51单片机的接口与应用_第3页
MCS–51单片机的接口与应用_第4页
MCS–51单片机的接口与应用_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MCS51单片机的接口与应用,6.1A/D转换器接口6.2D/A转换器接口6.3按键、键盘及其接口6.4显示及显示器接口,1A/D转换器接口,1.1A/D转换器概述,在设计A/D转换器与单片机接口之前,往往要根据A/D转换器的技术指标选择A/D转换器。为此,先介绍一下A/D转换器的主要技术指标。量化间隔和量化误差是A/D转换器的主要技术指标之一。量化间隔可用下式表示。其中n为A/D转换器的位数。,量化误差有两种表示方法:一种是绝对误差,另一种是相对误差。,A/D转换器芯片种类很多,按其转换原理可分为逐次比较式、双重积分式、量化反馈式和并行式A/D转换器;按其分辨率可分为816位的A/D转换器芯片。目前最常用的是逐次逼近式和双重积分式。,逐次逼近式转换器的常用产品有ADC0801ADC0805型8位MOS型A/D转换器、ADC0808/0809型8位MOS型A/D转换器、ADC0816/0817型8位MOS型A/D转换器、AD574型快速12位A/D转换器。双重积分式转换器的常用产品有ICL7106/ICL7107/ICL7126、MC14433/5G14433、ICL7135等。A/D转换器与单片机接口具有硬、软件相依性。一般来说,A/D转换器与单片机的接口主要考虑的是数字量输出线的连接、ADC启动方式、转换结束信号处理方法以及时钟的连接等。,A/D转换器数字量输出线与单片机的连接方法与其内部结构有关。对于内部带有三态锁存数据输出缓冲器的ADC(如ADC0809、AD574等),可直接与单片机相连。对于内部不带锁存器ADC,一般通过锁存器或并行I/O接口与单片机相连。在某些情况下,为了增强控制功能,那些带有三态锁存数据输出缓冲器的ADC也常采用I/O接口连接。还有,随着位数的不同,ADC与单片机的连接方法也不同。对于8位ADC,其数字输出线可与8位单片机数据线对应相接。对于8位以上的ADC,与8位单片机相接就不那么简单了,此时必须增加读取控制逻辑,把8位以上的数据分两次或多次读取。为了便于连接,一些ADC产品内部已带有读取控制逻辑,而对于内部不包含读取控制逻辑的ADC,在和8位单片机连接时,应增设三态缓冲器对转换后的数据进行锁存。,当ADC转换结束时,ADC输出一个转换结束标志信号,通知单片机读取转换结果。单片机检查判断A/D转换结束的方法一般有中断和查询两种。对于中断方式,可将转换结束标志信号接到单片机的中断请求输入线上或允许中断的I/O接口的相应引脚,作为中断请求信号;对于查询方式,可把转换结束标志信号经三态门送到单片机的某一位I/O口线上,作为查询状态信号。A/D转换器的另一个重要连接信号是时钟,其频率是决定芯片转换速度的基准。整个A/D转换过程都是在时钟的作用下完成的。A/D转换时钟的提供方法有两种:一种是由芯片内部提供(如AD574),一般不许外加电路;另一种是由外部提供,有的用单独的振荡电路产生,更多的则把单片机输出时钟经分频后,送到A/D转换器的相应时钟端。,1.2A/D转换器ADC0809与单片机的接口,1ADC0809芯片简介,图1ADC0809芯片的内部逻辑结构与引脚图,表1ADC0809通道地址选择表,图2ADC0809转换工作时序,2ADC0809与单片机接口,图3ADC0809与8051的接口连接图,3A/D转换应用程序举例设图5.18接口电路用于一个8路模拟量输入的巡回检测系统,使用中断方式采样数据,把采样转换所得的数字量按序存于片内RAM的30H37H单元中。采样完一遍后停止采集。其数据采集的初始化程序和中断服务程序如下:初始化程序:,MOVR0,#30H;设立数据存储区指针MOVR2,#08H;设置8路采样计数值SETBIT0;设置外部中断0为边沿触发方式SETBEA;CPU开放中断,SETBEX0;允许外部中断0中断MOVDPTR,#FEF8H;送入口地址并指向IN0LOOP:MOVXDPTR,A;启动A/D转换,A的值无意义HERE:SJMPHERE;等待中断中断服务程序:MOVXA,DPTR;读取转换后的数字量MOVR0,A;存入片内RAM单元INCDPTR;指向下一模拟通道INCR0;指向下一个数据存储单元DJNZR2,INT0;8路未转换完,则继续CLREA;已转换完,则关中断CLREX0;禁止外部中断0中断RETI;中断返回INT0:MOVXDPTR,A;再次启动A/D转换RETI;中断返回,1.3单片机与A/D转换器AD574的接口1AD574芯片简介AD574是一种快速的12位逐次比较式A/D转换芯片,片内有两片双极型电路组成的28脚双插直列式芯片,无需外接元器件就可独立完成A/D转换功能。内部设有三态数据输出锁存器。一次转换时间为25s。芯片引脚如图5.19所示。,图4AD574的引脚图,AD574的引脚定义如下:REOUT:内部参考电源输出(+10V);REFIN:参考电压输入;BIP:偏置电压输入;10VIN:5V或010V模拟输入;20VIN:10V或020V模拟输入;DB0DB11数字量输出,高半字节为DB8DB11,低字节为DB0DB7;,表2AD574控制信号状态表,2AD574模拟输入电路的极性选择,图5AD574的模拟输入电路,(a)单极性输入;(b)双极性输入,3AD574与MCS-51单片机的接口,图6AD574与MCS51单片机接口电路,4转换程序设计举例设要求AD574进行12位转换,单片机对转换结果读入,高8位和低4位分别存于片内RAM的31H和30H单元,其转换子程序如下:,2D/A转换器接口,2.1D/A转换器概述,在设计D/A转换器与单片机接口之前,一般要根据D/A转换器的技术指标选择D/A转换器芯片。(1)分辨率。分辨率是D/A转换器对输入量变化敏感程度的描述。D/A转换器的分辨率定义为:当输入数字量发生单位数码变化时,即LSB位产生一次变化时所对应输出模拟量的变化量。对于线性D/A转换器来说,其分辨率与输入数字量输出的位数n呈现下列关系,(2)建立时间。建立时间是描述D/A转换速率快慢的一个重要参数。一般所指的建立时间是输入数字量变化后,模拟输出量达到终值误差LSB/2(最低有效位)时所经历的时间。根据建立时间的长短,把D/A转换器分成以下几挡:超高速100ns较高速100ns1s高速110s中速10100s低速100s,(1)DAC0830系列。DAC0830系列是美国NationalSemiconductor公司生产的具有两个数据寄存器的8位D/A转换芯片。该系列产品包括DAC0830、DAC0831、DAC0832,管脚完全相容为20脚双插直列式封装。(2)DAC82。DAC82是B-B公司生产的8位能完全与微处理器兼容的D/A转换器芯片,片内带有基准电压和调节电阻。无需外接器件及微调即可与单片机8位数据线相连。芯片工作电压为15V,可以直接输出单极性或双极性的电压(0+10V,10V)和电流(01.6mA,0.8mA)。,(3)DAC1020/AD7520和DAC1220/AD7521系列。DAC1020/AD7520为10位分辨率的D/A转换集成系列芯片。DAC1020系列是美国NationalSemiconductor公司的产品,包括DAC1020、DAC1021、DAC1022,与美国AnalogDevices公司的AD7520及其后继产品AD7530、AD7533完全兼容。单电源工作,电源电压为+5+15V,电流建立时间为500ns,为16线双插直列式封装。与美国AnalogDevices公司的AD7520及其后继产品AD7530、AD7533完全兼容。单电源工作,电源电压为+5+15V,电流建立时间为500ns,为16线双插直列式封装。,(4)DAC1220/AD7521系列。DAC1220/AD7521系列为12位分辨率的D/A转换集成芯片。DAC1220系列包括DAC1220、DAC1221、DAC1222产品,与AD7521及其后继产品AD7531管脚完全兼容,为18线双插直列式封装。(5)DAC1208和DAC1230系列。DAC1208和DAC1230系列均为美国NationalSemiconductor公司的12位分辨率产品。两者不同之处是DAC1230数据输入引脚线只有8根,而DAC1208有12根。DAC1208系列为24线双插直列式封装,而DAC1230系列为20线双插直列式封装。DAC1208系列包括DAC1208、DAC1209、DAC1210等,DAC1230系列包括DAC1230、DAC1231、DAC1232等。,(6)DAC708/709。DAC708/709是B-B公司生产的16位微机完全兼容的D/A转换器芯片,具有双缓冲输入寄存器,片内有基准电源及电压输出放大器。数字量可并行或串行输入,模拟量可以电压或电流输出。D/A转换器与单片机接口也具有硬、软件相依性。各种A/D转换器与单片机接口的方法有些差异,但就其基本连接方法,还是有共同之处:都要考虑到数据线、地址线和控制线的连接。,就数据线来说,D/A转换器与单片机的接口要考虑到两个问题:一是位数,当高于8位的D/A转换器与8位数据总线的MCS-51单片机接口时,MCS-51单片机的数据必须分时输出,这时必须考虑数据分时传送的格式和输出电压的毛刺问题;二是D/A转换器的内部结构,当D/A转换器内部没有输入锁存器时,必须在单片机与D/A转换器之间增设锁存器或I/O接口。最常用、也是最简单的连接是8位带锁存器的D/A转换器和8位单片机的接口,这时只要将单片机的数据总线直接和D/A转换器的8位数据输入端一一对应连接即可。,就地址线来说,一般的D/A转换器只有片选信号,而没有地址线。这时单片机的地址线采用全译码或部分译码,经译码器的输出控制片选信号,也可由某一位I/O线来控制片选信号。也有少数D/A转换器有少量的地址线,用于选中片内独立的寄存器或选择输出通道(对于多通道D/A转换器),这时单片机的地址线与D/A转换器的地址线对应连接。就控制线来说,D/A转换器主要有片选信号、写信号及启动转换信号等,一般由单片机的有关引脚或译码器提供。一般来说,写信号多由单片机的-WR信号控制;启动信号常为片选信号和写信号的合成。,2.28位D/A转换器与单片机的接口,1DAC0830/DAC0831/DAC0832的结构与引脚功能,图7DAC0830系列结构框图,2DAC0830系列D/A转换器与单片机接口,单缓冲工作方式:输入寄存器工作于直通状态DAC寄存器工作于受控状态VREF接-5V输出V0为05V,设分配给DAC0830/DAC0831/DAC0832的地址为7FFFH(P2.7=0),则执行下列三条指令就可以将一个数字量转换为模拟量:MOVDPTR,#7FFFH;端口地址送DPTRMOVA,#DATA;8位数字量送累加器MOVXDPTR,A;向锁存器写入数字量,同时启动转换,图9单路DAC0830/DAC0831/DAC0832控制时序,下面的程序可使DAC0830/DAC0831/DAC0832输出呈渐升骤降的电压锯齿波。,START:MOVDPTR,#7FFFHMOVA,#00LOOP:MOVXDPTR,AINCAMOVR0,#data;data为延时常数DJNZR0,$;延时,改变data可改变锯齿波周期T值SJMPLOOPo,图10由软件产生的锯齿波,图11两路DAC0830/DAC0831/DAC0832与单片机接口逻辑图,如果图5.26中的模拟输出分别用于示波器的X、Y偏转,则MCS-51执行下面的程序后,可使示波器上的光点根据参数X、Y的值同步移动。,MOVDPTR,#0DFFFHMOVA,#XMOVXDPTR,A;将参数X写入DAC(1)的数据输入锁存器MOVDPTR,#0BFFFHMOVA,#YMOVXDPTR,A;将参数Y写入DAC(1)的数据输入锁存器MOVDPTR,#7FFFHMOVXDPTR,A;两片DAC同时启动转换,同步输出SJMP$,3DAC0830/DAC0831/DAC0832的模拟输出方式DAC0830/DAC0831/DAC0832属于电流输出型的D/A转换器,其转换结果是与输入数字量成正比的电流。这种形式的输出不能直接带动负载,需经运算放大器放大并转换成电压输出。电压输出又根据不同的场合,需要单极性电压输出和双极性电压输出。图10、图11所示的接口电路是单极性电压输出,运放的输出电压为,其中,D为用十进制表示的数字输入量。,例如,设VREF=-5V,当D=FFH=255时,,这是最大的输出电压。若D=01H=1时,这是最低位LSB对应的输出电压。运放的输出电压与参考电压VREF是反极性。,根据运放的理想情况,运放A2的反向输入端虚地,且I1+I2=0,而,如果选择R2=R3=2R1,则可以得到,VOUT2=(2VOUT1+VREF),设VREF=+5V,当VOUT1=0V时,VOUT2=5V;VOUT1=2.5V时,VOUT2=0V;VOUT1=5V时,VOUT2=5V。可见,VOUT2将VOUT1输出电压范围05V转换成双极性电压范围5+5V。因,所以,2.3高于8位D/A转换器与单片机的接口在微机控制系统中,为了提高精度需要采用10位、12位、14位,甚至更高位数的D/A转换器芯片。高于8位的D/A转换器芯片与8位单片机接口,被转换的数据至少要分两次送出。这需要解决两个问题:一是分时传送的数据格式,二是数据不同时传送可能引起的输出模拟量而出现毛刺。后一问题可通过D/A转换芯片内部或外部增加锁存器,达到两级缓冲,使被转换数据完整进入二级缓冲器,开始转换。,图128位系统的12位数据格式(a)左对齐格式;(b)右对齐格式,1DAC1208系列的结构与引脚功能,表3DAC1208系列精度,图13DAC0830系列结构框图,2DAC1208系列D/A转换器与MCS-51单片机的接口,图14DAC1208系列与单片机接口逻辑图,D/A转换程序如下:,MOVDPTR,#4001H;使DPTR指向8位输入锁存器MOVR1,#DIGIT;使R1指向12位数的高8位单元MOVA,R1;取高8位转换数据MOVXDPTR,A;向DAC1208送高8位数据DECDPTR;使DPTR指向4位输入锁存器INCR1;使R1指向12位数的低4位单元MOVA,R1;取低4位转换数据SWAPAMOVXDPTR,A;再向DAC1208送低4位数据MOVDPTR,#6000H;使DPTR指向DAC锁存器MOVXDPTR,A;完成12位D/A转换,3按键、键盘及其接口,3.1键输入过程与软件结构,图15MCS51单片机键输入过程,3.2键盘接口和键输入软件中应解决的几个问题1消除键抖动,图17消除键抖动电路,2键编码及键值,(1)用键盘连接的I/O线的二进制组合表示键码。例如用4行、4列线构成的16个键的键盘,可使用一个8位I/O口线的高、低4位口线的二进制数的组合表示16个键的编码,如图5.4(a)所示。各键相应的键值为88H、84H、82H、81H、48H、44H、42H、41H、28H、24H、22H、21H、18H、14H、12H、11H。这种键值编码软件较为简单直观,但离散性大,不便安排散转程序的入口地址。,(2)顺序排列键编码。如图5.4(b)所示。这种方法,键值的形成要根据I/O线的状态作相应处理。键码可按下式形成:键码=行首键码+列号,图18行列式键盘的编码与键值,(a)二进制组合编码;(b)顺序排列编码,3键盘的监测方法对于计算机应用系统,键盘扫描只是CPU工作的一部分,键盘处理只是在有键按下时才有意义。对是否有键按下的信息输入方式有中断方式与查询方式两种。,3.3独立式按键1独立式按键接口结构,图19独立式按键的接口电路示意图(a)中断方式;(b)查询方式,2独立式按键的软件结构下面是查询方式的键盘程序。K0K7为功能程序入口地址标号,其地址间隔应能容纳JMP指令字节,PROM0PROM7分别为每个按键的功能程序。设I/O为P1口。,START:MOVA,#0FFH;MOVP1,A;置P1口为输入状态MOVA,P1;键状态输入JNBACC.0,K0;检测0号键是否按下,按下转JNBACC.1,K1;检测1号键是否按下,按下转,JNBACC.2,K2;检测2号键是否按下,按下转JNBACC.3,K3;检测3号键是否按下,按下转JNBACC.4,K4;检测4号键是否按下,按下转JNBACC.5,K5;检测5号键是否按下,按下转JNBACC.6,K6;检测6号键是否按下,按下转JNBACC.7,K7;检测7号键是否按下,按下转JMPSTART;无键按下返回,再顺次检测K0:AJMPPROM0K1:AJMPPROM1K7:AJIMPPROM7,;入口地址表,3.4行列式键盘行列式键盘又叫矩阵式键盘。用I/O口线组成行、列结构,按键设置在行列的交点上。例如44的行列结构可组成16个键的键盘。因此,在按键数量较多时,可以节省I/O口线。1行列式键盘的接口行列式键盘的接口方法有许多,例如直接接口于单片机的I/O口上;利用扩展的并行I/O接口;用串行口扩展并行I/O口接口;利用一种可编程的键盘、显示接口芯片8279进行接口等。其中,利用扩展的并行I/O接口方法方便灵活,在单片机应用系统中比较常用。,图208155扩展I/O口组成的行列式键盘,2键盘工作原理按键设置在行、列线的交点上,行、列线分别连接到按键开关的两端。行线通过上拉电阻接+5V,被箝位在高电平状态。对键盘的工作过程可分两步:第一步是CPU首先检测键盘上是否有键按下;第二步是再识别是哪一个键按下。检测键盘上有无键按下可采用查询工作方式、定时扫描工作方式和中断工作方式。,1)查询工作方式键盘中有无键按下是由列线送入全扫描字,读入行线状态来判别的。其方法是:PA口输出00H,即所有列线置成低电平,然后将行线电平状态读入累加器A中。如果有键按下,总会有一根行线电平被拉至低电平,从而使行输入状态不全为1。键盘中哪一个键按下是由列线逐列置低电平后,检查行输入状态,称为逐列扫描。其方法是:从PA0开始,依次输出0,置对应的列线为低电平,然后从PC口读入行线状态,如果全为1,则所按下之键不在此列;如果不全为1,则所按下的键必在此列,而且是与0电平行线相交的交点上的那个键。为求取键码,在逐列扫描时,可用计数器记录下当前扫描列的列号,然后用行线值为0的行首键码加列号的办法计算。,键盘扫描子程序如下:KEY1:ACALLKS1;调用判断有无键按下子程序JNZLK1;有键按下时,(A)0转消抖延时AJMPKEY1;无键按下返回LK1:ACALLTM12S;调12ms延时子程序ACALLKS1;查有无键按下,若有则真有键按下JNZLK2;键(A)0逐列扫描AJMPKEY1;不是真有键按下,返回LK2;MOVR2,#0FEH;初始列扫描字(0列)送入R2MOVR4,#00H;初始列(0列)号送入R4,LK4:MOVDPTR,#7F01H;DPTR指向8155PA口MOVA,R2;列扫描字送至8155PA口MOVXDPTR,AINCDPTR;DPTR指向8155PC口INCDPTRMOVXA,DPTR;从8155PC口读入行状态JBACC.0,LONE;查第0行无键按下,转查第1行MOVA,#00H;第0行有键按下,行首键码#00HAAJMPLKP;转求键码LONE:JBACC.1,LTWO;查第1行无键按下,转查第2行MOVA,#08H;第1行有键按下,行首键码#08HAAJMPLKP;转求键码,LTWO:JBACC.2,LTHR;查第2行无键按下,转查第3行MOVA,#10H;第2行有键按下,行首键码#10HAAJMPLKP;转求键码LTHR:JBACC.3,NEXT;查第3行无键按下,转该查下一列MOVA,#18H;第3行有键按下,行首键码#18HALKP:ADDA,R4;求键码,键码=行首键码+列号PUSHACC;键码进栈保护LK3:ACALLKS1;等待键释放JNZLK3;键未释放,等待POPACC;键释放,键码ARET;键扫描结束,出口状态(A)=键码,NEXT:INCR4;准备扫描下一列,列号加1MOVA,R2;取列号送累加器AJNBACC.7,KEND;判断8列扫描否?扫描完返回RLA;扫描字左移一位,变为下一列扫描字MOVR2,A;扫描字送入R2AJMPLK4;转下一列扫描KEND:AJMPKEY1KS1:MOVDPTR,#7F01H;DPTR指向8155PA口MOVA,#00H;全扫描字AMOVXDPTR,A;全扫描字送往8155PA口,INCDPTR;DPTR指向8155PC口INCDPTRMOVXA,DPTR;读入PC口行状态CPLA;变正逻辑,以高电平表示有键按下ANLA,#0FH;屏蔽高4位,只保留低4位行线值RET;出口状态:(A)0时有键按下TM12ms:MOVR7,#18H;延时12ms子程序TM:MOVR6,#0FFHTM6:DJNZR6,TM6DJNZR7,TMRET,2)定时扫描工作方式,3)中断工作方式计算机应用系统工作时,并不经常需要键输入。但无论是查询工作方式还是定时扫描工作方式,CPU经常处于空扫描状态。为了提高CPU的效率,可采用中断工作方式。这种工作方式是当键盘上有键按下时,向CPU发一个中断请求信号,CPU响应中断后,在中断服务程序中扫描键盘,执行键功能程序。中断请求信号的接口电路可参考图5.5(a)。中断服务程序中应完成键识别、消除抖动、排除多次执行键功能操作等功能,可参考查询工作方式键盘程序。,4显示及显示器接口,4.1LED显示器结构与原理,图23七段显示块管脚与结构图,表5七段LED的段选码,4.2LED显示器与显示方式,图24N位LED显示器,1LED静态显示方式,LED工作在静态显示方式下,共阴极接地或共阳极接+5V;每一位的段选线(ag、dp)与一个8位并行I/O口相连,如图5.10所示。该图表示了一个4位静态LED显示器电路,显示器的每一位可独立显示,只要在该位的段选线上保持段选码电平,该位就能保持相应的显示字符。由于每一位由一个8位输出口控制段选码,故在同一时刻各位可以显示不同的字符。N位静态显示器要求有N8根I/O口线,占用I/O口线较多。故在位数较多时往往采用动态显示方式。,2LED动态显示方式,图258位LED动态显示器电路,4.3LED显示器接口,1硬件译码显示器接口,图26MC14495内部逻辑与引脚图,图27使用MC14495的多位LED静态显示接口,2软件译码显示器接口,图28通过扩展8155I/O口控制的8位LED动态显示接口,3动态显示程序设计,DISPLAY:MOVA,#00000011B;8155初始化MOVDPTR,#7F00H;使DPTR指向8155控制寄存器端口MOVXDPTR,AMOVR0,#78H;动态显示初始化,使R0指向缓冲区首址MOVR3,#7FH;首位位选字送R3MOVA,R3;LD0:MOVDPTR,#7F01H;使DPTR指向PA口MOVXDPTR,A;选通显示器低位(最右端一位)INCDPTR;使DPTR指向PB口,MOVA,R0;读要显示数ADDA,#0DH;调整距段选码表首的偏移量MOVCA,A+PC;查表取得段选码MOVXDPTR,A;段选码从PB口输出ACALLDL1;调用1ms延时子程序INCR0;指向缓冲区下一单元MOVA,R3;位选码送累加器AJNBACC.0,LD1;判断8位是否显示完毕,显示完返回RRA;未显示完,把位选字变为下一位选字MOVR3,A;修改后的位选字送R3AJMPLD0;循环实现按位序依次显示,LD1:RETDSEG:DB3FH,06H,5BH;4FH,66H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论