毕业设计(论文)-基于单片机的数字温度计控制.doc

上传人:哈尼dd 文档编号:3283860 上传时间:2019-08-08 格式:DOC 页数:26 大小:327.02KB
返回 下载 相关 举报
毕业设计(论文)-基于单片机的数字温度计控制.doc_第1页
第1页 / 共26页
毕业设计(论文)-基于单片机的数字温度计控制.doc_第2页
第2页 / 共26页
毕业设计(论文)-基于单片机的数字温度计控制.doc_第3页
第3页 / 共26页
毕业设计(论文)-基于单片机的数字温度计控制.doc_第4页
第4页 / 共26页
毕业设计(论文)-基于单片机的数字温度计控制.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《毕业设计(论文)-基于单片机的数字温度计控制.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-基于单片机的数字温度计控制.doc(26页珍藏版)》请在三一文库上搜索。

1、 山东英才学院毕业论文设计山 东 英 才 学 院毕 业 论 文(设 计)论文(设计)题目: 数字温度计控制 二级学院: 计算机信息工程学院 学科专业: 电子信息工程 学 号: 080301250099 姓 名: 班 级: 试点本科一班 指导教师: 论文提交时间: 山东英才学院教务处制2011年 2月20 日毕业论文(设计)内容介绍论文(设计)题 目数字温度计控制选题时间201012完成时间2011.2论文(设计)字数13000关 键 词单片机,数字控制,温度计, DS18B20,AT89S51论文(设计)题目的来源、理论和实践意义:论文(设计)的主要内容及创新点:附:论文(设计)本人签名: 年

2、 月 日目录摘要 4第一章.数字温计总体设案1.数字温度计设计方案论述61.1方案一61.2方案二61.3方案三6第二章 数字温度计总体详细设计2.1 主控器72.1.1.AT89S51特点及特性 72.1.2.管脚功能说明72.2 温度采集部分设计72.2.1温度传感器DS18B20 72.2.2 DS18B20温度传感器与单片机的接口电路 102.2.3 DS18B20的控制方法 11第三章 系统硬件电路设计3.1电路原理133.2电路原材料清单143.3使用工具及仪表清单14第四章 系统软件设计4.1流程图154.2读出温度子程序154.3温度转换命令子程序164.4计算温度子程序164

3、.5数字温度计程序清单16总结 21致谢 22参考文献 23摘要本文综述了数字温度计的设计与制作过程,介绍了设计制作一个完整的数字温度计需要做的准备与制作过程,通过一段时间的努力制作,从刚开始透彻理解题目要求及所要设计的产品的各项性能功能,然后觉得利用单片机作为控制内核,其次主要的就是温度传感器DS18B20,及其他重要部分电路的配合下设计出一套完整的硬件系统,及它的灵魂软件系统。得到了一种基于单片机控制的数字温度计,本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数

4、字显示,该设计控制器使用单片机AT89S51,测温传感器使用DS18B20,用4位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到以上要求。 关键词:单片机,数字控制,温度计, DS18B20,AT89S5125 ABSTRACT This summary of has digital thermometer of design and making process, describes has design making a full of digital thermometer needs do of prepared and making process, through a

5、time of efforts making, from just began thorough understands topics requirements and the by to design of products of the performance function, then think using single tablets machine as control kernel, second main of is temperature sensor DS18B20, and the other important part circuit of tie Xia desi

6、gn out a full of hardware system, and the it of soul software system. Are based on single chip digital thermometers, thermometers are multi-purpose thermometer, you can set the upper and lower alarm temperature, when the temperature when you are not within the set range, can be alarming. Digital the

7、rmometer and described this design than traditional thermometers, with readings, wide temperature range and accuracy of temperature measurement and the output temperature with digital display, the design of controller with MCU AT89S51, temperature sensor DS18B20, with 4-bit common anode LED digital

8、tube serial ports to transfer data, temperature display, can accurately meet the above requirements. KEY WORDS: Single-chip, digital control, thermometers, DS18B20, AT89S51第1章.数字温度计总体设计方案1.数字温度计设计方案论证1.1方案一:热敏电阻由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测

