《单片机应用技术》课件第5章_第1页
《单片机应用技术》课件第5章_第2页
《单片机应用技术》课件第5章_第3页
《单片机应用技术》课件第5章_第4页
《单片机应用技术》课件第5章_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

项目5简易数字电压表设计5.1项目要求

5.2理论知识

5.3项目分析及实施

5.4项目拓展

5.5项目总结习题

5.1项目要求

本项目通过设计数字电压表,旨在介绍A/D转换在控制系统中的应用。项目要求以STC89C52单片机为核心,设计一个简易数字电压表,要求对0~5V的电压可以测量,电压显示采用液晶LCD1602显示,精度保留到小数点后两位。

项目重难点:

(1)A/D转换原理;

(2)单片机与A/D转换器接口电路设计;

(3)单片机控制A/D转换器程序设计。技能培养:

(1)熟练掌握单片机与A/D转换芯片的接口电路设计方法;

(2)熟练掌握A/D转换程序设计方法;

(3)能够分析和解决A/D转换中遇到的问题。

5.2理论知识

5.2.1

A/D转换原理

A/D转换(Analog-to-DigitalConvert)就是把模拟量转变为数字量。将模拟量转换成数字量的电路集成封装起来就称为A/D转换器(Analog-to-DigitalConvert)。需要转换的模拟量可以是电压、电流等电信号,也可以是压力、温度、湿度、位移、声音等非电信号。但在A/D转换前,输入到A/D转换器的输入信号必须经各种传感器把各种物理量转换成电压信号。A/D转换后,输出的数字信号可以有8位、10位、12位和16位等,位数越多,转换精度越高。如图5-1所示,输出数字量D正比于输入模拟量uI。图5-1

AD转换框图由于模拟量在时间和(或)数值上是连续的,而数字量在时间和数值上都是离散的,所以转换时要在时间上对模拟信号离散化(采样),还要在数值上离散化(量化),所以A/D转换一般有三个步骤:采样保持→量化→编码。

采样是指用每隔一定时间的信号样值序列来代替原来在时间上连续的信号,也就是在时间上将模拟信号离散化。如图5-2所示,通过一个周期脉冲信号序列对模拟信号进行采样。模拟信号的大小随时间不断变化,保持就是保持采样信号不变,使有充分时间转换为数字信号。图5-2采样过程量化是用有限个幅度值近似原来连续变化的幅度值,把模拟信号的连续幅度变为有限数量的有一定间隔的离散值。编码则是按照一定的规律,把量化后的值用二进制数字表示。

在A/D转换器中,将模拟电压转换成数字信号,其数字信号最低位LSB=1所对应的模拟电压的大小称为量化单位S,S=(输入最大模拟电压值/输出最大数字量),输入最大模拟电压值一般取参考电压。假设需要把0V~+5V的模拟电压转换成三位二进制代码,我们知道三位二进制代码可以表示八种状态,也就是把0V~+5V分成八等分,称为量化级,那么量化单位就是0.625V,如图5-3所示。将采样点的模拟电压值转化为量化单位的整数倍,就可以得到这个采样点的数字量,也就是编码。但是一般被转换的模拟电压不可能正好是量化单位的整数倍,这个因素引起的误差称为量化误差。图5-3量化和编码减少量化误差的方法可以通过增加二进制代码位数的方法来实现,如果把0V~+5V的模拟电压转换成八位二进制代码,那么量化级就是28,也就是把0V~+5V分成了256份,当电压每变化(5/256)V≈19.53mV时,就会用一个八位的二进制代码表示。当然减少量化误差的方法不止这一种,读者可以自行研究。

A/D转换的基本电路原理主要有积分型、逐次逼近型、并行比较型等,详细分类如表5-1所示。表5-1

A/D转换器分类

1.积分型A/D转换器

积分型A/D转换器工作原理是将输入电压转换成时间(脉冲宽度信号)或频率(脉冲频率),然后由定时器/计数器获得数字值。早期的A/D转换器大多采用积分型,比如TLC7135、MC14433、ICL7106、AD7555等芯片。

采用积分法原理的A/D转换器由电子开关、积分器、比较器和控制逻辑等部件组成,如图5-4所示。图5-4积分型A/D转换结构其转换过程分为两个阶段:

第一阶段——定时积分。

