基于DS18B20的温度采集显示系统的设计说明_第1页
基于DS18B20的温度采集显示系统的设计说明_第2页
基于DS18B20的温度采集显示系统的设计说明_第3页
基于DS18B20的温度采集显示系统的设计说明_第4页
基于DS18B20的温度采集显示系统的设计说明_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、 PAGE29 / NUMPAGES31目录TOC o 1-3 h z uHYPERLINK l _Toc3613210231.引言 PAGEREF _Toc361321023 h 1HYPERLINK l _Toc3613210241.1绪论 PAGEREF _Toc361321024 h 1HYPERLINK l _Toc3613210251.2课程设计任务书 PAGEREF _Toc361321025 h 1HYPERLINK l _Toc3613210262.设计方案 PAGEREF _Toc361321026 h 4HYPERLINK l _Toc3613210273.硬件设计方案

2、PAGEREF _Toc361321027 h 4HYPERLINK l _Toc3613210283.1最小系统的设计 PAGEREF _Toc361321028 h 4HYPERLINK l _Toc3613210293.2 LED发光报警电路 PAGEREF _Toc361321029 h 6HYPERLINK l _Toc3613210303.3 DS18B20的简介与在本次设计中的应用 PAGEREF _Toc361321030 h 6HYPERLINK l _Toc3613210313.3.1 DS18B20的外部结构与管脚排列 PAGEREF _Toc361321031 h 6H

3、YPERLINK l _Toc3613210323.3.2 DS18B20的工作原理 PAGEREF _Toc361321032 h 7HYPERLINK l _Toc3613210333.3.3 DS18B20的主要特性 PAGEREF _Toc361321033 h 8HYPERLINK l _Toc3613210343.3.4 DS18B20的测温流程 PAGEREF _Toc361321034 h 9HYPERLINK l _Toc3613210353.3.5 DS18B20与单片机的连接 PAGEREF _Toc361321035 h 9HYPERLINK l _Toc3613210

4、363.4 报警温度的设置 PAGEREF _Toc361321036 h 9HYPERLINK l _Toc3613210373.5 数码管显示 PAGEREF _Toc361321037 h 10HYPERLINK l _Toc3613210383.5.1数码管工作原理 PAGEREF _Toc361321038 h 10HYPERLINK l _Toc3613210393.5.2数码管显示电路 PAGEREF _Toc361321039 h 12HYPERLINK l _Toc3613210403.6 硬件电路总体设计 PAGEREF _Toc361321040 h 12HYPERLIN

5、K l _Toc3613210414.软件设计方案 PAGEREF _Toc361321041 h 13HYPERLINK l _Toc3613210424.1主程序介绍 PAGEREF _Toc361321042 h 13HYPERLINK l _Toc3613210434.1.1主程序流程图 PAGEREF _Toc361321043 h 13HYPERLINK l _Toc3613210444.1.2主流程的C语言程序 PAGEREF _Toc361321044 h 14HYPERLINK l _Toc3613210454.2部分子程序 PAGEREF _Toc361321045 h 1

6、8HYPERLINK l _Toc3613210464.2.1 DS18B20复位子程序 PAGEREF _Toc361321046 h 18HYPERLINK l _Toc3613210474.2.2 写DS18B20命令子程序 PAGEREF _Toc361321047 h 19HYPERLINK l _Toc3613210484.2.3读温度子程序 PAGEREF _Toc361321048 h 21HYPERLINK l _Toc3613210494.2.4计算温度子程序 PAGEREF _Toc361321049 h 23HYPERLINK l _Toc3613210504.2.5显

7、示扫描过程子程序 PAGEREF _Toc361321050 h 24HYPERLINK l _Toc3613210515.基于DS18B20的温度采集显示系统的调试 PAGEREF _Toc361321051 h 26HYPERLINK l _Toc3613210526.收获和体会 PAGEREF _Toc361321052 h 28HYPERLINK l _Toc3613210537.参考文献 PAGEREF _Toc361321053 h 291.引言1.1绪论随着科学技术的发展,温度的实时显示系统应用越来越广泛,比如空调遥控器上当前室温的显示,热水器温度的显示等等,同时温度的控制在各个

