专业课电信院单片机软件第5章_第1页
专业课电信院单片机软件第5章_第2页
专业课电信院单片机软件第5章_第3页
专业课电信院单片机软件第5章_第4页
专业课电信院单片机软件第5章_第5页
已阅读5页,还剩106页未读 继续免费阅读

下载本文档

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

文档简介

第6章MCS–51单片机的接口与应用6.1按键、键盘及其接口6.2显示及显示器接口6.3A/D转换器接口6.4D/A转换器接口6.5行程开关、晶闸管、继电器与单片机的接口6.1.1按键、键盘分类及硬件结构(1)结构划分

6.1按键、键盘及其接口编码键盘非编码键盘(2)非编码键盘的划分:

独立按键键盘行列式按键键盘5.1按键、键盘及其接口6.1.2键输入过程与软件结构图6.1MCS–51单片机键输入过程6.1.3键盘接口和键输入软件中应解决的几个问题

1.消除键抖动键稳定键按下前沿抖动前沿抖动图6.2键合断时的电压抖动图6.3消除键抖动电路2)软件消抖2.串键保护同时有多个键按下时:①不处理,直到只有一个键按下时。②都缓冲,处理组合键3.键编码及键值(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线的状态作相应处理。键码可按下式形成:键码=行首键码+列号图6.4行列式键盘的编码与键值(a)二进制组合编码;(b)顺序排列编码4.键盘的监测方法对于计算机应用系统,键盘扫描只是CPU工作的一部分,键盘处理只是在有键按下时才有意义。对是否有键按下的信息输入方式有中断方式与查询方式两种。6.1.4独立式按键1.独立式按键接口结构图6.5独立式按键的接口电路示意图(a)中断方式;(b)查询方式2.独立式按键的软件结构下面是查询方式的键盘程序。K0~K7为功能程序入口地址标号,其地址间隔应能容纳JMP指令字节,PROM0~PROM7分别为每个按键的功能程序。设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:AJMPPROM1

K7:AJIMPPROM7;入口地址表…PROM0:………;0号键功能程序

………JMPSTART ;0号键功能程序执行完返回PROM1:………;0号键功能程序

………JMPSTART ;1号键功能程序执行完返回

………;7号键功能程序PROM7:………JMPSTART ;7号键功能程序执行完返回…6.1.5行列式键盘行列式键盘又叫矩阵式键盘。用I/O口线组成行、列结构,按键设置在行列的交点上。例如4×4的行列结构可组成16个键的键盘。因此,在按键数量较多时,可以节省I/O口线。

1.行列式键盘的接口行列式键盘的接口方法有许多,例如直接接口于单片机的I/O口上;利用扩展的并行I/O接口;用串行口扩展并行I/O口接口;利用一种可编程的键盘、显示接口芯片8279进行接口等。其中,利用扩展的并行I/O接口方法方便灵活,在单片机应用系统中比较常用。图6.68155扩展I/O口组成的行列式键盘2.键盘工作原理按键设置在行、列线的交点上,行、列线分别连接到按键开关的两端。行线通过上拉电阻接+5V,被箝位在高电平状态。对键盘的工作过程可分两步:第一步是CPU首先检测键盘上是否有键按下;第二步是再识别是哪一个键按下。检测键盘上有无键按下可采用查询工作方式、定时扫描工作方式和中断工作方式。1)查询工作方式键盘中有无键按下是由列线送入全扫描字,读入行线状态来判别的。其方法是:PA口输出00H,即所有列线置成低电平,然后将行线电平状态读入累加器A中。如果有键按下,总会有一根行线电平被拉至低电平,从而使行输入状态不全为"1"。键盘中哪一个键按下是由列线逐列置低电平后,检查行输入状态,称为逐列扫描。其方法是:从PA0开始,依次输出"0",置对应的列线为低电平,然后从PC口读入行线状态,如果全为"1",则所按下之键不在此列;如果不全为"1",则所按下的键必在此列,而且是与0电平行线相交的交点上的那个键。为求取键码,在逐列扫描时,可用计数器记录下当前扫描列的列号,然后用行线值为"0"的行首键码加列号的办法计算。有键按下否调用6ms延时子程序开始调用12ms延时子程序有键按下否判断闭合键,键码入栈保存闭合键释放否键码

