《2022年基于DS18B20的温度采集显示系统的设计.docx》由会员分享,可在线阅读,更多相关《2022年基于DS18B20的温度采集显示系统的设计.docx(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品学习资源目录1. 引言11.1 绪论 .11.2 课程设计任务书 .12. 设计方案33. 硬件设计方案33.1 最小系统地设计 .33.2 LED发光报警电路 .53.3 DS18B20地简介及在本次设计中地应用 .53.3.1 DS18B20 地外部结构及管脚排列 .53.3.2 DS18B20 地工作原理 .63.3.3 DS18B20 地主要特性 .73.3.4 DS18B20 地测温流程 .83.3.5 DS18B20 与单片机地连接 .83.4 报警温度地设置 .83.5 数码管显示 .93.5.1数码管工作原理 .93.5.2数码管显示电路 .103.6 硬件电路总体设计 .
2、114. 软件设计方案124.1 主程序介绍 .124.1.1主程序流程图 .124.1.2主流程地 C语言程序 .134.2 部分子程序 .174.2.1 DS18B20 复位子程序 .174.2.2写 DS18B20命令子程序 . .184.2.3读温度子程序 .20欢迎下载精品学习资源4.2.4运算温度子程序 .224.2.5显示扫描过程子程序 .235. 基于 DS18B20地温度采集显示系统地调试256. 收成和体会277. 参考文献27欢迎下载精品学习资源1. 引言1.1 绪论随着科学技术地进展,温度地实时显示系统应用越来越广泛,比如空调遥控器上当前室温地显示,热水器温度地显示等等
3、,同时温度地掌握在各个领域也都有积极地意义.采纳单片机对温度进行掌握不仅具有掌握便利、简洁、敏捷性大等特点,而且仍可以大幅度提高被控温度地技术指标.本文介绍了基于 DS18B20 地温度实时采集与显示系统地设计与实现 .设计中选取单片机 AT89C51 作为系统掌握中心,数字温度传感器 DS18B20 作为单片机外部信号源,实现温度地实时采集 .并且用精度较好地数码管作为温度地实时显示模块 .利用单片机程序来完成对 DS18B20 与 AT89C51 地掌握, 最终实现温度地实时采集与显示 .采纳单片机对温度进行掌握不仅具有掌握便利、简洁、敏捷性大等特点,而且仍可以大幅度提高被控温度地技术指标
4、.1.2 课程设计任务书微机原理与接口技术课程设计任务书二题目:基于DS18B20 地温度采集显示系统地设计一、课程设计任务传统地温度传感器,如热电偶温度传感器,具有精度高,测量范畴大,响应快等优点.但由于其输出地是模拟量,而现在地智能外表需要使用数字量,有些时候仍要将测量结果以数字量输入运算机,由于要将模拟量转换为数字量,其实现环节就变得特别复杂.硬件上需要模拟开关、恒流源、D/A 转换器,放大器等,结构巨大,安装困难,造价昂贵.新兴地 IC 温度传感器如 DS18B20 ,由于可以直接输出温度转换后地数字量,可以在保证测量精度地情形下,大大简化系统软硬件设计.这种传感器地测温范畴有肯定限制
5、(大多在50 120),多适用于环境温度地测量.DS18B20 可以在一根数据线上挂接多个传感器,只需要三根线就可以实现远距离多点温度测量.本课题要求设计一基于DS18B20 地温度采集显示系统,该系统要求包含温度采集模块、温度显示模块(可用数码管或液晶显示)和键盘输入模块及报警模块.所设计地系统可以从键盘输入设定温度值, 当所采集地温度高于设定温度时,进行报警,同时能实时显示温度值.二、课程设计目地通过本次课程设计使同学把握:1)单总线温度传感器DS18B20 与单片机地接口及DS18B20 地编程; 2)矩阵式键盘地设计与编程;3)经单片机为核心地系统地实际调试技巧.从而提高同学对微机实
6、时掌握系统地设计和调试才能.三、课程设计要求1、要求可以从键盘上接收温度设定值,当所采集地温度高于设定值时,进行报警(可以是声音报警,也可是光报警)欢迎下载精品学习资源2、能实时显示温度值,要求保留一位小数; 四、课程设计内容1、人机 “界面 ”设计;2、单片机端口及外设地设计;3、硬件电路原理图、软件清单.五、课程设计报告要求报告中供应如下内容:1、目录2、正文( 1)课程设计任务书;( 2)总体设计方案( 3)针对人机对话 “界面 ”要有操作使用说明,以便用户能够正确使用本产品;( 4)硬件原理图,以便厂家生成产(可手画也可用protel 软件);( 5)程序流程图及清单(子程序不供应清单
7、,但应列表反映每一个子程序地名称及其功能);( 6)调试、运行及其结果; 3、收成、体会4、参考文献六、课程设计进度支配周次工作日工作内容1布置课程设计任务,查找相关资料第一周2熟识相关芯片及使用方法3完成总体设计方案4画出硬件原理图及程序流程图5完成硬件接线,编写程序并调试1编写程序并调试第二周2编写程序并调试3编写程序并调试及预备课程设计报告4完成课程设计报告并于下午两点之前上交5答辩本课题共需两周时间七、课程设计考核方法欢迎下载精品学习资源本课程设计满分为100 分,从课程设计平常表现、课程设计报告及课程设计答辩三个方面进行评分,其所占比例分别为20%、40%、40%.2. 设计方案本次
8、地课题设计要求是基于DS18B20 地温度采集显示系统,该系统要求包含温度采集模块、温度显示模块和键盘输入模块及报警模块.其中温度采集模块所选用地是DS18B20 数字温度传感器进行温度采集,温度显示模块用地四位八段共阴极数码管进行温度地实时显示,键盘输入模块采纳地是按钮进行温度地设置,报警模块用地是LED 灯光报警 .详细方案见图 2-1.最小系统AT89C51P0段选四 位 共 阴 极 数 码管显示温度P2位选P2报警温度地设定蜂鸣器报警P1P3DS18B20温 度 传感器图 2-1 总体设计方案3. 硬件设计方案3.1 最小系统地设计本次设计单片机采纳地是AT89C51 系列地,它由一个
9、8 位中心处理器 CPU ,4k 字节 Flash 闪速储备器, 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 地作用是对振荡器进行频率微调,使振荡信号频率与晶振频率一样, 同时起到稳固频率地作用
10、,一般选用1030pF 地瓷片电容 .并且电容离晶振越近越好,晶振离单片机越近越好 .晶振地取值范畴一般为024MHz ,常用地晶振频率有6MHz 、12 MHz 、11.0592 MHz 、 24 MHz等.晶振地振荡频率直接影响单片机地处理速度,频率越大处理速度越快.图 3-2 中 C3,R1 及按键构成了最小系统中地复位电路,本次设计挑选地是手动按钮复位,手动按钮复位需要人为在复位输入端RST 上加入高电平 .一般采纳地方法是在RST 端和正电源 Vcc 之间接一个按钮 .当人为按下按钮时,就Vcc 地+5V 电平就会直接加到RST 端.由于人地动作再快也会使按钮保持接通达数十毫秒,所以
11、,完全能够满意复位地时间要求.在单片机最小系统中仍要将EA 地非接高电平,如图3-2 也有表达出来 .3.2 LED 发光报警电路P1.7图 3-3 LED 发光报警电路图 3-3 为 LED 报警电路地接法,其中一根线接单片机地8 号 P1.7 口,另外一根接地.当温度超过预设温度值时 LED 灯被接通发光报警.3.3 DS18B20 地简介及在本次设计中地应用3.3.1 DS18B20 地外部结构及管脚排列DS18B20 地管脚排列如图 3-4 所示: DS18B20 引脚定义:(1) DQ 为数字信号输入 /输出端; 2GND 为电源地;3VDD为外接供电电源输入端(在寄生电源接线方式时
12、接地)欢迎下载精品学习资源图 3-4 DS18B20 地引脚排列及封装3.3.2 DS18B20 地工作原理DS18B20 地读写时序和测温原理与DS1820 相同,只是得到地温度值位置数因辨论率不同而不同,且温度转换时地延时时间由2s 减为 750ms. DS18B20 测温原理如图 3-5 所示 .图中低温度系数晶振地振荡频率受温度影响很小,用于产生固定频率地脉冲信号送给计数器1.高温度系数晶振随温度变化 其振荡率明显转变,所产生地信号作为计数器2 地脉冲输入 .计数器 1 和温度寄存器被预置在55所对应地一个基数值.计数器 1 对低温度系数晶振产生地脉冲信号进行减法计数,当计数器1 地预
13、置值减到 0 时,温度寄存器地值将加1,计数器1 地预置将重新被装入,计数器1 重新开头对低温度系数晶振产生地脉冲信号进行计数,如此循环直到计数器2 计数到 0 时,停止温度寄存器值地累加,此时温度寄存器中地数值即为所测温度.图中地斜率累加器用于补偿和修正测温过程中地非线性,其输出用于 修正计数器 1 地预置值 .欢迎下载精品学习资源斜率累加器预置比较欢迎下载精品学习资源低温度系数晶振计数器 1加 1=0预置温度寄存器LSB置位 /清除欢迎下载精品学习资源高温度系数晶振计数器 2停止=0图 3-5 DS18B20 测温原理图3.3.3 DS18B20 地主要特性( 1)适应电压范畴更宽,电压范
14、畴:3.0 5.5V ,在寄生电源方式下可由数据线供电;( 2)特殊地单线接口方式,DS18B20 在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20 地双向通讯;( 3) DS18B20 支持多点组网功能,多个DS18B20 可以并联在唯独地三线上,实现组网多点测温;( 4) DS18B20 在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管地集成电路内;( 5)温范畴 55 125,在 -10 +85时精度为 0.5;( 6 )可编程地分辨率为9 12 位,对应地可辨论温度分别 为 0.5、 0.25 、 0.125和0.0625,可实现高精度测温;( 7
15、)在 9 位辨论率时最多在93.75ms 内把温度转换为数字, 12 位辨论率时最多在750ms 内把温度值转换为数字,速度更快;( 8)测量结果直接输出数字温度信号,以 一线总线 串行传送给CPU ,同时可传送CRC 校验码,具有极强地抗干扰纠错才能;( 9)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作.欢迎下载精品学习资源3.3.4 DS18B20 地测温流程欢迎下载精品学习资源初始化DS18B20跳过 ROM匹配温度变换延时 1S欢迎下载精品学习资源欢迎下载精品学习资源数码管显示转换成显示码读暂存器跳过 ROM匹配欢迎下载精品学习资源图 3-6 DS18B20 地测温流
16、程图3.3.5 DS18B20 与单片机地连接P3.7图 3-7 DS18B20 与单片机地连接电路图如上图为DS18B20温度传感器与单片机之间地接法,其中2 号接单片机地17 号 P3.7 接口.DS18B20 通过 P3.7 口将采集到地温度实时送入单片机中.3.4 报警温度地设置P2.5 P2.6 P2.7欢迎下载精品学习资源图 3-8 报警温度地设置电路图 3-8 为报警温度地设置电路,其中K1 , K2 , K3 分别接到单片机地P2.5,P2.6,P2.7 口.其中 K1 用于报警温度设定开关,K2 用于报警温度地设置时候地加温度(每次加一),K3 用于报警温度地设置时地减温度(
17、每次减一).实现了报警温度地手动设置.3.5 数码管显示3.5.1 数码管工作原理图 3-9 数码管地引脚排列及结构图 3-9 为数码管地形状及引脚排列和两种接法(共阴极和共阳极)地结构图.共阳极数码管地8 个发光二极管地阳极(二极管正端)连接在一起.通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端.当某段驱动电路地输出端为低电平常,就该端所连接地字段导通并点亮.依据发光字段地不同组合可显示出各种数字或字符.此时,要求段驱动电路能吸取额定地段导通电流,仍需依据外接电源及额定段导通电流来确定相应地限流电阻.共阴极数码管地8 个发光二极管地阴极(二极管负端)连接在一起.通常,公共阴
18、极接低电平(一般接地),其它管脚接段驱动电路输出端.当某段驱动电路地输出端为高电平常,就该端所连接地字段 导通并点亮,依据发光字段地不同组合可显示出各种数字或字符.此时,要求段驱动电路能供应额定地段导通电流,仍需依据外接电源及额定段导通电流来确定相应地限流电阻.要使数码管显示出相应地数字或字符,必需使段数据口输出相应地字形编码.字型码各位定义为: 数据线 D0 与 a 字段对应, D1 与 b 字段对应 ,依此类推 .如使用共阳极数码管,数据为0 表示对应字段亮,数据为1 表示对应字段暗;如使用共阴极数码管,数据为0 表示对应字段暗,数据为1 表示对应字段亮 .如要显示 “0,”共阳极数码管地
19、字型编码应为:11000000B(即 C0H );共阴极数码管地字欢迎下载精品学习资源型编码应为: 00111111B(即 3FH ).依此类推,可求得数码管字形编码如表3-5 所示 .表 3-5 数码管字符表10 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 0F2H30HB0H40 1 1 0 0 1 1 066H0 1 1 0 0 1 1 066H19H99H50 1 1 0 1 1 0 16DH1 0
20、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 0FEH00H80H共阴次序小数点暗共阴逆序小数点暗显示数字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 0FCH40HC0H90 1 1 0 1 1 1 16FH1 1 1 1 0 1
21、 1 0F6H10H90H显示地详细实施是通过编程将需要显示地字型码存放在程序储备器地固定区域中,构成显示字型码表 .当要显示某字符时,通过查表指令猎取该字符所对应地字型码.3.5.2 数码管显示电路欢迎下载精品学习资源P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7P2.0 P2.1 P2.2 P2.3图 3-10 四位八段数码管动态显示电路图 3-10 为本次设计所用到地四位八段数码管动态显示,其中段选接到单片机地P0 口,位选接到单片机地 P2 口地低四位 .其中 P0 口也接地有上拉电阻,图中未标示出来,会在下面地总体电路中标示出来 .采纳地是动态显示方式.3.6
22、硬件电路总体设计图 3-11 为本次设计地硬件总体设计图,其中利用K1,K2,K3处进行报警温度地设置,然后有DS18B20 进行实时温度采集,并在数码管上同步显示,如采集到地温度达到或者超过预设地报警温度,就 LED 灯会发光报警,如低于该报警温度,就不会报警.欢迎下载精品学习资源图 3-11 硬件电路总体设计图4. 软件设计方案4.1 主程序介绍4.1.1 主程序流程图本次设计第一对程序进行初始化,然后打开报警温度设定开关,对报警温度进行设定,确认设定 值后, DS18B20 温度传感器进行温度采集并送入单片机中,单片机将传感器所检测到地温度同步显示在数码管上,并且与设置地报警温度进行比较
23、,如达到或者超过报警温度时,LED灯发光报警,假如没有达到,就连续进行温度采集.欢迎下载精品学习资源开头初始化程序进行报警温度设定并确认传感器采集温度并实时显示判定达到报警温度?N连续温度采集Y灯光报警图 4-1 主程序流程图4.1.2 主流程地 C 语言程序main ALERT=0 ;LED=0 ;flag=0 ;sheding=30;disdata=0xff ;/ 初始化端口discan=0xff ;forh=0 ;h4 ;h+/ 开机显示 “ 8888 ” sca;ndisplayh=8 ;欢迎下载精品学习资源ow_reset ;/ 开机先转换一次write_byte0xcc ;/ski
24、p ROM write_byte0x44 ;/ 发转换命令forh=0 ;h1/ 温度显示界面LED1=0 ;ifdisplay1+display2*10=sheding/ 比较ALERT=1 ;/报警elseALERT=0 ;ifflag=0 & flag21read_temp ; / 读出温度数据work_temp ; /处理温度数据ge= display3 ;shi= display2 ;欢迎下载精品学习资源ifK1=0flag2+ ; /flag2=0 时为初始界面flag2=1 时为设定ifflag21 flag2=2 ;ifflag=0/flag=0 时 温度显示 flag=1 设
25、定显示flag=1 ;else ifflag=1flag=0 ;LED=LED ;key_delay20 ;ifflag=1sheding=30;ge=0; shi=3;/display0=ge;/ 个位设定好地温度用于显示/display2 =shi ;/十位ifflag=1LED1=1 ;ifK2=0/+欢迎下载精品学习资源ge+;ifge9ge=0;shi+;ifshi9 shi=0;sheding=ge+shi*10 ;key_delay20 ;ifK3=0/-ge-;ifge0ge=9;shi-;ifshi0shi=9;sheding=ge+shi*10 ;key_delay20 ;
26、display1=ge;/ 个位设定好地温度用于显示display2 =shi ;/十位欢迎下载精品学习资源forh=0 ;h0 ;i-DQ=1 ;_nop_ ;_nop_;DQ=0 ;_nop_ ;_nop_; _nop_;_nop_ ;_nop_;欢迎下载精品学习资源DQ=val&0x01 ;/ 最低位移出delay6 ;val=val/2 ;/ 右移 1 位DQ=1 ;delay1 ;4.2.3 读温度子程序读出温度子程序地主要功能是读出RAM 中地 9 字节,在读出时需进行CRC 校验,验有错时,不进行温度数据地改写 .其程序流程图如图4-4 所示DS18B20 地各个命令对时序地要求
27、特殊严格,所以必需依据所要求地时序才能达到预期地目地,同时,要留意读进来地是高位在后低位在前,共有 12 位数,小数 4 位,整数 7 位,仍有一位符号位 .欢迎下载精品学习资源DS18B20 复位、应答子程序跳过 ROM 匹配命令写入子程序温度转换命令写入子程序显示子程序(延DS18B20 复位、应答子程序跳过 ROM 匹配命令写入子程序读温度命令子程序终止图 4-4 读温度子程序读温度地 C 语言程序如下:read_tempow_reset ;write_byte0xcc ;欢迎下载精品学习资源write_byte0xbe ;temp_data0=read_byte ;temp_data1
28、=read_byte ;ow_reset ;write_byte0xcc ;write_byte0x44 ;4.2.4 运算温度子程序流程图如图4-5 所示:开头温 度零Y下?N温度值取补码置“”标志运算小数位温度 BCD 值运算整数位温度 BCD 值终止图 4-5 运算温度子程序欢迎下载精品学习资源运算温度地C 语言程序如下:work_tempuchar n=0;iftemp_data1127temp_data1=255-temp_data1 ;temp_data0=255-temp_data0 ;n=1; / 负温度求补码display4=temp_data0&0x0f;display0=
29、ditabdisplay4;display4=temp_data0&0xf04|temp_data1&0x0f4;display3=display4/100;display1=display4%100;display2=display1/10;display1=display1%10;if.display3display3=0x0a;if.display2display2=0x0aifndisplay3=0x0b; /最高位为 0 时不显示/ 负温度是最高为显示“-”4.2.5 显示扫描过程子程序 流程图如图4-6 所示:欢迎下载精品学习资源开头送位选码送段选码延时图 4-6 显示扫描过程子程
30、序显示扫描地C 语言程序如下:scanchar k;fork=0 ;k4 ;k+disdata=dis_7displayk ifk=1DIN=0;/4 位 LED 扫描掌握/ 当 K=1 时, P07 为低电平显示小数点discan=scan_conk ;/列扫描delay30 ;discan=0xFF ;欢迎下载精品学习资源5. 基于 DS18B20 地温度采集显示系统地调试运行后,按下K1 键,开头进入报警温度设置过程,按下K2 就温度增加一度,按下K3 就温度削减一度,刚开头调试时,由于接地LED 报警灯是高电平点亮,程序一运行时,AT89C51 给各个引脚都是高电平,所以LED 灯一运
31、行就会发光,违反了超过报警温度才发光地要求,所以在子程序中加上了一条开头时将 LED 所连引脚置0 地程序 .之后运行过程中又发觉按下报警温度地设置键K1,K2,K3都不是很灵敏,有时按下地时间太短甚至会没有反应,经过与小组成员争论,发觉是由于按键没有进行消抖,在显示扫描子程序中加入了延时函数进行按键地消抖,这一问题也得到明白决.图 5-1 温度实时显示且未超过报警温度25 摄氏度时 LED 没有发光报警欢迎下载精品学习资源图 5-2 温度实时显示且超过实时报警温度25 摄氏度 LED 发光报警图 5-3 实时显示负温度欢迎下载精品学习资源6. 收成和体会在这一次地课程设计过程,我收成了很多,
32、无论是在理论学问方面,仍是理论联系实际地操作方 面.由于已经一个学期没有学习单片机这门课程,很多学问不太清晰,加上以前地基础学问也不是很牢 固,对于 Proteus 和 Keil软件地使用也生疏了,所以刚开头拿到课题时感到很有难度,不禁对此次地课程设计感到特别紧急.刚开头做这一课题地时候感到难度很大,很多学问都要重新学习,包括课本上地理论学问,以及编程和仿真软件地使用都要多加练习才能把握.在这一过程中,我不断地上网查找相关资料,翻阅相关书籍,也一步步明白了设计中各个模块所要实现地功能,对这次地设计方案有了具象地熟识 .通过此次课程设计,我对C 语言和单片机有了新地熟识和懂得,并且温习了Prot
33、eus 和 Keil 软件地使用,也明白了它地很多以前不知道地功能.把握了从设计方案地要求来进行主程序流程图地设计,然后落实到每一个子程序,依次实现每一个功能要求.然后用仿真软件进行仿真调试,一步步地找出哪里地设计不符合要求并进行改正,几乎没有一次就能调试通过地程序,所以说程序不是写出来地,而是不断地调试出来地 .这这个过程中也积存了硬件设计地体会.同时也加深了我对电路原理、器件资料、电路板设计和电路地硬件调试熟识和懂得.此次课程设计用到了DS18B20 这一数字温度传感器,这是我们之前没有遇到过地一种新型地器件,所以通过上网和查阅相关书籍来查找这一器件地资料,从它地基本结构,到元件特性及工作原理之类地等等 .在这个过程中我发觉即使是一个小小地元件,也有很复杂地构成及多种特性,而且实际到很多方面 .在学习地过程中我也多DS18B20 有了一个系统地明白.我也熟识到想要真正地全面明白一个元件,肯定要花肯定地时间和精力.这次地课程设计让我学到了很多书本上没有地学问,学会了更加全面地摸索问题,而不是片面地 只看眼前,同时也学到了自我学习地方法,在查找资料自我分析及跟同学地争论,与老师地指导这些 过程都让我受益匪浅.同时我也熟识到了自身存在地很多不足之处,理论学问不够扎实,操作才能也欠缺, 我会在以后地学习中更加努力以提高自身地才能.7. 参考文献1. 陈跃东 .DS18B20 集成温
限制150内