基于ARM的多片ds18b20 温度采集系统
基于DS18B20的温度采集系统设计

2012 ~ 2013 学年第2 学期《单片机原理与应用》课程设计报告题目:基于DS18B20的温度采集系统设计专业: 自动化班级:电气工程系2013年5月3日任务书课题名称基于DS18B20的温度采集系统设计指导教师(职称)林开司摘要通过系统的分析和总结 ,得出温室大气温度信号的采集传感器件所需的测量程小 ,精确度不高 ,抗干扰性较强 ,经济性较好的结论。
并以此为依据 ,选用 DS18B20数字温度传感器为温度采集器件 ,进行了温度采集系统的硬件和软件设计 ,实现了采集系统分布式采集温度信号的功能。
同时 ,通过串行总线完成了采集系统与上位计算机的连接 ,实现了采集系统的网络化监控功能。
关键词温度采集;DS18B20温度传感器;仿真;单片机基于DS18B20的温度采集系统设计目录摘要 (I)第一章 DS18B20温度传感器 (1)1.1DS18B20的工作原理 (1)1.2DS18B20的使用方法 (3)第二章单片机AT89C51 (6)2.1AT89C51简介 (6)2.2AT89C51功能 (6)2.3AT89C51引脚 (6)第三章系统硬件电路设计 (9)3.1测温控制电路原理图 (9)3.2上电复位电路 (9)3.3时钟电路 (9)3.4数码管显示电路 (10)3.5温度报警电路 (11)第四章程序设计 (12)4.1DS18B20复位检测子程序流程图 (12)4.2温度转换子程序图 (12)4.3写DS18B20子程序图 (12)5.4读DS18B20子程序图 (13)4.5温度计算子程序图 (14)第五章调试与仿真 (14)第六章结论与体会 (16)参考文献 (17)附录: (18)答辩记录及评分表 (21)第一章 DS18B20温度传感器1.1 DS18B20的工作原理DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s 减为750ms。
基于DS18B20的温度采集显示系统的设计

