PT100温度巡检.doc_第1页
PT100温度巡检.doc_第2页
PT100温度巡检.doc_第3页
PT100温度巡检.doc_第4页
PT100温度巡检.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

基于MCS-51的智能温度巡检仪的设计 孙卫兵/中国矿业大学想对单片机初学者说的话不知不觉自己接触单片机已经有两年多了,从最初的MCS-51,到后来的AVR、MSP430,对于单片机也还是有一点理解的,当然我还只算是一只入门不久的菜鸟,对于很多技术我还是一个初学者,人外有人,牛人真的太多了。也常有同学问我单片机应该怎么学,我的回答都是两个字:实践。我觉得实践才能出真知,不实践是永远也学不会单片机的,这和你看一百道菜谱不下厨永远也做不出佳肴,看一百本游泳的书不下水永远也学不会游泳是一个道理。那么怎么去实践?这可能是初学者最关心的问题,网上类似的回答也很多,这都是老生常谈了,只要你是有心人,一搜一大把。简单说一下学习单片机的步骤:1.购买常用的工具(万用表,烙铁,烙铁架,松香,焊锡,螺丝刀,吸锡器,摄子)和电子元件(万能板,电阻,电容,发光二极管,整流桥,数码管,常用接插件等),先做个5V的直流电源(变压器整流桥7812/7805电解电容若干,电容的极性可别反了),再从基本的发光二极管驱动电路开始,灌电流还是拉电流?限流电阻取多大?怎么计算的?你是不是发现,很多基本的知识你都不懂,甚至连元件的型号你都叫不出来。没有关系,多问人,论坛、QQ技术群里热心人还是有的。准备一个笔记本,有用的知识应该记下来。2.用万能板搭建一个51的最小系统(当然要从51入手,资料太多了),点亮一个LED再说,接着是数码管、蜂鸣器,继电器,EEPROM,AD/DA,LCD,时钟芯片,数字温度计,红外遥控编解码等等,这里面三极管用的很普遍,有时用作放大,有时用开关,一定要理解清楚。看来要做的工作还真不少,这可不能急,一样一样来,谁让你想学到真本领。有条件买个开发板也很方便,若是能坚持DIY,也是趣味无穷。很多芯片是可以免费申请到的,最好申请的是美信公司的片子,我用的很多芯片都是从那申请的,例如:MAX1270、DS12C887、DS18B20、MAX518、MAX396、MAX7219、MAX145等,在此我是发自内心的感谢美信公司为我提供的免费午餐。当然这些芯片的datasheet都是英文的,所以,大学生朋友们,尽管我们是学电的,英文还是要好好学的。3.单片机的编程,多数人先接触汇编,要学好单片机,汇编是要懂的,但最终你必须掌握C语言,C语言真的太强大、太方便了,其好处不用我多说了。IDE个人感觉最好的是Keil,在这推荐一下。刚开始当然是从跑马灯开始,网上有很多单片机实验的源代码,都是绝好的学习资料,好好消化一下,收获会很大。 “hello world”的串口通信例子应该尽早调通,在没有仿真器的情况下,串口就是最好的调试工具,一个高人曾指点我:拿到一个处理器,首先要做的就是打通串口。串口一通就好比一个习武之人打通了全身筋脉,再学其它武功就会易如反掌。定时器是单片机非常重要的资源,其使用方法一定要整清楚。高人说过,没有定时器的单片机不是单片机,事实上我也没见过哪款单片机没有定时器的。另外,一个好的编程风格也很重要,看一看相关的资料,你会受益很多,网上这样的资料也很多。4.程序写好了,怎么下载到单片机里,总是借别人的编程器总是不太好,现在一些单片机有ISP功能了,如89S5X和AVR单片机。网上有一个Easy 51Pro v2.0宇宙版,资料很全,感谢前辈的无私奉献啊。照他说的电路自己做个ISP下载线,非常好用,若是自己做的不好用,买个现成的也不贵。这钱若还舍不得,那就试试STC的51系列单片机吧,可以用串口烧你的程序,这其实叫IAP,有兴趣可以去网上搜一下。当然,等你以后的用的单片机多了,编程器还是不可缺少的。5. 单片机故障的排查:对于单片机的问题,首先搞清楚一个CPU工作的三要素:电源,时钟源(晶振),复位电路,是不是都没有问题了,如果有示波器那就更好了,看一下ALE脚是不是有fosc/6的方波信号,有的话说明单片机在工作,三要素已经满足了,没有的话只能再不厌其烦的检察了,其实很简单,参照书上的电路一般没问题。等自己动手做出些东西来了,可以算是入门了,会有一种成就感,但是不要满足于这点小成功,这些还都是小把戏,前面的路还是漫长的,如FPGA,PCB,DSP,ARM等,都是需要学习的。保存好你的电路和源代码,这都是你的财富。会有用到它们的时候。另外,你做的东西可能只是功能上能实现,离一个成熟的产品还有很大差距,稳定性、抗干扰都不是小问题。这些知识必须有良好的电路基础理论,大学里学的数电、模电、信号都是非常重要的,特别是模电,好好复习,保证每次复习你都会有新的收获。路漫漫其修远兮,耐心去求索吧。地球真的很太危险,没有两把刷子何以立足。认真掌握一项技术,其必要性不言自明。想学就不要犹豫不决,不要老是等明天。这里再推荐几个我觉得比较好的网站或论坛,相信会对你有很大的帮助:电子开发论坛:学者之家:我们的AVR:电源网:电子工程师社区:老古开发网:超前科技:电子开发网:晓奇工作室:脚踏实地,自己动手去做吧,在DIY中你会体验到无限快感!孙卫兵中国矿大2007-11-15 作者按以下是我一年半前的一个作品,全部工作历时两个多月,其过程不乏坎坷与艰辛,走过很多弯路,然而当我真正完成它的时候,却是无比欣慰。该作品的完成标志着我的技术上的一次蜕变。可以说是终于跨进了单片机的大门了。此次整理成章,并公开源代码,由于代码较多,完全的Keil uv2工程文件单独打包提交。由于是手工制作,这里只附有原理图。文中肯定会有不足之处,但是总体来说,内容完整,具体明了,对于51单片机的资源已经发挥得很全面,希望能对初学者有一点启示。基于MCS-51的智能温度巡检仪的设计孙卫兵江苏,徐州,中国矿业大学(文昌校区)信电学院 摘要:本文介绍了铂热电阻Pt100的特性和采用Pt100测量温度的一般原理,采用两片AT89S52单片机协同工作,实现AD转换、键盘扫描、LCD显示、及开关量控制输出、串口通信等功能,完成16路温度的巡回检测和超限报警。上位机采用Visual Basic高级语言设计友好的可视化人机界面,将其所接收的信号以表格形式显示出巡检对象的温度状况。关键字: Pt100 ;温度测量 ;单片机 1引言在工业生产过程中,温度一直都是一个很重要的物理参数,温度的检测和控制直接和安全生产、产品质量、生产效率、节约能源等重大技术经济指标相联系,因此在国民经济的各个领域中都受到了人们的普遍重视。随着传感器技术和电子测量技术的迅猛发展,以单片机为主的嵌入式系统已广泛应用于工业现场,新型的电子测温仪器不仅操作简单,而且精度比传统仪器有很大提高。目前在工业生产现场使用最广泛的温度传感器主要有热电偶和热电阻,例如铂热电阻Pt100就是使用最广泛的传感器之一。本文介绍的就是采用PT100设计的16路温度巡回检测仪,由两片AT89S52单片机协同工作完成。2 Pt100的特性铂电阻是用很细的铂丝(0.030.07mm)绕在云母支架上制成,是国际公认的高精度测温标准传感器。因为铂电阻在氧化性介质中,甚至高温下其物理、化学性质都非常稳定,因此它具有精度高、稳定性好、性能可靠的特点。铂电阻在中温(-200650)范围内得到广泛应用。目前市场上已有用金属铂制作成的标准测温热电阻,如Pt100、Pt500、Pt1000等。它的电阻温度关系的线性度非常好,如图1所示是其电阻温度关系曲线,在-200650温度范围内线性度已经非常接近直线。由于铂电阻的测量精度、测量范围、线性度等特性都非常好,在工业生产中应用最广,市场上已有用金属铂制作成的标准测温热电阻,如Pt100、Pt500、Pt1000等。本系统采用的是Pt100,它的电阻温度关系的线性度非常好,如图1所示是其电阻温度关系曲线,在-200650温度范围内线性度已经非常接近直线。图1 Pt100的电阻温度关系曲线铂电阻阻值与温度的关系可以近似用下式表示:在0650范围内:Rt =R0 (1+At+Bt2)(1)在-1900范围内:Rt =R0 (1+At+Bt2+C(t-100)t3)(2)式中A、B、C为常数,A=3.9684710-3;B=-5.84710-7;C=-4.2210-12;Rt为温度为t时的电阻值;R0为温度为0时的电阻值,对于Pt100这种型号的铂热电阻,R0就等于100,即环境温度等于0度的时候,Pt100的阻值就是100。当温度变化的时候,通过以上电阻-温度表达式计算出环境的温度。但由于该表达式相对来说比较复杂,若用单片机处理这相的计算过程,将会占用大量的资源,程序的编写上也相当复杂,所以一般采用先查表再插值的方法。3 Pt100测温原理Pt100是电阻式温度传感器,测温的本质其实是测量传感器的电阻,通常是将电阻的变化转换成电压或电流等模拟信号,再将模拟信号转换成数字信号,再由处理器换算出相应温度。采用Pt100测量温度一般有两种方案:1.设计一个恒流源通过Pt100热电阻,通过检测Pt100上电压的变化来换算出温度;2.采用惠斯顿电桥,电桥的四个电阻中三个是恒定的,另一个用Pt100热电阻,当Pt100电阻值变化时,测试端产生一个电势差,由此电势差换算出温度。两种方案的区别只在于信号获取电路的不同,其原理上基本一致,如图2所示。本文采用恒流源做为信号获取电路的测温方案,恒流源通过Pt100热电阻,温度变化引起Pt100电阻值的变化,从引起电压的变化,放大后经AD采用后,送由单片机处理,换算出相应温度。为了达到高精度、宽量程的测温要求,选用的是AD转换芯片是12位串行AD芯片MAX1270。图2 Pt100测温原理4系统结构与实现方法根据智能仪器的基本设计思想,系统采用模块化设计,根据仪器的功能要求和技术指标,遵循自上而下,由大到小,由粗到细的思想,按照仪器的功能层次,把硬件和软件分成若干个功能模块,分别进行设计和调试;然后把它们连接起来,进行总调。本智能温度巡检仪的结构框图如图3所示,主要由四大部分:图3 智能温度巡检仪的原理框图4.1 恒流源的设计由于温度信号是由恒流源通过铂热电阻Pt100,通过检测Pt100上的电压变化量而获得的,所以设计一个稳定的恒流源尤为重要。如图4所示,是一个由两个三极管和一个运算放大器构成的恒流源电路,其中Rc是100的标准精密电阻。NPN型三极管9013的Vce相当于一个PN结的压降,实际测量约等于0.6V,由运算放大器具有很大有输入阻抗和很小的输出阻抗,由其虚短和虚断的特性可以知道PNP型三极管9012的射极电压等于三极管9013的射极电压,因此电阻Rc两端的电压等于三极管9013的Vce,即等于V恒值0.6V,则9012的射极电流Ie=0.6V/100=6mA由三极管的电流放大特性可知,三极管9012的基极电流Ib非常小,可以忽略不计,则集电极电流Ic近似等于Ie,即Ic6mA。由此在9012的集电极就构成了一个非常稳定的恒流源。图4 恒流源电路4.2 Pt100的四线式接线方法对导线电阻进行补偿铂热电阻的使用,一般有三种接法,分别是二线制接法、三线制接法和四线制接法,如图5所示,不同的接法适应于不同的精度要不求。 (a) 二线制 (b) 三线制 (c) 四线制 图5 Pt100三种接线方式1.二线制接法:如图4(a)所示,这种接法不考虑Pt100电缆的导线电阻,将A/D采样端与电流源的正极输出端接在一起,这种接法由于没有考虑测温电缆的电阻,因此只能适用于测温距离较近的场合。2.三线制接法:如图4(b)所示,这种接法增加了用于A/D采样的补偿线,三线制接法消除了连接导线电阻引起的测量误差,这种接法适用于中等测温距离的场合。3.四线制接法:如图4(c)所示,这种接法不仅增加了A/D采样补偿线,还加了一条A/D对地的补偿线,这样可以近一步的减小测量误差,可以用于测温距离较远的场合。如果只从精度上考虑,采用四线制接法效果最好。4.3 多通道的巡回切换本系统是一个多路巡检的系统,为了实现多路检测,如果在每一路都接一个恒流源和一个A/D采样通道,显然太浪费资源,所以要使用模拟通道开关芯片,可以实现多个通道的快捷切换,这样只要一路恒流源,一路A/D采样通道即可实现多路巡检功能,同时还可以保证各通道电流的一致性。本系统使用的模拟通道开关芯片是MAXIM公司的16路模拟通道芯片MAX396。该芯片通过地址线A3A0结合使能端EN,选择一路通道与COM端接通,因此只要由单片机控制地址线A3A0的地址递增,即可实现16路通道的巡回切换,使用非常方便。本系统中使用了两片MAX396,分别用于恒流源的A/D采样通道的切换,因为恒流源与A/D采样通道是要同步进行切换的,因此两片MAX396的的地址线是并连的。本系统中MAX396的接口电路如图6所示,没有外围元器件,非常简单。图6 MAX396的接口电路4.4 使用MAX1270进行 AD转换图7 MAX1270接口电路本系统采用的AD转换器是MAXIM公司的单电源12位串行AD转换芯片MAX1270,采用内部4.096V的参考电压,时钟由外部的单片机的I/O口提供,单片机采用软件模拟SPI与MAX1270通信,从而控制A/D采样和获取量化后的数字量。电路如图7所示。需要注意的是MAX1270具有多种工作模式:时钟有内部外部之分,参考电压有内部4.096V和外部参考电压之分。工作模式的选择由输入控制字决定,其输入控制字格式如表1所示:START是开始位,在/CS置低后START为逻辑“1”时表示输入控制字的开始;SEL2SEL0表示A/D采样通道的选择位,RNG表示满刻度输入电压选择位,RNG0时,电压VDD5V,RNG1时,电压VDD10V;BIP是单极性与双极性输入电压模式选择位,BIP0时,表示单极性输入电压,BIP1时,表示有正负双极性输入电压;PD1、PD0是电源和时钟模式选择位,PD00表示内部时钟,PD01表示外部时钟。表1 MAX1270控制字BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0STARTSEL2SEL1SEL0RNGBIPPD1PD0本系统采用的是外部时钟工作模式,其时序如图8所示,只要编程时严格按照此时序图读写数据,就可以正确地采样到外部被采样的电压。本系统中MAX1270使用5V电压供电,外部时钟,采样通道为CH7,因此输入控制字为11110001B。图8 MAX1270的外部时钟工作模式时序图4.5 信号的处理由于外界干扰或某些不可预知的因素,模拟量在受到干扰后,经A/D转换后的结果偏离了真实值,可能会出现一些随机的误差,如果只采样一次,无法确定结果是否可信。必须通过多次采样得到一个A/D转换的数据序列,通过软件算法处理后才能得到一个可信度较高的结果。这种方法就是数字滤波。数字滤波的前提是对同一数据进行多次采样,在单片机系统中一般有:中值滤波、算术平均滤波、去极值平均滤波、加权平均滤波、滑动平均滤波等。在本系统中采用的是去极值均值滤波,程序流程图如图9所示。算法原理如下:对于温度信号对应的电压采样值,连续采样n次,将其累加求和,同时找出其中最大值和最小值,再从累加和中减去最大值和最小值,按n-2个采样值求平均,即有效采样值。图9 去极值平均滤波程序流程图由Pt100的特性可知,虽然Pt100的线性度比较好,但是由于其温度电阻函数关系并非线性,用单片机运算则占用资源和时间都比较多。通常采用查表和线性插值算法进行标度变换的方法计算出温度,不仅运算快、占用单片机内部资源少,而且可以一定程度上对Pt100进行线性化校正,从而达到非常精确的测温效果。图10 插值算法示意图要查表首先要在单片机的ROM区建立一个电阻温度分度表,在检测值的范围内均匀选择若干个标定点,标定的点数越多则表格越大,对系统的描述也越精确。Pt100的铂电阻温度分度表,可以向Pt100的厂商索要,考虑到单片机的程序存储空间资源和实际的测量精度要求,并不需要每隔一摄氏度就取一个标定点,根据精度要求选择适当的温度间隔。例如在-200650范围内每隔5标定一个Pt100的电阻值,即共171个标定点,分别记作Ri,对应的温度记作Ti,i取0170。如图10所示,采用线性插值算法进行标度变换时,将检测值Rx通过顺序查表,与标定点Ri比较,确定区间Ri RxR i+1,然后进行线性插值算法求得温度值Tx:因为是每隔5标定一个电阻值,所以Ti+1- Ti=5,即:举例:现经A/D采样和滤波得Pt100的电阻值为Rx=112.68,求此时实测对象的温度Tx。解:已知查Rx=112.68,表得 R46RxR47, R46111.67,R47113.61,T46=30,代入式2得:()答:此时实测对象的温度Tx为32.60。4.6 键盘的扫描本系统主要是采用了常用的44矩阵式键盘,工作方式采用的是外部中断扫描,如图11所示。中断式键盘扫描原理是:当有键按下将会触发一个中断源,提醒处理器进行键值扫描查询。键盘的中断方式一般有定时中断和外部中断两种,本系统采用的是外部中断INT0。单片机先让行线输出低电平,当有键按下时列线电平不全为高,四输入与门输出端产生下降沿,将触发外部中断INT0,单片机进入中断后先延时去抖动,再扫描查寻键盘,读出键值,然后处理相应的键值处理子程序,无键按下则不进入中断,单片机不扫描,从而节约了大量的资源。图11 矩阵中断式扫描键盘4.7 LCD显示驱动设计在本文设计的智能温度巡检仪中使用了金鹏公司的OCMJ5*10B型的16080图形点阵LCD显示模块,它自身带有汉字字库,不仅软件操作简单,而且外围电路也很简单。系统用它显示通道序号、温度和系统参数等信息。由于屏幕较大,全屏可以同时显示8路通道的温度信息,使用户不用繁琐地按键就可以查看到多路温度信息,非常方便,LCD电路如图12(a)所示:1、2端为背光电源端;3、4端为LCD模块电源端;512为数据端;13为BUSY应答信号端,1表示已收到数据并正在处理中,0表示模块空闲;14为REQ是请求信号,高电平有效;15为复位端节;16为空脚下;17、18为LCD灰度调节端。 (a) LCD显示器 (b)发光二极管显示图12 系统显示器电路另外,系统还加了三个发光二极管,分别是绿、黄、红三种不同颜色,用于显示检测对象的温度情况。绿色表示温度正常,黄色检测对象温度超过报警温度,红色表示温度已超过危险温度。发光二极管电路如图11(b)所示。4.8 串口通信本系统与上位机的通信使用的是RS-232标准,驱动芯片是常用的MAX232A,电路芯片手册里的参考电路,非常简单,如图13所示。图13 RS-232驱动电路4.9 控制输出电路系统针对两个温度上限(报警温度和危险温度)设计了两个开关量输出。输出电路如图14所示,单片机的I/O口输出的TTL电平经过经由光电耦合来打开或关闭可控硅,从而开关外部设备,如设备散热风扇、检测对象的加热器的电源等。图14 开关量控制输出电路4.10 通信数据格式的约定系统中共有两个单片机和一个上位机PC,彼此之间都需要进行数据通信,为了方便通信,系统应该约定一个通用的数据格式。就此对本系统的通信数据帧做以下约定:控制命令与数据都采用ASCII码表示,通过串口传输ASCII码,单片机或上位机PC发送或接收的数据都严格按照以下帧格式操作:一.串口参数设置波特率,校验位,数据位,停止位,端口号可选 Null 8 1 可选二.格式符号约定开始标志:X结束标志:Y类型标识符: (A,B,C)报警温度T1 :(末位为小数)危险温度T2 :(末位为小数)波特率序号 :通道序号 N:通道温度 T:(ASC码,末位为小数,对上位机)通道温度 t:(flag_abs)0(整型,对单片机A)三.帧结构设计(一)更新数据命令(PC与单片机都可以用)1. 更新报警温度(A)帧结构:开始类型 T1 结束 X A 0000 Y2. 更新报危险温度(B)帧结构:开始类型 T2 结束 X B 0000 Y3. 更新波特率(C)帧结构:开始类型波特率序号 结束 X C 00000 Y4. 更新各通道温度(D) (对上位机)帧结构:开始类型通道序号 温度 结束 X D Y5. 更新各通道温度(d) (对I/O接口部分的单片机)帧结构:开始类型通道序号 温度 结束 X d (flag_abs)0 Y(二)请求命令(只有PC端可以用)6. PC机请求读取单片机的设置参数的请求命令(E)帧结构:开始类型 结束 X E Y7. PC机请求更新温度请求命令(F)帧结构:开始类型 结束X F Y(三)控制命令(只有PC端可以用)8. PC机控制单片机的状态自检命令(G)帧结构:开始类型 结束X G Y5 本设计中C51编程的例子我个人对C51的认识是:C51与标准C相比,只是对单片机定义一个头文件,使程序与单片机的IO口和内部寄存器关联起来,另外,针对单片机的特点,多了一种位变量的数据类型。在使用Keil的时候,不要忘了加上正确的头文件,除了单片机相应的头文件,Keil C也自带了一些常用头文件,如string.h、intrins.h等,具体都有哪些函数,还是自己找到这些头文件好好研读一遍最好。网上相应的教程也不少。多上技术论坛,会有意外的惊喜!也许真正的高手不会天天泡论坛,但是,三人行,必有我师!5.1 液晶模块的驱动目前很多LCD液晶模块已经做得很完善,使用也很简单,称为LCM,以金鹏公司的OCMJ5*10B型LCM为例:该LCM是16080图形文字液晶,自带字库,并行接口,只要按时输入厂家的命令即可完成图形、文字、点、线、反白等功能。如图15所示是处理器对模块写命令的时序图。举例如下:图15 LCD模块写命令时序图/-/硬件连接线定义,使用时需另外定义#define LCD_OUT P2/P2口作为LCD的数据端口sbit LCD_BUSY=P34;/P3.4口为忙标志信号sbit LCD_REQ=P35; /P3.5口为请求信号/-/程序名:extern void sub_lcd(uchar in)/功能:OCMJ5*10B型LCD驱动子程序/说明:在in中传入要发送的字节extern void sub_lcd(uchar in)while(LCD_BUSY);/等到LCD不忙的时候,方能开始写命令字_nop_();LCD_OUT=in;/要数据端口准备好数据_nop_();LCD_REQ=1;/请求输入命令while(!LCD_BUSY);/接收数据中,BUSY会保持“1”状态,完成接收命令,恢复“0”_nop_(); LCD_REQ=0;/完成接收一个命令后清除请求信号_nop_();/-/程序名:extern void ini_OCMJ(void);/功能:OCMJ5*10B型LCD初始化子程序extern void ini_OCMJ(void)LCD_OUT=0xff; /输出端口初始化_nop_();LCD_REQ = 0; /表示无请求_nop_();LCD_BUSY = 1; /置为输入_nop_();sub_lcd(0xf4);/0xf4是清屏命令,更多命令见LCM的说明书_nop_();_nop_();如上,sub_lcd(uchar in)是按时序送命令的函数,ini_OCMJ(void)是LCD初始化函数,其实就是送入一个清屏命令字(0xf4),更多功能的函数源代码见附件程序包中OCMJ_LCD.c文件。5.2 串口通信在“hello world.c”的例子里有输出函数printf(),对于Keil中的51单片机,printf()函数的输出设备是串口,因此,使用前必须设定好单片机的串口相关的寄存器。这就是为什么有些同学直接把“标准C”里的没有问题的“hello world.c”Copy到Keil里却不见有输出的原因。另外,串口输出可以直接对SBUF寄存器赋值,而不需要用printf(),对于串口的设置例子如下:/-/串口初始化设置void initUart(void)SCON = 0x50; /串口方式1,允许接收TMOD = 0x20; /定时器1定时方式2TCON = 0x40; /设定时器1开始计数TH1 = 0xE6;/12MHz 1200波特率TL1 = 0xE6;TI = 1;TR1 = 1; /启动定时器1 ES=1;/-/向串口发送一个字符 void send_char_com( unsigned char ch) SBUF=ch; while (TI= 0 ); TI= 0 ; /向串口发送一个字符串,strlen为该字符串长度 void send_string_com( unsigned char *str, unsigned int strlen) unsigned int k= 0 ; do send_char_com(*(str + k); k+; while (k strlen); 5.3 数字信号处理前面已经介绍过单片机中常用的数字信号处理方法,下面是一个对串行12位AD芯片MAX1270进行10次采样,去极值平均滤波并进行温度插值换算的函数。其中用到的一些变量和函数可以在程序包里找到。int Read_T() float Rx;int Vin10;int Tx,Vmax=0,Vmin=0,Vsum=0;uchar i; for (i=0;i10;i+)SPI(0xf0);Vini=(BUFH4&0x0f)*256+BUFL8);Vsum=Vsum+Vini;Vmax=Vin0; Vmin=Vin0;for (i=0;i10;i+)if (Vmax=Vini) Vmin=Vini ;Rx=(Vsum-Vmin-Vmax)/(8*I_mA); for (i=0;i133;i+)if (Rx=Pt_Ri)Tx=(Rx-Pt_Ri-1)*5/(Pt_Ri-Pt_Ri-1)+5*i-55)*10 ;break; return Tx; 6 结论本方案充分利用单片机的数据处理及实时检测能力,采用Pt100标准热电阻温度传感器的四线制接法,对导线电阻进行补偿,通过单片机对信号进行采样、数字滤波,使用插值算法对传感器进行非线性校正处理,使得此测温方案具有量程宽、稳定性好、性能可靠等特点。但同时也存在不足,例如采用电流源通过PT100时,传感器自身会产生一量的焦耳热,此热量一定程度上影响了传感器对外界温度的感知,由于电流较小,热量也很少,对于精度要求不高的场合可以忽略不计。对于上位机程序,主要是使用MSComm串口控件和数据库的知识,不是重点,这里从略,只附有图片。本文从理论深度上讲可能并不算是一篇好文,但却几乎包含了51单片机的所有内部资源,内容具体实用,丰富而完整。程序全部使用C语言,代码量较大,单独打包提交。孙卫兵中国矿大2007-11-15 附录1系统原理图附录2 Pt100铂电阻分度表0123456789-20018.49-19022.822.3721.9421.5121.0820.6520.2219.7919.3618.93-18027.0826.6526.2325.825.3724.9424.5224.0923.6623.23-17031.3230.930.4730.0529.6329.228.7828.3527.9327.5-16035.5335.1134.6934.2733.8533.4333.0132.5932.1631.74-15039.7139.338.8838.4638.0437.6337.2136.7936.3735.95-14043.8743.4543.0442.6342.2141.7941.3840.9640.5540.13-1304847.5947.1846.7646.3545.9445.5245.1144.744.28-12052.1151.751.2950.8850.475049.6449.2348.8248.41-11056.1955.7855.3854.9754.5654.1553.7453.3352.9252.52-10060.2559.8559.4459.0458.6358.2257.8257.415756.6-9064.363.963.4963.0962.6862.2861.8761.4761.0660.66-8068.3367.9267.5267.1266.7266.3165.9165.5165.1164.7-7072.3371.9371.5371.1370.7370.63369.9369.5369.1368.73-6076.3375.9375.5375.1374.7374.3373.9373.5373.1372.73-5080.3179.9179.5179.1178.7278.3277.9277.5277.1376.73-4084.2783.8883.4883.0882.6982.2981.8981.581.180.7-3088.2287.8387.4387.0486.6486.2585.8585.4685.0684.67-2092.1691.7791.3790.9890.5990.1989.889.489.0188.62-1096.0995.6995.394.9194.5294.1293.7393.3492.9592.55010099.6199.2298.8398.4498.0497.6597.2696.8796.480100100.39100.78101.17101.56101.95102.34102.73103.13103.5110103.9104.29104.68105.07105.46105.85106.24107.63107.02107.4920107.79108.18108.57108.96109.35109.73110.12110.51110.9111.2830111.67112.06112.45112.83113.22113.61113.99114.38114.77115.1540115.54115.93116.31116.7117.08117.47117.85118.24118.62119.0150119.4119.78120.16120.55120.93121.32121.7122.09122.47122.8660123.24123.62124.01124.39124.77125.16125.54125.92126.31126.6970127.07127.45127.84128.22128.6128.98129.37129.75130.13130.5180130.89131.27131.66132.04132.42132.8133.18133.56133.94134.3290134.7135.08135.46135.84136.22136.6136.98137.36137.74138.12100138.5138.88139.26139.64140.02140.39140.77141.15141.53141.91110142.29142.66143.04143.42143.8144.17144.55144.93145.31145.68120146.06146.44146.81147.19147.57147.94148.32148.7149.07149.45130149.82150.2150.57150.95151.33151.7152.08152.45152.83153.2140153.58153.95154.32154.7155.07155.45155.82156.19156.57156.94150157.31157.69158.06158.43158.81159.18159.55159.93160.3160.67160161.04161.42161.79162.16162.53162.9163.27163.65164.02164.39170164.76165.13165.5165.87166.24166.61166.98167.35167.72168.09180168.46168.83169.2169.57169.94170.31170.68171.05171.42171.79190172.16172.53172.9173.26173.62174174.37174.74175.1175.47续Pt100铂电阻分度表0123456789200175.84176.21176.57176.94177.31177.68178.04178.41178.78179.14210179.51179.88180.24180.6118.97181.34181.71182.07182.44182.8220183.17183.53183.9184.26184.63184.99185.36185.72186.09186.45230186.82187.18187.54187.91188.27188.63189189.36189.72190.09240190.45190.81191.18191.54191.9192.26192.63192.99193.35193.71250194.07194.44194.8195.16195.52195.88196.24196.6196.96197.33260197.69198.05198.41198.77199.13199.49199.85200.21200.57200.93270201.29201.65202.01202.36202.72203.08203.44203.8204.16204.52280204.88205.23205.59205.95206.31206.37207.02207.38207.74280.1290208.45208.81209.17209.52209.88210.24210.59210.98211.31211.66300212.02212.37212.73213.09213.44213.8214.15214.51214.86215.22310215.57215.93216.28216.64216.99217.35217.7218.05218.41218.76320219.12219.47219.82220.18220.53220.88221.24221.59221.94222.29330222.65223223.35223.7224.06224.41224.76225.11225.46225.81340226.17226.52226.87227.22227.57227.92228.27228.62228.97229.32350229.67230.02230.37230.72231.07231.42231.77232.12232.47232.82360233.17233.52233.87234.22234.56234.91235.26235.61235.96236.31370236.65237237.35237.7238.04238.39238.74239.09239.43239.78380240.13240.47240.82241.17241.51241.86242.2242.55242.9243.24390243.59243.

温馨提示

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

评论

0/150

提交评论