8、领域也都有积极的意义。采用单片机对温度进行控制不仅具有控制方便、简单、灵活性大等特点,而且还可以大幅度提高被控温度的技术指标。本文介绍了基于DS18B20的温度实时采集与显示系统的设计与实现。设计中选取单片机AT89C51作为系统控制中心,数字温度传感器DS18B20作为单片机外部信号源,实现温度的实时采集。并且用精度较好的数码管作为温度的实时显示模块。利用单片机程序来完成对DS18B20与AT89C51的控制,最终实现温度的实时采集与显示。采用单片机对温度进行控制不仅具有控制方便、简单、灵活性大等特点,而且还可以大幅度提高被控温度的技术指标。1.2课程设计任务书微机原理与接口技术课程设计任务

9、书(二)题目:基于DS18B20的温度采集显示系统的设计一、课程设计任务传统的温度传感器,如热电偶温度传感器,具有精度高,测量围大,响应快等优点。但由于其输出的是模拟量,而现在的智能仪表需要使用数字量,有些时候还要将测量结果以数字量输入计算机,由于要将模拟量转换为数字量,其实现环节就变得非常复杂。硬件上需要模拟开关、恒流源、D/A转换器,放大器等,结构庞大,安装困难,造价昂贵。新兴的IC温度传感器如DS18B20,由于可以直接输出温度转换后的数字量,可以在保证测量精度的情况下,大大简化系统软硬件设计。这种传感器的测温围有一定限制(大多在50120),多适用于环境温度的测量。DS18B20可以在

10、一根数据线上挂接多个传感器,只需要三根线就可以实现远距离多点温度测量。本课题要求设计一基于DS18B20的温度采集显示系统,该系统要求包含温度采集模块、温度显示模块(可用数码管或液晶显示)和键盘输入模块与报警模块。所设计的系统可以从键盘输入设定温度值,当所采集的温度高于设定温度时,进行报警,同时能实时显示温度值。二、课程设计目的通过本次课程设计使学生掌握:1)单总线温度传感器DS18B20与单片机的接口与DS18B20的编程;2)矩阵式键盘的设计与编程;3)经单片机为核心的系统的实际调试技巧。从而提高学生对微机实时控制系统的设计和调试能力。三、课程设计要求1、要求可以从键盘上接收温度设定值,当

11、所采集的温度高于设定值时,进行报警(可以是声音报警,也可是光报警)2、能实时显示温度值,要求保留一位小数;四、课程设计容1、人机“界面”设计;2、单片机端口与外设的设计;3、硬件电路原理图、软件清单。五、课程设计报告要求报告中提供如下容:1、目录2、正文(1)课程设计任务书;(2)总体设计方案(3)针对人机对话“界面”要有操作使用说明,以便用户能够正确使用本产品;(4)硬件原理图,以便厂家生成产(可手画也可用protel软件);(5)程序流程图与清单(子程序不提供清单,但应列表反映每一个子程序的名称与其功能);(6)调试、运行与其结果;3、收获、体会4、参考文献六、课程设计进度安排周次工作日工

12、作容第一周1布置课程设计任务,查找相关资料2熟悉相关芯片与使用方法3完成总体设计方案4画出硬件原理图与程序流程图5完成硬件接线,编写程序并调试第二周1编写程序并调试2编写程序并调试3编写程序并调试与准备课程设计报告4完成课程设计报告并于下午两点之前上交5答辩本课题共需两周时间七、课程设计考核办法本课程设计满分为100分,从课程设计平时表现、课程设计报告与课程设计答辩三个方面进行评分,其所占比例分别为20%、40%、40%。2.设计方案本次的课题设计要基于DS18B20的温度采集显示系统,该系统要求包含温度采集模块、温度显示模块和键盘输入模块与报警模块。其中温度采集模块所选用的是DS18B20数

13、字温度传感器进行温度采集,温度显示模块用的四位八段共阴极数码管进行温度的实时显示,键盘输入模块采用的是按钮进行温度的设置,报警模块用的是LED灯光报警。具体方案见图2-1。 AT89C51 P0 P2 P2P1 P3最小系统蜂鸣器报警段选四位共阴极数码管显示温度报警温度的设定DS18B20温度传感器位选图2-1 总体设计方案3.硬件设计方案3.1最小系统的设计本次设计单片机采用的是AT89C51系列的,它由一个8位中央处理器(CPU),4k HYPERLINK :/baike.baidu /view/60408.htm t _blank 字节Flash HYPERLINK :/baike.ba