9、温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。如下图:热敏电阻1.2 方案二:温度传感器DS18B20 (1).进而考虑到用温度传感器,在设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。 (2).方案二的总体设计框图温度计电路设计总体设计方框图如图1所示,控制器采用单片机AT89S51,温度传感器采用DS18B20,用4位LED数码管以串口传送数据实现温度显示。主 控 制

10、器LED显 示温 度 传 感 器单片机复位时钟振荡报警点按键调整图1总体设计方框图1.3 方案三:控制内核不用单片机,用DSP选定了温度传感器之后,再来考虑它的控制内核,因为数字温度计的设计并不复杂,单片机完全可以处理的了,DSP是比较高端的控制内核应用成本相对较高,所以选用单片机是即经济又实惠的选择。 第2章 数字温度计详细设2.1 主控制器AT89S512.1.1 AT89s51的特点及特性:40个引脚,4k bytes flash片内程序存储器,128 bytes的随机存取数据存储器(ram),32个外部双向输入/输出(i/o)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数

11、器,2个全双工串行通信口,看门狗(wdt)电路,片内时钟振荡器。 此外,at89s51设计和配置了振荡频率可为0hz并可通过软件设置省电模式。空闲模式下,cpu暂停工作,而ram定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存ram的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有pdip、tqfp和plcc等三种封装形式,以适应不同产品的需求。主要功能特性: 兼容mcs-51指令系统 4k可反复擦写(1000次)isp flash rom 32个双向i/o口 4.5-5.5v工作电压 2个16位可编程定时/计数器 时钟频率0-33mhz 全双工uart串行中

12、断口线 128x8bit内部ram 2个外部中断源 低功耗空闲和省电模式 中断唤醒省电模式 3级加密位 看门狗(wdt)电路 软件设置空闲和省电功能 灵活的isp字节和分页编程 双数据寄存器指针2.2温度采集部分的设计2.2.1.温度传感器DS18B20DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。 TO92封装的DS18B20的引脚排列见下图,其引脚功能描述见表1。(底视图) DS18B20表1DS18B20详细引脚功能描述序号名称引脚功能描

13、述1GND地信号2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.05.5;零待机功耗;温度以或位数字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; DS18B20采用脚PR35封装或脚SOIC封装,其内部结构框

14、图如图2所示。C64 位ROM和单线接口高速缓存存储器与控制逻辑温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC发生器Vdd I/O 图2 DS18B20内部结构64位ROM的结构开始位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器和,可通过软件写入户报警上下限。DS18B20温度传感器的内部存储器还包括一个高速暂存和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为字节的存储器,结构如图3所示。头个字节包含测得的温度信息,第和第字节和的拷贝,是易失的,每次上电复位

15、时被刷新。第个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图3所示。低位一直为,是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为,用户要去改动,R1和0决定温度转换的精度位数,来设置分辨率。温度 LSB温度 MSBTH用户字节1TL用户字节2配置寄存器保留保留保留CRC 图3 DS18B20字节定义由表1可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存的第、字

16、节保留未用,表现为全逻辑。第字节读出前面所有字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第、字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625LSB形式表示。当符号位时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表2是一部分温度值对应的二进制温度数据。表1 DS18B20温度转换时间表R1R0分辨率/位温度最大转换时间/ms00

17、993.750110187.510113751112750DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、T字节内容作比较。若TH或TTL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索。在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器;高温度系数晶振随温度变

18、化其振荡频率明显改变,所产生的信号作为减法计数器的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的一个基数分别置入减法计数器、温度寄存器中,计数器和温度寄存器被预置在55所对应的一个基数值。减法计数器对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器的预置值减到时,温度寄存器的值将加,减法计数器的预置将重新被装入,减法计数器重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到时,停止温度寄存器的累加,此时温度寄存器中的数

19、值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。表2一部分温度对应值表温度/二进制表示十六进制表示+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

