基于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界面,并在界面上显示温度值。
三、题目分析在传统的模拟信号远距离温度测量系统中,需要很好的解决引线误差补偿问题、多点测量切换误差问题和放大电路零点漂移误差问题等技术问题,才能够达到较高的测量精度。
另外一般监控现场的电磁环境都非常恶劣,各种干扰信号较强,模拟温度信号容易受到干扰而产生测量误差,影响测量精度。
因此,在温度测量系统中,采用抗干扰能力强的新型数字温度传感器是解决这些问题的最有效方案。
基于ARM11和Linux的DS18B20温度测量系统设计及实现
0 引 言
随 着嵌 入式 设 备 和 智 能 终 端 的 日益 普 及 , 来 越 多 的 越 应 用 环 境都 对 温度 测 量 功 能 存 在 需 求 , 时 对 于 温度 测 量 同 数 据 的 显示 、 输 及 处 理 提 出 了更 高 的 要 求 , I D 图 形 传 如 C 窗 口 化 显 示 、 据 无 线 化 传 输 等 等 。使 用 5 数 1系 列 或 者
在其 9个 字 节 的暂 存 器 中 , 0和第 1字 节 存 放 有 温 第
度测 量 的二 进 制 值 , 供 ¥ C6 l 可 3 4 0通 过 单 总 线 读 出 然 后
加工处理 。
示 。其 结 构 框 架 如 图 1 示 。 所
作者 简 介 : 驰 ( 9 5 ) 男 , 西 南 宁人 , 士 , 西 师 范 学 院 师 园 学 院理 工 系助 理 工程 师 , 究 方 向 为嵌 入 式 系统 开发 。 黄 17 一 , 广 硕 广 研
1 1刻 暂 存器
_ 度 感 _ J温 传 器
高温触发器
I t
发 生器
因 为 DS 8 2 是 单 总 线 器 件 , 以 ¥ C 4 0 和 1B 0 所 3 61 D 1 B 0之 间 只 需 通 过 一 根 总 线 来 完 成 控 制 命 令 和 温 度 S 82
使用51系列或者arm79系列微控制器由于处理能力和接口资源有限常常不能充分满足这类复杂的应用要求而基于arm11微处理器和linux操作系统的嵌入式平台有较强的数据处理和人机交互能力并有较好的扩展性和兼容性具有良好的实际使用前景
第 1 卷 6 1 期
V IJ NO6 o I .
8 R I 位CC 配置寄 存器
基于DS18B20多点无线温度采集系统设计
基于DS18B20多点无线温度采集系统设计孔庆光【摘要】介绍一种基于射频技术无线温度检测装置,主要由若干无线温度采集器和监控中心组成.无线温度采集系统,利用数字传感器DS18B20多点采集温度,通过射频收发器NRF905将数据发送到接收端,实现了对现场环境的不间断温度测量与监控,通过监控中心可以直观看到温度实时变化,做到足不出户即可了解各被测点的温度.此系统代替过去由人工来完成的温度数据采集,从而能有效的监控监测点的温度.该系统最大传送距离可达1000m;所采集的温度精度为0.5℃;稳定性强.具有多点采集,传输距离远,精准度高,使用方便,应用范围广等特点.【期刊名称】《宁德师范学院学报(自然科学版)》【年(卷),期】2013(025)001【总页数】6页(P55-59,65)【关键词】无线;射频收发器;采集;多点;实时【作者】孔庆光【作者单位】宁德师范学院物理与电气工程系,福建宁德352100【正文语种】中文【中图分类】TP331.2多点无线温度采集系统是在需要对温度监控和测量的地方放置无线温度采集器,然后由监控中心通过软件对无线采集器进行控制的温度检测装置.本系统由STC89C52单片机主控制电路、温度采集电路、发射电路、接收电路、显示电路组成.主要功能:可实现多点温度测量并通过数码管显示和发射数据;接收温度数据,并处理,通过12864液晶显示;当采集的温度超过系统设置的温度范围时,发生报警,进行声光提示.系统的方框图如图1所示.2.1 主控电路收发两端所采用的主控电路相同,如图2所示,其中以STC89C52单片机为核心,包含两个基本电路:时钟电路和复位电路.单片机的时钟信号通常有两种产生方式:内部时钟方式和外部时钟方式.内部时钟方式是利用单片机内部的振荡电路产生时钟信号.外部时钟方式是把外部已有的时钟信号引入到单片机内.本系统采用内部时钟方式[1].如图,在单片机的XTAL1和XTAL2引脚外接晶振,作为单片机内部振荡电路的负载,构成自激振荡器,可在单片机内部产生时钟脉冲信号.C11和C22可以稳定振荡频率,并快速起振.本电路选用晶振11.0592MHz,C11、C22为30PF.复位电路是使单片机处于某种确定的初始状态.单片机工作从复位开始,单片机RESET引脚加入高电平并保持2个机器周期以上,就执行复位操作[1].复位操作有两种基本方式:一种是上电复位,另一种是上电与按键均有效的复位.图中采用后一种复位电路.当RESET获得高电平,随着电容C5的充电,RESET引脚的高电平将逐渐下降.若该高电平能够保持2个机器周期以上,就可以实现复位操作.2.2 显示电路如图3为无线温度采集系统显示电路,分为数码管显示电路和12864液晶显示电路.基于它们各自的优越性,将温度采集部分的显示电路用数码管作为显示器,将温度接收部分的显示电路用12864液晶作为显示器.其中,LED数码显示管有静态显示方式和动态显示方式两种,本系统采用串行输出的静态显示方式[3].利用4片串转并芯片74HC573将控制器输出的串行数据转换成并行数据输出,用来驱动4位LED数码显示管显示数据.12864液晶由5V电压驱动,带背光,内置8192个16乘16点阵、128个字符及64乘256点阵显示RAM.与外部CPU接口采用并行或串行两种控制方式[5].2.3 电源转换电路图4为5V转3.3V的电源转换电路,由于NRF905的最大工作电压为3.6V,所以为了保证它的正常运行,需将5V的直流电压进行转换.其中,电路的核心是稳压器ASM1117[4].2.4 温度采集图5为智能温度传感器采集电路.图中智能温度传感器DS18B20的信号输出端都连接到单片机的P2.2端,电阻R20作为上拉电阻.工作时,由程序控制读取智能温度传感器DS18B20采集的温度数据,送单片机处理.由图5可以看出,DS18B20只有一条数据传输线,故其接口简单,使用方便[2].系统的发送与接收部分的电路完全一样,如图6所示为射频收发器NRF905的电路图.NRF905模块是采用高效的GFSK调制,抗干扰能力强,传输距离远,稳定性高,且内置硬件CRC检错和点对多点通信地址控制,外围电路连接简单,可直接与各种单片机连接,软件编程方便.此外,其工作电压为1.9V到3.6V,功耗非常低.有四种工作模式,由软件设置电路的工作方式,在正常工作时,接收与发送模式切换时间短,NRF905在无线数据通信、无线报警及安全系统、无线监测、智能家居等诸多领域有广泛应用[5].软件采用C语言,程序结构清晰,便于进一步扩展系统的功能.无线温度采集系统软件由发送端和接收端的软件组成.程序采用模块化程序设计,系统程序包括的子模块有:无线传输、显示、传感器采集、按键设置等.系统的管理软件完成对整个系统的管理和监控,是人机交互的界面.各节点信息处理软件完成对各节点信息的处理和控制.硬件合理的配合软件编程就能实现系统的温度显示、检测、无线传送和接收、按键设置等功能.3.1 温度采集端软件设计温度采集部分的软件流程是实现温度的实时采集,处理数据,通过数码管显示,并实时发送.温度采集端软件流程如图7所示.发送端由四点组成,可以分布在四个不同的地方进行温度采集.四个不同的发送端有四个不同的虚拟地址,其他的内容是一致的.3.2 检测端的软件设计检测端即接收端.接收部分软件流程是接收并处理由发送端发送过来的数据,通过12864液晶显示,并由按键实现最高温及最低温报警的设定,从而得到相应的声光与文字等提示.接收端软件流程如图7所示.温度采集系统经过不间断的重复测试,工作十分稳定,技术性能指标良好,各项参数达到了期望值.在相同环境采集得到的一组温度数据中,传感器间的误差为0.1℃,能够满足大多数的工作要求.整个温度采集系统有工作稳定、传输距离较远、相对成本低等优点,经多次试验充分证明其在实际中是可行的.更进一步,此温度采集系统可以按一定的要求进行外围扩展,增加一些新的功能,满足新的需求.【相关文献】[1]郭天祥.新概念51单片机C语言教程:入门、提高、开发、拓展全攻略[M].伊宁:电子工业出版社,2009.[2]王守中.51单片机开发入门与典型实例[M].北京:人民邮电出版社,2007:185-187.[3]余孟尝.数字电子技术基础简明教程[M].北京:高等教育出版社,2003.[4]康华光.电子技术基础:模拟部分[M].北京:高等教育出版社,2006.。
基于51单片机DS18B20温度采集器详解
一核心器件的基本构成及特性1.1 AT89S51功能特性89C51是INTEL公司MCS-51系列单片机中基本的产品,它采用INTEL公司可靠的CHMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。
它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于80C51基础型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能。
89C51内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
此外,89C51还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。
在空闲模式下冻结CPU 而RAM定时器、串行口和中断系统维持其功能。
掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。
89C51有PDIP(40pin)和PLCC(44pin)两种封装形式。
1.2 AT89S51管脚介绍AT89C51单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上。
如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM)、并行I/O口(4个8位I/O口)、串行口、定时器/计数器、中断系统及特殊功能寄存器。
它们都是通过片内单一总线连接而成,其基本结构依旧是微处理器(CPU)加上外围芯片的传统结构模式。
但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式,以实现不同的功能。
AT89C51单片机如图所示。
1.1.1引脚功能介绍Vcc(40引脚):接+5V电源。
Vss(20引脚):接地。
XTAL1(19引脚):片内振荡器反相放大器和时钟发生器电路的输入端。
XTAL2(18引脚):片内震荡器反相放大器的输出端。
RST:复位引脚,高电平有效。
基于DS18B20的温度采集控制系统
自动控制
基于 DS18B20 的温度采集控制系统
宋亚伟 1, 李恒宗 2
( 1.华南理工大学, 广东广州 510640; 2.泰怡凯电气 ( 苏州) 有限公司, 江苏苏州 215128)
摘要: 以 AT89S51 单片机为核 心 控 制 元 件 , 介 绍 了 与 DS18B20 组 成 温 度 采 集 系 统 的 设 计 方 案 , 利 用 单 片 机 空 余 I /O 口 模 拟 PWM
的显示数据码
MOV
P1,A
; 从 P1 口送出显示数据
LCALL DELAYS
; 延时以保持一定
的显示时间
DEC R1
; 显示数据地址加一
MOV A,44H ; 位控位数据重新装入 A
JB
ACC.1,LOOP6
; 判断是否循环到
最高位, 是则跳转
RL
A
; 不 是 则 左 移 A,
即显示下一位
MOV 44H,A
2.2 温度采集模块
温度采集模块采用美 国 DALLAS 公 司 生 产 的 一 线 数 字 温度传感器 DS18B20, 它的测温范围是- 55℃~125℃, 与单 片机交换信息仅需要一根 I /O 线, 其读 /写及温度转换的 功率也可来源于数据总线, 而无需额外电源, 如图 2 中 J1 所示, DS18B20 有三个引脚, 2 脚 DQ 是 数 字 信 号 输 入 /输 出端, 1 脚 VDD 是 外 界 电 源 输 入 端 , 3 脚 GND 是 电 源 地 。 其与单片机的连接见图 2 中 J1 与 U1 的连接。
2 硬件电路设计
基于ARM和DS18B20的数字测温系统
基于ARM和DS18B20的数字测温系统0 前言热误差是数控机床的最大误差源,数控机床的温度测试为机床热误差的补偿提供依据。
传统的测温方案是将模拟信号通过电缆远距离传输至数据采集卡进行A/D 转换并处理,实用中必须解决长线传输和模拟量传感器布线等问题。
本文介绍了一种新型的设计方案,控制器采用SAMSUNG 公司的32 位ARM微控制器S3C44BOX,温度传感器采用单总线数字温度传感器DS18B20。
采用数字温度传感器即在测试点完成了信号的数字化,提高了传输的可靠性,同时简化了外围电路,也便于传感器在机床上的布置安装。
ARM 处理器控制数字温度信号的采集,并与上位PC 机通讯,同时其他硬件资源提供热补偿系统其他功能。
本文在介绍数字温度传感器DS18B20 的基础上,给出了系统的软硬件设计方案,对软件实现中的关键点做了详尽的注释说明。
1 数字温度传感器DS18B20 介绍1.1 DS18B20 的结构DS18B20 是美国DALLAS 公司推出的一种可组网数字温度传感器。
DS18B20 只有一个数据输入/输出口,是单总线专用芯片。
DS18B20 工作时,被测温度值直接以单总线的数字方式传输。
DS18B20 体积小,电压适用范围宽(3V-5V),可以通过编程实现9~12 位的温度读数,即有可调的温度分辨率。
测温范围-55℃~+125℃,在-10℃~+85℃时,精度为±0.5℃。
其可选封装有TO-92、SOIC 及CSP 封装。
每个DS18B20 出厂时都有一个唯一的64 位序列号,因此一条总线上可以同时挂接多个DS18B20 而不会出现混乱。
嵌入式系统课程设计(基于ARM的温度采集系统设计)
嵌入式系统课程设计(基于ARM的温度采集系统设计)1000
字
嵌入式系统是一种基于微处理器或微控制器、专用硬件和软件的计算机系统,具有小型化、低功耗、实时性强等特点。
本次课程设计旨在设计一种基于ARM的温度采集系统,实现对温度值的实时监测与显示。
首先,需要选用一款适合嵌入式系统的ARM处理器。
考虑到性能和功耗的平衡,本次选用STM32F103C8T6处理器。
其主要特点有:基于ARM Cortex-M3内核,时钟频率为72MHz,具有64KB闪存和20KB SRAM。
接下来,需要选择温度传感器。
考虑到成本和精度等因素,本次选用DS18B20数字温度传感器。
DS18B20具有以下特点:数字接口,
精度为±0.5℃,温度响应快速,封装为TO-92。
然后,需要编写嵌入式软件。
本次采用Keil MDK-ARM开发环境,编写C语言程序。
程序主要包括以下部分:
1. 初始化:包括STM32外设的初始化,如时钟、GPIO、USART等。
2. 温度采集:通过OneWire协议与DS18B20通信,读取温度值,计算并保存到指定变量中。
3. 温度显示:使用USART串口通信,把温度值转换为ASCII码,并通过串口发送到上位机。
上位机可以使用串口调试助手等软件进行数据接收和显示。
最后,进行实验测试。
将DS18B20连接到STM32,把程序烧录到处
理器中,通过串口调试助手连接上位机,即可实时显示温度值。
实验测试表明,该系统温度采集准确可靠,响应速度快,可广泛应用于各种实时温度监测场景。
基于ARM-Linux与DS18B20的温度监测系统
T mp r t r n t r g s se b s do e eau emo i i y tm a e nARM — i u n B2 o n L n x a dDS1 8 O
Ⅵ NG a g . W A G i Ⅵ N G a — h o Fn N Ka . Xin c a
i st frt i . DS 0 d i e r g a i d s n d a d a me B2 rv r o r m e i e n Emb d e e e v ri b i n AR lt r u i g Bo . T e tmp r t r 1 8 p s g n e d d W b S r e u l o M p a f m s a s t o n h e ea u e C emo i r db e o eP s gwe r ws rt n u et e e u p n n i ga a o a l mp r t r a g . n a b nt e yr m t C u i bb o e e s r q ime t u n n t r s n b et o n o h r ae e e au er n e Ke r s ARM ; e e d d L n x DS 0 d i e r g a ; Bo ; CGI y wo d : mb d e i u ; B2 r r o m 1 8 v p r a
Ab t a t A mp r t r n t rn se b s d o sr c : t e ea e u mo i i gs t m a e nARM — i u n B2 to u e . Th se u e o y L n xa dDS 1 8 0i i r d c d sn es t m s sARM 9c r — a e - y o eb s de m b d e p o e s r 3 41 r d c db a u ga t e i o t l r i i l e e au es n o DS 8 0a t e e eau ed t ci n e d d r c s o ¥ C2 0p o u e yS ms n s h ma nc n r l ,d g t t mp r t r s r o e a e 1 B2 s h t mp r t r e e to e e n . Emb d e i u o e M lto n . T ed g tl e e a r e s r B 0 u d r mb d e n x OS f r h l me t e d d L n x OS i p  ̄ dt AR p a f r 1 s o h i i mp r t e s n o 1 2 n e at u DS 8 E e d dLiu o e t
基于DS18B20的多点温度采集系统设计
De s i g n o f M ul t i - po i nt Te m pe r a t ur e Ac q ui s i t i on Sy s t e m Ba s e d on DS1 8 B2 0
YE Xi a o — l e
( I n f o r ma t i o n a n d E d u c a t i o n a l T e c h n i q u e Ce n t e r ,Zh a n j i a n g No r ma l Un i v e r s i t y,Z h a n j i a n g 5 2 4 0 4 8 ,Ch i n a )
.
o f t e mp e r a ur t e a c q u i s i t i o n mo d ul e, RS- 2 3 2 s e r i a l c o m mu ni c a t i o n mo du l e , LCD I 6 02 m od u l e, v o i c e a n d l i g h t a l a m r mo du l eThe de s i gn me t ho d o f
0 引 言
温度 是农 业生 产 中的一 个重 要 参数 ,在众 多 农业 生产 领域 中 需 要对 温度进 行 监测 ,大 型粮 仓需 要对 上 百个 点的温 度进 行 监测 ,掌 握 各个 点在 不 同时 刻的温 度变 化 , 以提 高仓 储 量 ,同时 有效 地 避免 发生霉 变现 象 。针 对这 种需要 多 点温度 采 集 的情况 ,本 文设 计提 出 了一种 基 于A T 8 9 C 5 2 单片机 和 D S 1 8 B 2 0 数字 温度 传 感器 的 多点 温度 采 集系 统 。系统 可 以实 时获取 多 点温度 数据 ,并将 温度 值与 报 警设 定值进 行 比较 ,判 断是 否发 出声 光报 警 ,同时 将温 度值 送L C DI 6 0 2 进 行 实 时显 示 , 并把 温 度 数据 通 过 串 口通 讯传 输 给 上 位P C 机 ,由 P C 机 处理 后通 过 网络传 输到 控制 中心 。
基于ATmega单片机的DS18B20温度采集系统
DS1820 MIN TYP MAX
15us 15us 30us
DS1820采样 MIN TYP MAX
15us 15us 30us
图3 DS18B20写“1”时序图
3 温度采集系统的硬件设计
该系统主要有两部分组成,一部分是温度采集部分, 一部分是温度显示部分。均采用LED显示。 DS18B20数据线接AVR单片机的PB7,数据线和Vcc间 接 一 4.7k上 拉 电 阻 。 显 示 部 分 用 了 AVR单 片 机 的 三 个 I/O口,分别PB0、PB1、PB2。 在 单 片 机 与 LED显 示 管 之 间 有 两 片 74LS595移 位 寄 存 器,一片控制位码操作,一片控制段码操作。寄存器的特 点是能使采集到的温度能够串行输入,并行输出。先移位 后通过同步时钟锁存。具体的硬件结构框图如图4。
用,2000(6):66~68 [2]海涛. ATmega系列单片机原理及应用—C语言教程[M].机械
工业出版社,2008. [3]马忠梅. 单片机的C语言应用程序设计[M].北京航空航天大
学出版社,2007.
作者简介 海涛,男,硕士生导师,高级工程师,主要研究方向为工
业自动化及检测仪表。 邹鸣,男,硕士研究生,研究方向为综合自动化。
控制器读பைடு நூலகம்时间隙
控制器读1时间隙 1us<Trec<
GND
控制器采样 15us
15us 30us
>1us 控制器采样
15us
图2 DS18B20读“1”时序图区
写操作:当主机将数据线从高电平拉至低电平,产生
写起始信号。有两种写时间隙:写1时间隙和写0时间隙。
数据线电平变低后,DS18B20在15μs到60μs这段时间内对
基于DS18B20的多路温度采集系统
Vol.29No.22009.2船电技术2009年第2期基于DS18B20的多路温度采集系统朱群峰王晓芳黄磊(湖南邵阳学院电气工程系,湖南邵阳422000)摘要:提出了基于采用DS18B20和A T89C51单片机组成的单总线多路温度检测系统,详细给出了硬件和软件系统的设计过程。
该系统设计可靠性高、性价比高,在智能化自动检测和控制系统中具有广阔的前景。
关键词:数字式温度传感器DS18B20A T89C51单总线通信协议中图分类号:TP274文献标识码:A文章编号:1003-4862(2009)02-0007-03Mult i-channel Temperature Collection System Based on DS18B20Zhu Qunf eng, Wang Xiaofang, Huang Lei(Department of Elec trica l Engine ering, Sha oyang University, Shaoya ng 422400, Hunan, China)Abstract: This paper proposes the mult i-channeled temperature-testing system, which is composed ofDS18B20 and AT89C51 based on 1-wire. It describes the designi ng process of its hardware and software system. At a high qual ity-price ratio, t his system is very reli abl e, and well applicable in various intellectualized automatic testing and controlli ng systems.Key words: digital temperature sensor; DS18B20;AT89C51; 1-wi re; communication protocol1引言在过程控制的实时检测和监控系统中,温度的采集是很普遍的。
- 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。