《单片机精品课件,教程,试题库,实验指导第5章MCS–5单片机的接口与应用 99页 5.8M》由会员分享,可在线阅读,更多相关《单片机精品课件,教程,试题库,实验指导第5章MCS–5单片机的接口与应用 99页 5.8M(99页珍藏版)》请在金锄头文库上搜索。
1、第5章 MCS51单片机的接口与应用 第第5 5章章 MCS51MCS51单片机的接口与应用单片机的接口与应用 5.1 按键、键盘及其接口按键、键盘及其接口5.2 显示及显示器接口显示及显示器接口5.3 A/D转换器接口转换器接口5.4 D/A转换器接口转换器接口5.5 行程开关、晶闸管、行程开关、晶闸管、 继电器与单片机的接口继电器与单片机的接口第5章 MCS51单片机的接口与应用 5.1 按键、键盘及其接口按键、键盘及其接口5.1.1 键输入过程与软件结构键输入过程与软件结构图5.1MCS51单片机键输入过程第5章 MCS51单片机的接口与应用 5.1.2 键盘接口和键输入软件中应解决的几
2、个问题键盘接口和键输入软件中应解决的几个问题 1消除键抖动消除键抖动键稳定键按下前沿抖动前沿抖动图5.2键合断时的电压抖动第5章 MCS51单片机的接口与应用 图5.3消除键抖动电路第5章 MCS51单片机的接口与应用 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。这种键值编码软件较为简单
3、直观,但离散性大,不便安排散转程序的入口地址。第5章 MCS51单片机的接口与应用 (2)顺序排列键编码。如图5.4(b)所示。这种方法,键值的形成要根据I/O线的状态作相应处理。键码可按下式形成:键码=行首键码+列号第5章 MCS51单片机的接口与应用 图5.4行列式键盘的编码与键值(a)二进制组合编码;(b)顺序排列编码第5章 MCS51单片机的接口与应用 3键盘的监测方法键盘的监测方法对于计算机应用系统,键盘扫描只是CPU工作的一部分,键盘处理只是在有键按下时才有意义。对是否有键按下的信息输入方式有中断方式与查询方式两种。第5章 MCS51单片机的接口与应用 5.1.3 独立式按键独立式
4、按键1独立式按键接口结构独立式按键接口结构图图5.5 独立式按键的接口电路示意图独立式按键的接口电路示意图(a) 中断方式;中断方式;(b) 查询方式查询方式 第5章 MCS51单片机的接口与应用 2独立式按键的软件结构独立式按键的软件结构下面是查询方式的键盘程序。K0K7为功能程序入口地址标号,其地址间隔应能容纳JMP指令字节,PROM0PROM7分别为每个按键的功能程序。设I/O为P1口。START:MOVA,#0FFH ;MOVP1,A ;置P1口为输入状态MOVA,P1 ;键状态输入JNBACC.0,K0;检测0号键是否按下,按下转JNBACC.1,K1;检测1号键是否按下,按下转第5
5、章 MCS51单片机的接口与应用 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;入口地址表第5章 MCS51单片机的接口与应用 PROM0:;0号键功能程序JMPSTART;0号键功能程序执行完返回PROM1:;0号键功能程
6、序JMPSTART;1号键功能程序执行完返回;7号键功能程序PROM7:JMPSTART;7号键功能程序执行完返回第5章 MCS51单片机的接口与应用 5.1.4 行列式键盘行列式键盘行列式键盘又叫矩阵式键盘。用I/O口线组成行、列结构,按键设置在行列的交点上。例如44的行列结构可组成16个键的键盘。因此,在按键数量较多时,可以节省I/O口线。 1行列式键盘的接口行列式键盘的接口行列式键盘的接口方法有许多,例如直接接口于单片机的I/O口上;利用扩展的并行I/O接口;用串行口扩展并行I/O口接口;利用一种可编程的键盘、显示接口芯片8279进行接口等。其中,利用扩展的并行I/O接口方法方便灵活,在
7、单片机应用系统中比较常用。第5章 MCS51单片机的接口与应用 图5.68155扩展I/O口组成的行列式键盘第5章 MCS51单片机的接口与应用 2键盘工作原理键盘工作原理按键设置在行、列线的交点上,行、列线分别连接到按键开关的两端。行线通过上拉电阻接+5V,被箝位在高电平状态。对键盘的工作过程可分两步:第一步是CPU首先检测键盘上是否有键按下;第二步是再识别是哪一个键按下。检测键盘上有无键按下可采用查询工作方式、定时扫描工作方式和中断工作方式。第5章 MCS51单片机的接口与应用 1)查询工作方式键盘中有无键按下是由列线送入全扫描字,读入行线状态来判别的。其方法是:PA口输出00H,即所有列
8、线置成低电平,然后将行线电平状态读入累加器A中。如果有键按下,总会有一根行线电平被拉至低电平,从而使行输入状态不全为1。键盘中哪一个键按下是由列线逐列置低电平后,检查行输入状态,称为逐列扫描。其方法是:从PA0开始,依次输出0,置对应的列线为低电平,然后从PC口读入行线状态,如果全为1,则所按下之键不在此列;如果不全为1,则所按下的键必在此列,而且是与0电平行线相交的交点上的那个键。为求取键码,在逐列扫描时,可用计数器记录下当前扫描列的列号,然后用行线值为0的行首键码加列号的办法计算。第5章 MCS51单片机的接口与应用 有键按下否调用6ms延时子程序开始调用12ms延时子程序有键按下否判断闭
9、合键,键码入栈保存闭合键释放否键码 A返回YYYNNN图5.7键盘扫描子程序流程框图第5章 MCS51单片机的接口与应用 键盘扫描子程序如下:KEY1:ACALLKS1;调用判断有无键按下子程序JNZLK1;有键按下时,(A)0转消抖延时AJMPKEY1;无键按下返回LK1:ACALLTM12S;调12ms延时子程序ACALLKS1;查有无键按下,若有则真有键按下JNZLK2;键(A)0逐列扫描AJMPKEY1;不是真有键按下,返回LK2;MOVR2,#0FEH;初始列扫描字(0列)送入R2MOVR4,#00H;初始列(0列)号送入R4第5章 MCS51单片机的接口与应用 LK4:MOVDPT
10、R,#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;转求键码第5章 MCS51单片机的接口与应用 LTWO:JBACC.2,LTHR;查第2行无键按下,转查第3行MOVA,#
11、10H;第2行有键按下,行首键码#10HAAJMPLKP;转求键码LTHR:JBACC.3,NEXT;查第3行无键按下,转该查下一列MOVA,#18H ;第3行有键按下,行首键码#18HALKP:ADDA,R4 ;求键码,键码=行首键码+列号PUSHACC;键码进栈保护LK3:ACALLKS1 ;等待键释放JNZLK3;键未释放,等待POPACC;键释放,键码ARET;键扫描结束,出口状态(A)=键码第5章 MCS51单片机的接口与应用 NEXT:INCR4;准备扫描下一列,列号加1MOVA,R2 ;取列号送累加器AJNBACC.7,KEND;判断8列扫描否?扫描完返回RLA;扫描字左移一位,
12、变为下一列扫描字MOVR2,A;扫描字送入R2AJMPLK4;转下一列扫描KEND:AJMPKEY1KS1:MOVDPTR,#7F01H;DPTR指向8155PA口MOVA,#00H;全扫描字AMOVXDPTR,A;全扫描字送往8155PA口第5章 MCS51单片机的接口与应用 INCDPTR;DPTR指向8155PC口INCDPTRMOVXA,DPTR;读入PC口行状态CPLA;变正逻辑,以高电平表示有键按下ANLA,#0FH ;屏蔽高4位,只保留低4位行线值RET;出口状态:(A)0时有键按下TM12ms:MOVR7,#18H;延时12ms子程序TM: MOVR6,#0FFHTM6:DJN
13、ZR6,TM6DJNZR7,TMRET第5章 MCS51单片机的接口与应用 2)定时扫描工作方式键盘上有键闭合否开始KM=1KP=1返回1 KM0 KM0 KP图5.8定时扫描方式程序框图查询键码1 KPNNNYYY第5章 MCS51单片机的接口与应用 3)中断工作方式计算机应用系统工作时,并不经常需要键输入。但无论是查询工作方式还是定时扫描工作方式,CPU经常处于空扫描状态。为了提高CPU的效率,可采用中断工作方式。这种工作方式是当键盘上有键按下时,向CPU发一个中断请求信号,CPU响应中断后,在中断服务程序中扫描键盘,执行键功能程序。中断请求信号的接口电路可参考图5.5(a)。中断服务程序
14、中应完成键识别、消除抖动、排除多次执行键功能操作等功能,可参考查询工作方式键盘程序。第5章 MCS51单片机的接口与应用 5.2 显示及显示器接口显示及显示器接口5.2.1 LED显示器结构与原理显示器结构与原理图图5.9 七段显示块管脚与结构图七段显示块管脚与结构图 第5章 MCS51单片机的接口与应用 表表5.1 七段七段LED的段选码的段选码显示字符共阴极段选码共阳极段选码显示字符共阴极段选码共阳极段选码03FHC0HC39HC6H106HF9HD5EHA1H25BHA4HE79H86H34FHB0HF71H8EH466H99HP73H8CH56DH92HU3EHC1H67DH82H31
15、HCEH707HF8Hy6EH91H87FH80H8.FFH00H96FH90H“灭”00HFFHA77H88HB7CH83H第5章 MCS51单片机的接口与应用 5.2.2 LED显示器与显示方式显示器与显示方式图5.10N位LED显示器第5章 MCS51单片机的接口与应用 1LED静态显示方式静态显示方式LED工作在静态显示方式下,共阴极接地或共阳极接+5V;每一位的段选线(ag、dp)与一个8位并行I/O口相连,如图5.10所示。该图表示了一个4位静态LED显示器电路,显示器的每一位可独立显示,只要在该位的段选线上保持段选码电平,该位就能保持相应的显示字符。由于每一位由一个8位输出口控制
16、段选码,故在同一时刻各位可以显示不同的字符。N位静态显示器要求有N8根I/O口线,占用I/O口线较多。故在位数较多时往往采用动态显示方式。第5章 MCS51单片机的接口与应用 2LED动态显示方式动态显示方式图5.118位LED动态显示器电路第5章 MCS51单片机的接口与应用 5.2.3 LED显示器接口显示器接口1硬件译码显示器接口硬件译码显示器接口图图5.12 MC14495内部逻辑与引脚图内部逻辑与引脚图第5章 MCS51单片机的接口与应用 图5.13使用MC14495的多位LED静态显示接口第5章 MCS51单片机的接口与应用 2软件译码显示器接口软件译码显示器接口图图5.14 通过
17、扩展通过扩展8155 I/O口控制的口控制的8位位LED动态显示接口动态显示接口 第5章 MCS51单片机的接口与应用 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口第5章 MCS51单片机的接口与应用 MO
18、VA,R0;读要显示数ADDA,#0DH;调整距段选码表首的偏移量MOVCA,A+PC;查表取得段选码MOVXDPTR,A;段选码从PB口输出ACALLDL1;调用1ms延时子程序INCR0;指向缓冲区下一单元MOVA,R3;位选码送累加器AJNBACC.0,LD1;判断8位是否显示完毕,显示完返回RRA;未显示完,把位选字变为下一位选字MOVR3,A;修改后的位选字送R3AJMPLD0;循环实现按位序依次显示第5章 MCS51单片机的接口与应用 LD1:RETDSEG:DB3FH,06H,5BH;4FH,66H,6DH,7DH;段码表DB07H,7FH,6FH,77H,7CH,39H,5EH
19、,79HDL1:MOVR7,#02H;延时子程序DL:MOVR6,#0FFHDL0:DJNZR6,DL6DJNZR7,DLRET第5章 MCS51单片机的接口与应用 5.2.4 键盘、显示器组合接口键盘、显示器组合接口1键盘、显示器组合接口电路键盘、显示器组合接口电路图5.15是一个采用8155并行扩展口构成的键盘、显示器组合接口电路。图中设置了32个键。如果多使用PC口线,可以增加按键,最多可达88=64个键。可根据需要进行设置。LED显示器采用共阴极。段选码由8155PB口提供,位选码由PA口提供。键盘的列输入由PA口提供,与显示器的位选输入公用,行输入由PC0PC3提供。显然,因为键盘与
20、显示器公用了PA口,比单独接口节省了一个I/O口。第5章 MCS51单片机的接口与应用 图图5.15 8155扩展扩展I/O口的键盘、显示器组合接口口的键盘、显示器组合接口 第5章 MCS51单片机的接口与应用 2软件设计软件设计LED采用动态显示、软件译码,键盘采用逐列扫描查询工作方式。由于键盘与显示做成一个接口电路,因此在软件中合并考虑键盘查询与动态显示,键盘消抖的延时子程序可用显示子程序替代。相应的程序如下:KD1:MOVA,#03H;初始化8155PA、PB口为基本输出,PC口为输入MOVDPTR,#7F00HMOVXDPTR,A第5章 MCS51单片机的接口与应用 KEY1:ACAL
21、LKS1JNZLK1ACALLDISPLAY;调用显示子程序实现延时,防止抖动引起按键拒认AJMPKEY1;延时后再检测键盘LK1:ACALLDISPLAY;调用两次显示实现延时,防止抖动引起误处理ACALLDISPLAYACALLKS1JNZLK2ACALLDISPLAYAJMPKEY1第5章 MCS51单片机的接口与应用 LK2:MOVR2,#0FEHMOVR4,#00HLK4:MOVDPTR,#7F01HMOVA,R2MOVXDPTR,AINCDPTRINCDPTRMOVXA,DPTRJBACC.0,LONEMOVA,#00HAJMPLKP第5章 MCS51单片机的接口与应用 LONE:
22、JBACC.1,LTWOMOVA,#08HAJMPLKPLTWO:JBACC.2,LTHRMOVA,#10HAJMPLKPLHR: JBACC.3,NEXTMOVA,#18HLKP:ADDA,R4PUSHACC第5章 MCS51单片机的接口与应用 LK3:ACALLDISPLAYACALLKS1JNZLK3POPACCRETNEXT:INCR4MOVA,R2JNBACC.7,KENDRLAMOVR2,AAJMPLK4KEND:AJMPKEY1第5章 MCS51单片机的接口与应用 KS1:MOVDPTR,#7F01HMOVA,#00HMOVXDPTR,AINCDPTRINCDPTRMOVXA,D
23、PTRCPLAANLA,#0FHRETDISPLAY:见5.2.3节8155扩展动态扫描子程序。第5章 MCS51单片机的接口与应用 5.3 A/D转换器接口转换器接口5.3.1 A/D转换器概述转换器概述在设计A/D转换器与单片机接口之前,往往要根据A/D转换器的技术指标选择A/D转换器。为此,先介绍一下A/D转换器的主要技术指标。量化间隔和量化误差是A/D转换器的主要技术指标之一。量化间隔可用下式表示。其中n为A/D转换器的位数。第5章 MCS51单片机的接口与应用 量化误差有两种表示方法:一种是绝对误差,另一种是相对误差。A/D转换器芯片种类很多,按其转换原理可分为逐次比较式、双重积分式
24、、量化反馈式和并行式A/D转换器;按其分辨率可分为816位的A/D转换器芯片。目前最常用的是逐次逼近式和双重积分式。第5章 MCS51单片机的接口与应用 逐次逼近式转换器的常用产品有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转换器与单片机的接口主要考虑的是数字
25、量输出线的连接、ADC启动方式、转换结束信号处理方法以及时钟的连接等。第5章 MCS51单片机的接口与应用 A/D转换器数字量输出线与单片机的连接方法与其内部结构有关。对于内部带有三态锁存数据输出缓冲器的ADC(如ADC0809、AD574等),可直接与单片机相连。对于内部不带锁存器ADC,一般通过锁存器或并行I/O接口与单片机相连。在某些情况下,为了增强控制功能,那些带有三态锁存数据输出缓冲器的ADC也常采用I/O接口连接。还有,随着位数的不同,ADC与单片机的连接方法也不同。对于8位ADC,其数字输出线可与8位单片机数据线对应相接。对于8位以上的ADC,与8位单片机相接就不那么简单了,此时
26、必须增加读取控制逻辑,把8位以上的数据分两次或多次读取。为了便于连接,一些ADC产品内部已带有读取控制逻辑,而对于内部不包含读取控制逻辑的ADC,在和8位单片机连接时,应增设三态缓冲器对转换后的数据进行锁存。第5章 MCS51单片机的接口与应用 一个ADC开始转换时,必须加一个启动转换信号,这一启动信号要由单片机提供。不同型号的ADC,对于启动转换信号的要求也不同,一般分为脉冲启动和电平启动两种。对于脉冲启动型ADC,只要给其启动控制端上加一个符合要求的脉冲信号即可,如ADC0809、ADC574等。通常用WR和地址译码器的输出经一定的逻辑电路进行控制。对于电平启动型ADC,当把符合要求的电平
27、加到启动控制端上时,立即开始转换。在转换过程中,必须保持这一电平,否则会终止转换的进行。因此,在这种启动方式下,单片机的控制信号必须经过锁存器保持一段时间,一般采用D触发器、锁存器或并行I/O接口等来实现。AD570、AD571等都属于电平启动型ADC。第5章 MCS51单片机的接口与应用 当ADC转换结束时,ADC输出一个转换结束标志信号,通知单片机读取转换结果。单片机检查判断A/D转换结束的方法一般有中断和查询两种。对于中断方式,可将转换结束标志信号接到单片机的中断请求输入线上或允许中断的I/O接口的相应引脚,作为中断请求信号;对于查询方式,可把转换结束标志信号经三态门送到单片机的某一位I
28、/O口线上,作为查询状态信号。A/D转换器的另一个重要连接信号是时钟,其频率是决定芯片转换速度的基准。整个A/D转换过程都是在时钟的作用下完成的。A/D转换时钟的提供方法有两种:一种是由芯片内部提供(如AD574),一般不许外加电路;另一种是由外部提供,有的用单独的振荡电路产生,更多的则把单片机输出时钟经分频后,送到A/D转换器的相应时钟端。第5章 MCS51单片机的接口与应用 5.3.2 A/D转换器转换器ADC0809与单片机的接口与单片机的接口1ADC0809芯片简介芯片简介图5.16ADC0809芯片的内部逻辑结构与引脚图第5章 MCS51单片机的接口与应用 表5.2ADC0809通道
29、地址选择表ADDCADDBADDA选通的通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7第5章 MCS51单片机的接口与应用 图5.17ADC0809转换工作时序第5章 MCS51单片机的接口与应用 2ADC0809与单片机接口与单片机接口图5.18ADC0809与8031的接口连接图第5章 MCS51单片机的接口与应用 3A/D转换应用程序举例转换应用程序举例设图5.18接口电路用于一个8路模拟量输入的巡回检测系统,使用中断方式采样数据,把采样转换所得的数字量按序存于片内RAM的30H37H单元中。采样完一遍后停止采集。其数据采集的初始化程
30、序和中断服务程序如下:初始化程序:MOVR0,#30H ;设立数据存储区指针MOVR2,#08H ;设置8路采样计数值SETBIT0;设置外部中断0为边沿触发方式SETBEA;CPU开放中断第5章 MCS51单片机的接口与应用 SETBEX0;允许外部中断0中断 MOVDPTR,#FEF8H;送入口地址并指向IN0LOOP:MOVXDPTR,A;启动A/D转换,A的值无意义HERE:SJMPHERE;等待中断中断服务程序:MOVXA,DPTR;读取转换后的数字量MOVR0,A;存入片内RAM单元INCDPTR;指向下一模拟通道INCR0;指向下一个数据存储单元DJNZR2,INT0;8路未转换
31、完,则继续CLREA;已转换完,则关中断CLREX0;禁止外部中断0中断RETI;中断返回INT0:MOVXDPTR,A;再次启动A/D转换RETI ;中断返回第5章 MCS51单片机的接口与应用 5.3.3 单片机与单片机与A/D转换器转换器AD574的接口的接口1AD574芯片简介AD574是一种快速的12位逐次比较式A/D转换芯片,片内有两片双极型电路组成的28脚双插直列式芯片,无需外接元器件就可独立完成A/D转换功能。内部设有三态数据输出锁存器。一次转换时间为25s。芯片引脚如图5.19所示。第5章 MCS51单片机的接口与应用 图5.19AD574的引脚图第5章 MCS51单片机的接
32、口与应用 AD574的引脚定义如下:REOUT:内部参考电源输出(+10V);REFIN:参考电压输入;BIP:偏置电压输入;10VIN:5V或010V模拟输入;20VIN:10V或020V模拟输入;DB0DB11数字量输出,高半字节为DB8DB11,低字节为DB0DB7;第5章 MCS51单片机的接口与应用 STS:工作状态指示端。STS=1时表示转换器正处于转换状态,STS返回到低电平时,表示转换完毕。该信号可处理器作为中断或查询信号用;12/-8:变换输出字长选择控制端,在输入为高电平时,变换字长输出为12位,在低电平时,按8位输出;CS、CE:片选信号。当CS=0、CE=1同时满足时,
33、AD574才能处于工作状态。R/C:数据读出和数据转换启动控制;A0:字节地址控制。它有两个作用,在启动AD574(R/C=0)时,用来控制转换长度。A=0时,按完整的12位A/D转换方式工作,A=1时,则按8位A/D转换方式工作。在AD574处于数据读出工作状态(R/-C=1)时,A0和12/8成为输出数据格式控制。第5章 MCS51单片机的接口与应用 表5.3AD574控制信号状态表CECSR/C12/8A0功能说明100012位转换10018位转换101+5V12位输出101地0高8位输出101地1低4位输出第5章 MCS51单片机的接口与应用 2AD574模拟输入电路的极性选择模拟输入
34、电路的极性选择图5.20AD574的模拟输入电路(a)单极性输入;(b)双极性输入第5章 MCS51单片机的接口与应用 3AD574与与MCS-51单片机的接口单片机的接口图5.21AD574与MCS51单片机接口电路第5章 MCS51单片机的接口与应用 4转换程序设计举例转换程序设计举例设要求AD574进行12位转换,单片机对转换结果读入,高8位和低4位分别存于片内RAM的31H和30H单元,其转换子程序如下:ADTRANS:MOVR0,#7CH;7CH地址使AD574的CS=0、A0=0、R/C=0MOVR1,#31H;R1指向转换结果的送存单元地址MOVXR0,A;产生有效的WR信号,启
35、动AD574为12位工作方式MOVA,P1;读P1口,检测STS的状态第5章 MCS51单片机的接口与应用 WAIT:ANLA,#01HJNZWAIT ;转换未结束,等待,转换结束则进行如下操作INCR0;使CS=0、A0=0、R/C=1,为按双字节读取转换结果,并读高;字节MOVXA,R0;读取高8位转换结果MOVR1,A ;送存高8位转换结果DECR1;R1指向低4位转换结果存放单元地址INCR0INCR0;(R0)=7FH,使CS=0、A0=1、R/C=1,为读低字节MOVXA,R0;读取低4位转换结果ANLA,#0FH;只取低4位结果MOVR1,A ;送存低4位结果RET第5章 MCS
36、51单片机的接口与应用 5.4 D/A转换器接口转换器接口5.4.1 D/A 转换器概述转换器概述在设计D/A转换器与单片机接口之前,一般要根据D/A转换器的技术指标选择D/A转换器芯片。(1)分辨率。分辨率是D/A转换器对输入量变化敏感程度的描述。D/A转换器的分辨率定义为:当输入数字量发生单位数码变化时,即LSB位产生一次变化时所对应输出模拟量的变化量。对于线性D/A转换器来说,其分辨率与输入数字量输出的位数n呈现下列关系第5章 MCS51单片机的接口与应用 (2)建立时间。建立时间是描述D/A转换速率快慢的一个重要参数。一般所指的建立时间是输入数字量变化后,模拟输出量达到终值误差LSB/
37、2(最低有效位)时所经历的时间。根据建立时间的长短,把D/A转换器分成以下几挡:超高速100ns较高速100ns1s高速110s中速10100s低速100s第5章 MCS51单片机的接口与应用 (1)DAC0830系列。DAC0830系列是美国NationalSemiconductor公司生产的具有两个数据寄存器的8位D/A转换芯片。该系列产品包括DAC0830、DAC0831、DAC0832,管脚完全相容为20脚双插直列式封装。(2)DAC82。DAC82是B-B公司生产的8位能完全与微处理器兼容的D/A转换器芯片,片内带有基准电压和调节电阻。无需外接器件及微调即可与单片机8位数据线相连。芯
38、片工作电压为15V,可以直接输出单极性或双极性的电压(0+10V,10V)和电流(01.6mA,0.8mA)。第5章 MCS51单片机的接口与应用 (3)DAC1020/AD7520和DAC1220/AD7521系列。DAC1020/AD7520为10位分辨率的D/A转换集成系列芯片。DAC1020系列是美国NationalSemiconductor公司的产品,包括DAC1020、DAC1021、DAC1022,与美国AnalogDevices公司的AD7520及其后继产品AD7530、AD7533完全兼容。单电源工作,电源电压为+5+15V,电流建立时间为500ns,为16线双插直列式封装。
39、与美国AnalogDevices公司的AD7520及其后继产品AD7530、AD7533完全兼容。单电源工作,电源电压为+5+15V,电流建立时间为500ns,为16线双插直列式封装。第5章 MCS51单片机的接口与应用 (4)DAC1220/AD7521系列。DAC1220/AD7521系列为12位分辨率的D/A转换集成芯片。DAC1220系列包括DAC1220、DAC1221、DAC1222产品,与AD7521及其后继产品AD7531管脚完全兼容,为18线双插直列式封装。(5)DAC1208和DAC1230系列。DAC1208和DAC1230系列均为美国NationalSemiconduc
40、tor公司的12位分辨率产品。两者不同之处是DAC1230数据输入引脚线只有8根,而DAC1208有12根。DAC1208系列为24线双插直列式封装,而DAC1230系列为20线双插直列式封装。DAC1208系列包括DAC1208、DAC1209、DAC1210等,DAC1230系列包括DAC1230、DAC1231、DAC1232等。第5章 MCS51单片机的接口与应用 (6)DAC708/709。DAC708/709是B-B公司生产的16位微机完全兼容的D/A转换器芯片,具有双缓冲输入寄存器,片内有基准电源及电压输出放大器。数字量可并行或串行输入,模拟量可以电压或电流输出。D/A转换器与单
41、片机接口也具有硬、软件相依性。各种A/D转换器与单片机接口的方法有些差异,但就其基本连接方法,还是有共同之处:都要考虑到数据线、地址线和控制线的连接。第5章 MCS51单片机的接口与应用 就数据线来说,D/A转换器与单片机的接口要考虑到两个问题:一是位数,当高于8位的D/A转换器与8位数据总线的MCS-51单片机接口时,MCS-51单片机的数据必须分时输出,这时必须考虑数据分时传送的格式和输出电压的毛刺问题;二是D/A转换器的内部结构,当D/A转换器内部没有输入锁存器时,必须在单片机与D/A转换器之间增设锁存器或I/O接口。最常用、也是最简单的连接是8位带锁存器的D/A转换器和8位单片机的接口
42、,这时只要将单片机的数据总线直接和D/A转换器的8位数据输入端一一对应连接即可。第5章 MCS51单片机的接口与应用 就地址线来说,一般的D/A转换器只有片选信号,而没有地址线。这时单片机的地址线采用全译码或部分译码,经译码器的输出控制片选信号,也可由某一位I/O线来控制片选信号。也有少数D/A转换器有少量的地址线,用于选中片内独立的寄存器或选择输出通道(对于多通道D/A转换器),这时单片机的地址线与D/A转换器的地址线对应连接。就控制线来说,D/A转换器主要有片选信号、写信号及启动转换信号等,一般由单片机的有关引脚或译码器提供。一般来说,写信号多由单片机的-WR信号控制;启动信号常为片选信号
43、和写信号的合成。第5章 MCS51单片机的接口与应用 5.4.2 8位位D/A转换器与单片机的接口转换器与单片机的接口1DAC0830/DAC0831/ DAC0832的结构与引脚功能的结构与引脚功能图5.22DAC0830系列结构框图第5章 MCS51单片机的接口与应用 2DAC0830系列系列D/A转换器与单片机接口转换器与单片机接口图图5.23 单路单路DAC0830/DAC0831/DAC0832与单片机接口逻辑图与单片机接口逻辑图 第5章 MCS51单片机的接口与应用 设分配给DAC0830/DAC0831/DAC0832的地址为7FFFH(P2.7=0),则执行下列三条指令就可以将
44、一个数字量转换为模拟量:MOVDPTR,#7FFFH;端口地址送DPTRMOVA,#DATA;8位数字量送累加器MOVXDPTR,A;向锁存器写入数字量,同时启动转换第5章 MCS51单片机的接口与应用 图5.24单路DAC0830/DAC0831/DAC0832控制时序第5章 MCS51单片机的接口与应用 下面的程序可使DAC0830/DAC0831/DAC0832输出呈渐升骤降的电压锯齿波。START:MOVDPTR,#7FFFHMOVA,#00LOOP:MOVXDPTR,AINCAMOVR0,#data;data为延时常数DJNZR0,$ ;延时,改变data可改变锯齿波周期T值SJMP
45、LOOPo第5章 MCS51单片机的接口与应用 图5.25由软件产生的锯齿波第5章 MCS51单片机的接口与应用 图5.26两路DAC0830/DAC0831/DAC0832与单片机接口逻辑图第5章 MCS51单片机的接口与应用 如果图5.26中的模拟输出分别用于示波器的X、Y偏转,则MCS-51执行下面的程序后,可使示波器上的光点根据参数X、Y的值同步移动。MOVDPTR,#0DFFFHMOVA,#XMOVXDPTR,A;将参数X写入DAC(1)的数据输入锁存器MOVDPTR,#0BFFFHMOVA,#YMOVXDPTR,A;将参数Y写入DAC(1)的数据输入锁存器MOVDPTR,#7FFF
46、HMOVXDPTR,A;两片DAC同时启动转换,同步输出SJMP$第5章 MCS51单片机的接口与应用 3DAC0830/DAC0831/DAC0832的模拟输出方式的模拟输出方式DAC0830/DAC0831/DAC0832属于电流输出型的D/A转换器,其转换结果是与输入数字量成正比的电流。这种形式的输出不能直接带动负载,需经运算放大器放大并转换成电压输出。电压输出又根据不同的场合,需要单极性电压输出和双极性电压输出。图5.22、图5.25所示的接口电路是单极性电压输出,运放的输出电压为其中,D为用十进制表示的数字输入量。第5章 MCS51单片机的接口与应用 例如,设VREF=-5V,当D=
47、FFH=255时,这是最大的输出电压。若D=01H=1时,这是最低位LSB对应的输出电压。运放的输出电压与参考电压VREF是反极性。第5章 MCS51单片机的接口与应用 第5章 MCS51单片机的接口与应用 根据运放的理想情况,运放A2的反向输入端虚地,且I1+I2=0,而如果选择R2=R3=2R1,则可以得到VOUT2=(2VOUT1+VREF)设VREF=+5 V,当VOUT1=0 V时,VOUT2=5 V;VOUT1=2.5 V时,VOUT2=0V;VOUT1=5V时,VOUT2=5V。可见,VOUT2将VOUT1输出电压范围05V转换成双极性电压范围5+5V。因第5章 MCS51单片机
48、的接口与应用 所以第5章 MCS51单片机的接口与应用 5.4.3 高于高于8位位D/A转换器与单片机的接口转换器与单片机的接口在微机控制系统中,为了提高精度需要采用10位、12位、14位,甚至更高位数的D/A转换器芯片。高于8位的D/A转换器芯片与8位单片机接口,被转换的数据至少要分两次送出。这需要解决两个问题:一是分时传送的数据格式,二是数据不同时传送可能引起的输出模拟量而出现毛刺。后一问题可通过D/A转换芯片内部或外部增加锁存器,达到两级缓冲,使被转换数据完整进入二级缓冲器,开始转换。第5章 MCS51单片机的接口与应用 图5.288位系统的12位数据格式(a)左对齐格式;(b)右对齐格
49、式第5章 MCS51单片机的接口与应用 1DAC1208系列的结构与引脚功能系列的结构与引脚功能表5.4DAC1208系列精度精度型号0.012%DAC12080.024%DAC12090.05%DAC1210第5章 MCS51单片机的接口与应用 图5.29DAC0830系列结构框图第5章 MCS51单片机的接口与应用 2DAC1208系列系列D/A转换器与转换器与MCS-51单片机的接口单片机的接口图图5.30 DAC1208系列与单片机接口逻辑图系列与单片机接口逻辑图 第5章 MCS51单片机的接口与应用 D/A转换程序如下:MOVDPTR,#4001H;使DPTR指向8位输入锁存器MOV
50、R1,#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转换第5章 MCS51单片机的接口与应用 5.5 行程开关、晶闸管、继电器与单片机的接口行程开关、晶闸管、继电器与单片机的接口5.5.1 光电耦合器件光电耦合器件光电耦合器件是由发光二极管(发光
51、源)与受光源(如光敏三极管、光敏晶闸管或光敏集成电路等)封装在一起,构成电光电转换器件。根据受光源结构的不同,可以将光电耦合器件分为晶体管输出的光电耦合器件和晶闸管输出的光电耦合器件两大类。晶体管输出的光电耦合器件的内部结构如图5.31所示。第5章 MCS51单片机的接口与应用 图5.31晶体管光耦器件结构图第5章 MCS51单片机的接口与应用 图5.32晶闸管输出光耦内部结构第5章 MCS51单片机的接口与应用 5.5.2 行程开关、继电器触点与单片机的接口行程开关、继电器触点与单片机的接口图5.33开关、触点状态输入接口第5章 MCS51单片机的接口与应用 5.5.3 晶闸管元件与单片机接
52、口晶闸管元件与单片机接口图5.34光耦晶闸管与单片机接口示例第5章 MCS51单片机的接口与应用 为了避免误触发,在MOC304第4引脚和外部大功率双向可控硅阴极之间增加了泄放电阻R3。R2是MOC3041导通的限流电阻,避免因电流过大引起MOC3041过流而损坏。当单片机P1.1引脚输出低电平时,MOC3041内部的发光二极管导通,由于MOC3041内部带有过零触发电路,交流电压过零后将触发内部的双向可控硅而导通,结果外部大功率双向晶闸管导通,从而接通交流负载。第5章 MCS51单片机的接口与应用 5.5.4 继电器与单片机接口继电器与单片机接口图5.35继电器与单片机接口示例(a)驱动微型继电器;(b)驱动较大功率继电器第5章 MCS51单片机的接口与应用 当P1.0输出低电平时,V1导通,继电器吸合;当P1.0输出高电平时,V1截止,继电器不吸合。在继电器吸合到断开的瞬间,由于线圈中的电流不能突变,将在线圈产生下正上负的感应电压,使晶体管集电极承受很高电压,有可能损坏驱动管V1,为此在继电器线圈两端并接一个续流二极管VD2,使线圈两端的感应电压被箝位在0.7V左右。正常工作时,线圈上的电压上正下负,二极管VD2截止,对电路没有影响。当继电器驱动电压VCC大于5V时,VCC电压可能通过三极管V1串入低压回路,为此在7406和V1之间加二极管VD2。