首先将开关接通道待转换的模拟量Vi一侧,Vi采样输入到积分器,积分器从零开始对Vi进行固定时间T1的正向积分,时间T1到后,积分器输出电压为:

可见积分器的输出V01与Vi成正比。这一过程称为转换电路对输入模拟电压的采样过程。在采样开始时,逻辑控制电路将计数门打开,计数器计数。当计数器达到满量程N时,计数器由全“1”复“0”,这个时间就是固定的积分时间T1。计数器复“0”时,同时给出一个溢出脉冲(即进位脉冲)使控制逻辑电路发出信号,令开关K转换至参考电压VREF一侧,采样阶段结束。(5-1)第二阶段——定值积分。

采样阶段结束后,积分器对与Vi极性相反的参考电压VREF进行积分,计数器由0开始计数,当积分器输出电压变为零时,检零比较器输出信号给计数器,关闭计数器,此时经过了T2时间。积分器的输出电压为:

将式(5-1)带入式(5-2),得:(5-2)即

由于VREF和T1均为固定值,则输入模拟电压正比于T2。若计数器的脉冲周期为TS,T1=N1TS,T2=N2TS,那么式(5-3)改写为:

T1为固定值,则N1也为固定值,此时N2即为输入模拟量Vi对应的数字值。(5-4)(5-3)可以发现整个转换过程经历了两次积分,所以积分型A/D转换器也称为双积分A/D转换器,它是一种间接性转换器,将待转换的模拟量先转换成与它成正比的时间宽度,然后在这个时间宽度内对固定频率的脉冲信号进行计数,计数的结果就是这个模拟量的数字值。积分型A/D转换器的工作波形图如图5-5所示,当输入模拟电压Vi越大时,VO1越大,由于第一阶段是定时积分,所以积分器输出最大电压Vom随着Vi的大小沿垂直虚线上下移动。图5-5积分型A/D转换器工作波形图

2.逐次逼近式A/D转换器

逐次逼近型A/D转换器有ADC0804/0808/0809系列、AD575、AD574等,其转换过程与用天平称物体质量的过程相似。比如用天平秤一个149g的物体,天枰的砝码有128g、64g、32g、16g、8g、4g、2g、1g。首先将128g的砝码放在托盘上,由于149g>128g,所以砝码保留,相当于最高位数码D7记为1;再在托盘上加上64g砝码,此时149g<(128+64)g,64g砝码舍弃,相当于D6记为0;然后再放上32g砝码,149g<(128+32)g,32g砝码舍弃,D5记为0;按照这样的方法,直到砝码的总质量无限逼近或等于物体质量,依照放置砝码的次序,从高到低,保留的砝码记为“1”,舍弃的记为“0”,就可以得到物体的数字量。对于149g的物体,最后留下的砝码是128g、16g、4g、1g,所以数字量为10010101,在放砝码时,要从大到小,逐个去试,慢慢逼近物体质量。

逐次逼近式A/D转换器包括电压比较器、DA转换器、控制电路、逐次逼近寄存器SAR和缓冲寄存器等。其原理框图如图5-6所示,转换过程为:

(1)首先发出“启动信号”信号S,当S由高变低时,“逐次逼近寄存器SAR”清0,DAC输出Vo=0,“比较器”输出1。当S变为高电平时,“控制电路”使SAR开始工作。图5-6逐次逼近型A/D转换器原理框图

(2)SAR首先产生8位数字量的一半,即10000000B,试探模拟量的Vi大小,若Vo>Vi,“控制电路”清除最高位,若Vo<Vi,保留最高位。

(3)在最高位确定后,SAR又以对分搜索法确定次高位,即以低7位的一半y1000000B(y为已确定位)试探模拟量Vi的大小。在bit6确定后,SAR以对分搜索法确定bit5位,即以低6位的一半yy100000B(y为已确定位)试探模拟量Vi的大小。重复这一过程,直到最低位bit0被确定。

(4)在最低位bit0确定后,转换结束,“控制电路”发出“转换结束”信号EOC。该信号的下降沿把SAR的输出锁存在“缓冲寄存器”里,从而得到数字量输出。5.2.2

A/D转换器的主要性能指标

1.分辨率

