510 likes | 670 Views
单片机原理与应用. 四川文理学院 Email : ycfwsm@gmail.com 2014年9月6日. 第 5 章 MCS-51 单片机的输入 / 输出通道接口. 主要内容: 输入 / 输出通道的组成与配置, A/D 、 D/A 转换器及其接口技术。通过本章的学习,使读者了解输入 / 输出通道设计的基本原理和方法,掌握常用 A/D 、 D/A 芯片及其与 MCS-51 单片机的接口电路与程序设计。重点和难点在于不同方式的 A/D 、 D/A 芯片与 MCS-51 的接口及其程序设计。. 5.1 输入 / 输出通道概述.
E N D
单片机原理与应用 四川文理学院 Email:ycfwsm@gmail.com 2014年9月6日
第5章MCS-51单片机的输入/输出通道接口 主要内容: 输入/输出通道的组成与配置,A/D、D/A转换器及其接口技术。通过本章的学习,使读者了解输入/输出通道设计的基本原理和方法,掌握常用A/D、D/A芯片及其与MCS-51单片机的接口电路与程序设计。重点和难点在于不同方式的A/D、D/A芯片与MCS-51的接口及其程序设计。
5.1 输入/输出通道概述 输入通道(前向通道):被测对象与单片机联系的信号通道。包括传感器或敏感元件、通道结构、信号调节、A/D转换、电源的配置、抗干扰等。 输出通道(后向通道):单片机与被控对象联系的信号通道。包括功率驱动、干扰的抑制、D/A转换等。 5.1.1 传感器 传感器:传感器是测量系统中的一种前端部件,它将各种输入变量转换成可供测量的信号。 传感器的分类: (1)按传感器的用途可以将传感器分为:压敏和力敏传感器、位置传感器、液面传感器、能耗传感器、速度传感器、热敏传感器、加速度传感器、射线辐射传感器、振动传感器、湿敏传感器、磁敏传感器、气敏传感器、真空度传感器和生物传感器等。 (2)按传感器输出信号标准可将传感器分为: 模拟传感器、数字传感器、开关传感器等。
传感器的发展方向: 传感器已经成为现代信息技术系统三大支柱之一,在工业、农业、航空航天、军事国防等领域得到了日益广泛的应用。其发展方向主要有以下几个方面: (1)利用新的物理现象、化学反应、生物效应设计传感器。 (2)引入数据融合技术。 (3)使用新型材料,向微功耗、集成化及无源化发展。 (4)采用新的加工技术。 (5)向微型化发展。 (6)向高可靠性、宽温度范围发展等。
5.1.2 单片机应用系统的输入/输出通道 过程I/O通道:单片机系统和被控对象之间信息的交互通道(输入通道、输出通道)称为过程I/O通道,过程I/O通道的一般结构如下图所示。
1.输入通道 特点: (1)要靠近拾取对象采集信息; (2)传感器、变送器的性能和工作环境因素严重影响通道的方案设计; (3)一般是模拟、数字等混杂电路; (4)常需要放大电路; (5)抗干扰设计非常重要。 输入通道的结构类型: 输入通道结构形式取决于被测对象的环境、输出信号的类型、数量、大小等。其结构如下页图所示。
2.输出通道 特点: (1)小信号输出,大功率控制; (2)输出伺服驱动控制信号; (3)电磁和机械干扰较为严重。 通道结构: 在输出通道中,单片机完成控制处理后的输出,总是以数字信号或模拟信号的形式,通过I/O口或者数据总线传送给被控对象。输出通道的结构如下页图所示。
3.信号处理电路 输入通道中,信号处理的任务是可由硬件实现能够完成小信号放大,信号变换,滤波、零点校正、线性化处理、温度补偿、误差修正和量程切换等任务。可由硬件实现,有些也可由软件实现。
(1)开关量输入 被控对象的一些开关状态可以经开关量输入通道输入到单片机系统,这些开关信号根据实际情况需要经过电平匹配、电气隔离或互感器后才能够通过单片机接口,接入到单片机系统。 (2)小信号放大技术 输入通道中,对小信号需要经过测量放大器、可编程增益放大器及带有放大器的小信号双线发送器等电路进行放大调节。 (3)隔离放大技术 在某些要求输入和输出电路彼此隔离的情况下,必须使用隔离放大器。常用隔离放大器有变压器耦合隔离放大器和光耦合隔离放大器两种。
5.2 D/A转换器及接口技术 D/A转换器(Digit to Analog Converter):将数字量转换成模拟量的器件称为D/A转换器,通常用DAC表示。 D/A转换接口器设计中主要考虑的问题:D/A转换芯片的选择、数字量的码输入、精度、输出模拟量的类型与范围、转换时间、与CPU的接口方式等。 5.2.1 D/A转换器的性能指标 (1)分辨率:指D/A转换器能分辨的最小输出模拟增量,即相邻两个二进制码对应的输出电压之差称为D/A转换器的分辨率。可用最低位(LSB)表示。如,n位D/A转换器的分辨率为1/2n。
(2)精度:精度是指D/A转换器的实际输出与理论值之间的误差,它是以满量程VFS的百分数或最低有效位(LSB)的分数形式表示。(2)精度:精度是指D/A转换器的实际输出与理论值之间的误差,它是以满量程VFS的百分数或最低有效位(LSB)的分数形式表示。 (3)线性误差:D/A的实际转换特性(各数字输入值所对应的各模拟输出值之间的连线)与理想的转换特性(始、终点连线)之间是有偏差的,这个偏差就是D/A的线性误差。即两个相邻的数字码所对应的模拟输出值(之差)与一个LSB所对应的模拟值之差。常以LSB的分数形式表示。 (4)转换时间TS(建立时间):从D/A转换器输入的数字量发生变化开始,到其输出模拟量达到相应的稳定值所需要的时间称为转换时间。 (5)偏移量误差:偏移量误差是指输入数字量为零时,输出模拟量对零的偏移值。
5.2.2 D/A转换器的分类 • 按输出形式分类:电压输出型和电流输出型。 • 按是否含有锁存器分类:内部无锁存器和内部有锁存器。 • 按能否作乘法运算分类:乘算型和非乘算型。 • 按输入数字量方式分类:并行总线D/A转换器和串行总线D/A转换器。 • 按转换时间分类: • 超高速D/A(TS<100ns)、高速D/A(TS为100ns~ 10μs)、中速D/A(TS为10μs~100μs)、低速D/A(TS>100μs)等。
5.2.3 D/A转换器的接口 1.DAC0832的特点与引脚 (1)DAC0832的特点 DAC0832是NS公司生产的DAC0830系列(DAC0830/32)产品中的一种, 8位CMOS数模转换芯片,其特点如下: ① 8位并行D/A转换; ② 片内二级数据锁存,提供数据输入双缓冲、单缓冲、直通三种工作方式; ③ 电流输出型芯片(需外接运放) ; ④ DIP20封装,CMOS低功耗器件,单电源(+5 V~+15 V,典型值+5 V)供电; ⑤具有双缓冲控制输出; ⑥参考电压为-10~+10V ⑦与MCS-51连接方便。
DAC0830系列均为DIP20封装,且管脚完全兼容,DAC0832的引脚如下图所示。引脚功能如下:DAC0830系列均为DIP20封装,且管脚完全兼容,DAC0832的引脚如下图所示。引脚功能如下: D0—D7:8位数字量输入端 : 片选端,低有效 ILE : 数据锁存允许 : 写控制信号1 : 写控制信号2 : 数据传送控制信号 Iout1: 电流输出端1 Iout2: 电流输出端2 RFB : 内置反馈电阻端 VREF : 参考电压源(-10 V~+10 V) DGND: 数字量地 AGND: 模拟量地 Vcc: +5 ~ +15V单电源供电端
2.电压输出方法 DAC0832需要电压输出时,可以简单地使用一个运算放大器连接成单极性输出形式。如右图所示。 输出电压VOUT= ×(-VREF) 3.单缓冲方式接口 单缓冲方式是指DAC0832内部的两个数据缓冲器有一个处于直通方式,另一个处于受单片机控制的方式。如下页图所示。ILE接+5V,片选信号及数据传输信号都与地址选择线P2.7相连,地址为7FFFH,两级寄存器的写信号都由CPU的端控制。数字量可以直接从MCS-51的P0口送入DAC0832。当地址选择线选择好DAC0832后,只要输出控制信号,DAC0832就能一次完成数字量的输入锁存和D/A转换输出。
执行下列几条指令就可以完成一次D/A转换: MOV DPTR, #7FFFH ; 地址指向DAC0832 MOV A, #DATA ; 待转换的数字量DATA送累加器A MOVX @DPTR, A ; 数字量送P2.7指向的地址,有效时完成一次D/A输入 [例题] 利用上图所示电路,使用DAC0832作波形发生器产生三角波。
解:在上页图中,放大器LM324的输出端VOUT直接反馈到RFB,所以该电路只能产生单极性的模拟电压。解:在上页图中,放大器LM324的输出端VOUT直接反馈到RFB,所以该电路只能产生单极性的模拟电压。 产生三角波的程序如下: ORG 0100H START: MOV DPTR, #7FFFH ; 地址指向DAC0832 MOV A, #00H ; 三角波起始电压为0 UP: MOVX @DPTR, A ; 数字量送DAC0832转换 INC A ; 三角波上升边 JNZ UP ; 未到最高点0FFH,返回UP继续 DOWN: DEC A ; 到三角波最高值,开始下降边 MOVX @DPTR, A ; 数字量送DAC0832转换 JNZ DOWN ; 未到最低点0,返回DOWN继续 SJMP UP ; 返回上升边 END 数字量从0开始逐次加1,模拟量与之成正比,当(A)=0FFH时,则逐次减1,减至(A)=0后,再从0开始加1,如此循环重复上述过程,输出就是一个三角波。
4.双缓冲方式 对于多路D/A转换,若要求同步进行D/A转换输出时,则必须采用双缓冲方式。 [例题]假设某一分时控制系统,由一台单片机控制并行的两台设备,连接电路如下图所示,两台设备的模拟控制信号分别由两片DAC0832输出,要求两片DAC0832同步输出。
解:如上页图所示,利用DAC0832双缓冲的原理,对不同端口地址的访问具有不同的操作功能,具体功能如下表所示。解:如上页图所示,利用DAC0832双缓冲的原理,对不同端口地址的访问具有不同的操作功能,具体功能如下表所示。 实现同步输出的操作步骤为: ① 将1#待转换数据由数据总线 1#DAC0832的第一级锁存(写7FFFH口); ② 将0#待转换数据由数据总线 0#DAC0832的第一级锁存(写0DFFFH口); ③ 将1#、0#DAC0832的第一级锁存器中的数据 各自的第二级锁存,同时开始D/A转换(写0BFFFH),周而复始。
程序如下: ORG 0100H START: MOV DPTR, #7FFFH ; 数据指针指向1#的第一级锁存器 MOV A, #DATA1 ; 取第一个待转换数据DATA1 MOVX @DPTR, A ; 送入第一级缓冲器 MOV DPTR, #0DFFFH ; 数据指针指向0#的第一级锁存器 MOV A, #DATA0 ; 取第二个待转换数据DATA0 MOVX @DPTR, A ; 送入第一级缓冲器 MOV DPTR, #0BFFFH ; 数据指针指向两个转换器的第二 级缓冲地址 MOVX @DPTR, A ; 1#和0#数据同时由第一级向第二 级锁存传送,并开始转换 RET END
5.3 A/D转换器及接口技术 A/D转换器(Analog To Digit Converter):将模拟量转换为与之成比例的数字量的器件称为A/D转换器,常用ADC表示。 5.3.1 A/D转换器的性能指标 (1)分辨率:分辨率是指输出数字量变化一个相邻数码所需输入模拟电压的变化量。A/D转换器的分辨率定义为满刻度电压与2n之比值,其中n为ADC的位数。 例如:具有12位分辨率的ADC能分辨出满刻度的(1/2)12或满刻度的0.0245%。一个10V满刻度的12位ADC能够分辨输入电压变化的最小值为2.4mV。而 位的A/D转换器(满字为1999),其分辨率为满刻度的1/1999×100%=0.05%。
(2)转换速率与转换时间:转换速率是指A/D转换器每秒钟转换的次数。转换时间是指完成一次A/D转换所需的时间(包括稳定时间)。转换时间是转换速率的倒数。(2)转换速率与转换时间:转换速率是指A/D转换器每秒钟转换的次数。转换时间是指完成一次A/D转换所需的时间(包括稳定时间)。转换时间是转换速率的倒数。 (3)量化误差:有限分辨率A/D的阶梯状转移特性曲线与理想无限分辨率A/D的转移特性曲线(直线)之间的最大偏差称为量化误差。通常是1个或半个最小数字量的模拟变化量,表示为1LSB,1/2LSB。 (4)线性度:实际A/D转换器的转移函数与理想直线的最大偏差。不包括量化误差、偏移误差(输入信号为零时,输出信号不为零的值)和满刻度误差(满度输出时,对应的输入信号与理想输入信号值之差)三种误差。 (5)量程:量程是指A/D能够转换的电压范围,如0~5V,-10~+10V等。 (6) 其他指标:内部/外部电压基准、失调(零点)温度系数、增益温度系数,以及电源电压变化抑制比等性能指标。
5.3.3 A/D转换器的接口 1.逐次逼近式A/D转换器(SAR) 组成:由结果寄存器、比较器和控制逻辑等部件组成。 原理:采用对分搜索逐位比较的方法逐步逼近,利用数字量试探地进行D/A转换、再比较判断,从而实现A/D转换。 将D/A转换器的输出从二进制数据的最高位起,依次逐位置1,与待转换的模拟量比较,若前者小于后者,该位置1并保留下来,若前者大于后者,该位清0;然后再照此比较下一位,……直至比完最低位。最后得到的结果,即A/D转换的值。 特点:转换速度较快(比较次数等于A/D的位数),通常在几S至几百S数量级;被转换的模拟量若频率很高(变化较快)则要加采样保持电路;被转换的模拟量若幅度过小(信号微弱)则需要加信号处理电路。
(1)ADC0809的特点 ADC0809是NS(National Semiconductor,美国国家半导体)公司生产的逐次逼近型A/D转换器。其特点如下: ① 分辨率为8位,误差1LSB ; ② CMOS低功耗器件; ③ 转换时间为100 µs(当外部时钟输入频率fc = 640 kHz ) ; ④ 很容易与微处理器连接; ⑤ 单一电源+5V,采用单一电源+5V供电时量程为0~5V; ⑥无需零位或满量程调整,使用5V或采用经调整模拟间距的电压基准工作; ⑦ 带有锁存控制逻辑的8通道多路输入转换开关; ⑧ DIP28封装; ⑨带锁存器的三态数据输出。 ⑩ 转换结果读取方式有延时读数、查询EOC=1、EOC申请中断。
(2)ADC0809引脚功能 IN0—IN7:8通道模拟量输入端 2-8—2-1: 8位数字量输出端 C、B、A:接地址锁存器的低三位地址 ALE: 地址锁存允许控制信号 START:清0内寄存器,启动转换 OE: 允许读A/D结果,高有效 CLK:时钟输入端,范围为10kHz~1200kHz,典型值640kHz EOC:转换结束时为高 Vcc:+5V Vref+:参考电压,+5V Vref-:0V
ADC0809 有8路模拟量输入IN7~IN0 。一次只能选通其中的某一路进行转换,选通的通道由ALE上升沿时送入的C,B,A引脚信号决定。C,B,A地址与选通的通道间的关系如下表所示。
(3)接口与编程 ADC0809典型应用如下图所示。由于ADC0809输出含三态锁存,所以其数据输出可以直接连接MCS-51的数据总线P0口。可通过外部中断或查询方式读取A/D转换结果。
[例题]假设ADC0809与MCS-51的硬件连接如上页图所示,要求采用中断方法,进行8路A/D转换,将IN0~IN7转换结果分别存入片内RAM的30H~37H地址单元中。[例题]假设ADC0809与MCS-51的硬件连接如上页图所示,要求采用中断方法,进行8路A/D转换,将IN0~IN7转换结果分别存入片内RAM的30H~37H地址单元中。 解:程序如下: ORG 0000H LJMP MAIN ; 转主程序 ORG 0003H ; 中断服务入口地址 LJMP INT0F ; 中断服务。 ORG 0100H MAIN: MOV R0, #30H ; 内部数据指针指向30H单元 MOV DPTR, #7FF8H ; 指向P2.7口,且选通IN0 (低3位地址为 000) SETB IT0 ; 设置下降沿触发 SETB EX0 ; 允许中断 SETB EA ; 开总中断允许 MOVX @DPTR, A ; 启动A/D转换 LJMP $ ; 等待转换结束中断
中断服务程序如下: INT0F: MOVX A, @DPTR ; 取A/D转换结果 MOV @R0, A ; 存结果 INC R0 ; 内部指针下移 INC DPTR ; 外部指针下移,指向下一路 CJNE R0,#39H,NEXT ; 未转换完8路,继续转换 CLR EX0 ; 关中断允许 RETI ; 中断返回 NEXT: MOVX @DPTR, A ; 启动下一路A/D转换 RETI ; 中断返回,继续等待下一次 END
2.双积分型A/D转换器 特点:转换速度较慢(因为A/D转换的过程要两次积分)通常在几十mS至几百mS数量级;具有转换精度高、性价比高、抗干扰能力强等优点,在速度要求不很高的实际工程中广泛使用。 常用型号:MC14433,ICL7106,ICL7135,AD7555等。 (1)MC14433特点 ① 4位双积分型A/D转换器; ② 外部基准电压输入:200 mV或2 V; ③ 自动调零; ④ 量程有199.9 mV或1.999 V两种(由外部基准电压VREF决定); ⑤ 转换速度为1~10次/秒,速度较慢。
(2)MC14433引脚功能 MC14433为DIP24封装,芯片引脚如下图所示,引脚的功能及含义如下: VDD:正电源端,典型值+5 V; VEE:模拟负电源端,典型值-5 V; VSS:数字地; AGND:模拟地; VX:被测电压输入端; VREF:外接电压基准输入端 (2 V或200 mV) ; R1:外接积分电阻输入; C1:外接积分电容输入; R1/C1:外接电阻R1和外接电容C1的公共端,电容C1常采用聚丙烯电容,典型值0.1µF,电阻R1有两种选择:470k(量程为200 mV时)或27 k(量程为2V时);
C01,C02:外接失调补偿电容端,典型值为0.1 µF; CLK0,CLK1:时钟振荡器外接电阻RC接入端,外接电阻RC典型值470 k,时钟频率随RC电阻阻值的增加而下降; DU:更新转换控制信号输入,高电平有效; EOC:转换结束输出,当DU有效后,EOC变低,16400个时钟脉冲(CLK)周期后产生一个0.5倍时钟周期宽度的正脉冲,表示转换结束。可将EOC与DU相连,即每次A/D转换结束后,均自动启动新的转换; :过量程状态输出,低电平有效。当|VX|>VREF时,有效(输出低电平); DS1~DS4:分别表示千、百、十、个位的选通脉冲输出,格式为18个时钟周期宽度的正脉冲。例如,在DS2有效期间,Q0~Q3上输出的BCD码表示转换的百位的数值; Q0~Q3:某位BCD码数字量输出。具体是哪位,由选通脉冲DS1~DS4指定,其中,Q3为高位,Q0为低位。
(3)MC14433选通时序 如下图所示。EOC输出1/2个CLK周期正脉冲表示转换结束,依次DS1,DS2,DS3,DS4有效。在DS1有效期间从Q3~Q0端读出的数据是千位数,在DS2有效期间读出的为百位数,依此类推,周而复始。当DS1有效时,Q3~Q0上输出的千位数据选通含义如下页表所示。
(4)接口与编程 [例题]MC14433与MCS-51的连接如下图所示,采用中断方式(下降沿触发),结果存储格式如下表所示,欠量程、过量程和极性分别保存在00H~02H位地址单元中。
解:程序如下: UNDER: EQU 00H ; 位地址单元存放欠量程(1真0假) OVER: EQU 01H ; 位地址单元存放过量程(1真0假) POLA: EQU 02H ; 位地址单元存放极性(1负0正) HIGH: EQU 31H ; 高位 LOW: EQU 30H ; 低位 ORG 0000H LJMP MAIN ORG 0013H ; 中断服务入口地址 LJMP INT1F MAIN: MOV LOW, #0 MOV HIGH, #0 ; 将存放结果的单元清0 CLR UNDER CLR OVER ; 将存放欠量程、超量程的位地址单元内容清0 CLR POLA ; 假定结果为正 SETB IT1 ; 置外部中断为下降沿触发 SETB EX1 ; 开中断允许 SETB EA ; 开中断总允许 LJMP $ ; 等待中断 INT1F: MOV A, P1 ; 进入中断,说明MC14433转换结束,读P1口 JNB ACC.4, INT1F ; DS1无效,等待 JB ACC.2, NEXT ; Q2=1表示正,已经预处理过,继续 SETB POLA ; 为负,需将02H置位 NEXT: JB ACC.3, NEXT1 ; 千位为0,已经预处理过,继续 ORL HIGH, #10H ; 将千位信息保存在高位单元中
NEXT1: JB ACC.0,ERROR ; 转欠、超量程处理,有千位已能区分 INI1: MOV A, P1 JNB ACC.5, INI1 ; 等待百位选通信号 ANL A, #0FH ; 屏蔽高4位 ORL HIGH, A INI2: MOV A, P1 JNB ACC.6, INI2 ;等待十位选通信号 ANL A, #0FH ; 屏蔽高4位 SWAP A ; 交换到高4位 ORL LOW, A INI3: MOV A, P1 JNB ACC.7, INI1 ; 等待个位选通信号 ANL A, #0FH ; 屏蔽高4位 ORL LOW, A RETI ERROR: MOV A, HIGH ; 欠、超量程处理 CJNE A, #0, OV ; 有千位表示过量程 SETB UNDER ; 置欠量程标志 RETI OV: SETB OVER ; 置过量程标志 RETI END
3.串行A/D转换器 特点:引脚数少(常见的8引脚或更少),集成度高(基本上无需外接其他器件),价格低,易于数字隔离,易于芯片升级,廉价,速度略微降低。 (1)MAX187/189芯片引脚及功能 MAX187/189是MAXIM公司生产的具有SPI(Serial Peripheral Interface)总线接口的12位逐次逼近式(SAR)A/D转换芯片。特点如下: ① 12位逐次逼近式(SAR)串行A/D转换芯片; ② 转换速度为75 kHz,转换时间为8.5µs; ③ 输入模拟电压:0~5V; ④ 单一+5 V供电; ⑤ DIP8引脚封装,外接元件简单,使用方便。 MAX187与MAX189的区别在于:MAX187具有内部基准,无需外部提供基准电压,MAX189则需外接电压基准。
MAX187/189芯片引脚如下图所示。引脚的功能如下: VDD:工作电源:+5V±5%; GND:模拟和数字地; VREF:参考电压输入; :片选输入; AIN:模拟电压输入,范围为0~VREF或0~4.096V(MAX187); (shut down):关闭控制信号输入,提供三级关闭方式:待命低功耗状态(电流仅10 µA ),允许使用内部基准;禁止使用内部基准; DOUT:串行数据输出,在串行脉冲SCLK的下降沿数据变化; SCLK:串行时钟输入,最大允许频率为5 MHz。
使用MAX187/189进行A/D转换时分的步骤: ① 启动A/D转换,等待转换结束 当 输入低电平时,启动A/D转换,此时DOUT引脚输出低电平,充当传递“转换结束”信号的作用。当DOUT输出变高电平时,说明转换结束(在转换期间,SCLK不允许送入脉冲)。 ② 串行读出转换结果 从SCLK引脚输入读出脉冲,SCLK每输入一个脉冲,DOUT引脚上输出一位数据,数据输出的顺序为先高位后低位,在SCLK信号的下降沿,数据改变,在SCLK的上升沿,数据稳定。在SCLK信号为高电平期间从DOUT引脚上读数据。
(2)接口与编程 MAX187与MCS-51的连接电路如下图所示。其中,P1.7为控制片选,P1.6为输入串行移位脉冲,P1.5为接收串行数据端。MAX187外接4.7 µF退耦电容激活内部电压基准,接+5 V允许使用内部基准。 注意:MAX187/189的片选在转换和读出数据期间必须始终保持低电平。
工作流程:清P1.7,启动MAX187开始A/D转换;读P1.5,等待转换结束;当P1.5变高,转换结束;从P1.6引脚发串行脉冲,从P1.5引脚逐位读取数据。工作流程:清P1.7,启动MAX187开始A/D转换;读P1.5,等待转换结束;当P1.5变高,转换结束;从P1.6引脚发串行脉冲,从P1.5引脚逐位读取数据。 注意:由于MCS-51单片机外接晶振最大不超过12 MHz,即便是执行一条单周期指令也需1 µs,所以发送SCLK时无需延时。 [例题] 如图上页图所示的MAX187与MCS-51连接的电路图,将MAX187转换结果存入31H、30H单元,右对齐,31H存高位(高4位补0)。 解:程序如下: HIGH EQU 31H LOW EQU 30H ORG 1000H START: MOV HIGH, #00 MOV LOW, #00 ; 将转换结果单元清除 CLR P1.6
CLR P1.7 ; 启动A/D转换 JNB P1.5, $ ; 等待转换结束 SETB P1.6 ; SCLK上升沿 MOV R7, #12 ; 置循环初值12 LP: CPL P1.6 ; 发SCLK脉冲 JNB P1.6, LP ; 等待SCLK变高 MOV C, P1.5 ; 将数据取到C MOV A, LOW RLC A MOV LOW, A MOV A, HIGH RLC A MOV HIGH, A ; 将取到的数据位逐位移入结果保存单元 DJNZ R7, LP SETB P1.7 ; 结束 RET END
5.3.4 数据采集系统 功能:主要实现从现场采集数据,由单片机分析处理或显示打印,为现场操作者提供操作指导等功能。 1.数据采集系统的一般结构 需要解决的主要问题:模拟量输入通道的设计。 模拟量通道结构: (1)每路模拟量均有各自独立的A/D转换器、采样保持器。其特点是电路结构简单、程序设计方便,A/D转换是并行的,转换速度较快,成本昂贵,仅在高速数据采集系统中采用。 (2)多路模拟量共用一套采样保持器、A/D转换器。其特点是经济实用,在性能指标要求许可的情况下,一般采用该方案。
2.数据采集系统应用举例 目前多数A/D转换器(高速)都内含采样保持器,所以,此处不考虑采样保持器。多路模拟转换器(也称多路模拟转换开关)采用常用的8路模拟转换开关CD4051。 CD4051是由地址译码器和多路双向模拟开关组成的8路模拟转换开关,引脚功能如下: X0~X7:输入; X: 输出,可以通过外部地址(C,B,A引脚)选择8路输入中的某1路与输出X接通; VDD和VEE :提供工作电源,其幅值不得低于模拟信号; INH:禁止控制输入,输入高电平时,多路开关中各开关均不通,输出呈高阻态。
[例题] 设计使用1片A/D转换芯片巡回采集40路模拟量的数据采集系统。 解:采用5片CD4051,每片接8路模拟量输入,5片构成5×8 = 40路模拟采集通道。40路数据采集局部原理如下图所示。
采用1片74LS377扩展8位并行输出口,其中,高3位用于选通每片4051的8路中的1路,低5位用于5片CD4051的片选。向74LS377写入数据11110000~11110111,选通1#4051的0~7路;写入11101000~11101111,则选通2#4051的0~7路等。其规律为数据的低3位从000到111变化;高5位初值为11110,其中的0左移5次,完成对40路模拟量的数据采集。 74LS377的数据格式如下表所示。 程序如下: ORG 0100H MOV DPTR, #7FFFH ; 指向P2.7口 MOV A, #1111 0000B ; 选通第1片CD4051芯片的X0路 MOV R7, #5 ; 计数5次(5片CD4051)
LP1: MOVX @DPTR, A ; 选通一路 LCALL ADCONV ; 调用A/D子程序 LCALL ADDSP ; 调用转换结束后数字处理; MOV R2, A ; 用R2暂存A ANL A, #07H ; 屏蔽高5位 CJNE A, #07H,LP2 ; 判断A是否到7,未到7,选择下一路 AJMP LP3 ; 处理下一片 LP2: MOV A, R2 ; 取回暂存值 INC A ; 选择下一路 AJMP LP1 ; 继续处理本片下一路 LP3: MOV A, R2 ; 取回暂存值 RL A ; 高5位0的位置左移 ANL A, #0F8H ; 指向下一片的第0路(低3位清0) DJNE R7, LP1 RET END