单片机的数字电压表论文.docx
- 文档编号:6230556
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:19
- 大小:197.37KB
单片机的数字电压表论文.docx
《单片机的数字电压表论文.docx》由会员分享,可在线阅读,更多相关《单片机的数字电压表论文.docx(19页珍藏版)》请在冰豆网上搜索。
单片机的数字电压表论文
2009届毕业设计
基于单片机的数字电压表
姓名:
小军
系别:
电子信息系
专业:
电子信息工程
学号:
0711030227
指导教师:
克发
2009年11月5日
基于单片机的数字电压表
小军电子工程学院电子信息系电信072班沙坪坝
摘要:
本文介绍一种基于89C52单片机的一种电压测量电路,该电路采用TLC1549连续逐次逼近型A/D转换器,测量围直流0-5000伏,使用LCD液晶模块显示,可以与PC机进行串行通信。
正文着重给出了软硬件系统的各部分电路,介绍了逐次逼近电路的原理,89C52的特点,TLC1549的功能和应用,LCD1602的功能和应用。
该电路设计新颖、简洁、功能强大、可扩展性强。
关键词:
电压测量,TLC1549,逐次逼近A/D转换器,1602液晶模块
Abstract:
Theintroductionofacost-based89C52MCUavoltagemeasurementcircuits,thecircuitsusedTLC1549high-precision,dual-scoringA/Dconversioncircuits,measuringscopeDC0-5000volts,theuseofLCDthatcanbecarriedoutwithaPCserialcommunications.Thepaperfocusesonprovidingasoftwareandhardwaresystemcomponentscircuit,introduceddoubleintegralcircuittheory,89C52featuresTLC1549functionsandapplications,LCD1602functionsandapplications.
thecircuitdesigninnovative,powerful,canbeexpansionarystrong.
KeyWords:
DigitalVoltmeterTLC1549LCD160289C52
1前言
数字电压表(DigitalVoltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。
传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。
目前,由各种单片A/D转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。
与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。
本章重点介绍单片A/D转换器以及由它们构成的基于单片机的数字电压表的工作原理。
2系统原理及基本框图
如图2.1所示,模拟电压经过档位切换到不同的分压电路衰减后,经隔离干扰送到A/D转换器进行A/D转换,然后送到单片机中进行数据处理。
处理后的数据送到LCD中显示,同时通过串行通讯与上位机通信。
图2.1系统基本方框图
3硬件设计
3.1输入电路
图3.1.1量程切换开关图3.1.2衰减输入电路
输入电路的作用是把不同量程的被测的电压规到A/D转换器所要求的电压值。
智能化数字电压表所采用10位串行ADC芯片TLC1549,它要求输入电压0-5V。
本仪表设计是0-5000V电压,灵敏度高所以可以不加前置放大器,只需衰减器,如图3.1.2所示9M、900K、90K、和10K电阻构成1/10、1/100、1/1000的衰减器。
衰减输入电路可由开关来选择不同的衰减率,从而切换档位。
为了能让CPU自动识别档位,还要有图3.1.1的硬件连接。
3.2A/D转换电路
A/D转换器的转换精度对测量电路极其重要,它的参数关系到测量电路性能。
A/D有很多种,从电路结构看可分为逐次逼近型、并联比较型、双积分型等。
并联比较型具有转换速度高的优点,但随着位数的增加,所使用的元件数量以几何级数上升,使得造价巨增,故应用并不广泛;双积分型具有精度高的优点,但转换速度太低,一般应用于非实时控制的高精度数字仪器仪表中;逐次比较型转换速度虽然不及并联比较型,属于中速ADC,但具有结构简单的价格优势,在精度上可以达到一般工业控制要求,故本设计采用美国仪器公司生产的具有串行控制、连续逐次逼近型的10位模数转换器TLC1549。
3.2.1逐次逼近型转换器的工作原理
逐次逼近型模数转换器一般由顺序脉冲发生器、逐次逼近寄存器、数模转换器和电压比较器等几部分组成,其原理框图如图3.2.1所示。
图3.2.1逐次逼近型模数转换器的原理框图
转换开始前先将所有寄存器清零。
开始转换以后,时钟脉冲首先将寄存器最高位置成1,使输出数字为100…0。
这个数码被数模转换器转换成相应的模拟电压,送到比较器中与进行比较。
若>,说明数字过大了,故将最高位的1清除;若<,说明数字还不够大,应将最高位的1保留。
然后,再按同样的方式将次高位置成1,并且经过比较以后确定这个1是否应该保留。
这样逐位比较下去,一直到最低位为止。
比较完毕后,寄存器中的状态就是所要求的数字量输出。
可见逐次逼近转换过程与用天平称量一个未知质量的物体时的操作过程一样,只不过使用的砝码质量一个比一个小一半。
能实现图11-3所示方案的电路很多。
图11-4所示电路是其中的一种,这是一个四位逐次逼近型模数转换器。
图中四个JK触发器~组成四位逐次逼近寄存器;5个D触发器~接成环形移位寄存器(又称为顺序脉冲发生器),它们和门~一起构成控制逻辑电路。
图11-4四位逐次逼近型模数转换器
现分析电路的转换过程。
为了分析方便,设D/A转换器的参考电压为=+8V,输入的模拟电压为=4.52V。
转换开始前,先将逐次逼近寄存器的四个触发器~清零,并把环形计数器的状态置为00001。
第1个时钟脉冲C的上升沿到来时,环形计数器右移一位,其状态变为10000。
由于,均为0,于是触发器被置1,和被置0。
所以,这时加到D/A转换器输入端的代码为1000,D/A转换器的输出电压为
和在比较器中比较,由于<,所以比较器的输出电压为。
第2个时钟脉冲C的上升沿到来时,环形计数器又右移一位,其状态变为01000。
这时由于,,均为0,于是触发器的1保留。
与此同时,的高电平将触发器置1。
所以,这时加到D/A转换器输入端的代码为1100,D/A转换器的输出电压为
和在比较器中比较,由于>,所以比较器的输出电压为。
第3个时钟脉冲C的上升沿到来时,环形计数器又右移一位,其状态变为00100。
这时由于,,均为0,于是触发器的1保留,而被置0。
与此同时,的高电平将置1。
所以,这时加到D/A转换器输入端的代码为1010,D/A转换器的输出电压为
和在比较器中比较,由于>,所以比较器的输出电压为。
第4个时钟脉冲C的上升沿到来时,环形计数器又右移一位,其状态变为00010。
这时由于,,均为0,于是触发器、的状态保持不变,而触发器被置0。
与此同时,的高电平将触发器置1。
所以,这时加到D/A转换器输入端的代码为1001,D/A转换器的输出电压为
和在比较器中比较,由于<,所以比较器的输出电压为。
第5个时钟脉冲C的上升沿到来时,环形计数器又右移一位,其状态变为00001。
这时由于,,均为0,触发器、、、的状态均保持不变,即加到D/A转换器输入端的代码为1001。
同时,的高电平将门~打开,使作为转换结果通过门~送出。
这样就完成了一次转换。
转换过程如表11-2所示。
表11-2四位逐次逼近型模数转换器的转换过程
上例中的转换误差为0.02V。
转换误差的大小取决于A/D转换器的位数,位数越多,转换误差就越小。
从以上分析可以看出,图11-4所示四位逐次逼近型模数转换器完成一次转换需要5个时钟脉冲信号的周期。
显然,如果位数增加,转换时间也会相应地增加。
逐次逼近型模数转换器的分辨率较高、误差较低、转换速度较快,是应用非常广泛的一种模数转换器。
3.2.2TLC1549的应用
TLC1549系列是美国仪器公司生产的具有串行控制、连续逐次逼近型
的模数转换器,它采用两个差分基准电压高阻输入和一个三态输出构成三线接口,其中三态输出分别为片选(CS低电平有效),输入/输出时钟(I/OCLOCK),数据输出(DATAOUT)。
TLC1549引脚排列如图1所示。
TLC1549能以串行方式送给单片机,其功能结构如图2所示。
由于TLC1549采用CMOS工艺。
部具有自动采样保持、可按比例量程校准转换围、抗噪声干扰功能,而且开关电容设计使在满刻度时总误差最大仅为±1LSB(4.8mV),因此可广泛应用于模拟量和数字量的转换电路。
图3.2.2.1TLC1549引脚排列图3.2.2.2TLC1549功能结构图
3.2.2.1TLC1549在工作温度围的极限参数
电源电压围:
-0.5V~6.5V;
125℃输入电压围:
-0.3V~VCC+0.3V;
输出电压围:
-0.3~VCC+0.3V;
正基准电压:
VCC+0.1V;
负基准电压:
-0.1V;
峰值输入电流:
+20mA;
峰值总输入电流:
±30mA;
工作温度围:
TLC1549M为-55℃~125℃,TLC1549C为0℃~70℃,TLC1549I为-40℃~85℃。
3.2.2.2TLC1549工作原理
TLC1549具有6种串行接口时序模式,这些模式是由I/OCLOCK周期和CS定义。
根据TLC1549的功能结构和工作时序,其工作过程可分为3个阶段:
模拟量采样、模拟量转换和数字量传输。
图3.2.2.3TLC1549的时序图。
1)输入的模拟量采样
在第3个I/OCLOCK下降沿,输入模拟量开始采样,采样持续7个I/OCLOCK周期,采样值在第10个I/OCLOCK下降沿锁存。
2)输入的模拟量转换
对于连续逐次逼近型的模数转换器TLC1549,CMOS门限检测器通过检测一系列电容的充电电压决定A/D转换后的数字量的每一位,如图3.2.2.4所示。
图3.2.2.4TLC1549的连续逐次逼近采样模式
在转换过程的第一阶段,模拟输入量同时关闭SC和ST进行充电采样,这一过程使所有电容的充电电压之和达到模数转换器的输入电压。
转换过程的第二阶段打开所有SC和ST,CMOS门限检测器通过识别每一只电容的电压确定每一位,使其接近参考电压。
在这个过程中,10只电容逐一检测,直到确定转换的十位数字量。
其详细步骤为:
门限检测器检测第一只电容(weight=512)的电压,该电容的节点512连接到REF+。
梯型网络中,其他电容的等效节点接到REF-。
如果总节点的电压大于门限检测器的电压(大约VCC的一半),“0”被送至输出寄存器,此时512-weight的电容连接到REF-。
经反相后为“1”,即为最高位MSB为1;如果总节点的电压小于门限检测器的电压(大约VCC的一半),“1”被送至输出寄存器,此时512-weight的电容连接到REF+,经反相后为“0”,存为最高位MSB为0。
对于256-weight的电容和128-weight的电容也要通过连续逐次逼近型的重复操作,直到确定从高位(MSB)到低位(LSB)所有数字量,即为初始的模拟电压数字量。
整个转换过程调整VREF+和VREF1以便从数字0至1跳变的电压(VZT)为0.0024V,满度跳变电压(VFT)为4.908V,即1LSB=4.8mV。
3)数字量的传输
当片选CS由低电平变为高时,I/OCLOCK禁止且A/D转换结果的三态串行输出DATAOUT处于高阻状态;当串行接口将CS拉至有效时,即CS由高变为低时,CS复位部时钟,控制并使能DA-TAOUT和I/OCLOCK,允许I/OCLOCK工作并使DATAOUT脱离高阻状态。
串行接口把输入/输出时钟序列供给I/OCLOCK并接收上一次转换结果。
首先移出上一次转换结果数字量对应的最高位,下一个I/OCLOCK的下降沿驱动DATAOUT输出上一次转换结果数字量对应的次高位,第9个I/OCLOCK的下降沿将按次序驱动DATAOUT输出上一次转换结果数字量的最低位,第10个I/OCLOCK的下降沿,DATAOUT输出一个低电平,以便串行接口传输超过10个时钟;I/OCLOCK从主机串行接口接收长度在10~16个时钟的输入序列。
CS的下降沿,上一次转换的MSB出现在DATAOUT端。
10位数字量通过DATAOUT发送到主机串行接口。
为了开始传输,最少需要10个时钟脉冲,如果I/OCLOCK传送大于10个时钟,那么在第10个时钟的下降沿,部逻辑把DATAOUT拉至低电平以确保其余位清零。
在正常转换周期,即规定的时间CS端由高电平至低电平的跳变可以终止该周期,器件返回初始状态(输出数据寄存器的容保持为上一次转换结果)。
由于可能破坏输出数据,所以在接近转换完成时要小心防止CS拉至低电平。
利用A/D串行输出设计不但提高了模数转换的精度,具有抗干扰性,而且节省了大量元件和印刷电路板的空间。
该系统设计已经成功应用于工业现场控制系统的数据测量。
3.3单片机部分
单片机选用的是宏晶科技推出的STC89C52,如图3.2.1.1所示。
该芯片具有低功耗、高性能的特点,是采用CMOS工艺的8位单片机,与AT89C51完全兼容。
STC89C52还有以下主要特点:
①采用了STC公司的高密度、非易失性存储器(NV-SRAM)技术;
②其片具有256字节RAM,8KB的可在线编程(ISP)FLASH存储器;
③有2种低功耗节电工作方式:
空闲模式和掉电模式
④片含有一个看门狗定时器(WDT),WDT包含一个14位计数器和看门狗定时器复位寄存器(WDTRST),只要对WDTRST按顺序先写入01EH,后写入0E1H,WDT便启动,当CPU由于扰动而使程序陷入死循环或“跑飞”状态时,WDT即可有效地使系统复位,提高了系统的抗干扰性能。
3.4液晶显示部分
图3.2.1.189C52引脚图
显示接口用来显示系统的状态,命令或采集的电压数据。
本系统显示部分用的是LCD液晶模块,采用一个16×1的字符型液晶显示模块,
点阵图形式液晶由M行×N列个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1个字节的8个位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元和显示RAM区1024个字节相对应,每一字节的容和屏上相应位置的亮暗对应。
一个字符由6×8或8×8点阵组成,即要找到和屏上某几个位置对应的显示RAM区的8个字节,并且要使每个字节的不同的位为‘1’,其它的为‘0’,为‘1’的点亮,为‘0’的点暗,这样一来就组成某个字符。
但对于带字符发生器的控制器来说,显示字符就比较简单了,可让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。
3.4.11601使用说明
图3.4.1.11601引脚图
表3.4.1.1LCD1601液晶模块的引脚
引脚
符号
功能说明
1
GND
接地
2
Vcc
+5V
3
VL
驱动LCD,一般将此脚接地
4
RS
寄存器选择0:
指令寄存器(WRITE)Busyflag,位址计数器(READ)1:
数据寄存器(WRITE,READ)
5
R/W
READ/WRITE选择1:
READ0:
WTITE
6
E
读写使能(下降沿使能)
7
DB0
低4位三态、双向数据总线
8
DB1
低4位三态、双向数据总线
9
DB2
10
DB3
11
DB4
高4位三态、双向数据总线
另外DB7也是一个Busyflag
12
DB5
13
DB6
14
DB7
寄存器选择,如表所示:
表3.4.1.3寄存器选择控制线操作
RS
R/W
操作说明
0
0
写入指令寄存器(清除屏幕…等)
0
1
读Busyflag(DB7),以及读取位址计数器(DB0~DB6)值
1
0
写入数据寄存器(显示各字型等)
1
1
从数据寄存器读取数据
Busyflag(DB7):
在此位未被清除为“0”时,LCD将无法再处理其他指令要求。
(1)显示地址:
部地址计数器的计数地址:
SB7=0(DB0~DB6)第一行00、01、02……等,第二行40、41、42……等,可配合检测DB7=1(RS=0,R/W=1)读取目前显示字的地址,判断是否需要换行。
表3.4.1.4LCD160116×1显示字的地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
00
01
02
03
04
05
06
07
40
41
42
43
44
45
46
47
(2)外部地址:
DB7=1,亦即80H+部计数地址,可以用此方式将字显示在某一位置。
LCD各地址列举如下表:
表3.4.1.5LCD160116×1显示字的外部地址
16×116字1行1601
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
80
81
82
83
84
85
86
87
C0
C1
C2
C3
C4
C5
C6
C7
表3.4.1.6LCD1601的指令组
指令
说明
设置码
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
清除显示幕
0
0
0
0
0
0
0
0
0
*
光标回到原点
0
0
0
0
0
0
0
0
1
*
进入模式设定
0
0
0
0
0
0
0
1
I/D
S
显示幕ON/OFF
0
0
0
0
0
0
1
D
C
B
移位
0
0
0
0
0
1
S/C
R/L
*
*
功能设定
0
0
0
0
1
DL
N
F
*
*
字发生器地址设定
0
0
0
1
AGC
设置显示地址
0
0
0
1
ADD
忙碌标志位BF
0
0
1
BF
显示数据
1
0
写入数据
读取数据
1
1
读取数据
I/DI/D=1表示加1,I/D=0表示减1
SS=1表示显示幕ONS=0表示OFF
DD=1表示显示屏幕OND=0表示显示屏幕OFF
CC=1表示光标ONC=0表示光标OFF
BB=1表示闪烁ONB=0表示显示闪烁OFF
S/CS/C=1表示显示屏幕移位S/C=0光标移位
R/LR/L=1表示右移R/L=0表示左移
DLDL=1表示8位DL=0表示4位
FF=1表示5×10点矩阵F=0表示5×7点矩阵
NN=1表示2行显示行N=0表示1行显示行
BFBF=1:
部正在动作BF=0:
可接收指令或数据码
3.4.2液晶显示部分与89C52的接口
如图所示:
用89C52的P2口作为数据线,用P0.1、P0.2、P0.3分别作为LCD的E、R/W、RS。
其中E是下降沿触发的片选信号,R/W是读写信号,RS是寄存器选择信号本模块设计要点如下:
显示模块初始化:
首先清屏,再设置接口数据位为8位,显示行数为1行,字型为5×7点阵,然后设
3.4.2.1液晶与89C52的接口
置为整体显示,取消光标和字体闪烁,最后设置为正向增量方式且不移位。
向LCD的显示缓冲区中送字符,程序中采用2个字符数组,一个显示字符,另一个显示电压数据,要显示的字符或数据被送到相应的数组中,完成后再统一显示.首先取一个要显示的字符或数据送到LCD的显示缓冲区,程序延时2.5ms,判断是否够显示的个数,不够则地址加一取下一个要显示的字符或数据。
3.5通讯模块
图3.5.1MAX232引脚功能图
89C52部已集成通信接口URT,只需扩展一片MAX232芯片将输出信号转换成RS-232协议规定的电平标准, MAX232是一种双组驱动器/接收器,每个接收器将EIA/TIA-232-E电平输入转换为5V TTL/CMOS电平。
每个驱动器将TTL/CMOS输入电平转换为EIA/TIA-232-E电平。
即EIA接口,就是把5V转换为-8V到-15V电位0V转换为8V到15V再经RXD输出,接收时由RXD输入,把-8V到-15V电位转换为5V,8V到15V转换为0V。
MAX232的工作电压只需5V,部有振荡电路产生正负9V电位。
4系统的软件设计
4.1主程序设计
TLC1549A/D与单片机连接电路的软件设计系统的程序流程图如图所示。
主程序一开始运行则设置堆栈起始地址为70H,设置中断寄存器,用来对TLC1549的中断进行计数,每5次后清零,完成一次数据采集工作,然后设置TLC1549的STB端的中断的优先级。
紧接着LCDM1601B进行一次清屏,使其各个指令、数据寄存器的值进行清空,屏幕不显示任何字符。
以前面对1601B的介绍,只要将01H送到数据总线,使RS=0,R/W=0,E有个下降沿的脉冲就可以完成清屏工作。
用以下指令实现MOVP2,#01H;送到数据DB7---DB0,调用子程序ENABLE,由于下降沿时,部数据要送到RAM区,所以要有一个延时子程序,使这个下降沿持续2.5毫秒。
部RAM有指令代码后就开始对RAM进行清零,所以屏幕原有的字符将被清除。
接着对1601进行功能的设定。
MOVP2,#01111000B,按表3.4.5来看是设定
显示器按2行显示,每行8位,5×7点阵。
调用一次子程序ENABLE程序,写入CPU的指令寄存器中。
每次向LCDM中写入一个指令,就调用一次ENABLE,然后再对显示器进行闪烁、光标等功能进行设定。
显示器的RAM地址按加1方法进行读写。
再设定第一行字符,也就是‘Voltage’的显示地址80H。
字符‘Voltage’的TABLE表地址送到DPTR中,然后调用远程查表命令,依次把数据送到P2口,这时再调用子程序WRITE3,使LCD1601的RS=1,R/W=0使使能端E产生一个下降沿脉冲,将数据送入到数据寄存器中,接下来执行子程序DISPLAY1,它的主要功能是将TABLE表中的字符输出到LCD中去。
调定好显示字符数即远程查表的次数,就开始查表了。
例如第一个字符“V”的ASCII码是56H,就将这个码送到P2口,再调用使能数据子程序,使RS=1(数据区使能)写入显示数据区,R/W=0表示写,E=来个下降沿延时2.5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 数字 电压表 论文