数字式热敏电阻温度计设计
数字式热敏电阻温度计设计
摘 要
温度作为一个重要的物理量,是工业生产过程中最普遍、最重要的工艺参数之一,所以温度测量技术和测量仪器的研究是一个重要的课题。随着时代的进步和发展,单片机技术已经伸入到各个领域,基于单片机数字温度计与传统的温度计相比,具有读数方便,测温范围广,其输出温度采用数字显示。
本设计是基于单片机的温度测试系统,采用热敏电阻搭建电桥,进行温度测试。利用高精密仪表放大器PGA203对小信号进行放大,该芯片具有失调电压小,输入阻抗高,共模抑制比高等特点。在进行模数转换是使用TLC4535将模拟信号转换为数字信号。TLC4535是14位的串行AD,具有转换速率高,低功耗等特点。51单片机作为主控制器件进行数据运算。该系统能较好的对温度变化进行实时显示,达到了本设计的要求。
关键字:单片机 仪表放大器 串行AD 温度电桥
The design of digital thermistor trermometer
ABSTRACT
Temperature as an important physics, industrial production process in the most general, one of the most important parameters, so the temperature measurement technology and measurement instrument research is an important topic. With the progress of The Times and development, microcontroller technology has dipped into various areas, based on single-chip digital thermometer and traditional thermometer readings, compared with convenient, temperature measurement range, its output temperature using digital display.
The design is based on single-chip temperature test system, build a bridge thermistor temperature test. High-precision instrumentation amplifier PGA203 small signal amplification, the chip has a small offset voltage, high input impedance, common mode rejection ratio and high。During the analog to digital conversion is to use the TLC4535 to convert analog signals to digital signals.TLC4535 14 serial AD, with a high conversion rate, low power consumption characteristics. 51 microcontroller as the main control device for data operations. The system can be better to temperature changes in real-time display to achieve the design requirements.
Keywords:Sigle-chip Instrumentatioa amplifier Serial the AD Temperature bridge
目 录
第1章 绪论
1.1 课题背景 ........................................................ 1
1.2国内外测温状况 ................................................... 1
1.3温度检测技术介绍 ................................................. 3
第二章 数字式热敏电阻温度计的设计方案
2.1 方案一 .......................................................... 5
2.2 方案二 .......................................................... 5
2.3方案比较与选择 ................................................... 6
第三章 设计原理与结构
3.1温度测量电桥结构及工作原理 ....................................... 8
3.1.1温度电桥的介绍 ............................................. 8
3.1.2电路工作原理 ............................................... 9
3.1.3.电路分析 .................................................. 10
3.2仪表放大器的结构及使用方法 ...................... 错误!未定义书签。
3.3.OP07的介绍及应用 ............................................... 19
3.4. TLC3545的介绍及应用 ........................................... 24
3.5单片机介绍 ...................................... 错误!未定义书签。
3.6 LED显示器简介 .................................................. 21
3.6.1 LED显示器结构 ............................................ 21
3.6.2 LED显示器分类 ............................................ 22
3.6.3 LED显示器的参数 .......................................... 22
3.7 LED显示器工作原理 .............................................. 22
3.8 键盘电路设计 ................................... 错误!未定义书签。
3.8.1键盘的作用 ................................ 错误!未定义书签。
3.8.2键盘电路及其说明 .......................................... 27
3.8.3 键盘的机械抖动 ............................................ 27
第四章 系统结构及工作原理
4.1系统硬件原理图及相关说明 ........................................ 28
4.1.1 基于80C51单片机及其外围电路的主机控制单元 ................ 11
4.1.2 PGA203组成的仪表放大器 ................................... 16
4.1.3 TLC3545串行AD ............................................ 24
4.1.4 LED数字显示及其驱动电路 .................................. 20
第五章 系统程序的设计
5.1程序模块设计 .................................................... 32
5.2 仿真环境介绍 ................................... 错误!未定义书签。
5.2.1 Keil介绍 ................................................. 33
5.2.2 Proteus介绍 .............................. 错误!未定义书签。 总 结 ................................................................ 34 参考文献 ............................................................. 35 附 录 ................................................................ 36
第1章 绪论
1.1课题背景
“工欲善其事,必先利其器”,这是中国的一句古话,人们早就知道工具的重要性。随着以知识经济为特征的信息时代的到来,人们对仪器仪表作用的认识愈加深入。作为工业自动化技术工具的自动化仪表与控制装置,在高新技术的推动下,正跨入真正的数字化、智能化、网络化的时代。而温度作为一个重要的物理量,是工业生产过程中最普遍、最重要的工艺参数之一。随着工业的不断发展,对温度测量的要求越来越高,而且测量的范围也越来越广,对温度的检测技术的要求也越来越高。因此,温度测量和温度测量技术的研究也是一个重要的研究课题。
温度传感器是当前温度检测的主要器件,本课题的主要出发点是设计出测量温度检测的温度连续检测的仪器。
该论文主要讲述了用温度传感测温的主要原理、实际硬件电路的设计、软件设计和调试分析。第一章介绍了温度检测现状和仪器仪表的发展现状。第二章提出了几种单片机数字温度计的设计方案并作出比较。第三章讲述了单片机系统硬件电路的设计过程,包括对智能温度传感器DS18B20详细的介绍以及单片机系统的设计,并讲述了仪器的软件设计,给出了软件流程图,整套仪器是由单片机系统控制的,包括LED显示器、通讯接口等。第四章进行系统调试分析,这将有助于今后对系统的改进,以进一步提高系统的测量精度,并讲述了通过本设计所得的结论和心得体会。
1.2国内外测温状况
随着国内外工业的日益发展,温度检测技术也不断地进步,目前的温度检测使用的温度计种类繁多、应用范围也较广泛,大致包括以下几种方法:
(1)利用物体热胀冷缩原理制成的温度计
利用此原理制成的温度计大致分成三大类:
a 玻璃温度计,它是利用玻璃感温包内的测温物质(水银、酒精、甲苯、煤油等)受热膨胀、遇冷收缩的原理进行温度测量的;
b 双金属温度计,它是采用膨胀系数不同的两种金属牢固粘合在一起制成的双金属片作为感温元件,当温度变化时,一端固定的双金属片,由于两种金属膨胀系数不同而产生弯曲,自由端的位移通过传动机构带动指针指示出相应温度;
c 压力式温度计,它是由感温物质(氮气、水银、二甲苯、甲苯、甘油和低沸点
液体如氯甲烷、氯乙烷等)随温度变化,压力发生相应变化,用弹簧管压力表测出它的压力值,经换算得出被测物质的温度值。
(2)利用热电效应技术制成的温度检测元件
利用此技术制成的温度检测元件主要是热电偶。热电偶发展较早,比较成熟,至今仍为应用最广泛的检测元件。热电偶具有结构简单、制作方便、测量范围宽、精度高、热惯性小等特点。常用的热电偶有以下几种:
a 镍铬-镍硅,型号为WRN,分度号为K,测温范围0-900℃,短期可测1200℃。 b 镍铬-康铜,型号为WRK,分度号为F,测温范围0-600℃,短期可测800℃。 c 铂铑-铂,型号为WRP,分度号为S,在1300℃以下的温度可长期使用,短期可测1600℃。
d 铂锗30-铂锗6,型号为WRR,分度号为B,测温范围300-1600℃,短期可测1800℃。
(3)利用热阻效应技术制成的温度计
用此技术制成的温度计大致可分成以下几种:
a 电阻测温元件,它是利用感温元件(导体)的电阻随温度变化的性质,将电阻的变化值用显示仪表反映出来,从而达到测温的目的。目前常用的有铂热电阻(分度号为Pt100,Pt10两种)和铜热电阻(分度号有Cu5O,Cu100两种)。
b 导体测温元件,它与热电阻的温阻特性刚好相反,即有很大副温度系数,也就是说温度升高时,其阻值降低。他们的关系为: RT=RT0e11B(-)TT0 (1.1)
式中 RT-在温度T(K)时的电阻值;
RT0-在温度T0(K)时的电阻值;
e-自然对数的底;
B-常数,其值与半导体材料的成分和制作方法有关。
c 陶瓷热敏元件
它的实质是利用半导体电阻的正温特性,用半导体陶瓷材料制作而成的热敏元件,常称为PCI,或NCI热敏元件。PCT热敏元件分为突变型和缓变型两类。突变型PCT元件的温阻特性是当温度达到顶点时,它的阻值突然变大,有限流功能,多数用于保护电器。缓变型PCI元件的温阻特性基本上随温度升高阻值慢慢增大,起温度补偿作用。NCI元件特性与PGT元件的突变特性刚好相反,即随温度升高,它的阻值减小[1]。
(4)利用热辐射原理制成的高温计
辐射测温在近年相对其他的测温领域显得活跃些,热辐射高温计通常分为两种:
一种是单色辐射高温计,一般称光学高温计;另一种是全辐射高温计,它的原理是物体受热辐射后,视物体本身的性质,能将其吸收、透过或反射。而受热物体放出的辐射能的多少,与它的温度有一定的关系。热辐射式高温计就是根据这种热辐射原理制成的。
(5)利用声学原理进行温度测量
声学法温度检测技术是近年来发展起来的一项新技术,利用该技术,可以对炉内的烟气温度测量值和火焰分布在线检测,判断炉的燃烧状况,进行实时调节和控制。声学温度检测技术的基本原理是通过测量声波传感器间的声波传播时间以最小二乘原理重建温度的测量方法。
1.3温度检测技术介绍
近年来,在温度检测技术领域,多种新的检测原理与技术的开发应用,已取得了重大进展。新一代温度检测元件正在不断出现和完善化。
(1)晶体管温度检测元件
半导体温度检测元件是具有代表性的温度检测元件。半导体的电阻温度系数比金属大1-2个数量级,二级管和三极管的PN结电压、电容对温度灵敏度很高。基于上述测温原理己研制了各种温度检测元件。
(2)集成电路温度检测元件
利用硅晶体管基极-发射极间电压与温度关系(即半导体PN结的温度特性)进行温度检测,并把测温、激励、信号处理电路和放大电路集成一体,封装于小型管壳内,即构成了集成电路温度检测元件。目前,国内外也进行了生产。
(3)核磁共振温度检测器
所谓核磁共振现象是指具有核自旋的物质置于静磁场中时,当与静磁场垂直方向加以电磁波,会发生对某频率电磁的吸收现象。利用共振吸收频率随温度上升而减少的原理研制成的温度检测器,称为核磁共振温度检测器。这种检测器精度极高,可以测量出千分之一开尔文,而且输出的频率信号适于数字化运算处理,故是一种性能十分良好的温度检测器。在常温下,可作理想的标准温度计之用。
(4)热噪声温度检测器
它的原理是利用热电阻元件产生的噪声电压与温度的相关性。其特点是:
a 输出噪声电压大小与温度是比例关系;
b 不受压力影响;
c 感温元件的阻值几乎不影响测量精确度;
所以它是可以直接读出绝对温度值而不受材料和环境条件限制的温度检测器。
(5)石英晶体温度检测器
它采用LC或Y型切割的石英晶片的共振频率随温度变化的特性来制作的。它利用µP技术,自动补偿石英晶片的非线性,测量精度较高,一般可检测到0.001℃,所以可作标准检测之用。
(6)激光温度检测器
激光测温特别适于远程测量和特殊环境下的温度测量。用氦氖激光源的激光作反射计可测得很高的温度,精度达1%;用激光干涉和散射原理制作的温度检测器可测量更高的温度,上限可达3000℃,专门用于核聚变研究,但在工业上应用还需进一步开发和实验。
(7)微波温度检测器
采用微波测温可以达到快速测量高温的目的。它是利用在不同温度下,温度与控制电压成线性关系的原理制成的。这种检测器的灵敏度为250kHZ/℃,精度为 1%左右,检测范围为20℃-1400℃。
(8)纯贵金属热电偶的研究
由两种纯金属组成的热电偶,因其材料均匀性远优于合金材料,因而稳定性好得多。在铂铑合金热电偶(S,R型)的不确定度已很难提高之后,人们开始寻找由纯贵金属组成的热电偶,以代替S和R型热电偶,作为传递的标准。
(9)信息技术时代自动化系统中的温度检测仪表
现代的工业过程自动化系统是现场总线控制系统,它是信息技术进入工业自动化后出现的新一代的自动控制系统。现场总线是安装在制造或过程区域的现场装置与控制室内的自控装置之间的数字式、串行、多点通信的数据总线。所有的现场仪表(温度检测仪表是其中一种)均接到现场总线上。在这样的系统中,通常不应使用各有不同输出的温度计,必须将输出转变成统一的电信号,这样“温度计”就变成了“温度变送器”。在现场总线控制系统中的温度变送器主要是热电偶变送器和热电阻变送器,也有辐射温度变送器。
第二章 数字式热敏电阻温度计的设计方案
2.1方案一
本方案主要是在温度检测部分利用了一款新型的温度检测芯片DS18B20,这个芯片大大简化了温度检测模块的设计,它无需A/D转换,可直接将测得的温度值以二进制形式输出。该方案的原理框图和硬件原理图如图2.1和图2.2所示:
图2.1 方案(一)系统结构框图
DS18B20是美国达拉斯半导体公司生产的新型温度检测器件,它是单片结构,无需外加A/D即可输出数字量,通讯采用单线制,同时该通讯线还可兼作电源线,即具有寄生电源模式。它具有体积小、精度易保证、无需标定等特点,特别适合与单片机合用构成智能温度检测及控制系统。
图2.2 方案(一)系统硬件原理图
2.2方案二
系统的硬件电路包括微控制器部分(主机),温度检测,人机对话(键盘/显示)
三个主要部分。系统结构框图和硬件原理图分别如图2.3和图2.4所示
:
图2.3 方案(二)系统结构框图
温度检测部分采用传统的热敏电阻,热敏电阻的阻值随环境温度变化而变化,变送器将电阻信号转换成与温度成正比的电压信号,经A/D转换器将其转换为单片机可识别得二进制数字量,单片机主要控制LED显示器显示正确的温度值,LED显示器实现显示功能。
图2.4 方案(二)系统硬件原理图
2.3方案比较与选择
方案(一)与方案(二)的主要区别在温度检测部分,方案(一)主要利用DS18B20这块芯片进行温度检测,并将采集到的模拟量转换为单片机识别的二进制数。方案(二)是采用热敏电阻检测温度,然后利用A/D转换器将温度模拟量转换为二进制数供单片机处理。
方案(二)与方案(一)相比,它最大的特点就是它能检测的温度范围很大,热敏电阻的性能决定了整个设计的所能检测的温度范围。方案(一)的温度检测范围已经由系统中的DS18B20的特性所决定,它能检测的温度范围为-55℃到120℃,其温度检测范围很宽,已能足够满足一般测量需要,从整体上来看方案(二)比方案(一)更具有实际的锻炼意义,因为我们方案(一)是利用现有的智能温度传感芯片DS18B20,他无需A/D转换,直接输出数字量,所以本设计中所使用的温度测量电路是方案(二)的电路。
第三章 系统硬件设计及工作原理
3.1系统的整体硬件框图
本系统温度测量模块主要为温度电桥,温度电桥采用高精度正温度系数阻值大小为10K的热敏电阻和20K的定值电阻进行分压,将温度信号转化为电信号。量程转换模块主要是利用仪表放大器PGA203对电压信号进行放大,以避免温度转换的电压信号太小。信号处理模块主要是利用OP07搭建的反相放大器使信号满足A/D转化器对模拟输入信号的要求。A/D转换器利用TLC3545将模拟信号转化为数字信号,送入到单片机。最后数据经过单片机处理,驱动数码管进行温度显示。
图3.1 系统的整体硬件框图
3.2温度测量电桥结构及工作原理 3.2.1温度电桥的介绍
温度电桥的主要元件是热敏电阻。热电阻是中低温区最常用的一种温度检测器。它的主要特点是测量精度高,性能稳定。其中铂热是阻的测量精确度是最高的,它不仅广泛应用于工业测温,而且被制成标准的基准仪。与热电偶的测温原理不同的是,热电阻是基于电阻的热效应进行温度测量的,即电阻体的阻值随温度的变化而变化的特性。因此,只要测量出感温热电阻的阻值变化,就可以测量出温度。目前主要有金
属热电阻和半导体热敏电阻两类。
金属热电阻的电阻值和温度一般可以用以下的近似关系式表示,即
Rt=Rt0[1+α(t-t0)] (3.1) 式中,Rt为温度t时的阻值;Rt0为温度t0(通常t0=0℃)时对应电阻值;α为温度系数。
半导体热敏电阻的阻值和温度关系为 Rt=AeB/t (3.2) 式中Rt为温度为t时的阻值;A、B取决于半导体材料的结构的常数。
相比较而言,热敏电阻的温度系数更大,常温下的电阻值更高(通常在数千欧以上),但互换性较差,非线性严重,测温范围只有-50~300℃左右,大量用于家电和汽车用温度检测和控制。金属热电阻一般适用于-200~500℃范围内的温度测量,其特点是测量准确、稳定性好、性能可靠,在程控制中的应用极其广泛。
3.2.2电路工作原理
热敏电阻RT和R1、R2、R3及RPl组成一个测温电桥。在温度为20℃时.选择R1和R9并调节RP、使电桥平衡。当温度升高时,热敏电阻的阻值变小,电桥处于不平衡状态.电桥输出的不平衡电压,由运算放大器放大,放大后的不平衡电压引起接在运算放大器反馈电路中的微安表的相应偏转,从而显示相应温度。 热敏电阻选用的阻值在500—50000范围之内。其温度电桥电路如下所示:
图3.2 温度测量电桥电路
3.2.3.电路分析
1、电桥的基本知识及上述电路电桥分析 电桥的基本电路如图4.3所示
uiui
I=I=1 (3.3) 2
R1+R2R3+R4
(1) 电桥输出电压:
uo=uab-uad=I1R1-I2R2
=(
R1R4
-ui
R1+R2R3+R4
(3.4) (3.5)
(2)电桥的平衡条件 温度电桥示意图如下所示:
a
R1R3-R2R4
=ui(R1+R2)(R3+R4)
R1R3=R2R4
b
(3)电桥的灵敏度
图3.3 温度电桥原理图
如电桥开始处于平衡状态,当各桥臂电阻发生微小变化时电桥失去平衡,其输出为:
uo=
(R1+∆R1)(R3+∆R3)-(R2+∆R2)(R4+∆R4)
ui
(R1+∆R1+R2+∆R2)(R3+∆R3+R4+∆R4)
(3.6)
一般∆R很小,即∆R
R1R3=R2R4 (3.7)
所以
(3.8)
实际使用中,为了简化桥路设计,同时也为了得到电桥的最大灵敏度,往往取桥
uo=
R1R2∆R1∆R2∆R3∆R4
(-+-)ui2
(R1+R2)R1R2R3R4
臂电阻相等,即
R1=R2=R3=R4=R0
(3.9)
若: ∆R1=∆R2=∆R3=∆R4=∆R0
半桥单臂接法:
∆R0
u≈ o
4R0
ui ∆R0
电桥电路的灵敏度为
S=B ∆R0R0
u
(3.10)
故图1所示电路的灵敏度为 S=U0/4.
因此,适当增加图3.2所示电路的工作电压,可以提高电路的灵敏度。
3.3基于80C51单片机的主机控制单元
目前,单片机的种类很多,MCS-51 8位单片机系列、MCS-96 16位单片机系列,还出现了32位单片机。位数越高,运算速度越快。本系统在数据处理上速度要求不是很高,8位单片机即可。因此,选用MCS-51系列单片机。考虑到功耗问题(如:8051功耗为630mw,而80C51为120mw),本系统选用CHMOS工艺的芯片。又因本系统需要处理数量较大的数据,程序占用空间也较大,而对定时器计数器和中断源的数量要求不多。结合现有的单片机开发系统(伟福仿真器E6000),本系统选用80C51系列单片机。
80C51单片机功能强、I/O口多,它们分别是P0口、P1口、P2口和P3口。本设计中利用了其中的2个I/O口,与本系统其它部分连接,分别实现了不同的功能。考
虑到设计程序时能更加方便故采用单片机总线的结构地址,其地址的分配主要是利74LS138进行选址。其主要示意图如下所示:
图3.4 单片机地址选择示意图
3.3.1单片机的引脚及其功能
各引脚的功能介绍如下所示:
(1)VCC:运行和程序校验时接电源正端。 (2)GND:接地。
(3)P0口:P0口是一个8位、漏极开路的双向I/O口,每脚可吸收8个TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
(4)P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4个TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
(5)P2口:P2口是一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流。当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。作为输入时,P2口的管脚被外部拉低,将输出电流,这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接 收高八位地址信号和控制信号。
(6)P3口:P3口是一个8位带内部上拉电阻的准双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流,这是由于上拉的缘故。P3口既可以读引 脚,也可以读锁存器,实现“读—修改—输出”操作。
P3口也可作为AT89C51的一些特殊功能口,P3口可同时为闪烁编程和编程校验接收一些控制信号,提供各种替代功能。
(7)RST:复位输入信号,高电平有效。在振荡器工作时,在RST上作用两个机器周期以上的高电平,将单片微机复位。
(8)ALE/PROG:地址锁存允许信号,输出。ALE可以驱动8个LSTTL负载。当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低8位字节,以实现低8位地址与数据的隔离。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6,因此它可用作对外部输出的时钟或用作外部定时脉冲。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令时ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行ALE禁止,置位无效。
(9)/PSEN:片外程序存储器读选通信号,低电平有效。在由外部程序存储器取 指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/PSEN可以驱动8个LSTTL负载。
(10)/EA/VPP:片外程序存储器访问允许信号,低电平有效。当/EA=1时,选择 片内程序存储器(80C51为4KB,80C52为8KB);当/EA=0时,则程序存储器全部在
片外,而不管片内是否有程序存储器。
使用80C51时,/EA必须接地,使用8751编程时,/EA施加21V的编程电压。 (11)XTAL1:输入到单片微机内部振荡器的反相放大器。当采用外部振荡器时,对HMOS单片微机,此引脚应该接地;对CHMOS单片微机,此引脚作驱动端。
(12)XTAL2:反相放大器的输出,输入到内部时钟发生器。当采用外部振荡器 时,XTAL2接受振荡器信号,对CHMOS单片微机,此引脚应悬浮。 AT89C51的引脚如下图所示:
图3.5 AT89C51的引脚图
3.3.2单片机的时钟电路
时钟电路是单片机最小系统的一部分,它用于产生单片微机工作所需要的时钟信号,单片微机本身就如一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。
系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。AT89C51单片机内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器 的反馈回路中。对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频
率的高低、震荡器的稳定性、起振的快速性和温度的稳定性,电容应尽可能的选择陶 瓷电容,电容值约为22pF。振荡器的工作频率一般在1.2MHz~12MHz之间,由于制造 工艺的改进,有些单片微机的频率范围正向两端延伸,高端可达40MHz,低端可达0Hz, 一般用11.0592MHz晶振。时钟电路图如下图所示:
图3.6 89C51的复位电路
3.3.3单片机的复位电路
复位电路的主要功能是把PC初始化为0000H,使单片微机从0000H单元开始执行程序。当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,可以按复位键以重新启动。复位电路如下图所示:
图3.7 89C51的时钟电路
除PC之外,复位操作还对其他一些特殊功能的寄存器有影响,对单片机的个别引脚信号也有影响,如在复位期间,ALE信号变为无效状态。复位操作有上电自动复位、按键电平复位和外部脉冲复位三种方式。复位电路是上电自动复位加按键复位。由于电容两端的电压不能突变,在上电的瞬间电容负端的电位和正端的电位相同都为高电平5V,紧接着电源给电容充电,经过很快的时间充电过程结束,
电容对于直流电来说是断路,此时RST引脚通过R12接地。整个过程会在RST引脚上产生一个维持几个机器周期的高电平脉冲足以使单片机有效复位。手动按键复位同样是在按键按下的瞬间使电容完成先放电再充电的过程,也能产生一个维持几个机器周期的高电平脉冲使单片机有效复位。RST引脚是复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡周期(即2个机器周期) 以上。若使用频率为
12MHz的晶振,则复位信号应持续2µs以上。
3.4 PGA203组成的仪表放大器
由PGA203搭建的仪表放大器主要是用来放大由温度电桥所产生的电压差信号。放大器的放大倍数由单片机控制,PGA203的放大倍数控制端口与单片机的P1.3和P1.4端口相连接。通过单片机的按键来控制选择放大器的放大倍数。后级由OP07搭建的反向放大器主要用来防止PGA203的输出电压太小,不能输入到后一级的AD中,而进行的第二级放大。其主要示意图如下所示:
图3.8 PGA203放大器与OP07放大器级联
3.4.1仪表放大器的结构及使用方法
PGA203是一个单片仪表放大器。PGA203提供1,2,4和8的增益,具有TTL或CMOS兼容输入,便于微处理器接口。具有FET输入和新的跨电路,在整个带宽内增益几乎是恒定的。允许增益和偏移激光微调,且无需任何外部元件。这款放大器是陶瓷或塑料包装。在整个工业温度范围内使用的是被指定的陶瓷封装,而商业范围使用的是塑料包装。
其部分参数绝对最大额定值: 供电电压:±18V 内部功耗:750mW
模拟和数字信号输入电压:±(VCC+0.5V) 压摆率:20V/us 共模抑制比:80dB 最大偏置电流:50pA
图3.9 PGA203引脚图
PGA203其内部结构如下图所示
:
图3.10 PGA203内部结构
图3.12所显示的是正确的电源和信号的连接方法。电源应用1MF的钽电容进行去耦,钽电容应尽量靠近放大器的引脚端,避免增益和由外部元件所造成的误差,以使芯片达到最高性能。任何的干扰都会导致检测端(引脚11)或VREF端(引脚4)的增益误差,因此这些线应保持尽可能的短。为了保持电路稳定,应注意电容输入到输出或偏移调节端的电容。
图3.11 PGA203应用连接
该芯片增益选择是通过A0(引脚1)和A1(引脚2)来控制。
图3.12 PGA203的增益控制
如果放大倍数不够可以考虑采用2片PGA203级联进行放大。使用2片PGA203后其放大倍数为两片放大倍数之积。其增益控制也由两片芯片共同控制。
考虑到2片PGA203的使用成本。为了避免在输入AD之前的电压太小,故又加了一级放大。该级放大器是有OP07搭建的反向放大器。
3.4.2 PGA203数据测试
PGA203是一种精密仪表放大器,其偏置电压和失调电流都很小,所以放大输入误差很小。为了测试PGA203的性能,下面对该芯片进行了一组数据的测试。
表3-2 PGA203测试数据:
理论电压值为信号源所给的直流电压值。
实际电压值为示波器在PGA203输出端口所测得的电压有效值。 放大倍数1、2、4、8倍表示单片机控制PGA203的放大倍数。
误差分析:PGA203为精密仪表放大器故误差较小,其主要误差是因为是由失调电压引起的,其次测试仪器也存在一定的误差。在使用该芯片时应注意电源的去耦,用一个大电容和小电容并联在电源两端去耦后测试效果更好。
3.4.3.OP07的介绍及应用
OP07的功能介绍:OP07芯片是一种低噪声,非斩波稳零的双极性运算放大器集成电路。由于OP07具有非常低的输入失调电压(对于OP07A最大为25μV),所以OP07在很多应用场合不需要额外的调零措施。OP07同时具有输入偏置电流低(OP07A为±2nA)和开环增益高(对于OP07A为300V/mV)的特点,这种低失调、高开环增益的特性使得OP07特别适用于高增益的测量设备和放大传感器的微弱信号等方面。
引脚结构图如下所示:
图3.13 OP07引脚结构图
芯片特点:
超低偏移: 150μV最大 低输入偏置电流: 1.8nA 低失调电压漂移: 0.5μV/℃ 超稳定,时间: 2μV/month 高电源电压范围: ±3V至±22V 其一般典型用法如下
:
图3.14 典型的低频噪声放大电路
OP07芯片引脚功能说明:
1和8为偏置平衡(调零端),2为反向输入端,3为正向输入端,4接地,5空脚 6 为输出,7接正电源
考虑到一片PGA203放大倍数可能不够,故用一片OP07搭建反向放大与PGA203进行级联
3.5 LED数字显示及其驱动电路
该模块主要是将单片机输出的结果进行显示。为了能实时动态显示单片机的输出结果,该模块使用8位数码管进行接收显示和2片74LS373对数码管进行控制。其主要还是利用单片机进行对该模块的整体控制。该模块整体结构示意图如下所示:
图3.15 显示模块示意图
3.5.1 LED显示器简介
通过发光二极管芯片的适当连接(包括串联和并联)和适当的光学结构。可构成发光显示器的发光段或发光点。由这些发光段或发光点可以组成数码管、符号管、米字管、矩阵管、电平显示器管等等。通常把数码管、符号管、米字管共称笔画显示器,而把笔画显示器和矩阵管统称为字符显示器。
3.5.2 LED显示器结构
基本的半导体数码管是由七个条状发光二极管芯片按图12排列而成的。可实现0~9的显示。其具体结构有“反射罩式”、“条形七段式”及“单片集成式多位数字式”等
(1)反射罩式数码管一般用白色塑料做成带反射腔的七段式外壳,将单个LED贴在与反射罩的七个反射腔互相对位的印刷电路板上,每个反射腔底部的中心位置就是LED芯片。在装反射罩前,用压焊方法在芯片和印刷电路上相应金属条之间连好φ30μm的硅铝丝或金属引线,在反射罩内滴入环氧树脂,再把带有芯片的印刷电路板与反射罩对位粘合,然后固化。反射罩式数码管的封装方式有空封和实封两种。实封方式采用散射剂和染料的环氧树脂,较多地用于一位或双位器件。空封方式是在上方盖上滤波片和匀光膜,为提高器件的可靠性,必须在芯片和底板上涂以透明绝缘胶, 这还可以提高光效率。这种方式一般用于四位以上的数字显示(或符号显示)。
(2)条形七段式数码管属于混合封装形式。它是把做好管芯的磷化镓或磷化镓圆片,划成内含一只或数只LED发光条,然后把同样的七条粘在日字形“可伐”框上,用压焊工艺连好内引线,再用环氧树脂包封起来。
(3)单片集成式多位数字显示器是在发光材料基片上(大圆片),利用集成电路工艺制作出大量七段数字显示图形,通过划片把合格芯片选出,对位贴在印刷电路板上,用压焊工艺引出引线,再在上面盖上“鱼眼透镜”外壳。它们适用于小型数字仪表中。
(4)符号管、米字管的制作方式与数码管类似。
(5)矩阵管(发光二极管点阵)也可采用类似于单片集成式多位数字显示器工艺方法制作。
3.5.3 LED显示器分类
(1)按字高分:笔画显示器字高最小有1mm(单片集成式多位数码管字高一般在 2~3mm)。其他类型笔画显示器最高可达12.7mm(0.5英寸)甚至达数百mm。(2)按颜色分有红、橙、黄、绿等数种。(3)按结构分,有反射罩式、单条七段式及单片集成式。 (4)从各发光段电极连接方式分有共阳极和共阴极两种。
3.5.4 LED显示器的参数
由于LED显示器是以LED为基础的,所以它的光、电特性及极限参数意义大部分与发光二极管的相同。但由于LED显示器内含多个发光二极管,所以需有两个特殊参数,第一、发光强度比(由于数码管各段在同样的驱动电压时,各段正向电流不相同,所以各段发光强度不同。所有段的发光强度值中最大值与最小值之比为发光强度比。比值可以在1.5~2.3间,最大不能超过2.5)第二、脉冲正向电流(若笔画显示器每段典型正向直流工作电流为IF,则在脉冲下,正向电流可以远大于IF。脉冲占空比越小,脉冲正向电流可以越大)
3.5.5 LED显示器工作原理
发光二极管一般为砷化镓半导体二极管,在发光二极管两端加上正电压,发光二极管发光。而数码管LED是由若干个二极管组合而成的,一般的“8”字型LED由“a,b,c,d,e,f,g,dp”8个发光二极管组成,如图3-5所示,每个发光二极管称为一个字段。
七段LED有共阴极和共阳极两种结构形式。 显示电路一般分为静态显示和动态显示两类。 (1)共阳极接法
把发光二极管的阳极连接在一起构成公共阳极。使用时公共阳极接Vcc,当某阴
极端为低电平时,该发光二极管就导通发光。 (2)共阴极接法
把发光二极管的阴极连在一起构成公共阴极。使用时公共阴极接GND,当某阳极端为高电平时,该段发光二极管就导通发光。
把8个发光二极管连在一起,公共端接高电平,叫共阳极接法,相反,公共端接低电平的叫共阴极接法,如图4.20所示。使用LED显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此LED显示器提供的编码正好是一个字节。在设计中,采用的是共阳极接法。当发光二极管导通时,相应的一段笔画就被点亮,从而形成不同的发光字符。其8段分别命名为a、b、c、d、e、f、g、dp。
图3.16 七段LED结构及外形图
七段LED字型码见表4.2所示:
七段LED包含七段发光二极管和小数位发光二极管,共需8位I/O口线控制,其代码为一个字节。
例如,要显示“0”,则a、b、c、d、e、f、g、dp分别为0000 0011B;要显示“A”,则a、b、c、d、e、f、g、dp分别为0001 0001B
(共阳极)。若要显示多个数字,只要让若干个数码管的位码循环为低电平就可以了。
3.6 TLC3545串行AD
TLC3545是14位的串行AD,其主要功能是将前级放大的模拟信号转换为数字信号,以使单片机能识别。由于TLC3545是14位的,故在精度上可以达到较好的效果,又因为是串行的AD,所以与单片机的连接很简单。其控制端CS与单片机P1.0端口相连接,SCLK,SDO分别于单片机的P1.1,P1.2端口相连接。其主要示意图如下:
图3.17 单片机与AD连接示意图
3.6.1 TLC3545的介绍及应用
TLC3545是一个家庭的高性能,14位,低功耗,微型CMOS模拟 - 数字转换(ADC)。这种芯片只需要单一的+5V电源就能工作。该芯片有单端输入,双端输入或单伪差分输入可选择。。该芯片有一个片选(CS),串行时钟(SCLK),串行数据输出(SDO),以及提供了一个最流行的串口直接的3线接口主机微处理器(SPI接口)。当与DSP
连接时,TLC3545 ADC的连接只有通过引脚1到DSP(CS)。
其内部引脚结构图如下所示
:
图3.18 TLC3545引脚图
TLC3545设计工作具有功耗低,以及自动电源关闭模式使节电功能进一步加强。该产品系列具有一个高速串行链路与外部SCLK到现代的主机处理器15兆赫。这种芯片使用一个内置的振荡器转换时钟,提供了2.67微秒最大转换时间。
其引脚功能介绍:
AIN(+):TLC3545的同相输入端。
AIN(-):TLC3545的反相输入端。
CS:芯片的选择端。当CS端有一个从高到低的电平跳跃,其数据输出口的高组态状态在最大延迟时间内消除。
GND:内部电路的接地回路。除非另有说明,所有电压测量均需接地。
SDO:AD转换结果的3态串行数据输出口。当CS为高电平是,SDO为高阻态的状态。当CS为低电平时,AD才开始转换。输出格式为MSB为最先输出的数据,其余的数据使当SCLK的上升沿才输出。在每个SCLK的下降沿输出数据才是有效的。当SCLK处于17个上升沿后,其输出状态变为高阻态。
SCLK:串行时钟。该芯片能从主控制器接受串行时钟。
REF:外部参考电压输入端。
VDD:正电源电压端。
图3.19 TLC3545时序图
当TLC3545工作时需要进行初始化,上电后的一个复位周期以正常运作。在复位周期开始后至少一个SCLK周期,最短时间为CS引脚(引脚1)下降沿但不超过8个 SCLK下降沿边缘长度。在复位周期终止后CS变为高电平。如果发出一个有效复位周 期,SDO输出呈现以上周期数据是3FC0h的。此输出代码是在确定一个有效的复位/初始化时发生。写程序时应参照该芯片的时序图。
该芯片的所有系列都兼容这种操作模式,通过CS的下降沿来启动芯片的工作周期。在整个采样期间CS一直为低电平,当SCLK持续24下降沿后,数据转换结束。
3.7键盘电路设计
键盘在单片机应用系统中能实现向单片机输入数据、传送命令功能,是人工干预单片机的主要手段。键盘实质上是一组按键开关集合。通常键盘所用开关为机械弹性开关,均利用了机械触点的合、断作用。键的闭合与否,反映在输出电压是呈现高电平或低电平,如果高电平表示断开的话,那么低电平则表示键闭合,所以通过对电平高低状态的检测,便可确认按键按下与否。为了确保CPU对一次按键动作只确认一次按键,必须消除抖动的影响,这样才能使键盘在单片机系统中的使用得更加稳定。
图3.20 独立式键盘与AT89C51连接图
常用的键盘接口分为独立式按键接口和矩阵式键盘接口。根据本系统的设计特点 及要求,键盘的功能主要是用来设置PGA203的放大倍数,因此本设计采用独立式键盘来完成这一功能要求。其电路连接上如图所示。
3.7.1键盘电路及其说明
独立式按键就是各个按键相互独立,每个按键各接一根输入线,一根输入线上的按键工作状态不会影响其他输入线上的工作状态。因此,通过检测输入线的电平状态 就可以很容易的判断出是哪一个按键按下了。独立式按键电路配置灵活,软件简单。但每一个按键需占用一根输入口线,在按键数量较多时学要较多的输入口线且电路结构复杂,故此种键盘适用与按键较少或操作速度较高的场合。
本设计,采用四按键键盘,所以在四个I/O口上接四个按键组成一个四按键的简易式键盘。各线通过电阻接+5V,当键盘上没有键闭合时,所有的线断开,呈高电平状态。当键盘上某一个键闭合时,该键所对应的线与连接单片机的线短路。例如:当S1号按键闭合时,它所在的线与连接线短路,使P3.2口为低电平,通过软件里对P3口查寻,如果只有P3.2口为低电平,那么就可以确定是S1键按下了,通过在软件里的设定,行使S1键的功能。如果同时有多个P3口为低电平,则报警显示,然后检查是否有多个键按下,直到只有一个P3口为低电平时,停止报警,那个低电平的P3口上连接的按键则为按下的键,在软件里执行他应该达到的功能。
3.7.2键盘的机械抖动
若Y0为低电平,S1号键闭合一次,图中t1和t3分别为键的闭合和断开过程中的抖动期(呈现一串负脉冲),抖动时间长短和开关的机械特性有关,一般为5~10ms,t2为稳定的闭合期,其时间由按键动作所确定,一般为十分之几秒到几秒,t0、t4为断开期。为了保证CPU对键盘的闭合仅作一次处理,在软件中必须去除抖动,在第一次检测到有按键下时,执行一段延时10ms的子程序后确认该按键电平是否仍保持闭合状态电平,如果闭合状态电平则确认有按键下,从而消除抖动的影响。键盘的机械抖动示意图如图下图所示
:
图3.21 键盘的机械抖动示
3.8系统硬件原理图及整体测试
3.8.1系统整体硬件工作原理
系统主要工作过程:首先由两个热敏电阻所搭建的温度电桥对温度信号进行采集。考虑到温度可能转化的电压信号较小,故温度电桥使用15V供电 。然后将电压 信号送入由PGA203所搭建的仪表放大器对该信号进行放大,由于TLC3545对输入的 模拟信号有要求(大于0.8V且小于供电电压),故在PGA203后面有加了一级由OP07组成的反相放大器的PGA203输出的信号进行放大或衰减,以到达下一级对输入信号的要求。当信号送入A/D转换器后,模拟电压信号就可以转化为单片机所识别的数字信号。因为TLC3545是串行AD,所以连接比较方便。当单片机读回数字信号后,对该数字信号进行处理,最后驱动数码管进行显示。整个控制过程使用单片机完成。
图3.22 单片机温度计硬件设计原理图
3.8.2系统整体调试和测试效果
在整个系统调试过程中首先应注意各个模块的供电问题,其中PGA203和OP07两块芯片使用15V电压供电。温度电桥和TLC3545使用+5V电压供电,所以可以直接使用单片机进行供电,以减少电源模块的使用。在开电源时要看清电压,以防止芯片烧毁。TLC3545的模拟输入电压大于5V,以防止TLC3545芯片损坏。所以在调试过程中应先在PGA203的输入端加较小的电压且放大倍数为1倍。用示波器实时监测TLC3545的模拟输入电压以确保输入电压不超过5V.。TLC3545为程控芯片故调试较为麻烦,所以在控制该芯片时应按照时序图说明来作为标准编写程序,因为TLC3545为14位串行AD,位数较高,故电源要用0.1uF的电容进行去耦,否则TLC3545的数字量在单机的显示可能会一直不稳定,这样会直接导致温度的显示也可能不稳定,在编写TLC3545的程序时要注意时序图上的一个周期为24个SCLK,一次转换完成后再进行
下一次转换时这当中应留足够的时间,大概为2-3uS的延时时间。
下表为系统的整体测试数据:
误差分析: 在整个测试过程中每一个模块所带来的误差都会逐级传递、放大,使最后的输出结果误差较大。在温度测试模块中,主要误差来源是热敏电阻的灵敏度和精确度,灵敏度直接反映最后的显示结果是否会随温度的变化而变化,而精确度与显示结果的大小有关。PGA203和OP07所组成的放大器中,由于PGA203是精密仪表放大器,故放大误差较小,主要是有失调电压所带来的微小误差。其供电电压最好是15V,否则误差可能增大。OP07搭建的是反相放大器,其反馈电阻式10K的滑动变阻器,可以对信号进行放大和衰减,该放大器的误差也较小,误差也主要是由失调电压带来的。A/D转换模块因为TLC3545为14位AD。其主要误差是由AD量化,编码是所带来的。其次是由于的基准电压不稳定所造成的,可以看到由于基准电压不稳,所以AD的数字量在单片机上的显示一直不稳定,所以必须要处理好AD的供电电压和基准电压的问题。通常是用0.1uF的电容进行去耦,这样AD的数字量在单片机上的显示会稳定,但仍有一些点的数字量显示不稳定。最后数据经单片机处理时由于我所定义的数据类型都是整数型的,所以数据处理时会舍去小数,最后的显示结果可能会导致误差。
下面为所做实物的一些测试图片
图3.23 温度测试实物图(电烙铁)
该图测试环境为将电烙铁放在热敏电阻旁边进行测试,可以看到温度显示为38℃。
图3.24 温度测试实物图(常温)
该图的测试环境为在实验室的常温下进行的测试,可以看到温度显示为25℃
图3.25 温度测试实物图(电扇)
该图的测试环境为在实验室将电扇打开后进行测试,可以看到温度显示为24℃。
图3.26 温度测试实物(人体)
改图的测试环境为将手放在热敏电阻上进行测试,可以看到温度显示为29℃。
第四章 系统程序的设计
4.1程序模块设计
系统程序主要包括C程序主函数、PGA203放大倍数控制函数、TLC3545控制函数、、温度计算转换函数和显示函数。主函数的主要功能是初始化并负责温度的读出、处理计算及显示。温度测量每2s进行一次,其程序流程如图下图所示:
图4.1 系统程序流程图
4.2 Keil介绍
随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil。该软件是美国Keil Software公司出品的软件开发系统,其允许用户使用汇编或者C语言来开发MCS-51单片机(或与MSC-51指令兼容的其它单片机)的应用软件。功能上,Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。外观上采用全Windows界面,容易上手。性能上,即便是使用高级语言开发应用程序,其生成的目标代码效率也非常高,多数语句生成的汇编代码很紧凑。
使用方法:
(1)建立工程文件
点击“Project->New project”菜单,出现一个对话框,要求给将要建立的工程起一个名字,你可以在编缉框中输入一个名字,点击“保存”按钮,出现第二个对话框,按要求选择目标器件片。
建立新文件并增加到组。分别设置“target1”中的 “Target,output,debug”各项,使程序汇编后产生HEX文件。
(2)C程序,调试系统程序
Keil单片机模拟调试软件内集成了一个文本编辑器,用该文本编辑器可以编辑源程序。在集成开发环境中选择菜单“File → New...”、单击对应的工具按钮或者快捷键Ctrl +N 将打开一个新的文本编辑窗口,完成汇编语言源文件的输入,并且完成源程序向当前工程的添加。
然后在集成开发环境中选择菜单“File→Save As...”可以完成文件的第一次存储。注意,C语言源文件的扩展名应该是“.c”,它应该与工程文件存储在同一文件夹之内。在完成文件的第一次存储以后,当对C语言源文件又进行了修改,再次存储文件则应该选择菜单“File→Save”、单击对应的工具按钮或者快捷键Ctrl +S 实现文件的保存。 接着的工作需要把汇编语言源文件加入工程之中。选择工程管理器窗口的子目“Source Group 1”,再单击鼠标右键打开快捷菜单。在快捷菜单中选择“Add File to Group ‘Source Group 1’”,加入文件对话框被打开。双击要加入的文件名或者选择要加入的文件名再单击“Add”按钮即可完成把C语言源文件加入工程。
(3)编译源程序,出现错误时,返回上一级对错误更改后重新编译,直到没有错误为止。
总 结
本次设计已完成,在整个设计过程中,对于精密放大器和高精度AD的选择花费了我大量的时间,在普通放大器和精密放大器之间,我最终选择了TI公司生产的仪表放大器PGA203,实践证明使用PGA203S所搭建的放大电路简单,应用方便灵活,而且能对微弱信号进行准确放大。在小信号放大中有较大优势,应用前景广阔。如在工业、空调系统、智能楼宇等领域的温度测量中可以有广泛的应用。在选择AD的过程中开始想使用并行的AD,最初选择的是ADC0804,但发现与单片机连接的接口太多,不仅连接复杂,使用不方便,而且精度也不高。后来经过不断的查资料发现串行AD TLC3545,不仅与单片机连接很简单,控制方便,而且精度也比ADC0804要高。这种串行AD己经成为一种非常有发展潜力和广阔应用前景的芯片。
我根据已经掌握的理论基础,结合实践,经历几个月的努力,终于完成的单片机数字温度计的设计,该温度计已成功通过测试,运行良好。
系统调试以程序为主。硬件调试比较简单,首先检查电路的连接是否正确,然后用万用表测试或通电检测。软件调试可以先编写显示程序并进行硬件的正确性检验,然后分别进行主函数、PGA203放大倍数控制、TLC3545的控制、温度计算转换函数、显示函数的等程序的编程及调试。由于TLC3545与单片机采用串行数据传送,因此,对TLC3545进行读写编程时必须严格的保证读写时序,否则将无法读取测量结果。本程序采用单片机C语言编写,用Keil C51编译器编程调试。软件调试到能显示到温度值,而且在有温度变化时(例如用手去接触),显示温度发生改变就基本完成。
性能测试可用制作温度计和已有的成品温度计来同时测量比较。由于TLC3545的精度很高,所以误差指标可以限制在 1℃以内,另外,10~55℃的测温范围使得该温度计完全适合一般的应用场合,其低电压供电特性可做成电池供电的手持电子温度计。
脚踏实地,认真严谨,实事求是的学习态度,不怕困难、坚持不懈、吃苦耐劳的精神是我在这次设计中最大的收益。我想这是一次意志的磨练,是对我实际能力的一次提升,也会对我未来的学习和工作有很大的帮助。
参考文献
[1] 杨素行.模拟电子技术基础[第3版].高等教育出版社,2006.
[2] 阎石.数字电子技术基础[第5版].高等教育出版社,2006.
[3] 赵茂泰.智能仪器原理及应用[第3版].北京:电子工业出版社,2009.
[4] 刘江海.EDA技术.华中科技大学出版社,2006.
[5] 郭天祥.51单片机C语言教程.北京:电子工业出版社,2006.
[6] 张忠梅.单片机的C语言应用程序设计[第4版].北京航空航天大学出版社, 2006.
[7] 李朝青.单片机原理及接口技术[第3版].北京航空航天大学出版社,2006.
[8] 全国大学生电子设计竞赛组委会.第五届全国大学生电子设计竞赛获奖作品 选编.北京理工大学出版社,2001.
[9] 孙有才 新型AT89S52系列单片机及其应用 清华大学出版社.
[10] 姚福安 电子电路设计与实践 山东科学技术出版社.
[11] 实用电子电路手册编写组 实用电子电路手册(数字电路分册) 高等教育
出版社.
[12] 李青 电路与电子技术基础 浙江科学技术出版社.
附 录
系统的整体硬件电路图
系统控制的具体实现程序:
#include
#include
#include
#define LED_DU XBYTE[0xFD00]
#define LED_WE XBYTE[0xFC00]
#define KEY_H XBYTE[0xFC00]
#define KEY_L XBYTE[0xFE00]
sbit SCLK=P1^2;
sbit SDO=P1^1;
sbit CSad=P1^0;
sbit A0=P1^3;
sbit A1=P1^4;
typedef unsigned int uint;
typedef unsigned char uchar;
uchar code tab_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; uchar k,m1,m2,m3,m4,m5,m6;
long int m,v;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
}
void ad() //AD转换 {
m=0;
k=0;
v=0x0000;
CSad=1;
CSad=0;
for(k=13;k>=0;k--)
{
SCLK=1;
SCLK=0;
v=SDO;
v=v
m=m|v;
}
SCLK=1;_nop_();
SCLK=0;_nop_();
SCLK=1;_nop_();
SCLK=0;_nop_();
SCLK=1;_nop_();
SCLK=0;_nop_();
SCLK=1;_nop_();
SCLK=0;_nop_();
SCLK=1;_nop_();
SCLK=0;_nop_();
SCLK=1;_nop_();
for(y=110;y>0;y--);
SCLK=0;_nop_(); SCLK=1;_nop_(); SCLK=0;_nop_(); SCLK=1;_nop_(); SCLK=0;_nop_(); SCLK=1;_nop_(); SCLK=0;_nop_(); SCLK=1;_nop_(); SCLK=0;_nop_(); }
void xianshi()
{
m1=m/100000%10;
m2=m/10000%10+0x30; m3=m/1000%10;
m4=m/100%10;
m5=m/10%10;
m6=m%10;
LED_WE=0x7f;
LED_DU=tab_du[m1]; delay(500);
LED_WE=0xbf;
LED_DU=tab_du[m2]; delay(500);
LED_WE=0xdf;
LED_DU=tab_du[m3]; delay(500);
LED_WE=0xef;
LED_DU=tab_du[m4]; delay(500);
LED_WE=0xf7;
LED_DU=tab_du[m5]; delay(500);
LED_WE=0xfb;
LED_DU=tab_du[m6]; delay(500);
}
void anjian()
{
uchar num;
KEY_H=0xfe;
delay(100);
if(KEY_L==0xfe) //S1 {
delay(60);
if(KEY_L==0xfe) {
num++;
if(num%4==1)
{A0=0,A1=0;}
if(num%4==2)
{A0=0,A1=1;}
if(num%4==3)
{A0=1,A1=0;}
if(num%4==0)
{A0=1,A1=1;}
}
}
}
void main()
{
CSad=1;
while(1)
{
ad();
xianshi();
anjian();
}
}