20、 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。 图4 DS18B20与单片机的接口电路2.2.2 DS18B20温度传感器与单片机的接口电路DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电

21、方式,如图4 所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和

22、数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。2.2.3 DS18B20控制方法DS18B20有六条控制命令,指令约定代码操作说明 CCH:跳过扫描温度传感芯片序列号44H: 启动DS18B20进行温度转换 BEH :读度温度值DS18B20的复位时序 :(1) 先将数据线置高电平“1”。(2) 延时(该时间要求的不是很严格,但是尽可能的短一点)(3) 数据线拉到低电平“0”。(4) 延时750微秒(该时间的时间范围可以从480到960微秒)。(5) 数据线拉到高电平“1”。(6) 延时等待(如果

23、初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返回的低电平“0”。据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。(7) 若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。(8) 将数据线再次拉高到高电平“1”后结束。DS18B20的读时序:对于DS18B20的读时序分为读0时序和读1时序两个过程。对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程

24、,至少需要60us才能完成。(1)将数据线拉高“1”。(2)延时2微秒。(3)将数据线拉低“0”。(4)延时15微秒。(5)将数据线拉高“1”。(6)延时15微秒。(7)读数据线的状态得到1个状态位,并进行数据处理。(8)延时30微秒。DS18B20的写时序:对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。(1) 数据线先置低电平“0”。(2)

25、 延时确定的时间为15微秒。(3) 按从低位到高位的顺序发送字节(一次只发送一位)。(4) 延时时间为45微秒。(5) 将数据线拉到高电平。(6) 重复上(1)到(6)的操作直到所有的字节全部发送完为止。(7) 最后将数据线拉高。第3章 系统硬件电路设计3.1 电路原理一、jp1与c3、与c4三个元器件组成数字温度计的电源部分,jp1的两个插孔连接电源的零线与火线,c3与c4起到滤波作用,vcc端连接在单片机40脚上,可以说这一部分是数字温度计的血脉。二、Y1与c1、c2给单片机提供晶振信号,这一部分可以说是单片机的心脏。三、最重要的一部分是DS18B20,它此它的连接方式是外接电源方式。四、

26、p0口是数据口,连接数码管。五、四支三极管为数码管提供驱动。六、复位电路,s3为复位开关。七、蜂鸣器电路,三极管起到开关的作用。八、显示电路,p0口是数据口连接数码管的段码,数码管采用共阳连接,p2口是控制线。 3.2电路原材料清单序号名称型号单位数量备注1电阻1K支52电阻200支83传感器支4电阻4.7K支25电阻5.1K支16电阻10K支17晶振12MHz支18普通电容30pF支29电解电容100uF/16V支110电解电容470uF/25V支111普通电容0.1uF支112三极管8550支4三极管9013支1蜂鸣器支数码管SM410564支单片机支3.3使用工具及仪表清单序号名称型号单

27、位数量备注万用表块內热式电烙铁焊锡丝若干直流稳压电源台编程烧写器台导线若干 第4章 系统软件设计系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。Y发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?CRC校验正?确?移入温度暂存器结束NNY4.1流程图开始初始化示化获取温度值与温度上下限比较报警转换并显示YES图7 主程序流程图 图8读温度流程图 4.2读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图8示发DS18B20复位命

28、令发跳过ROM命令发温度转换开始命令 结束 图9 温度转换流程图4.3温度转换命令子程序 温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图9所示4.4 计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图10所示。 开始温度零下?温度值取补码置“”标志计算小数位温度BCD值 计算整数位温度BCD值 结束置“+”标志NY温度数据移入显示寄存器十位数0?百位数0?十位数显示符号百位数不显示百位数显示数据(不显示符号)

29、结束NNYY图10计算温度流程图 图11显示数据刷新流程图4.5 数字温度计程序清单 /初始化子程序#indclue #define uchar unsigned char #define uint unsigned int sbitP1.3=P11uchar disbuf4;ucharcode tab=0xc0,0xf9,0xa4,0xbo,0x99,0x92,0x82,oxf8,0x80,0x90,0xff,0xbf;uchar code xtab=0x7f,0xbf,0xdf,0xef; /子码表char tempmax=6C; /110度的十六进制为6Cchar tempmin=1C;

30、 /30的十六进制为1C/延时子程序、延时1msvoid mdelay(uint m) uchar i;for(;m0;m-)for(i=124;i0;i-);/ 延时子程序15微秒void delay(uchar k) do_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();while(k-);/单总线的复位,器件不存在输出1器件正常输出0bit reset( ) bit F;P1.3=1;_nop_();

31、_nop_();P1.3=0;delay(64);P1.3=1;delay(1);delay(16); / 等待结束脉冲if(p1.3=1)delay(15);P1.3=1;F=1;elsedelay(15);F=0:return(F); / 应答信号返回/从单总线送出1B、输入要写入的字节void write( uchar x) bir R;uchar i;for(i=8;i0;i-) /写字节、1位一各时序R=x&0x01;if(R)P1.3=0; /降低P1.3平开始转换脉冲_nop_();_nop_();P1.3=1;delay(8);elseP1.3=1; _nop_();P1.3=

32、0;delay(8);x1;/从单总线读1B子程序read ( ) uchar t,i,v;for(i=8;i0;i-)p1.3=1; _nop_();P1.3=0; / 降低P1.3电平开始脉冲delay(1);P1.3=1; /拉高P1.3脉冲delay(3); / 等待复位脉冲t=P1.3;P1.3=1;if(t=1)v|=0x80;v=v1;elsev1;return(v);/从DS18B20读取十六进制温度值返回未处理的16进制温度值uint readtemp( ) float t;bit flag; uchar c2;flag=reset( );while(flag);write(

33、0xcc); /跳过ROMwrirte(0x44); /开始转换c0=read( );c1=read( );t=c0+c1*256;return(t);Init 0( ) interrupt 0uchar i=5;if(P32=0 )tempmax+;disbuf3=0x0a;disbuf2=tempmax/100;disbuf1=tempmax%100/10;disbuf0=tempmax%10;for(i;i0;i-)tempdsp( ); Init 1( ) interrupt 1uchar j=5;if(P33=0 )tempmin+;disbuf3=0x0a;disbuf2=temp

34、min/100;disbuf1=tempmin%100/10;disbuf0=tempmin%10;for(j;j0;j-)tempdsp( );void waring ( )uchari, j,k=5;while(k-)P11=0;for(j=500;j0;j-)for(i=124;i0;i-);P10=1;Iint ( )IT0=1;IT1=1;EA=1;EX0=1;EX1=1;void change( uint t ) /将读出的16进制温度转换成十进制int i=0;float m;if(t0x7d0)m=m*0.625;disbuf3=0x0b;disbuf2=m/100;disbu

35、f1=(m%100/10);disbuf0=m%10/1;elsem=m*0.625;disbuf3=m/1000;disbuf2=m%1000/100;disbuf1=(m%100/10);disbuf0=m%10/1;/显示将dispbufij中的整数译码后通过数码管显示void teampdsp( ) uchar k;for(k=0;ktempmax|valuetempmin)waring( ); /调用获取温度子程序change( ); /调用温度转换子程序 tempdsp( );/调用显示子程序总结 经过三年的学习,终于完成了我的数字温度计控制的设计,虽然没有完全达到设计要求,但从心底里说,还是比较高兴的。过程当中用到的单片机作为控制内核,四段数码管作为显示部分,及其他电路,共同组成了我的成果数字温度计。首先设计的是它的硬件电路,最重要的部分是89s51控制内核,所有的数据处理都是采用的单片机,其次是DS18B20温度采集电路,其他还有晶振电路,复位电路,报警点及上下限温度调整电路。其次我们设计了它的灵魂软件电路,通过用C语言编程实现对器件的控制。 通过这次的论文设计,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,不仅使我真正的学会了数字温度计的设计,而且我相信通过这次的学习

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1