730 likes | 922 Views
第 7 章 80C51 的测控技术. 本章学习目标 : 了解单片机测控系统中接口元件的作用 了解 D/A 转换器与 80C51 的连接方法,能读懂教材中的控制实例。 掌握 A/D 转换器与 80C51 的连接方法,能编写与教材同等难度的应用程序。 了解直流电机控制芯片 TA7257P 的应用 理解步进电机的工作原理、励磁方式,能用其实现简单控制. 模拟信号:如被控对象的温度、压力等. {. 为什么要研究单片机测控系统?. 单片机的输入信号. 开关信号 : 如指拨开关和按键开关. {. 模拟设备 : 电动调节阀、模拟记录仪. 单片机的驱动控制设备.
E N D
第7章 80C51 的测控技术 • 本章学习目标: • 了解单片机测控系统中接口元件的作用 • 了解D/A转换器与80C51的连接方法,能读懂教材中的控制实例。 • 掌握A/D转换器与80C51的连接方法,能编写与教材同等难度的应用程序。 • 了解直流电机控制芯片TA7257P的应用 • 理解步进电机的工作原理、励磁方式,能用其实现简单控制
模拟信号:如被控对象的温度、压力等 { 为什么要研究单片机测控系统? • 单片机的输入信号 开关信号: 如指拨开关和按键开关 { 模拟设备:电动调节阀、模拟记录仪 • 单片机的驱动控制设备 数字设备: 数字显示仪表、继电器触点 单片机用于智能仪表和测控系统时,要与各种各样的外界信号打交道: 由于单片机的输入和输出信号只能是数字量,因此在由单片机构成的测控系统中经常要用到模/数转换和数/模转换接口。单片机和被控对象间的接口示意图如图7-1所示。
7.1 数/模转换接口 数/模转换接口的任务:将数字信号转换成与其量值成正比的电流信号或电压信号(即模拟信号)。 数/模转换接口的作用:相当于一个实现二进制数到十进制数转换,并将转换结果以电流或电压形式输出的物理器件。 数/模转换接口常接在单片机的输出端与执行设备(如电磁阀)之间。常用的数/模转换接口芯片有DAC0832(TTL 8位)、AD7524(CMOS 8位)和DAC1208(12位)等。 下面以DAC0832为例说明数/模转换接口的使用。
7.1.1 DAC0832的结构1. DAC0832的内部结构 DAC0832是美国国家半导体公司生产的8位电流输出型D/A转换器,是DAC0830系列产品中的一种。它的主要技术指标是:分辨率为8位,转换速度约1μs,单一电源(+5~+15V)供电,参考电压为+10~-10V等。 DAC0832的内部结构如图7-2所示,它含有: • 1个8位数据输入寄存器:8位输入数据暂存 • 1个8位DAC寄存器:与8位数据输入寄存器构成两级缓冲,使芯片功能更灵活。 • 1个8位D/A转换器:实现D/A转换。
2.DAC0832的引脚功能 DAC0832的引脚如图7-3所示,下面对各引脚功能作简要说明:
7.1.2 DAC0832与80C51的接口与编程 1.DAC0832与80C51的接口 DAC0832内部具有两级8位寄存器,通过与80C51的适当连接可以构成直通、单缓冲、双缓冲三种工作方式。下面以单缓冲方式为例说明其接口形式。电路如图。
在单缓冲方式下,80C51的P2.7与DAC0832的和数据传送控制信号线相连,这样,当地址线P2.7选通DAC0832后,只要输出信号,DAC0832就能进一步完成数字量的输入锁存和D/A转换输出功能。在上图中,由于地址线P2.7=0时选通DAC0832,所以DAC0832的接口地址为7FFFH。在单缓冲方式下,80C51的P2.7与DAC0832的和数据传送控制信号线相连,这样,当地址线P2.7选通DAC0832后,只要输出信号,DAC0832就能进一步完成数字量的输入锁存和D/A转换输出功能。在上图中,由于地址线P2.7=0时选通DAC0832,所以DAC0832的接口地址为7FFFH。 注意:DAC0832的转换输出量为电流,而在实际应用中,作为输出控制的信号大多为模拟电压,如直流电机、线性电磁阀等,因此还需要将电流信号转换为电压信号。图中采用LM747作反向电压输出。
2.DAC0832的编程 DAC0832的编程比较容易,只要向80C51提供芯片地址,并进行一次简单的数据读写操作即可。 例1 电路如图7- 4,试编程实现一次DAC0832的数据转换,设拟转换数据为#DATA。 参考程序如下: MOV DPTR,#7FFFH ;指向DAC0832的单元地址 MOV A,#DATA ;转换数据“DATA”装入A MOVX @DPTR, A ;转换数据送往DAC0832,并使 ; =0,完成一次转换 =0,完成一次转换
7.1.3 课题与实训15 DAC0832构成波形发生器 一. 实训目的 1.学习8位D/A转换器DAC0832的使用方法 2.掌握8位D/A转换器DAC0832与单片机的接口技术及编程方法 二. 课题要求 用一片DAC0832和必要的外围器件与80C51接口,设计一个简易波形发生器,要求能输出三种波形:方波、锯齿波、梯形波。请编写相应程序。
三. 背景知识 1.DAC0832的输出电压 DAC0832有两种输出形式:单极性输出和双极性输出。在图7-4中,DAC0832采用单极性输出形式。其输出电压为: 在该实训中,DAC0832以双极性形式输出,电路如图7-5。此时输出电压为: 式中B为输入数字量,其范围为0~255,VREF为参考电压。
2.波形产生原理 • 方波 • 单片机连续255次输出数字量0,然后再连续255次输出数字量255。如此重复,0832即可输出连续方波。 • 锯齿波 • 单片机从输出数字量0开始,逐次加1直到255;然后再从0开始,如此重复,0832即可输出锯齿波。 • 梯形波 • 单片机从输出数字量0开始,逐次加1直到255,并保持255次,然后从输出255逐次减1直至为0。如此重复,0832即可输出连续梯形波。
四.硬件原理 图7-5 由DAC0832构成的简易波形发生器
五.软件设计 1.输出连续方波: 参考程序如下: ORG 0000H AJMP MAIN ORG 0100H MAIN: MOV DPTR,#7FFFH ;指向0832 LOOP:MOV A,#0 MOV R7,#255 ;循环次数初始化 MOVX @DPTR,A ;向DAC送方波最小值0 DJNZ R7,$ ;循环255次,形成方波 ;的低电平
MOV A,#255 ;将方波最大值255送到A MOV R7,#255 ;重置循环次数 MOVX @DPTR,A ;向DAC送255,D/A输出为高 DJNZ R7,$ ;循环255次,形成方波的高电平 AJMP LOOP ;重复上述过程,形成连续方波 END
2.输出连续锯齿波: 参考程序如下: ORG 0000H AJMP MAIN ORG 0100H MAIN: MOV DPTR,#7FFFH ;指向0832 LOOP: MOV A,#0 LOOP 1:MOVX @DPTR,A;向DAC送锯齿波最小值0 INC A ;加1 CJNE A,#255,LOOP 1;循环256次,形成 ;锯齿波的上升沿 END
3.输出连续梯形波 参考程序如下: ORG 0000H AJMP MAIN ORG 0100H MAIN: MOV DPTR,#7FFFH ;指向0832 LOOP:MOV A,#0 LOOP 1:MOVX @DPTR,A ; 向DAC送梯形波最小值0 INC A CJNE A,#255,LOOP 1 ;循环255次,形成 ;梯形波的上升沿 MOV A,#255 ;将梯形波的高度数值255 ;送A,此255表示梯形波的高
MOV R2,#255 ;255为形成梯形波上底需 ;要循环的次数 LOOP 2:MOVX @DPTR,A;向DAC送255,D/A输出为高 DJNZ R2,LOOP 2 ;循环255次,形成梯形 ;波的上底 LOOP 3:MOVX @DPTR,A ; DAC输出 DEC A CJNE A,#0,LOOP 3 ;循环256次,形成 ;梯形波的下降沿 LJMP LOOP;重复上述过程,形成多个梯形波 END
六.总结与提高 在上述三组程序设计中,通过DAC0832输出端输出的波形均为直线型的波形,没有考虑波形频率。如果改变程序可以使DAC0832输出满足频率要求的各种曲线。 仍采用该实训电路,请编程输出图7-6所示的1ms阶梯波。 图7-6 1ms阶梯波形图
7.2 模/数转换接口 模/数转换接口的任务:将模拟信号转换成数字信号,它常与单片机的输入端相连。 常用的模/数转换接口芯片有ADC0809(8位)、ADC0804(8位)和AD574(12位)等。 7.2.1 ADC0809的结构 1.ADC0809的内部结构 ADC0809的内部结构如图7-7所示。
ADC0809包含: • 8路模拟量选择开关:根据地址锁存与译码装置提供的地址从8个输入的0~5V的模拟量中选择一个输出。 • 8位A/D转换器:能对选择出来的模拟量进行A/D转换 • 3位地址码的锁存与译码装置:对输入的3位地址码进行锁存和译码,并将地址选择结果送给8路模拟量选择开关。 • 三态输出的锁存缓冲器:TTL结构,负责输出转换的最终结果。此结果可直接连到单片机的数据总线上。
图7-8 ADC0809的引脚 该信号可以作为CPU查询A/D转换是否完成的信号,也可以作为向CPU发出中断申请的信号。 • 2.ADC0809的引脚功能 • IN0~IN7:8个模拟量的输入端。 • D0~D7:8位数字量输出端。 • START:启动A/D转换,加正脉冲后A/D转换开始。 • EOC:转换结束信号,转换开始时EOC信号变低;转换结束时EOC信号返回高电平。 此信号有效时,CPU可以从ADC0809中读取数据,同时也可以作为ADC0809的片选信号。 • OE:输出允许信号,输入高电平有效。OE端的电平由低变高时转换结果被送到数据线上。
图7-8 ADC0809的引脚 在ALE=1时,锁存ADDA~ADDC,选中模拟量输入。 • CLK:实时时钟,频率范围10~1280KHz,典型值为640KHz。 • ALE:通道地址锁存允许信号,输入高电平有效。 • ADDA~ADDC:通道地址选择输入,其排列顺序从低到高依次为ADDA、ADDB、ADDC。 • VREF+、VREF-:正负参考电压。一般情况下,VREF+接+5V,VREF-接地。 • VCC、GND:工作电源和地 该地址与8个模拟量输入通道的对应关系见表7- 2。 转换关系见表7- 1
表7-1 ADC0809的输入输出关系 注:此表在VREF+=+5V,VREF-=0情况下
7.2.2 ADC0809与80C51的接口 • ADC0809与80C51的接口要满足ADC0809转换时序的要求,电路如图7-9所示。 图7-9 ADC0809与80C51的接口
(1)地址线与数据线的连接 ADC0809的内部输出电路有三态缓冲器,所以其8位输出数据线可以直接和80C51的P0口相连。它的通道地址选择信号ADDA~ADDC均经过74LS373锁存,与80C51的P0口中的任意三根I/O口线相连接(图中与P0.0、P0.1、P0.2相连)。 (2)时钟信号的连接 ADC0809必须外接时钟。此电路中借用80C51的ALE输出。 (3)控制信号的连接 由于ADC0809的ALE和START均为正脉冲,而且基本同步,所以可由80C51的P2.0和 或非而成。同理,OE信号也可以由80C51的P2.0和 或非而成。EOC信号经非门与80C51的 相接,可申请中断。 若80C51晶振频率太高,则需对ALE输出脉冲进行分频。如晶振采用12MHz时,ALE频率为2MHz,经4分频后为500KHz,才能与 ADC0809的CLK时钟端相连。
7.2.3 ADC0809的应用指导 • 1.ADC0809转换结束的判断方法 • 软件延时法 • 指用软件延时等待一次A/D转换结束。延时时间取决于通过计算和调试而获得的ADC完成一次转换所需要的时间。 • 中断法 • 利用EOC作为向80C51申请中断的信号。在主程序中启动A/D转换,再继续执行主程序。在中断服务程序中读取转换结果。 • 查询法 • 将EOC接至80C51的某端口I/O口线。启动A/D转换后,利用查询该I/O口线引脚电平是否为0的方法读取转换结果。
2.ADC0809的编程方法 ⑴初始化 用来设置ADC0809的IN0~IN7通道地址;设置存放转换结果的首单元地址和通道数。 ⑵启动ADC0809 先送通道号地址到ADDA~ADDC,由ALE锁存通道号地址;再让START有效启动A/D转换,即执行一条“MOVX @DPTR,A”指令产生信号,使ALE、START有效,锁存通道号并启动A/D转换。 ⑶判断A/D转换是否结束 ⑷读转换结果 A/D转换完成后,EOC端会发出一个正脉冲,接着执行“MOVX A,@DPTR” 指令产生 信号,使OE端有效,打开锁存器三态门,8位数据就读入到单片机中。
7.2.4 ADC0809的应用实例 根据图7-9的电路,采用软件延时方法,将8路模拟信号轮流采集一次,并依次将转换后的结果存放到80C51内部从30H开始的单元中。从上图所示的电路可知,IN0~IN7的通道地址为FEF8H~FEFFH。 参考程序如下: MOV R1,#30H ;设置存放转换结果首单元指针 MOV DPTR,#0FEF8H ;指向通道0 MOV R7,#08H ;设置通道数 LOOP:MOVX @DPTR, A ;启动A/D转换 MOV R5,#10 ;软件延时,等待A/D转换结束 DELAY: NOP
NOP NOP DJNZ R5,DELAY MOVX A,@DPTR ;读取转换结果 MOV @R1,A ;存放转换结果 INC DPTR ;指向下一个通道 INC R1 ;修改存储单元指针 DJNZ R7,LOOP ;8个通道未采集完,继续 RET
☆7.2.5串行A/D转换芯片TLC1549 • 单片机测控系统需要进行A/D转换时,有两种选择: • 选用自身具有A/D转换功能的单片机,如PIC单片机。 • 扩展A/D转换芯片。 • 除ADC0809等常用的并行A/D转换芯片外,还有串行A/D转换芯片,如TLC1549。图7-10 TLC1549的引脚功能 • TLC1549是美国TI公司生产的10位模数转换器。它采用CMOS工艺,具有内在的采样和保持,采用差分基准电压高阻输入、抗干扰,可按比例量程校准转换范围,总不可调整误差达到(±)1LSB Max(4.8mv) 等特点,而且芯片体积小巧。
1.引脚功能 • :片选,低电平有效。 • ANALOG IN:模拟信号输入端,要求驱动电流必须大于10mA。 • I/O CLOCK:I/O时钟,下跳沿输出数据,最大频率可达2.1MHz。 • DATA OUT :转换后的数字信号输出, =1时,呈现高阻; =0时,在时钟作用下将数据由高到低依次输出。 • REF+:参考电源高端,通常接+VCC。 • REF—:参考电源低端,通常接GND。 • VCC:正电源(4.5V≤ VCC≤5.5V) 7-10 TLC1549的引脚功能
2.工作方式 TLC1549有6种工作方式,见表7-3。其中方式1和方式3属于同一种类型;方式2和方式4属于同一种类型。如果不考虑I/O CLOCK周期的大小,方式3与方式5相同,方式4与方式6相同。 表7-3 TLC1549的6种工作方式 一般情况下,I/O CLOCK的时钟频率大于280KHz时,芯片工作于快速方式; 一般情况下,I/O CLOCK的时钟频率小于280KHz时,芯片工作于慢速方式。
方式1为经典工作方式。其工作原理为: • 在芯片选择 无效情况下,I/O CLOCK被禁止且DATA OUT处于高阻状态。 • 当串行接口把 拉至有效时,转换时序开始允许I/O CLOCK工作并使DATA OUT脱离高阻状态: • 由80C51单片机产生10个时钟序列提供给TLC1549的I/O CLOCK引脚;在 的下降沿时刻,前次转换的MSB出现在DATA OUT引脚,单片机从DATA OUT接收前次转换结果。如果连续进行A/D转换,TLC1549能在前次转换结果输出的过程中,同时完成本次转换的采样。
2.TLC1549与80C51的接口 TLC1549采用串行输出的方式,体积小巧,方便灵活,与单片机的接口也简单,电路如图7-12所示。 图7- 12 TLC1549与80C51的接口示意图
3.软件设计 入口参数:使用累加器A,进位标志CY及工作寄存器R7; 出口参数:20H单元存放转换结果的低8位,21H单元存放转换结果的高2位。 ADCCON: MOV 20H,#00H MOV 21H,#00H ;结果单元清零 MOV R7,#0AH ;A/D转换位数标志 CLR P1.4 ;选通TLC1549 LOOP1: MOV C,P1.0 ;读转换结果送至CY MOV A,20H ;转换结果移至结果单元 RLC A
MOV 20H,A MOV A,21H RLC A MOV 21H,A SETB P1.2 ;形成移位脉冲 CLR P1.2 DJNZ R7,LOOP1 ;转换结束否? SETB P1.4 ;TLC1549复位并进行一 ;次转换 RET ;上述程序执行时间约120μs
7.2.6 课题与实训16 简易数字电压表 一. 实训目的 1.了解A/D转换器ADC0809的基本性能 2.掌握ADC0809与单片机的接口方法及编程方法 3.通过实训了解单片机的数据采集过程 二. 课题要求 用一片ADC0809和必要的外围器件与AT89C51接口,设计一个简易数字电压表,要求能对IN0输入的模拟电压进行识别,将其转换成相应的二进制数以发光二极管的形式显示;用万用表测量IN0输入的模拟电压值,并与转换结果相对比,计算测量误差。请编写相应程序。
三. 背景知识 • 1.A/D转换的种类 • 计数型:速度慢、价格低 • 逐次逼近型:分辨率、速度、价格适中 • 双积分型:分辨率高、抗干扰性强、价格低、速度较慢 • 高速A/D转换器 • 2.ADC0809的性能特点 • 是逐次逼近型8通道8位A/D转换CMOS器件。转换电压为正负5V,转换时间100微秒,功耗15mW,具有锁存的三态输出,与TTL电平兼容,便于与微机接口。 • 3.ADC0809与单片机的联系方式 • 可采用延时等待、软件查询和硬件中断方式。
四.硬件原理 电路如图7-13,该连接方式下,IN0 的通道地址是0FEF8H。 图7-13 简易数字电压表硬件电路
五.软件设计 利用中断方式,参考程序如下: ORG 0000H LJMP START ORG 0013H LJMP INT_1 ORG 0100H START: MOV R7,#00H ;读数标志初始化 MOV DPTR,# 0FEF8H;P2.0=0,指向IN0 SETB IT1;低电平触发 SETB EA SETB EX1 ;INT1 允许 A_D: MOV R0,#00H ;通道数
MOV A,R0 MOVX @DPTR,A ;启动 A/D CJNE R7,#00H,$ ;等待 A/D 转换结束 MOV A,B MOV P1,A ;数据输出 MOV R7,#0FFH ;清读数标志 SJMP A_D INT_1: MOVX A,@DPTR ;读 A/D 数据 MOV B,A MOV R7,#00H ;置读数标志 RETI END
六.总结与提高 在上述程序设计中,我们采用中断的方式,只对IN0的模拟电压值进行测量显示,实际上,我们可以同时对8路模拟电压值进行测量。仍采用该实训电路,请编程实现该功能,将IN0~IN7的数字电压值存放在内RAM30H开始的8个单元。
7.3电动机控制 • ☆7.3.1 直流电动机控制芯片——TA7257P • 1.TA7257P的功能特性: • TA7257P为全桥式结构的直流电动机旋转控制器,具有正转、反转、停止及刹车功能。 • 操作电压范围6V~18V。 • 输出平均电流可达1.5A,峰值电流可达4.5A。 • 内部设计有电流过载保护装置和过热保护电路。 • 工作电路电压引脚与电动机电源电压引脚相对独立,故可用于伺服控制。 • TA7257P适合工业上的应用,如磁带盘、影片盘等机械运转装置的控制。