A返回YYYNNN图6.7键盘扫描子程序流程框图键盘扫描子程序如下:KEY1:ACALLKS1 ;调用判断有无键按下子程序

JNZLK1 ;有键按下时,(A)≠0转消抖延时

AJMPKEY1 ;无键按下返回

LK1:ACALLTM12S;调12ms延时子程序

ACALLKS1 ;查有无键按下,若有则真有键按下

JNZLK2 ;键(A)≠0逐列扫描

AJMPKEY1 ;不是真有键按下,返回

LK2;MOVR2,#0FEH ;初始列扫描字(0列)送入R2MOVR4,#00H ;初始列(0列)号送入R4LK4:MOVDPTR,#7F01H ;DPTR指向8155PA口

MOVA,R2 ;列扫描字送至8155PA口

MOVX@DPTR,AINCDPTR ;DPTR指向8155PC口

INCDPTRMOVXA,@DPTR ;从8155PC口读入行状态

JBACC.0,LONE ;查第0行无键按下,转查第1行

MOVA,#00H ;第0行有键按下,行首键码#00H→AAJMPLKP ;转求键码

LONE:JBACC.1,LTWO ;查第1行无键按下,转查第2行

MOVA,#08H ;第1行有键按下,行首键码#08H→AAJMPLKP ;转求键码LTWO:JBACC.2,LTHR;查第2行无键按下,转查第3行

MOVA,#10H;第2行有键按下,行首键码#10H→AAJMPLKP ;转求键码LTHR:JBACC.3,NEXT;查第3行无键按下,转该查下一列

MOVA,#18H ;第3行有键按下,行首键码#18H→ALKP:ADDA,R4 ;求键码,键码=行首键码+列号

PUSHACC ;键码进栈保护LK3:ACALLKS1 ;等待键释放

JNZLK3 ;键未释放,等待

POPACC ;键释放,键码→ARET ;键扫描结束,出口状态(A)=键码NEXT:INCR4 ;准备扫描下一列,列号加1MOVA,R2 ;取列号送累加器AJNBACC.7,KEND;判断8列扫描否?扫描完返回

RLA ;扫描字左移一位,变为下一列扫描字MOVR2,A ;扫描字送入R2AJMPLK4 ;转下一列扫描KEND:AJMPKEY1 KS1:MOVDPTR,#7F01H ;DPTR指向8155PA口

MOVA,#00H ;全扫描字→AMOVX@DPTR,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,TMRET2)定时扫描工作方式键盘上有键闭合否开始KM=1KP=1返回1→KM0→

KM0→

KP图6.8定时扫描方式程序框图查询键码1→KPNNNYYY3)中断工作方式计算机应用系统工作时,并不经常需要键输入。但无论是查询工作方式还是定时扫描工作方式,CPU经常处于空扫描状态。为了提高CPU的效率,可采用中断工作方式。这种工作方式是当键盘上有键按下时,向CPU发一个中断请求信号,CPU响应中断后,在中断服务程序中扫描键盘,执行键功能程序。中断请求信号的接口电路可参考图5.5(a)。中断服务程序中应完成键识别、消除抖动、排除多次执行键功能操作等功能,可参考查询工作方式键盘程序。6.2显示及显示器接口6.2.1LED显示器结构与原理

图6.9七段显示块管脚与结构图表6.1七段LED的段选码显示字符共阴极段选码共阳极段选码显示字符共阴极段选码共阳极段选码03FHC0HC39HC6H106HF9HD5EHA1H25BHA4HE79H86H34FHB0HF71H8EH466H99HP73H8CH56DH92HU3EHC1H67DH82HΓ31HCEH707HF8Hy6EH91H87FH80H8.FFH00H96FH90H“灭”00HFFHA77H88HB7CH83H