14、idu /view/600209.htm t _blank 闪速存储器,128字节部RAM,32 个I/O 口线,两个16位定时/计数器,一个串行I/O口与中断系统等部分组成。其结构如图3-1所示:图3-1 AT89C51系列单片机引脚排列XTAL1XTAL2RSTEA图3-2 单片机最小系统接线图图3-2为单片机最小系统的接线图,其中C1、C2均选用20PF的,晶振X1用的是11.0592MHZ的。晶振电路中外接电容C1,C2的作用是对振荡器进行频率微调,使振荡信号频率与晶振频率一致,同时起到稳定频率的作用,一般选用1030pF的瓷片电容。并且电容离晶振越近越好,晶振离单片机越近越好。晶振的

15、取值围一般为024MHz,常用的晶振频率有6MHz、12 MHz、11.0592 MHz、24 MHz等。晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。图3-2中C3,R1与按键构成了最小系统中的复位电路,本次设计选择的是手动按钮复位,手动按钮复位需要人为在复位输入端RST上加入高电平。一般采用的办法是在RST端和正电源Vcc之间接一个按钮。当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端。由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。在单片机最小系统中还要将EA的非接高电平,如图3-2也有体现出来。3.2 LED发光报警电路P1.7

16、图3-3 LED发光报警电路图3-3为LED报警电路的接法,其中一根线接单片机的8号P1.7口,另外一根接地。当温度超过预设温度值时LED灯被接通发光报警。3.3 DS18B20的简介与在本次设计中的应用3.3.1 DS18B20的外部结构与管脚排列DS18B20的管脚排列如图3-4所示:DS18B20引脚定义:(1)DQ为数字信号输入/输出端;(2)GND为电源地;(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)图3-4 DS18B20的引脚排列与封装3.3.2 DS18B20的工作原理DS18B20的读写时序和测温原理与DS1820一样,只是得到的温度值的位数因分辨率不同而不同

17、,且温度转换时的延时时间由2s减为750ms。 DS18B20测温原理如图3-5所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图中的斜率累加器用于补

