1、数字温度计程序设计摘要测温仪表是一种常用的仪表,在工业生产及现实生活中起着相当重要的作用。常用的测温仪表有酒精温度计、水银温度计等。但在实际使用中,这些测温仪由于材质等原因往往对外在环境有着较高的要求,并且灵活性不高,准确性也不强。为了解决这些问题,人们在不断地探索。随着电子技术的发展,各种各样的新式测温仪表进入到人们的生活和工业生产中。这些仪表往往以传感器取代以前的物理介质材料,以单片机芯片为核心的转换电路把测得的非电量转化为电量,并最终转化为数字量,并准确而直观的显示出来。作为大学生单片机的课程设计,掌握测温技术并实际做一个数字温度显示仪是大学生理论和实践相结合的直接体现。结合本学期学习的
2、单片机及传感器技术就能很好的完成这一课题。单片机控制DS18B20智能温度显示仪在硬件方面主要器件有89C51系列单片机和DS18B20温度传感芯片以及用于现实温度数字的LCD液晶显示器等。所以电路简单、成本低;而软件方面采用C语言编程控制LCD显示,程序大小直接用单片机内部ROM存储器就能实现,无需扩展外部ROM存储器。关键字:89C51/89C52、DS18B20数字温度传感器、LCD液晶显示器、单总线数据传输一、引言随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、
3、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机AT89S51,测温传感器使用DS18B20,用3位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到以上要求。通过网上查询、翻阅图书了解到目前国内外市场以单片机为核心的温度控制系统很多,而且方案灵活,且应用面比较广,可用于工业上的加热炉、热处理炉、反应炉,在生活当中的应用也比较广泛,如热水器,室温控制,农业中的大棚
4、温度控制。以上出现的温度控制系统产品,根据其系统组成、使用技术、功能特点、技术指标。选出其中具有代表性的几种如下:1.1虚拟仪器温室大棚温度测控系统在农业应用方面虚拟仪器温室大棚温度测控系统是一种比较智能,经济的方案,适于大力推广,该系统能够对大棚内的温度进行采集,然后再进行比较,通过比较对大棚内的温度是否超过温度限制进行分析,如果超过温度限制,温度报警系统将进行报警,来通知管理人员大棚内的温度超过限制,大棚内的温控系统出现故障,从而有利于农作物的生长,提高产量。1.2小型热水锅炉温度控制系统该设计解决了北方冬季分散取暖采用人工定时烧水供热,耗煤量大,浪费人力,温度变化大的问题。设计方案硬件方
5、面采用MCS-51系列8031单片机为核心,扩展程序存储器2732,AD590温度检测元件测量环境温度和供水温度,ADC0809进行模数转换,同向驱动器7407、光电耦合器及9103的功放完成对电机的控制。软件方面建立了供暖系统的控制系统数学模型。本系统硬件电路简单,软件程序易于实现。它可用于一台或多台小型取暖热水锅炉的温度控制,可使居室温度基本恒定,节煤,节电,省人力。二、主要技术指标及特点1.1主要技术指标:测量温度范围:-50125;测温分辨率:0.0625;2.2特点: DS18B20采用单线接口,只需一根口线与单片机相连;用户可以自行设定非易失性的报警上下限值;采用双4位8段数码管显
6、示测量值;整个电路采用外接3V5.5V电源供电;直接用单片机的P0口做数码管的段码驱动、用P2.2口作为DS18B20的单总线输入端。采用手动上电复位。3.3设计方案方案一由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。方案二 进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换
7、,就可以满足设计要求。从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。二、单片机控制DS18B20温度显示仪硬件组成2.1 ds18b20介绍DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.05.5;零待机功耗;温度以或位数字;用
8、户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; 64位ROM的结构开始位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器和,可通过软件写入户报警上下限。DS18B20温度传感器的内部存储器还包括一个高速暂存和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为字节的存储器,结构如图3所示。头个字节包含测得的温度信息,第和第字节和的拷贝,是易失的,每次上电复位时被刷新。第个字节,为
9、配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图3所示。低位一直为,是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为,用户要去改动,R1和0决定温度转换的精度位数,来设置分辨率。温度 LSB温度 MSBTH用户字节1TL用户字节2配置寄存器保留保留保留CRC图3 DS18B20字节定义由表1可见,DS18B20温度转换的时间比较长,而且分辨率越高,所要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存的第、字节保留未用,表现为全逻辑。
10、第字节读出前面所有字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第、字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625LSB形式表示。当符号位时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表2是一部分温度值对应的二进制温度数据。表1 DS18B20温度转换时间表 DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、T字
11、节容作比较。若TH或TTL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索。在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。DS18B20的测温原理是这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡
12、器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的一个基数分别置入减法计数器、温度寄存器中,计数器和温度寄存器被预置在55所对应的一个基数值。减法计数器对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器的预置值减到时,温度寄存器的值将加,减法计数器的预置将重新被装入,减法计数器重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。表2一部分
13、温度对应值表温度/二进制表示十六进制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00000191H+10.1250000 0000 1010 000100A2H+0.50000 0000 0000 00100008H00000 0000 0000 10000000H-0.51111 1111 1111 0000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001
14、0000FC90H另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。图4 DS18B20与单片机的接口电路2.2 DS18B20温度传感器与单片机的接口电路DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图4 所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。
15、当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。系统硬件结构 如 图一图一系统硬件原理图 如 图二2.3数据采集及数据输入电路:数据采集是由数字温度传感器DS18B20采集被测对象的实时温度,然后提供给单片机89C52的P2.2端口作为数据输入。2.4数据显示电路: 八位LCD液晶显示器由单片机89C52的P0口驱动,采用共阳极,因此该LCD是低电平点亮、高电平熄灭。三、系统软件设计 本系统采用C语言进行软件程序设计,因此有直观、简便、灵活度高、便于修改
16、等优点。分别对LCD液晶显示器部分、数字温度传感器DS18B20部分进行软件程序设计。3.1.主程序流程图: 显示部分 DS18B20部分3.2读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图8示图9 温度转换流程图3.3温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图9所示3.4 计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负
17、的判定,其程序流程图如图10所示。 图10计算温度流程图 图11显示数据刷新流程图3.5程序代码如下:#include #define uchar unsigned char#define uint unsigned intsbit dula=P26;sbit wela=P27; sbit diola=P25;/*显 示 部 分*/sbit lcden=P34;sbit rs=P35; /RSsbit rw=P36; /WRuchar tip19=sensor is, tip29=not exist;/提示信息void delay1(uint z) uint x,y; for(x=z;x0;x
18、-) for(y=110;y0;y-);void write_com(uchar com)/写命令 rs=0; lcden=0; P0=com; delay1(5);/8.96ms lcden=1; delay1(5);/8.96ms lcden=0; void write_date(uchar date) /写数据 rs=1; lcden=0; P0=date; delay1(5);/8.96ms lcden=1; delay1(5);/8.96ms lcden=0; void init()/LCD初始化 P0=0; P1=0xff; diola=0; dula=0; wela=0;/锁存器
19、输出高电平,消除数码管闪烁 /lcden=0; rw=0; write_com(0x38);/*8位数据接口,2行显示,5*10点阵字符*/ write_com(0x0c);/*显示开*/ write_com(0x06);/*光标自动增一,画面不动*/; write_com(0x01);/*清屏*/ void write_sfm(uchar add,uint date) /写显示 uchar bai,shi,ge,c=.,d=C; bai=date/100; shi=date%100/10; ge=date%10; write_com(add); write_date(0x30+bai); w
20、rite_date(0x30+shi); write_date(c); write_date(0x30+ge); write_date(d);/*DS18B20 部 分*/sbit DS=P22; uint temp;bit flag18b20; void delay(uint count) while(count-);void dsreset(void) /18B20复位,初始化函数 uint n=60; DS=0; delay(60); /556us DS=1; while(n-) if(DS=0) flag18b20=1; DS=1;bit tmpreadbit(void) / 读1位数
21、据函数 uint i; bit dat; DS=0; i+; /3us DS=1; i+; i+; i+; i+;/16us dat=DS; i=4; while(i-); /48us return (dat);uchar tmpread(void) /读1字节函数 uchar i,dat; dat=0; for(i=0;i1; if(tmpreadbit() dat=dat|0x80;/从低位开始存起 return(dat);void tmpwritebyte(uchar dat) /向18B20写一个字节数据函数 uint i; uchar j; bit testb; for(j=0;j1
22、; if(testb) /写1 DS=0; i+; i+; /6us DS=1; i=4; while(i-); /48us else DS=0; /写0 i=6; while(i-);/66 us DS=1; i+; void tmpchange(void) /开始获取数据并转换 dsreset(); if(flag18b20=1) tmpwritebyte(0xcc); / 写跳过读ROM指令 tmpwritebyte(0x44); / 写温度转换指令 uint tmp() /读取寄存器中存储的温度数据 float tt; uchar a,b; dsreset(); delay(60);/
23、556us tmpwritebyte(0xcc); tmpwritebyte(0xbe); a=tmpread(); /读低8位 b=tmpread(); /读高8位 temp=b; temp=8; /两个字节组合为1个字 temp=temp|a; tt=temp*0.0625;/ 温度在寄存器中是12位,分辨率是0.0625 temp=tt*10+0.5; /乘10表示小数点后只取1位,加0.5是四折五入 return temp;int main() init(); while(1) tmpchange(); if(flag18b20=1) /判断是否检测到18B20的存在 write_sf
24、m(0x80,tmp(); else /没有检测到18B20 uchar i; write_com(0x80); for(i=0;i9;i+) write_date(tip1i); write_com(0x80+0x40+2); for(i=0;i9;i+) write_date(tip2i); 四、程设计总结和结论 现在市面上的数字温度传感器很多,诸如AD590数字温度传感器、DS18B20数字温度传感器等。本次课程设计采用的是DS18B20数字温度传感器,该产品采用美国DALLAS公司生产的 DS18B20可组网数字温度传感器芯片封装而成,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用
25、于各种狭小空间设备数字测温和控制领域。 数字温度传感器输出接口主要有如下几种:RS232数据格式接口; RS485数据格式接口; 单总线数据格式接口; CAN总线数据格式接口; ZIGBEE数据格式接口; TCP/IP数据格式接口。而DS18B20数字温度传感器采用的是单总线数据格式接口,只靠一根总线即可完成传感器与单片机之间的数据传输。具有结构简单、使用灵活方便等特点。本次课程设计采用的单片机芯片是89C52单片机,与51单片机基本相同。本次课程设计采用的显示器是LCD液晶显示器,具有显示灵活、清晰度高等特点。将以上三大部件集成在一块开发板上,便构成了本次课程设计的最终产品-数字式温度计。五
26、、心得体会 学习了一个学期的单片机原理与应用、传感器与检测技术后,我们进行了一周的课程设计,虽然课程设计只有短短的一周的时间,我们从中学习了很多课本里所学习不了的的知识,增强我们的动手能力,体现出我们的团队合作精神。我觉的最重要的是巩固了我们的专业知识。一开始我们用汇编广语言做的,然后我们最后提出了用C语言做,由此我们更巩固了大一所学的C语言设计,利用单片机开发机做,用DS18B20温度传感器做。星期三和星期四在实验室里实际做,经过老师的细心指导,我们改进了很多。从中也学到了,我们所谓任何真理都需要实践的检验,但在实际操作中还是遇到了这样那样的问题,让我清醒的认识到自身的不足和知识的无穷无尽。
27、也让我进一步体会到实践的重要性。 实践出真知,在以后的学习生活中,也要秉承这种一丝不苟、勇于创新的实践精神,不断地提高、完善自己。耐心的向老师学习,是个不断提高自我的方法,然而在此利用学习的方法可以用到生活上,是个很好的习惯。六、参考资料【1】单片机原理与应用电子工业出版社 朱兆优 陈坚 王海涛 邓文娟 编著【2】传感器与检测技术电子工业出版社 陈润景 郝晓霞 编著单片机课程设计评分表东华理工大学长江学院学生姓名:张泽田 班级:083142 学号:08314233课程设计题目:数字温度计程序设计项目内容满分实 评选题能结合所学课程知识、有一定的能力训练。符合选题要求5工作量适中,难易度合理10能力水平能熟练应用所学知识,有一定查阅文献及运用文献资料能力10理论依据充分,数据准确,公式推导正确10能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等10能体现创造性思维,或有独特见解15成果质量模型正确、合理,各项技术指标符合要求。15摘要叙述简练完整,假设合理、问题分析正确、数学用语准确、结论严谨合理;问题处理科学、条理分明、语言流畅、结构严谨、版面清晰15论文主要部分齐全、合理,符号统一、编号齐全。格式、绘图、表格、插图等规范准确,符合论文要求10字数不少于2000字,不超过15000字5总 分100指导教师评语:指导教师签名:年 月 日 附一:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1