6.2.2LED显示器与显示方式图6.10N位LED显示器1.LED静态显示方式LED工作在静态显示方式下,共阴极接地或共阳极接+5V;每一位的段选线(a~g、dp)与一个8位并行I/O口相连,如图5.10所示。该图表示了一个4位静态LED显示器电路,显示器的每一位可独立显示,只要在该位的段选线上保持段选码电平,该位就能保持相应的显示字符。由于每一位由一个8位输出口控制段选码,故在同一时刻各位可以显示不同的字符。

N位静态显示器要求有N×8根I/O口线,占用I/O口线较多。故在位数较多时往往采用动态显示方式。2.LED动态显示方式图6.118位LED动态显示器电路6.2.3LED显示器接口1.硬件译码显示器接口图6.12MC14495内部逻辑与引脚图图6.13使用MC14495的多位LED静态显示接口2.软件译码显示器接口图5.14通过扩展8155I/O口控制的8位LED动态显示接口3.动态显示程序设计DISPLAY:MOVA,#00000011B;8155初始化

MOVDPTR,#7F00H ;使DPTR指向8155控制寄存器端口

MOVX@DPTR,AMOVR0,#78H ;动态显示初始化,使R0指向缓冲区首址

MOVR3,#7FH ;首位位选字送R3MOVA,R3 ;LD0:MOVDPTR,#7F01H ;使DPTR指向PA口

MOVX@DPTR,A ;选通显示器低位(最右端一位)INCDPTR ;使DPTR指向PB口MOVA,@R0 ;读要显示数

ADDA,#0DH ;调整距段选码表首的偏移量

MOVCA,@A+PC ;查表取得段选码

MOVX@DPTR,A ;段选码从PB口输出

ACALLDL1 ;调用1ms延时子程序

INCR0 ;指向缓冲区下一单元

MOVA,R3 ;位选码送累加器AJNBACC.0,LD1 ;判断8位是否显示完毕,显示完返回

RRA ;未显示完,把位选字变为下一位选字

MOVR3,A ;修改后的位选字送R3AJMPLD0 ;循环实现按位序依次显示LD1:RETDSEG:DB3FH,06H,5BH;4FH,66H,6DH,7DH ;段码表

DB07H,7FH,6FH,77H,7CH,39H,5EH,79HDL1:MOVR7,#02H ;延时子程序DL:MOVR6,#0FFHDL0:DJNZR6,DL6DJNZR7,DLRET5.2.4键盘、显示器组合接口1.键盘、显示器组合接口电路

图5.15是一个采用8155并行扩展口构成的键盘、显示器组合接口电路。图中设置了32个键。如果多使用PC口线,可以增加按键,最多可达8×8=64个键。可根据需要进行设置。

LED显示器采用共阴极。段选码由8155PB口提供,位选码由PA口提供。键盘的列输入由PA口提供,与显示器的位选输入公用,行输入由PC0~PC3提供。显然,因为键盘与显示器公用了PA口,比单独接口节省了一个I/O口。图5.158155扩展I/O口的键盘、显示器组合接口2.软件设计

LED采用动态显示、软件译码,键盘采用逐列扫描查询工作方式。由于键盘与显示做成一个接口电路,因此在软件中合并考虑键盘查询与动态显示,键盘消抖的延时子程序可用显示子程序替代。相应的程序如下:KD1:MOVA,#03H ;初始化8155PA、PB口为基 本输出,PC口为输入

MOVDPTR,#7F00HMOVX@DPTR,AKEY1:ACALLKS1JNZLK1ACALLDISPLAY;调用显示子程序实现延时,防止抖动引起按键拒认

AJMPKEY1;延时后再检测键盘

LK1:ACALLDISPLAY;调用两次显示实现延时,防止抖动引起误处理