分辨率是A/D转换器对输入量变化敏感程度的描述,与输出数字量的位数有关。使输出数字量最低有效位(LSB)变化一个字所需输入模拟电压的变化量就是分辨率,通常以数字信号的位数来表示。对于线性A/D转换器来说,其分辨率(Δ)与输出数字量输出的位数n呈现下列关系:

2.转换速率

转换速率是指完成一次从模拟量到数字量转换所需的时间的倒数。积分型A/D转换器的转换时间是毫秒级,属低速AD转换器,逐次逼近型A/D转换器是微秒级,属中速A/D转换器。

3.误差(有绝对误差和相对误差两种)

绝对误差等于实际转换结果与理论转换结果之差。也可以用数字量的最小有效位(LSB)的分数值表示。

相对误差是指数字量所对应的模拟输入量的实际值与理论值之差,用模拟电压满量程的百分比表示。

4.量程

量程指被转换的模拟输入电压范围,A/D转换器输入模拟信号通常有以下几种电压范围,分单极性、双极性两种类型。

单极性常见量程为0~5V,0~10V,0~20V;双极性量程常为-2.5V~+2.5V,-5V~+5V,-10V~+10V。

5.线性度

线性度有时又称为非线性度,它是指转换器实际的转换特性与理想直线的最大偏差。 5.3项目分析及实施

1.任务要求和分析

1)任务要求

设计一个可以对0~5V模拟电压信号进行测量并通过数字显示的电压表,电压显示格式为:“Voltage:*.**V”。

2)任务分析

硬件电路设计方面,核心是如何将模拟电压量转换成数字量?我们知道单片机只能接收数字信号,对于模拟量是没有办法处理的。所以我们必须采用数据转换,把模拟量转换成数字量送给单片机,单片机对这些数字量进行处理之后,送去给显示器件显示。将模拟量转换成数字量,必须通过A/D转换芯片。目前有些单片机将部分外围器件集成到内部,降低了硬件电路设计的复杂性。比如STC12CXXXXAD系列,带有8位片上A/D转换,STC12C5XXXAD系列,带有10位A/D转换。Cygnal公司的C8051FXXX系列也带有片上A/D转换。由于这里我们使用的STC89C51单片机,它没有片上A/D转换,所以需要外接A/D转换芯片。

软件程序设计方面,重点是单片机如何控制A/D转换芯片,并将转换结果进行显示。

2.器件及设备选择

在A/D芯片的选择上需要考虑的问题有:

(1)A/D转换器应用的系统、输出数据的位数(分辨率)、系统要达到的精度和线性。

(2)输入A/D转换器的输入信号范围、极性、信号的驱动能力。

(3)对转换器输出的数字代码及其逻辑电平的要求。是否需要带输出锁存或三态门?是否通过计算机接口电路?是用外部时钟、内部时钟还是不用时钟?输出代码需要二进制码,还是BCD码?是串行,还是并行?

(4)系统是在静态条件下还是在动态条件下工作?带宽要求如何?要求的转换时间为多少?采样速率为多少?是高速应用还是低速应用?

(5)要求参考电压是内部的还是外加的?是固定的还是可调(或可变)的?

这里我们对A/D转换的分辨率没有特别要求,输入模拟信号的范围为0~5V,由于需要与单片机接口,所以最好是带有输出锁存,并且输出并行二进制码,我们设计的电压表只对一路模拟信号进行采样,基于以上几点我们选择ADC0804芯片。

由于需要显示的内容包含字符信息,所以选用LCD1602液晶屏作为显示器件。

ADC0804是美国国家半导体公司生产的采用CMOS集成工艺制成的逐次逼近型模数转换芯片。主要特性有:

·工作电压:+5V,即VCC=+5V;

·模拟输入电压范围:0~+5V,即0V≤Vin≤+5V;

·分辨率:8位,即分辨率为1/28=1/256,转换值介于0~255之间;

·转换时间:100μs(fCK=640kHz时);

·转换误差:±1LSB;

·参考电压:2.5V,即VREF=2.5V;

·内含时钟发生器;

·允许差分电压输入;

·输出电平兼容TTl电平和COMS电平;

·芯片内具有三态输出数据锁存器,可以直接与数据线相连。双列直插式ADC0804芯片的引脚如图5-7所示。图5-7

ADC0804引脚图

3.任务实施

1)数字电压表硬件电路设计