18、偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。斜率累加器预置比较计数器1低温度系数晶振=0温度寄存器计数器2高温度系数晶振=0预置加1LSB置位/清除停止图3-5 DS18B20测温原理图3.3.3 DS18B20的主要特性(1)适应电压围更宽,电压围:3.05.5V,在寄生电源方式下可由数据线供电;(2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯;(3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温;(4)DS18B20在使用中不需要任何外围元件,全部传感元件与转换电路

19、集成在形如一只三极管的集成电路;(5)温围55125,在-10+85时精度为0.5;(6)可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温;(7)在9位分辨率时最多在93.75ms把温度转换为数字,12位分辨率时最多在750ms把温度值转换为数字,速度更快;(8)测量结果直接输出数字温度信号,以一线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力;(9)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。3.3.4 DS18B20的测温流程初始化DS18B20跳过ROM匹配温度变换延时1S跳过ROM匹

20、配读暂存器转换成显示码数码管显示图3-6 DS18B20的测温流程图3.3.5 DS18B20与单片机的连接P3.7图3-7 DS18B20与单片机的连接电路图如上图为DS18B20温度传感器与单片机之间的接法,其中2号接单片机的17号P3.7接口。DS18B20通过P3.7口将采集到的温度实时送入单片机中。3.4 报警温度的设置P2.5P2.6P2.7图3-8 报警温度的设置电路图3-8为报警温度的设置电路,其中K1,K2,K3分别接到单片机的P2.5,P2.6,P2.7口。其中K1用于报警温度设定开关,K2用于报警温度的设置时候的加温度(每次加一),K3用于报警温度的设置时的减温度(每次减

21、一)。实现了报警温度的手动设置。3.5 数码管显示3.5.1数码管工作原理图3-9 数码管的引脚排列与结构图3-9为数码管的外形与引脚排列和两种接法(共阴极和共阳极)的结构图。共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起。通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮。根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源与额定段导通电流来确定相应的限流电阻。共阴极数码管的8个发光二极管的阴极(二极管负端)连接在一起。通常,公共阴极接低电平(一般接

22、地),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为高电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能提供额定的段导通电流,还需根据外接电源与额定段导通电流来确定相应的限流电阻。要使数码管显示出相应的数字或字符,必须使段数据口输出相应的字形编码。字型码各位定义为:数据线D0与a字段对应,D1与b字段对应,依此类推。如使用共阳极数码管,数据为0表示对应字段亮,数据为1表示对应字段暗;如使用共阴极数码管,数据为0表示对应字段暗,数据为1表示对应字段亮。如要显示“0”,共阳极数码管的字型编码应为:11000000B(即C0H);共阴极数

23、码管的字型编码应为:00111111B(即3FH)。依此类推,可求得数码管字形编码如表3-5所示。表3-5数码管字符表显示数字共阴顺序小数点暗共阴逆序小数点暗共阳顺序小数点亮共阳顺序小数点暗Dp g f e d c b a16进制a b c d e f g Dp16进制00 0 1 1 1 1 1 13FH1 1 1 1 1 1 0 0FCH40HC0H10 0 0 0 0 1 1 006H0 1 1 0 0 0 0 060H79HF9H20 1 0 1 1 0 1 15BH1 1 0 1 1 0 1 0DAH24HA4H30 1 0 0 1 1 1 14FH1 1 1 1 0 0 1 0F2

24、H30HB0H40 1 1 0 0 1 1 066H0 1 1 0 0 1 1 066H19H99H50 1 1 0 1 1 0 16DH1 0 1 1 0 1 1 0B6H12H92H60 1 1 1 1 1 0 17DH1 0 1 1 1 1 1 0BEH02H82H70 0 0 0 0 1 1 107H1 1 1 0 0 0 0 0E0H78HF8H80 1 1 1 1 1 1 17FH1 1 1 1 1 1 1 0FEH00H80H90 1 1 0 1 1 1 16FH1 1 1 1 0 1 1 0F6H10H90H显示的具体实施是通过编程将需要显示的字型码存放在程序存储器的固定区域中

25、,构成显示字型码表。当要显示某字符时,通过查表指令获取该字符所对应的字型码。3.5.2数码管显示电路P0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.0P2.1P2.2P2.3图3-10 四位八段数码管动态显示电路图3-10为本次设计所用到的四位八段数码管动态显示,其中段选接到单片机的P0口,位选接到单片机的P2口的低四位。其中P0口也接的有上拉电阻,图中未标示出来,会在下面的总体电路中标示出来。采用的是动态显示方式。3.6 硬件电路总体设计图3-11为本次设计的硬件总体设计图,其中利用K1,K2,K3处进行报警温度的设置,然后有DS18B20进行实时温度采集,并在数码管上同步显示

26、,若采集到的温度达到或者超过预设的报警温度,则LED灯会发光报警,若低于该报警温度,则不会报警。图3-11 硬件电路总体设计图4.软件设计方案4.1主程序介绍4.1.1主程序流程图本次设计首先对程序进行初始化,然后打开报警温度设定开关,对报警温度进行设定,确认设定值后,DS18B20温度传感器进行温度采集并送入单片机中,单片机将传感器所检测到的温度同步显示在数码管上,并且与设置的报警温度进行比较,若达到或者超过报警温度时,LED灯发光报警,如果没有达到,则继续进行温度采集。开始初始化程序进行报警温度设定并确认传感器采集温度并实时显示判断达到报警温度?灯光报警Y继续温度采集N图4-1主程序流程图

27、4.1.2主流程的C语言程序main () ALERT=0; LED=0; flag=0; sheding=30; disdata=0 xff;/ 初始化端口 discan=0 xff; for(h=0;h4;h+) /开机显示“8888”scan(); displayh=8; ow_reset(); /开机先转换一次 write_byte(0 xcc);/skip ROM write_byte(0 x44);/发转换命令 for(h=0;h1) /温度显示界面 LED1=0;if(display1+display2*10=sheding) /比较 ALERT=1;/报警elseALERT=0

28、; if(flag=0 & flag21) read_temp(); /读出温度数据 work_temp(); /处理温度数据 ge= display3; shi= display2; if(K1=0) flag2+; /flag2=0时为初始界面 flag2=1时为设定 if(flag21)flag2=2; if(flag=0) /flag=0 时 温度显示 flag=1 设定显示flag=1;else if(flag=1)flag=0;LED=LED;key_delay(20);if(flag=1)sheding=30;ge=0;shi=3;/display0= ge; / 个位设定好的温

29、度用于显示 /display2 =shi; /十位 if(flag=1) LED1=1; if(K2=0) /+ ge+;if(ge9)ge=0;shi+;if(shi9)shi=0;sheding=ge+shi*10; key_delay(20);if(K3=0) /- ge-;if(ge0)ge=9;shi-;if(shi0)shi=9;sheding=ge+shi*10; key_delay(20); display1= ge; / 个位设定好的温度用于显示 display2 =shi; /十位 for(h=0;h0;i-) DQ=1;_nop_();_nop_(); DQ=0;_nop

30、_();_nop_();_nop_();_nop_();_nop_(); DQ=val&0 x01; /最低位移出 delay(6); val=val/2; /右移1位 DQ=1; delay(1); 4.2.3读温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,验有错时,不进行温度数据的改写。其程序流程图如图4-4所示DS18B20的各个命令对时序的要求特别严格,所以必须按照所要求的时序才能达到预期的目的,同时,要注意读进来的是高位在后低位在前, 共有12位数,小数4位,整数7位,还有一位符号位。DS18B20复位、应答子程序跳过ROM匹配命令写入子程序温度

31、转换命令写入子程序显示子程序(延时)DS18B20复位、应答子程序跳过ROM匹配命令写入子程序读温度命令子程序结束图4-4 读温度子程序读温度的C语言程序如下:read_temp() ow_reset(); write_byte(0 xcc); write_byte(0 xbe); temp_data0=read_byte(); temp_data1=read_byte(); ow_reset(); write_byte(0 xcc); write_byte(0 x44); 4.2.4计算温度子程序流程图如图4-5所示:开始温度零下?温度值取补码置“”标志计算小数位温度BCD值计算整数位温度B

32、CD值结束NY图4-5 计算温度子程序计算温度的C语言程序如下:work_temp() uchar n=0; if(temp_data1127) temp_data1=(255-temp_data1); temp_data0=(255-temp_data0); n=1; /负温度求补码 display4=temp_data0&0 x0f;display0=ditabdisplay4; display4=(temp_data0&0 xf0)4)|(temp_data1&0 x0f)4) ; display3=display4/100; display1=display4%100; display