ACALLDISPLAYACALLKS1JNZLK2ACALLDISPLAYAJMPKEY1LK2:MOVR2,#0FEHMOVR4,#00HLK4:MOVDPTR,#7F01HMOVA,R2MOVX@DPTR,AINCDPTRINCDPTRMOVXA,@DPTRJBACC.0,LONEMOVA,#00HAJMPLKPLONE:JBACC.1,LTWO MOVA,#08H AJMPLKPLTWO:JBACC.2,LTHR MOVA,#10H AJMPLKPLHR: JBACC.3,NEXT MOVA,#18HLKP:ADDA,R4PUSHACCLK3:ACALLDISPLAYACALLKS1JNZLK3POPACCRETNEXT:INCR4MOVA,R2JNBACC.7,KENDRLAMOVR2,AAJMPLK4KEND:AJMPKEY1KS1: MOVDPTR,#7F01H MOVA,#00H MOVX@DPTR,A INCDPTR INCDPTR MOVXA,@DPTR CPLA ANLA,#0FH RETDISPLAY:见5.2.3节8155扩展动态扫描子程序。6.3A/D转换器接口作为嵌入式微控制器的单片机,在工业生产、食品加工、医疗器件、家用电器等领域得到越来越多的应用。作为嵌入式系统的核心,单片机所要处理的信息不单纯是数字信号,还要处理像压力、流量、液位、温度等物理参数,而这些物理量也称为“非电量”。这些“非电量”只能通过传感器才能将其转换为像电流、电压这些“模拟量”。很明显作为数字电路的微处理器(CPU)是不能处理这些模拟信号,必须使用一种器件将连续变化的模拟量转换为离散的数字量,这样CPU就可以处理这些经转换的物理量了。我们称这种转换器件称之为模拟/数字转换电路ADC。ADC模块在嵌入式系统中的作用示意图多路电子开关温度传感器组放大器外部ADC模块基准电压微控制器压缩机控制电路风扇控制电路冰箱门检测及报警多点温度显示智能型多功能、多温区电冰箱VRVX返回6.3A/D转换器接口6.3.1A/D转换器概述(一)A/D转换器的主要技术指标。

1)量化间隔:量化间隔可用下式表示。其中n为A/D转换器的位数。

10V,12位精度A/D转换器,量化间隔==2.4mv2)量化误差量化误差有两种表示方法:一种是绝对误差,另一种是相对误差。量化误差(二)A/D转换器的类型。

(1)按转换原理可分为逐次比较式、双重积分式、量化反馈式和并行式A/D转换器;(2)按其分辨率可分为8~16位的A/D转换器芯片。

目前,在工业生产中主要使用着两种ADC:逐次比较型:转换速度快,但抗干扰性差。双积分型:抗干扰性好,但转换速度慢。逐次比较型ADC工作原理控制电路N位D/A转换网络N位寄存器SAR模拟电压输入VXA/D转换数据输出启动时钟状态+-比较器VXVS1,N位寄存器首先形成10000000;经DAC转换后送比较器与VX相比较;2,若VX>VS时,比较器通知N位寄存器保留最高位“1”。若VX<VS时,比较器通过控制器将最高位“1”清除(因为VX小于量程的一半127)。3,N位寄存器对次高位置1,再重复上面的过程,确定该位是“1”或“0”。4,经过8次比较确定了N位计数器从D7~D0的8位数据。整个过程由输入一个“启动”信号开始,到“状态”端输出一个标志信号结束。

逐次逼近式转换器的常用产品有ADC0801~ADC0805型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转换器与单片机接口具有硬、软件相依性。(1)A/D转换器与单片机的接口主要考虑的是数字量输出线的连接自带缓冲、不带缓冲(2)ADC启动方式

脉冲启动、电平启动(3)转换结束信号处理方法

查询方式、中断方式(4)时钟的连接内部时钟、外部时钟6.3.2A/D转换器ADC0809与单片机的接口1.ADC0809芯片简介图6.16ADC0809芯片的内部逻辑结构与引脚图表6.2ADC0809通道地址选择表

ADDCADDBADDA选通的通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7图5.17ADC0809转换工作时序2.ADC0809与单片机接口