在硬件设计时,需要考虑ADC0804与单片机的接口设计、显示器件LCD1602的接口设计,以及ADC0804模拟输入信号的来源。在一般嵌入式系统中,这个模拟信号是传感器将外界温度、声音等信号转换为电信号,再经过模拟电路处理之后送给A/D转换芯片的。我们这里通过电位器调节输入到ADC0804芯片的电压值(ADC0804芯片的参考电压调节成0V~5V,而电位器产生的电压范围也为0V~5V,因此没有必要设计额外的模拟电路),然后通过单片机进行运算处理得到这个输入电压值,最后再由LCD1602显示出来。电压表硬件框图如图5-8所示。图5-8电压表硬件框图在具体的硬件电路设计上,由于ADC0804自身带有三态输出锁存器,所以可以直接与单片机相接。LCD1602与单片机的接口在项目2中也有介绍。数字电压表具体硬件原理图如图5-9所示。图5-9数字电压表硬件原理图

2)数字电压表软件程序设计

对于数字电压表的软件程序,我们这里的核心是单片机如何控制ADC0804实现模数转换,要对ADC0804编程控制,首先需要了解ADC0804的工作时序。

ADC0804的工作分为两个过程:

(1)启动转换时序。启动转换时序如图5-10所示。图5-10启动A/D转换时序

(2)读取转换结果时序。读取转换结果时序如图5-11所示。图5-11读取转换结果时序本任务的主控制流程图如图5-12所示。

本任务的软件程序主要有四个模块:主调函数main()模块;ADC0804转换模块adc0804();转换结果处理模块AD_IntToStr();液晶显示模块。液晶显示模块在项目2的音乐盒设计中已经有写好,可以直接在本任务中使用。图5-12主控制流程图具体软件程序如下:程序分析:

(1)本程序adc0804()函数中,用到了_nop_()函数,这个函数是C51的一个库函数,包含在“intrins.h头文件中。_nop_()函数的作用是延时一个机器周期。我们采用的晶振频率为11.0592MHz,一个机器周期的时间约为1.085μs。

(2)AD_IntToStr()函数的主要功能是将转换结果先计算成与之对应的模拟电压值,再转成字符串,方便液晶显示。在函数adc0804()中从P1读回来的转换结果是模拟量转换成数字量之后的值,比如若输入模拟电压为2.5V,则得到的数字量就是127,如果将这个结果直接送去显示,则不能直观的看到输入的模拟电压值。故需要将这个数字量换算成对应的模拟量。

语句“ad_result=(ad_result*5.0*100)/256”就是数字量换算成模拟量,数字量与模拟量之间的关系是:

(3)

ad_str[0]=ad_result/100+′0′;

ad_str[1]=(ad_result%100)/10+′0′;

ad_str[2]=ad_result%10+′0′。

这三句的作用是将换算成模拟量的个、十、百位取出来,后面加字符‘0’是为了转换成字符。

(4)ad_str[3]=ad_str[2];

ad_str[2]=ad_str[1];

ad_str[1]=′.′;

这三句是将数组的第一个、第二个元素依次后移,为小数点留出位置,这里相当于除以100。

(5)strcpy(volt_str,"Voltage:");//将需要显示的提示信息复制到数组volt_str[]中

strcat(volt_str,ad_str);//将转换的电压值连接到提示信息之后

strcpy()、strcat()函数分别是字符串拷贝函数和字符串连接函数。这两个函数是C语言的标准库函数,包含在头文件“string.h”中。

strcat()函数的格式为:

strcat(字符数组1,字符数组2)

功能:把字符数组2连到字符数组1后面

返值:返回字符数组1的首地址说明:①字符数组1必须足够大;②连接前,两串均以‘0’结束,连接后,串1的‘0’取消,新串最后加‘0’。

strcpy()函数的格式为:

strcpy(字符数组1,字符串2)

功能:将字符串2拷贝到字符数组1中去

返值:返回字符数组1的首地址

说明:①字符数组1必须足够大;②拷贝时‘0’一同拷贝;③不能使用赋值语句为一个字符数组赋值。

3)软硬件联合调试

当写好的软件程序下载到单片机中之后,调节电位器,使输入模拟电压发生变化,显示屏上显示的电压值也会跟随变化。可以使用万用表测试输入的模拟电压值,然后与显示电压值进行比较,如果误差很大,说明转换结果错误,需要从硬件电路的设计和软件程序编写两方面查找原因。