33、2=display1/10; display1=display1%10; if(!display3)display3=0 x0a; if(!display2)display2=0 x0a; /最高位为0时不显示 if(n)display3=0 x0b; /负温度是最高为显示“-” 4.2.5显示扫描过程子程序流程图如图4-6所示:开始送位选码送段选码延时图4-6 显示扫描过程子程序显示扫描的C语言程序如下:scan() char k; for(k=0;k4;k+) /4位LED扫描控制 disdata=dis_7displayk; if(k=1)DIN=0; /当K=1时,P07为低电平显示小

34、数点 discan=scan_conk; /列扫描 delay(30); discan=0 xFF; 5.基于DS18B20的温度采集显示系统的调试运行后,按下K1键,开始进入报警温度设置过程,按下K2则温度增加一度,按下K3则温度减少一度,刚开始调试时,由于接的LED报警灯是高电平点亮,程序一运行时,AT89C51给各个引脚都是高电平,所以LED灯一运行就会发光,违背了超过报警温度才发光的要求,所以在子程序中加上了一条开始时将LED所连引脚置0的程序。之后运行过程中又发现按下报警温度的设置键K1,K2,K3都不是很灵敏,有时按下的时间太短甚至会没有反应,经过与小组成员讨论,发现是由于按键没有进行消抖,在显示扫描子程序中加入了延时函数

温馨提示

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

评论

0/150

提交评论