图5.18ADC0809与8031的接口连接图3.A/D转换应用程序举例设图6.18接口电路用于一个8路模拟量输入的巡回检测系统,使用中断方式采样数据,把采样转换所得的数字量按序存于片内RAM的30H~37H单元中。采样完一遍后停止采集。其数据采集的初始化程序和中断服务程序如下:初始化程序:MOVR0,#30H ;设立数据存储区指针

MOVR2,#08H ;设置8路采样计数值

SETBIT0 ;设置外部中断0为边沿触发方式

SETBEA ;CPU开放中断 SETBEX0 ;允许外部中断0中断

MOVDPTR,#FEF8H;送入口地址并指向IN0LOOP:MOVX@DPTR,A ;启动A/D转换,A的值无意义

HERE:SJMPHERE ;等待中断中断服务程序:

MOVXA,@DPTR ;读取转换后的数字量

MOV@R0,A ;存入片内RAM单元

INCDPTR ;指向下一模拟通道

INCR0 ;指向下一个数据存储单元

DJNZR2,INT0 ;8路未转换完,则继续

CLREA ;已转换完,则关中断

CLREX0 ;禁止外部中断0中断

RETI ;中断返回INT0:MOVX@DPTR,A ;再次启动A/D转换

RETI ;中断返回6.3.3单片机与A/D转换器AD574的接口

1.AD574芯片简介

AD574是一种快速的12位逐次比较式A/D转换芯片,片内有两片双极型电路组成的28脚双插直列式芯片,无需外接元器件就可独立完成A/D转换功能。内部设有三态数据输出锁存器。一次转换时间为25μs。芯片引脚如图5.19所示。图5.19AD574的引脚图 AD574的引脚定义如下:

REOUT:内部参考电源输出(+10V);

REFIN:参考电压输入;

BIP:偏置电压输入;

10VIN:±5V或0~10V模拟输入;

20VIN:±10V或0~20V模拟输入;

DB0~DB11数字量输出,高半字节为DB8~DB11,低字节为DB0~DB7;STS:工作状态指示端。STS=1时表示转换器正处于转换状态,STS返回到低电平时,表示转换完毕。该信号可处理器作为中断或查询信号用;

12/-8:变换输出字长选择控制端,在输入为高电平时,变换字长输出为12位,在低电平时,按8位输出;

CS、CE:片选信号。当CS=0、CE=1同时满足时,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.3AD574控制信号状态表

CECSR/C12/8A0功能说明100×012位转换100×18位转换101+5V×12位输出101地0高8位输出101地1低4位输出2.AD574模拟输入电路的极性选择图5.20AD574的模拟输入电路(a)单极性输入;(b)双极性输入3.AD574与MCS-51单片机的接口图6.21AD574与MCS–51单片机接口电路4.转换程序设计举例设要求AD574进行12位转换,单片机对转换结果读入,高8位和低4位分别存于片内RAM的31H和30H单元,其转换子程序如下:ADTRANS:MOVR0,#7CH ;7CH地址使AD574的CS=0、A0=0、R/C=0MOVR1,#31H ;R1指向转换结果的送存单元地址

MOVX@R0,A ;产生有效的WR信号,启动AD574为

12位工作方式

MOVA,P1 ;读P1口,检测STS的状态WAIT:ANLA,#01HJNZWAIT ;转换未结束,等待,转换结束则进行如下操作

INCR0 ;使CS=0、A0=0、R/C=1,为按双字节读取转换 结果,并读高 ;字节

MOVXA,@R0;读取高8位转换结果

MOV@R1,A ;送存高8位转换结果

DECR1 ;R1指向低4位转换结果存放单元地址

INCR0INCR0 ;(R0)=7FH,使CS=0、A0=1、R/C=1,为读低字节

MOVXA,@R0;读取低4位转换结果

ANLA,#0FH;只取低4位结果

MOV@R1,A ;送存低4位结果

RET6.4D/A转换器接口6.4.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

较高速100ns~1μs

高速1~10μs

中速10~100μs

