基于单片机和tlc2543的温度及电压测量装置.docx
《基于单片机和tlc2543的温度及电压测量装置.docx》由会员分享,可在线阅读,更多相关《基于单片机和tlc2543的温度及电压测量装置.docx(9页珍藏版)》请在冰点文库上搜索。
![基于单片机和tlc2543的温度及电压测量装置.docx](https://file1.bingdoc.com/fileroot1/2023-5/16/7d5c49e1-1059-41b4-a2da-17efc6d1c70d/7d5c49e1-1059-41b4-a2da-17efc6d1c70d1.gif)
基于单片机和tlc2543的温度及电压测量装置
基于51单片机和TLC2543的温度
测量以及电压测量装置
西安理工大学
一作品内容
摘要:
本电路主要采集STC89C52芯片和TLC2543芯片来完成一个简易的数字电压表以及温度测量装置,能够对输入的0〜5V的模拟直流电压以及0-100C温度进行检测,并通过1602LCD液晶进行显示。
该电压表的测量以及温度显示电路主要由三个模块组成:
模数转换模块、温度采集模块、数据处理模块及显示控制模块。
A\D转换模块主要由芯片
TLC2543来完成,它负责把采集到的模拟量转换为相应的数字量再传送到数据处理模块。
数据处理则由芯片STC89C52来完成,其负责把
TLC2543传送来的数字量经一定的数据处理,产生相应的显示码送到显示模块进行显示:
另外它还控制着TLC2543芯片的工作。
(1)基本功能:
1)电压测量范围0—5V,温度测量范围0-100C
2)能用1602LCD液晶显示电压值以及温度
3)测量精度达0.3V
4)自制温度测量装置
5)系统具备复位功能
(2)根据设计要求,系统可分为电压采集模块、温度采集模块、A\D
转换模块、主控模块、显示模块
电压、
温度采
集模块
显示模块
=^>
A\D
转\
换/
模
块
接口模块
直流稳压电源
(3)系统硬件电路设计与实现
1.A\D转换电路
TLC2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程。
由于是串行输入结构,能够节省51系列单片机I/O资源;且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。
2TLC2543的特点
(1)12位分辩率A/D转换器;
(2)在工作温度范围内10卩s转换时间;
(3)11个模拟输入通道;
(4)3路内置自测试方式;
(5)采样率为66kbps;
(6)线性误差士ILSBmax;
(7)有转换结束输出EOC;
(8)具有单、双极性输出;
(9)可编程的MSB或LSB前导;
(10)可编程输出数据长度。
各引脚功能如下:
1)AIN0〜AIN10――模拟量输入端。
11路输入信号由内部多路器选通。
对于4.1MHz的I/OCLOCK,驱动源阻抗必须小于或等于50Q,而且用60pF电容来限制模拟输入电压的斜率。
2)-I片选端。
在端由高变低时,内部计数器复位。
由低变
高时,在设定时间内禁止DATAINPUT和I/OCLOCK。
3)DATAINPUT――串行数据输入端。
由4位的串行地址输入来选择模拟量输入通道。
4)DATAOUT――A/D转换结果的三态串行输出端。
为高时处于高阻抗状态,为低时处于激活状态。
5)EOC――转换结束端。
在最后的I/OCLOCK下降沿之后,EOC从高电平变为低电平并保持到转换完成和数据准备传输为止。
6)GND地。
GND是内部电路的地回路端。
除另有说明外,所有
电压测量都相对GND而言。
7)I/OCLOCK――输入/输出时钟端。
I/OCLOCK接收串行输入信号
并完成以下四个功能:
(1)在I/OCLOCK的前8个上升沿,8位输入数据存入输入数据寄存器。
(2)在I/OCLOCK的第4个下降沿,被选通的模拟输入电压开始向电容器充电,直到I/OCLOCK的最
后一个下降沿为止。
(3)将前一次转换数据的其余11位输出到
DATAOUT端,在I/OCLOCK的下降沿时数据开始变化。
(4)I/OCLOCK的最后一个下降沿,将转换的控制信号传送到内部状态控制位。
8)REF+――正基准电压端。
基准电压的正端(通常为Vcc)被加到
REF+,最大的输入电压范围由加于本端与REF-端的电压差决定。
9)REF-――负基准电压端。
基准电压的低端(通常为地)被加到REF-。
10)Vcc——电源。
2.温度的模拟量采集:
温度传感器PTI00:
PtIOO温度传感器为正温度系数热敏电阻传感器,主要参数如下:
测量范围:
-200C〜+850C.
允许偏差值△《:
A级士(0.15+0.002/t/),B级±(0.30.0.005/t/)
热响应时间<30s
最小值入深度:
热电阻的最小置入深度》200mm
允许电流w5mA
另外,Ptl00温度传感器还具有抗振动、稳定性好、准确度高、耐高压等优点。
铂热电阻的线性较好,在0-100摄氏度之间变化时,最大非线性偏差小于0.5摄氏度。
铂热电阻阻值与温度关系为:
(1)时,RPtl00=l00*[1+At+B*t2+C*t2*(t-l00)]
(2)0C式中,A=0.00390802;B=-0.000000580;C=0.0000000000042/35。
可见PtIOO在常温0-100摄氏度之间变化时线性度非常好,其阻值表达式可近似简化为:
R=100(1+At),当温度变化1摄氏度,PtIOO阻值近似变化0.39欧。
下表为PtIOO在0C-100C的分度表:
£
0.
1
2
3
斗
■5
6
7
8
9
0
100
10039
100.78
101.17
101.56
101.95
102.34
102.73
103.12
103.51
10
103.9
104.29
104.68
105,07
105,46
105,85
10624
106,63
107.02
107,4
20
107.79
108.1S
10875
10S.96
10935
10973
11012
110.51
110.9
111.28
30
111.67
112.06
112.45
112.83
113.22
113,61
114.99
114.38
114.77
115.15
40
115.54
115.93
11631
1165
11708
117.47
117S5
118.24
118.62
11901
50
1194
11978
120.16
120.55
120.93
12132
121.7
12209
122.47
122.86
60
123.24
123.62
12401
124.39
12477
125.16
125.54
125.92
12631
126.69
70
127,07
127.45
12784
128.22
128,6
12937
129,75
130.13
130.51
80
130.89
131.27
13166
132.04
132.42
132.8
133.18
133.56
13394
13432
90
134.7
135.OS
13546
135.84
136.22
136.6
136.9S
13736
137.74
13S.12
100
138:
5
138.88
139.26
139.64
140.02
14039
140.77
14L15
141.53
141.91
2.接口电路设计(图见附录)
1)接口电路是TLC2543输出的二进制码经过单片机显示到液晶,主要由时钟电路、复位电路和单片机芯片组成。
2)时钟电路。
单片机内部有一个构成振荡器的增益反响放大器,引脚XTAL1和XTAL2分别是此放大器的输入端和输出端,这个放大器与作为反馈元件的片外晶振一起构成自己振荡器。
3)复位电路。
单片机一上电,立即复位,也可手动复位。
电阻和电容实现上电自动复位。
复位也是使单片机退出低功耗工作方式而进入正常状态的一种操作。
3.显示电路的设计
以下是1602液晶引脚的接线图,中间没有接线的为数据控制端口。
1602字符
型通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样:
二:
实验代码
#include
#defineucharunsignedchar#defineunitunsignedintsbitTCL2543_CLK=P1A2;sbitTCL2543_ADIN二PM3;sbitTCL2543_DOUT=P1A4;sbitTCL2543_CS=P1A5;
sbitIcden=P3A0;
sbitIcdrs=P3A1;voiddelay(unitz)
{
unitx,y;
for(x=z;x>0;x--)for(y=110;y>0;y--);
}
voidwrite_com(ucharcom){
lcdrs=O;
P2=com;
delay(5);
Icden=1;
delay(5);
Icden=0;
}
voidwrite_data(uchardate){
lcdrs=1;
P2二date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
voidinit()
lcden=0;
write_com(0x38);/*kia*da*/write_com(OxOc);/*dakaiguanbiao*/write_com(0x06);/*jiayi*/write_com(0x01);
write_com(0x80);/*shujuzhi*/
}
unitread2543(unsignedcharport)
{
unsignedinti;
unitad_value=0;
TCL2543_CLK=0;
TCL2543_CS=0;
port<<=4;
for(i=0;i<12;i++)
{
if(TCL2543_DOUT)ad_value|=0x01;
TCL2543_ADIN=(bit)(port&0x80);
TCL2543_CLK=1;
delay(60);
TCL2543_CLK=0;
delay(60);
port二port«1;
ad_value二ad_value<<1;
}
TCL2543_CS=1;
ad_value=ad_value>>1;
}
voidmain()
{
unitresult,num,a,table[3];floattmp,y;
while
(1)
{
init();
result二read2543(0);
result二read2543(0);tmp=(result*5.36/4096.0);
a=tmp*100*3.9;
table[0]=a/100;
table[1]=a%100/10;
table[2]=a%100%10;
write_data('v');write_data('o');writedata(T);
write_data('');
write_data('s');
write_data('');
for(num=0;num<3;num++)
{
if(num==1)
write_data('.');write_data(table[num]+0x30);
}
write_com(0x80+0x40);
result二read2543
(1);
tmp=(result*5.36/4096.0);
y=(tmp-0.878)/0.0233;
a=y*10;
table[0]=a/100;
table[1]=a%100/10;
table[2]=a%100%10;
write_data('t');
write_data('m');
write_data('p');
write_data('');
write_data('i');
writedata('s');
write_data('');
for(num=0;num<3;num++)
{
if(num==2)
write_data('.');write_data(table[num]+0x30);
}