5.4项目拓展

5.4.1常见A/D转换芯片ADC0809

1.ADC0809的主要特性

(1)8路输入通道,8位A/D转换器,即分辨率为8位;

(2)具有转换起停控制端;

(3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时);

(4)单个+5V电源供电;

(5)模拟输入电压范围0~+5V,不需零点和满刻度校准;

(6)工作温度范围为(-40~+85)℃;

(7)低功耗,约15mW。

2.内部结构及引脚功能

ADC0809的内部结构如图5-13所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。引脚图如图5-14所示。图5-13

ADC0809内部结构图5-14

ADC0809引脚图

ADDA为低位地址,ADDC为高位地址,用于对模拟量输入通道进行选择,其地址状态与通道对应关系见表5-2所示。表5-2

ADC0809通道选择表

3.ADC0809时序及工作过程

ADC0809的工作时序如图5-15所示。对应的控制过程是:

(1)首先确定ADDA、ADDB、ADDC三位地址,决定选择哪一路模拟信号;

(2)使ALE端接受一正脉冲信号,使该路模拟信号经选择开关到达比较器的输入端;

(3)使START端接受一正脉冲信号,START的上升沿将逐次逼近寄存器复位,下降沿启动A/D转换;

(4)EOC输出信号变低,指示转换正在进行。

(5)A/D转换结束,EOC变为高电平,指示A/D转换结束。此时,数据已保存到8位三态输出锁存器中。此时CPU就可以通过使OE信号为高电平,打开ADC0809三态输出,由ADC0809输出的数字量传送到CPU。图5-15

ADC0809时序图

4.ADC0809与单片机接口电路

ADC0809与单片机的接口方式决定了CPU读取转换结果的方式,主要有三种方式:

(1)查询方式:把转换结束信号EOC作为状态信号送到CPU的数据总线的某一位上。CPU启动ADC0809开始转换后,就不断地查询这个状态位,当EOC有效时,便读取转换结果。其接口如图5-16所示。图5-16查询方式ADC0809与单片机口电路

(2)延时方式:在这种方式下,不使用转换结束信号EOC。CPU启动A/D转换后,延时一段时间(略大于A/D转换时间),此时转换已经结束,可以读取转换结果。这种方式,通常采用软件延时的方法(也可以采用硬件延时电路),无须硬件连线,但要占用主机大量时间,多用于主机处理任务较少的系统中。

(3)中断方式:把转换结束信号EOC作为中断请求信号接到CPU的中断请求线上。ADC0809转换结束,向CPU申请中断。CPU响应中断请求后,在中断服务程序中读取转换结果。这种方式ADC0809与CPU并行工作,适用于实时性较强和参数较多的数据采集系统。中断方式下ADC0809与单片机的接口电路如图5-17所示。图5-17中断方式ADC0809与单片机接口电路5.4.2串行A/D转换芯片TLC2543

1.主要特性

(1)12位分辩率A/D转换器;

(2)在工作温度范围内10μs转换时间;

(3)11个模拟输入通道;

(4)3路内置自测试方式;

(5)采样率为66kb/s;

(6)线性误差±1LSBmax;

(7)有转换结束输出EOC;

(8)具有单、双极性输出;

(9)可编程的MSB或LSB前导;

(10)可编程输出数据长度。

2.内部结构及引脚功能

TLC2543的内部结构如图5-18所示,它由11路模拟开关、采样保持电路、输入地址寄存器、12位开关电容模数转换器、输出寄存器、控制逻辑和I/O计数器、12位并串转换器组成。双列直插封装的引脚图如图5-19所示。图5-18

TLC2543内部结构图5-19

TLC2543引脚图

3.TLC2543的控制字

TLC2543为串行A/D转换芯片,对于输入通道的选择由“DATAINPUT”引脚送入控制字来完成,其控制字格式如表5-3所示。表5-3

TLC2543控制字

4.TLC2543时序及工作过程

TLC2543的工作时序跟输出的数据位数与是否使用CS有关。使用CS,数据输出数据宽度为12位,MSB做前导的时序图如图5-20所示。图5-20

温馨提示

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

评论

0/150

提交评论