目录1.引言 (1)1.1绪论 (1)1.2课程设计任务书 (1)2.设计方案 (3)3.硬件设计方案 (3)3.1最小系统地设计 (3)3.2LED发光报警电路 (5)3.3DS18B20地简介及在本次设计中地应用 (5)3.3.1 DS18B20地外部结构及管脚排列 (5)3.3.2 DS18B20地工作原理 (6)3.3.3 DS18B20地主要特性 (7)3.3.4 DS18B20地测温流程 (8)3.3.5 DS18B20与单片机地连接 (8)3.4报警温度地设置 (8)3.5数码管显示 (9)3.5.1数码管工作原理 (9)3.5.2数码管显示电路 (10)3.6硬件电路总体设计 (11)4.软件设计方案 (12)4.1主程序介绍 (12)4.1.1主程序流程图 (12)4.1.2主流程地C语言程序 (13)4.2部分子程序 (17)4.2.1 DS18B20复位子程序 (17)4.2.2 写DS18B20命令子程序 (18)4.2.3读温度子程序 (20)4.2.4计算温度子程序 (22)4.2.5显示扫描过程子程序 (23)5.基于DS18B20地温度采集显示系统地调试 (25)6.收获和体会 (27)7.参考文献 (27)1.引言1.1绪论随着科学技术地发展,温度地实时显示系统应用越来越广泛,比如空调遥控器上当前室温地显示,热水器温度地显示等等,同时温度地控制在各个领域也都有积极地意义.采用单片机对温度进行控制不仅具有控制方便、简单、灵活性大等特点,而且还可以大幅度提高被控温度地技术指标.本文介绍了基于DS18B20地温度实时采集与显示系统地设计与实现.设计中选取单片机AT89C51作为系统控制中心,数字温度传感器DS18B20作为单片机外部信号源,实现温度地实时采集.并且用精度较好地数码管作为温度地实时显示模块.利用单片机程序来完成对DS18B20与AT89C51地控制,最终实现温度地实时采集与显示.采用单片机对温度进行控制不仅具有控制方便、简单、灵活性大等特点,而且还可以大幅度提高被控温度地技术指标.1.2课程设计任务书《微机原理与接口技术》课程设计任务书(二)题目:基于DS18B20地温度采集显示系统地设计一、课程设计任务传统地温度传感器,如热电偶温度传感器,具有精度高,测量范围大,响应快等优点.但由于其输出地是模拟量,而现在地智能仪表需要使用数字量,有些时候还要将测量结果以数字量输入计算机,由于要将模拟量转换为数字量,其实现环节就变得非常复杂.硬件上需要模拟开关、恒流源、D/A转换器,放大器等,结构庞大,安装困难,造价昂贵.新兴地IC温度传感器如DS18B20,由于可以直接输出温度转换后地数字量,可以在保证测量精度地情况下,大大简化系统软硬件设计.这种传感器地测温范围有一定限制(大多在-50℃~120℃),多适用于环境温度地测量.DS18B20可以在一根数据线上挂接多个传感器,只需要三根线就可以实现远距离多点温度测量.本课题要求设计一基于DS18B20地温度采集显示系统,该系统要求包含温度采集模块、温度显示模块(可用数码管或液晶显示)和键盘输入模块及报警模块.所设计地系统可以从键盘输入设定温度值,当所采集地温度高于设定温度时,进行报警,同时能实时显示温度值.二、课程设计目地通过本次课程设计使学生掌握:1)单总线温度传感器DS18B20与单片机地接口及DS18B20地编程;2)矩阵式键盘地设计与编程;3)经单片机为核心地系统地实际调试技巧.从而提高学生对微机实时控制系统地设计和调试能力.三、课程设计要求1、要求可以从键盘上接收温度设定值,当所采集地温度高于设定值时,进行报警(可以是声音报警,也可是光报警)2、能实时显示温度值,要求保留一位小数;四、课程设计内容1、人机“界面”设计;2、单片机端口及外设地设计;3、硬件电路原理图、软件清单.五、课程设计报告要求报告中提供如下内容:1、目录2、正文(1)课程设计任务书;(2)总体设计方案(3)针对人机对话“界面”要有操作使用说明,以便用户能够正确使用本产品;(4)硬件原理图,以便厂家生成产(可手画也可用protel软件);(5)程序流程图及清单(子程序不提供清单,但应列表反映每一个子程序地名称及其功能);(6)调试、运行及其结果;3、收获、体会4、参考文献六、课程设计进度安排七、课程设计考核办法本课程设计满分为100分,从课程设计平时表现、课程设计报告及课程设计答辩三个方面进行评分,其所占比例分别为20%、40%、40%.2.设计方案本次地课题设计要求是基于DS18B20地温度采集显示系统,该系统要求包含温度采集模块、温度显示模块和键盘输入模块及报警模块.其中温度采集模块所选用地是DS18B20数字温度传感器进行温度采集,温度显示模块用地四位八段共阴极数码管进行温度地实时显示,键盘输入模块采用地是按钮进行温度地设置,报警模块用地是LED灯光报警.具体方案见图2-1.图2-1 总体设计方案3.硬件设计方案3.1最小系统地设计本次设计单片机采用地是AT89C51系列地,它由一个8位中央处理器(CPU),4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个串行I/O口及中断系统等部分组成.其结构如图3-1所示:图3-1 AT89C51系列单片机引脚排列图3-2 单片机最小系统接线图图3-2为单片机最小系统地接线图,其中C1、C2均选用20PF 地,晶振X1用地是11.0592MHZXTAL1XTAL2 RST EA地.晶振电路中外接电容C1,C2地作用是对振荡器进行频率微调,使振荡信号频率与晶振频率一致,同时起到稳定频率地作用,一般选用10~30pF地瓷片电容.并且电容离晶振越近越好,晶振离单片机越近越好.晶振地取值范围一般为0~24MHz,常用地晶振频率有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图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相同,只是得到地温度值地位数因分辨率不同而不同,且温度转换时地延时时间由2s减为750ms. DS18B20测温原理如图3-5所示.图中低温度系数晶振地振荡频率受温度影响很小,用于产生固定频率地脉冲信号送给计数器1.高温度系数晶振随温度变化其振荡率明显改变,所产生地信号作为计数器2地脉冲输入.计数器1和温度寄存器被预置在-55℃所对应地一个基数值.计数器1对低温度系数晶振产生地脉冲信号进行减法计数,当计数器1地预置值减到0时,温度寄存器地值将加1,计数器1地预置将重新被装入,计数器1重新开始对低温度系数晶振产生地脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值地累加,此时温度寄存器中地数值即为所测温度.图中地斜率累加器用于补偿和修正测温过程中地非线性,其输出用于修正计数器1地预置值.图3-5 DS18B20测温原理图3.3.3 DS18B20地主要特性(1)适应电压范围更宽,电压范围: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)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快;(8)测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强地抗干扰纠错能力;(9)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作.3.3.4 DS18B20地测温流程图3-6 DS18B20地测温流程图3.3.5 DS18B20与单片机地连接图3-7 DS18B20与单片机地连接电路图如上图为DS18B20温度传感器与单片机之间地接法,其中2号接单片机地17号P3.7接口.DS18B20通过P3.7口将采集到地温度实时送入单片机中.3.4 报警温度地设置P2.5 P2.6 P2.7P3.7图3-8 报警温度地设置电路图3-8为报警温度地设置电路,其中K1,K2,K3分别接到单片机地P2.5,P2.6,P2.7口.其中K1用于报警温度设定开关,K2用于报警温度地设置时候地加温度(每次加一),K3用于报警温度地设置时地减温度(每次减一).实现了报警温度地手动设置.3.5 数码管显示3.5.1数码管工作原理图3-9 数码管地引脚排列及结构图3-9为数码管地外形及引脚排列和两种接法(共阴极和共阳极)地结构图.共阳极数码管地8个发光二极管地阳极(二极管正端)连接在一起.通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端.当某段驱动电路地输出端为低电平时,则该端所连接地字段导通并点亮.根据发光字段地不同组合可显示出各种数字或字符.此时,要求段驱动电路能吸收额定地段导通电流,还需根据外接电源及额定段导通电流来确定相应地限流电阻.共阴极数码管地8个发光二极管地阴极(二极管负端)连接在一起.通常,公共阴极接低电平(一般接地),其它管脚接段驱动电路输出端.当某段驱动电路地输出端为高电平时,则该端所连接地字段导通并点亮,根据发光字段地不同组合可显示出各种数字或字符.此时,要求段驱动电路能提供额定地段导通电流,还需根据外接电源及额定段导通电流来确定相应地限流电阻.要使数码管显示出相应地数字或字符,必须使段数据口输出相应地字形编码.字型码各位定义为:数据线D0与a字段对应,D1与b字段对应……,依此类推.如使用共阳极数码管,数据为0表示对应字段亮,数据为1表示对应字段暗;如使用共阴极数码管,数据为0表示对应字段暗,数据为1表示对应字段亮.如要显示“0”,共阳极数码管地字型编码应为:11000000B(即C0H);共阴极数码管地字型编码应为:00111111B(即3FH).依此类推,可求得数码管字形编码如表3-5所示.表3-5数码管字符表显示地具体实施是通过编程将需要显示地字型码存放在程序存储器地固定区域中,构成显示字型码表.当要显示某字符时,通过查表指令获取该字符所对应地字型码.3.5.2数码管显示电路图3-10 四位八段数码管动态显示电路图3-10为本次设计所用到地四位八段数码管动态显示,其中段选接到单片机地P0口,位选接到单片机地P2口地低四位.其中P0口也接地有上拉电阻,图中未标示出来,会在下面地总体电路中标示出来.采用地是动态显示方式.3.6 硬件电路总体设计图3-11为本次设计地硬件总体设计图,其中利用K1,K2,K3处进行报警温度地设置,然后有DS18B20进行实时温度采集,并在数码管上同步显示,若采集到地温度达到或者超过预设地报警温度,则LED 灯会发光报警,若低于该报警温度,则不会报警.P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P2.0 P2.1P2.2 P2.3图3-11 硬件电路总体设计图4.软件设计方案4.1主程序介绍4.1.1主程序流程图本次设计首先对程序进行初始化,然后打开报警温度设定开关,对报警温度进行设定,确认设定值后,DS18B20温度传感器进行温度采集并送入单片机中,单片机将传感器所检测到地温度同步显示在数码管上,并且与设置地报警温度进行比较,若达到或者超过报警温度时,LED灯发光报警,如果没有达到,则继续进行温度采集.图4-1主程序流程图4.1.2主流程地C语言程序main (){ALERT=0。
基于DS18B20的温度采集控制系统

,
如 图 2 中 的 U3
,
,
以动态方式显 示
口
显示
送 出
位 控 信 号 由 P2
【] 3
,
送 出
,
经 U2 (
图 1
总体控 制框 图
7 4 LS 2 4 4 ) 进
行信号放 大
以 产生足 够 大 的 电流驱 动数
、
码 管显 示
。
数码 管 与单 片机 的连 接 见 图 2 所示 U3
。
U2 和
这里 我们采用单 片机最小系统 图 2 所示
2 1
.
,
系统硬件 电路 图如
U 1 的连 接
。
2 4
.
电机 控 制 模块
电机 采 用 直 流 电机
,
主控 制模块
由于 系统控制方案 简单
,
如 图 2 中的 B
,
1
,
额 定 电压 5 V
.
,
数据量也不 大
’
,
考虑 到 电路
调速采用
PW M
调速方法
利用单片机
P0 1 口
,
通过软
,
的 简单 和成 本 等 因 素
3I
0ND
一 D M 7 LS 4 4 Z
P O 2
22
O D' 1 R
P I 2
.
RS v P D XTAL2
.
I ==.
} 。 。
R 1 c 1 l‘ 千 一 F 亍 { -_ _一 3 0 p
G XL N T1 A D
85 91 5
自动
匐
基于
DS 188 2 0
DS18B20温度数据采集系统

目录摘要 (2)一、绪论 (3)二、系统方案实现 (3)2.1.设计要求 (3)2.2.设计方案论证 (3)2.3.总体设计框图 (4)三、主要硬件介绍 (4)3. 1.DS18B20 (4)3.1.1 DS18B20的主要特性 (4)3.1.2 DS18B20的外形和内部结构 (5)3.1.3 DS18B20工作原理 (6)3.1.4 高速暂存存储器 (7)3.2 AT89C51 (8)四、软件介绍 (9)4.1 功能概述 (9)4.2 系统软件流程图 (9)4.2.1程序 (9)4.2.2读出温度子程序 (10)4.2.3温度转换命令子程序 (11)4.3具体程序 (11)五、总结 (22)六、设计体会及今后的改进意见 (22)参考文献 (23)摘要本文基于DS18B20设计了一种温度数据采集系统,系统主要由AT89C51单片机,一个DS18B20 数字温度传感器以及一个液晶数码管构成。
软件方面,我们采用keil。
软件对程序进行编写以及调试,硬件方面,我们通过Proteus软件对硬件电路进行仿真以及测试,该系统结构简单,功耗较低,测温范围为- 50℃~+ 255℃。
现场温度直接以"一线总线"的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量。
该系统硬件分为3部分:DS18B20 温度测量模块、单片机模块、显示模块。
关键词:DS18B20、7SEG-MPX4液晶数码管、AT89C51一、绪论在工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。
其中,温度控制也越来越重要。
在工业生产的很多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。
采用单片机对温度进行控制不仅具有控制方便、简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而大大提高产品的质量和数量。
因此,单片机对温度的控制问题是工业生产中经常会遇到的控制问题。
基于DS18B20的多点温度采集系统设计

基于DS18B20的多点温度采集系统设计
叶小乐
【期刊名称】《电子世界》
【年(卷),期】2017(0)16
【摘要】以DS18B20数字温度传感器和AT89C52单片机为核心,设计了一种多
点温度采集系统.系统由DS18B20温度采集模块、RS-232串口通信模块、
LCD1602液晶显示模块和声光报警等模块组成.给出了系统的具体硬件电路与程序设计,实现了对多点温度的采集、显示、传输和异常报警.系统可以广泛应用于粮仓、温室大棚等农业生产领域,具有广阔的应用前景.
【总页数】3页(P100-102)
【作者】叶小乐
【作者单位】岭南师范学院网络与信息技术中心
【正文语种】中文
【相关文献】
1.基于DS18B20的多点温度数据采集仪的设计 [J], 彭远芳
2.基于DS18B20的多点温度采集系统设计与实现 [J], 查方勇
3.基于DS18B20多点无线温度采集系统设计 [J], 孔庆光
4.基于DS18B20多点温度采集兼红外无线传输系统研究 [J], 阴志国;袁兵;陈云辉
5.基于DS18B20多点无线温度采集系统设计 [J], 孔庆光;
因版权原因,仅展示原文概要,查看原文内容请购买。
基于DS18B20的单片机无线温度采集系统

2013 届本科生毕业论文存档编号毕业论文(设计)论文(设计)题目基于单片机的无线温度测量系统English Topic The wireless temperature measurement system based on single chip microcomputer系别物理与电子工程学院专业自动化班级学生指导教师2013 年5月15 日基于单片机的无线温度测量系统摘要:温度检测在日常生活、工作和工程实践中具有重要的应用。
随着生活水平的提高和科学技术的进步,无论是工业还是农业或者是日常生活中对温度检测的要求越来越高,要求能进行一定距离的传输。
基于这点本设计主要基于MCS-51单片机并由温度传感器、无线传输器、LED数码管和上位机组成的同步显示的温度采集系统解决了这个日常生活工作中的问题。
工作场所的温度采集用到了温度采集芯片DS18B20来达到一定的准确度和精确度,最后采用nRF24L01模块对采集到的温度数据进行无线传输并通过由单片机控制的数码管显示当前温度,从而能打破传统温度操作受到距离限制的缺陷的同时便于温度的读取。
在经过软硬件测试后,我们基本实现了用温度传感器采集温度,用nRF24L01进行一定距离传输后在接受端的上位机软件上显示出来的模型。
传输距离>50m,温度范围达到0至125摄氏度,精度1摄氏度。
关键字: MCS-51;nRF24L01;LED显示;温度传感器;无线传输The Wireless Temperature Measurement System Based onSingle Chip MicrocomputerAbstract:Temperature detection in the daily life, work, and has important application in engineering practice. With the improvement of living standards and the progress of science and technology, whether agricultural or requirement for temperature detection in daily life can request for a distance of transmission. Based on that this design is mainly based on MCS - 51 single chip microcomputer and the temperature sensor, wireless transmitter, LED digital tube and upper unit into synchronous display of temperature acquisition system solved the problems in daily life. Workplace sampling to temperature chip DS18B20 temperature to achieve the precision and accuracy, the last of the collected temperature data by module nRF24L01 wireless transmission and through digital tube display the current temperature controlled by single chip microcomputer, which can break the traditional operating temperature, is limited by distance of defects and easy to read temperature. After the hardware and software testing, we basically achieved with a temperature sensor to collect temperature, after a certain distance transmission with nRF24L01 in accept the PC software displayed on the model. Transmission distance > 50 m, the temperature range of 0 to 125 degrees Celsius, the precision of 1 c.Keywords: MCS-51; NRF24L01; LED display; Temperature sensor; Wireless transmission引言 (1)1 系统结构及工作原理 (2)1.1 系统结构 (2)1.2 系统控制核心——AT89C52 (2)1.2.1 单片机的引脚介绍 (2)1.2.2 单片机内部资源介绍 (4)1.3 系统工作原理简介 (5)1.3.1数字温度传感器DS18B20 (7)1.3.2无线传输 (7)1.3.3 LED显示 (9)2 下位机部分介绍 (11)2.1 DS18B20温度采集模块 (11)2.1.1 DS18B20简介 (11)2.1.2 DS18B20的测温方法 (12)2.2 LED数码显示模块 (14)2.3 nRF24L01无线发送模块 (17)3 上位机部分介绍 (20)3.1 无线接收模块 (20)3.2 上位机上的数据显示 (21)4 模块间的通信 (23)4.1 上位机与单片机的通信 (23)4.1.1 串口通信简介 (23)4.1.2 PC机侧VB程序 (25)4.2 nRF24L01与单片机的通信 (25)4.3 DS18B20与单片机的通信 (26)5 系统调试 (28)5.1 DS18B20温度采集并显示 (28)5.2 nRF24L01发送与接收模块调试 (29)6 总结 (31)【参考文献】 (32)附录 (33)致谢 (46)随着无线技术的日益发展,无线传输技术应用越来越被各行各业所接受,无线传输传感器的检测数据也不例外。
基于DS18B20测温的ARM的温度采集系统研究

基于DS18B20测温的ARM的温度采集系统研究作者:胡振远李良来源:《中国新技术新产品》2011年第16期摘要: 主要介绍了以ARM为核心的温度采集系统,采用数字温度计芯片DS18B20构成测温单元,设计了DSl8B20与ARM连线图,并介绍了如何实现温度采集以及与PC机间的数据通讯。
PC可把接收到的ARM采集到的温度数据进行整理并显示,具有一定的实用价值。
关键词:DS18B20;PC;ARM;温度中图分类号:TM921.41文献标识码:A引言由于大规模集成电路的飞速发展,计算机的微型化发展得很快,其性能价格比也大为提高,因而微型计算机的应用越来越广泛[1、2]。
ARM实际上是微型计算机的一个重要分支,主要用于各种智能仪器仪表和自动控制系统中。
在这些系统中,ARM必须从外电路采集信息,通过对采集到的外部信息分析处理后还要输出相关的控制信号对外电路进行控制。
本文介绍ARM在信号数据采集系统中的应用,以水稻大棚为对象,采用ARM作为控制核心,温度传感单元采用DS18B20,针对大棚内部温度进行数据采集,以及数据传送存储和显示进行介绍。
1 系统组成整个系统主控部分采用ARM构成应用系统;温度检测部分采用DS18B20单总线数字温度传感器对温度进行检测;数据显示部分采用静态数码管显示同时上传PC机。
系统工作原理为ARM微处理器向温度传感器发出信号,启动温度传感器采集温度数据,温度传感器采集完一次数据后,将模拟数据量转变成ARM微处理器能识别的数字信号。
然后由ARM微处理器根据现场对数据的不同要求可以选择两种方式来显示数据。
(l):数码管显示。
(2):PC机显示。
本系统采用的核心芯片分别为三星公司的ARM7TDMIS3C44BOX芯片作为系统处理器,DALLAS 公司的DS18B20作为温度传感器。
2硬件设计本系统主要分下位机上位机设计,下位机部分主要由两大部分组成,即DS18B20与ARM7温度测量模块和PC机与ARM7间的串行通讯显示模块。
基于arm的实时温度采集系统

目录摘要 (2)一、设计目的 (2)二、设计要求 (2)三、题目分析 (3)四、设计方法及步骤 (4)1、开发平台介绍 (4)2、ds18b20的工作原理 (6)3、ds18b20的驱动程序 (9)4、QT界面设计 (13)5、驱动的挂载和运行 (16)五、设计总结 (17)六、参考文档 (18)摘要近年来,随着计算机技术及集成电路技术的发展,嵌入式技术日渐普及,在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作用。
嵌入式系统无疑成为当前最热门最有发展前途的IT应用领域之一。
实时温度采集系统是是将环境温度实时的进行采集并显示的系统,在现在的许多家用电器、工业控制、甚至是高科技领域都有应用,它已经普遍的融入了社会生活和生产之中,并且作为基础的系统,在今后的生活生产中并不会被淘汰,应用范围还会继续扩大,因此,掌握此系统是必要的。
关键词:arm Linux ds18b20一、设计目的1、熟悉嵌入式系统的整个开发流程,具备独立进行开发的能力;2、熟悉Linux C,可以用Linux C编写驱动程序;3、熟悉C++,具备初步人机界面编程的能力;4、学习和掌握驱动的下载和烧写。
二、设计要求在Samsung公司S3C2410处理器的开发板上,嵌入式linux系统环境下,设计温度实时采集系统,并设计显示界面。
1、设计温度实时采集系统,要求基于ARM9开发板,温度传感器可以用ds18b20;2、要求温度值精确到个位;3、要求自己设计QT界面,并在界面上显示温度值。
三、题目分析在传统的模拟信号远距离温度测量系统中,需要很好的解决引线误差补偿问题、多点测量切换误差问题和放大电路零点漂移误差问题等技术问题,才能够达到较高的测量精度。
另外一般监控现场的电磁环境都非常恶劣,各种干扰信号较强,模拟温度信号容易受到干扰而产生测量误差,影响测量精度。
因此,在温度测量系统中,采用抗干扰能力强的新型数字温度传感器是解决这些问题的最有效方案。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于ARM的多片ds18b20 温度采集系统/******************************************************************************实验五多片ds18b20 温度采集 2005.1.13*******************************************************************************/#include <string.h>#include "..\inc\option.h"#include "..\inc\44b.h"#include "..\inc\44blib.h"#include "..\inc\def.h"#include "..\inc\timer.h"/***************************************************************************Timer5 初始化入口参数:Timing_count=定时时间常数,定时时间=定时时间常数*0.02msT5_int_Enable=1,T5 中断方式,T5_int_Enable=0,T5 查询方式****************************************************************************/Timer_Init(U16 timing_count,U8 T5_int_Enable){rINTMSK=BIT_GLOBAL|BIT_TIMER5;rTCFG0=0X0c70101;//prescaler=199 rTCFG0=0X010101;prescaler=1rTCFG1=0X0100000; // DIV=4rTCNTB5=timing_count;//rTCMPB5=(timing_count/2); havn't rTCMPB5!!! but T0--T4 have.rTCON=0X2000000;rTCON=0X1000000;if(T5_int_Enable){rINTCON=0X05;rINTMOD=0X0;rINTMSK=~(BIT_GLOBAL|BIT_TIMER5);}}/********************************************************************************** 匹配ROM(命令55H),发8字节ROM代码入口参数:*ROM_addr 为DS18B20-ID首地址**********************************************************************************/ Match_Rom(U8 *ROM_addr){U8 count;U8 *p;U8 temp=0x55; //匹配ROM 命令55HWrite_Byte(temp);p=ROM_addr; //发8字节ROM代码count=8;while(count){Write_Byte(*p);p++;count--;}}/*********************************************************************************** 读ROM(命令33H),读回8字节ROM代码入口参数:Read_Addr=ROM代码首地址出口参数:Read_Addr 地址开始的8个单元= 读回8字节ROM代码***********************************************************************************/ Read_Rom(U8 *Read_Addr){U8 count;U8 *p;U8 temp=0x33; //读ROM 命令33HWrite_Byte(temp);p=Read_Addr; //从18b20 读回8字节ROM代码count=8;while(count){*p=Read_Byte();p++;count--;}}/********************************************************************************** 发启动温度转换命令(44h)***********************************************************************************/ void Convert_Start(void){Write_Byte(0x44);// Write_Byte(0X01); //主机发'1',释放总线,非窃电方式时可不用}/********************************************************************************** 发Skip ROM 命令(CCh)***********************************************************************************/ void Skip_Rom(void){Write_Byte(0xCC);/********************************************************************************** 发Read_Ram 命令,读回2字节12位转换结果**********************************************************************************/ U16 Read_Ram(){U8 Temperature_L;U8 Temperature_H;U16 Temperature; //12位转换结果Temperaturefloat Celsius; //分辨度为0.0625 度Write_Byte(0xBE); //发Read_Ram 命令,Temperature_L= Read_Byte(); //读回2字节12位转换结果Temperature_H= Read_Byte();Temperature=Temperature_H;Temperature=(Temperature_H<<8)+Temperature_L;Celsius=Temperature*0.0625;return Temperature;}/*********************************************************************************** 复位ds18b20入口参数:无返回参数:=1:总线上有18B20应答; =0:总线上无应答;***********************************************************************************/ U8 Reset_18B20(void){U8 temp;rPCONG |= 0X0100; //PCONG[15:0]16位, G口配置寄存器.rPCONG &= 0x0fdff; //PCONG[9:8]=01, 定义PG4 output。
rPUPG &=0xef; //PUPG[7:0]8位,PUPG[4]=0,pull up enabledrPDA TG |=0x0100; //置"1"总线,3.8us.asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");rPDA TG &=0x0ef; //主机发复位脉冲"0",500 us.temp=150; //500uswhile(temp){asm("nop");temp--;}rPDA TG |=0x10; //主机发"1",17 us.(ds18b20等候15--60us,实测25us) temp=4;while(temp){asm("nop");temp--;}rPCONG &=0xfcff; //PG4[9:8]=00,inputTimer_Init(12,0); //12*0.02ms=240 uswhile(1){temp=rPDA TG;temp &=0x10;if(temp==0x0) //有应答?{rTCON=0x0; //停止T5计时while(temp==0x0){temp=rPDA TG;//等应答结束temp &=0x10;}temp=80; //250uswhile(temp){asm("nop");temp--;}return 1; //有应答,返回1.}else{if(~(rTCNTO5))return 0; //无应答,返回0.}}/*********************************************************************************** 主机读 1 Byte入口参数:无返回参数:读入的 1 Byte数据, 低位在先!!***********************************************************************************/ U8 Read_Byte(){U8 count;U8 temp_Byte=0;U8 temp;count=8; //读入1 Byte数据(=8bit)temp_Byte;while(count){temp=Read_Bit(); //读入1 Bittemp_Byte=(temp_Byte>>1)|(temp&0x80);count--;}return temp_Byte;}/********************************************************************************** 主机读 1 Bit入口参数:无返回参数:读入的 1 Bit数据(U8 temp的Bit[0] )***********************************************************************************/ U8 Read_Bit(){U8 temp;U8 read_bit;rPDA TG &=0x0ef; //主机发"0",2.2usasm("nop");asm("nop");rPDA TG |=0x010; //主机发"1",3.8us.asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");rPCONG &=0xfcff; //PG4[9:8]=00,input.asm("nop");while(1){read_bit=(rPDA TG<<3)&0x80; //读总线PG4asm("nop");if(read_bit==(rPDA TG>>4)&0X01);//再读总线PG4break; //两次读相等?}temp=8; //30uswhile(temp){asm("nop");temp--;}rPCONG |=0x0100; //PG4[9:8]=01,outputasm("nop");rPDA TG |=0x10; //发"1",2us.asm("nop");asm("nop");return read_bit;}/********************************************************************************** 主机写 1 Byte入口参数:欲写的 1 Byte数据返回参数:无***********************************************************************************/ void Write_Byte(U8 write_Byte){U8 count;U8 temp_bit;count=0x08;while(count){temp_bit=write_Byte&0x01;Write_Bit(temp_bit);write_Byte=write_Byte>>1;count--;}}/***********************************************************************************主机写 1 Bit入口参数:欲写的 1 Bit数据(U8 temp的Bit[0] )返回参数:无************************************************************************************/ U8 Write_Bit(U8 write_Bit){U8 temp;rPCONG |=0x100; //PG4[9:8]=01,outputasm("nop");rPDA TG &=0x0ef; //发"0",3us.asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");if((write_Bit &0x01)==0x01)rPDA TG |=0x10;elserPDA TG &=0x0ef;temp=8; //30uswhile(temp){asm("nop");temp--;}rPDA TG |=0x10; //发"1",2us.asm("nop");asm("nop");}void Main(void){U8 temp;U16 temperature[6];float Celsius[6];U8 count;U8 ds18b20_Rom_1[8]={0x28,0x47,0x30,0x05f,0x0,0x0,0x0,0x28};U8 ds18b20_Rom_2[8]={0x28,0x8f,0x44,0x05f,0x0,0x0,0x0,0x64};U8 ds18b20_Rom_3[8]={0x28,0x00,0x45,0x05f,0x0,0x0,0x0,0x67};U8 ds18b20_Rom_4[8]={0x28,0x35,0x3b,0x05f,0x0,0x0,0x0,0xae};U8 ds18b20_Rom_5[8]={0x28,0x38,0x2d,0x05f,0x0,0x0,0x0,0x04};while(1){temp=Reset_18B20(); //复位if(temp==1)Skip_Rom(); //发skip_Rom 命令Convert_Start(); //发启动温度转换命令(44h)Timer_Init(50000,0); //延时1sasm("nop");while(rTCNTO5);count=5;while(count){temp=Reset_18B20(); //复位if(temp==1)switch(count){case 1:Match_Rom(ds18b20_Rom_1);//发匹配ROM_ID 命令(55h),及ds18b20_1 Rom地址break;case 2:Match_Rom(ds18b20_Rom_2);break;case 3:Match_Rom(ds18b20_Rom_3);break;case 4:Match_Rom(ds18b20_Rom_4);break;case 5:Match_Rom(ds18b20_Rom_5);default:break;}temperature[count]=Read_Ram(); // 发Read_Ram命令,读回温度值12位Celsius[count]=temperature[count]*0.0625;count--;}/* rPCONG |= 0X0400; // PCONG[15:0]16位, G口配置寄存器.rPCONG &= 0x0f7ff; // PCONG[11:10]=01, 定义PG5 output。