低速≥100μs(1)DAC0830系列。DAC0830系列是美国NationalSemiconductor公司生产的具有两个数据寄存器的8位D/A转换芯片。该系列产品包括DAC0830、DAC0831、DAC0832,管脚完全相容为20脚双插直列式封装。

(2)DAC82。DAC82是B-B公司生产的8位能完全与微处理器兼容的D/A转换器芯片,片内带有基准电压和调节电阻。无需外接器件及微调即可与单片机8位数据线相连。芯片工作电压为±15V,可以直接输出单极性或双极性的电压(0~+10V,±10V)和电流(0~1.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转换器与单片机的接口要考虑到两个问题:

1)位数:当高于8位的D/A转换器与8位数据总线的MCS-51单片机接口时,MCS-51单片机的数据必须分时输出,这时必须考虑数据分时传送的格式和输出电压的"毛刺"问题;2)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信号控制;启动信号常为片选信号和写信号的合成。6.4.28位D/A转换器与单片机的接口1.DAC0830/DAC0831/DAC0832的结构与引脚功能图6.22DAC0830系列结构框图工作方式(1)直通工作方式:

CS、WR1、WR2、XFER直接接地。

8位数字量一旦到达立即开始D/A转换并输出。(2)单缓冲方式两锁存器中任一个处于直通状态,一般让DAC锁存器处于直通状态。适用于无多路通道同步输出。(3)双缓冲方式两个锁存器处于受控状态,可实现多个模拟输出通道同时进行转换,同步输出。2.DAC0830系列D/A转换器与单片机接口图5.23单路DAC0830/DAC0831/DAC0832与单片机接口逻辑图

设分配给DAC0830/DAC0831/DAC0832的地址为7FFFH(P2.7=0),则执行下列三条指令就可以将一个数字量转换为模拟量:MOVDPTR,#7FFFH ;端口地址送DPTRMOVA,#DATA ;8位数字量送累加器MOVX@DPTR,A ;向锁存器写入数字量,同时启动转换图5.24单路DAC0830/DAC0831/DAC0832控制时序

下面的程序可使DAC0830/DAC0831/DAC0832输出呈渐升骤降的电压锯齿波。START:MOVDPTR,#7FFFH MOVA,#00LOOP:MOVX@DPTR,A INCA MOVR0,#data ;data为延时常数

DJNZR0,$ ;延时,改变data可改变锯齿波周期T值

SJMPLOOP o图5.25由软件产生的锯齿波图5.26两路DAC0830/DAC0831/DAC0832与单片机接口逻辑图

如果图5.26中的模拟输出分别用于示波器的X、Y偏转,则MCS-51执行下面的程序后,可使示波器上的光点根据参数X、Y的值同步移动。MOVDPTR,#0DFFFHMOVA,#XMOVX@DPTR,A;将参数X写入DAC(1)的数据输入锁存器MOVDPTR,#0BFFFHMOVA,#YMOVX@DPTR,A;将参数Y写入DAC(1)的数据输入锁存器MOVDPTR,#7FFFHMOVX@DPTR,A;两片DAC同时启动转换,同步输出SJMP$3.DAC0830/DAC0831/DAC0832的模拟输出方式

DAC0830/DAC0831/DAC0832属于电流输出型的D/A转换器,其转换结果是与输入数字量成正比的电流。这种形式的输出不能直接带动负载,需经运算放大器放大并转换成电压输出。电压输出又根据不同的场合,需要单极性电压输出和双极性电压输出。图5.22、图5.25所示的接口电路是单极性电压输出,运放的输出电压为其中,D为用十进制表示的数字输入量。例如,设VREF=-5V,当D=FFH=255时,这是最大的输出电压。若D=01H=1时,这是最低位LSB对应的输出电压。运放的输出电压与参考电压VREF是反极性。根据运放的理想情况,运放A2的反向输入端"虚地",且I1+I2=0,而如果选择R2=R3=2R1,则可以得到VOUT2=–(2VOUT1+VREF)

设VREF=+5V,当

温馨提示

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

评论

0/150

提交评论