找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8224|回复: 1
打印 上一主题 下一主题
收起左侧

STM32 模块篇-DS18B20实验

[复制链接]
跳转到指定楼层
楼主
ID:105323 发表于 2016-3-4 13:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目     录
5.04.1概述3
5.04.2 实验目的5
5.04.3 硬件设计5
5.04.4 软件设计6
5.04.5 STM32系统时钟配置SystemInit()9
5.04.6  GPIO引脚时钟使能9
5.04.7  GPIO管脚电平控制函数9
5.04.8 stm32f10x_it.c文件里的内容是10
5.04.9  ds18b20.h文件里的内容是10
5.04.10  ds18b20.c文件里的内容是11
5.04.11  main.c文件里的内容是16
5.04.12 程序下载18
5.04.13 实验效果图19
5.04 防水型DS18B20程序设计  
5.04.1概述


美国Dallas半导体公司生产的数字化温度传感器DS18B20,采用导热性高的密封胶灌封,保证了温度传感器的高灵敏性,极小的温度延迟。该温度传感器支持“一线总线”接口(1-Wire),现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量。DS18B20数字温度传感器都具有唯一的编号,温度采集设备通过编号来识别对应的温度传感器器。
?
在外设篇我们详细介绍了DS18B20数字温度传感器,下面重复简单介绍一下DS18B20独特的优点:
( 1 )采用单总线的接口方式与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20的双向通讯。单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
( 2 )测量温度范围宽,测量精度高 DS18B20 的测量范围为 -55 ℃~+ 125 ℃ ; 在 -10~+ 85°C 范围内,精度为 ± 0.5°C。
( 3 )在使用中不需要任何外围元件。
( 4 )持多点组网功能 多个 DS18B20可以并联在惟一的单线上,实现多点测温。
( 5 )供电方式灵活 DS18B20可以通过内部寄生电路从数据线上获取电源。因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而使系统结构更趋简单,可靠性更高。
( 6 )测量参数可配置 DS18B20 的测量分辨率可通过程序设定 9~12位。
( 7)负压特性电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
( 8 )掉电保护功能 DS18B20 内部含有 EEPROM,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。
    DS18B20具有体积更小、适用电压更宽、更经济、可选更小的封装方式,更宽的电压适用范围,适合于构建自己的经济的测温系统,因此也就被设计者们所青睐。
   防水探头采用全新原装进口DS18B20温度传感器芯片,芯片每个引脚均用热缩管隔开,防止短路,内部封胶,防水防潮,不锈钢头常规的引线1米,钢管Φ6*50mm。每个探头经过严格测试,DC3.0V~5.5V供电。
5.04.2 实验目的
通过我们选用的是防水型DS18B20传感器,实验时把它置于盛装热水(冷水)水杯中,测量水温。我们设计好的程序把测量结果输出打印至计算机显示。观察水温的变化和传感器的灵敏度是否符合要求。
5.04.3 硬件设计
选用大黄蜂实验板,把防水型DS18B20通过PWM端子连接到实验板上,通过程序设计把采集到的水温打印输出到计算机显示。硬件设计见图5.04.1 防水型DC18B20连线图。
图5.04.1  防水型DC18B20连线图
?





5.04.4 软件设计
5.04.4.1 软件设计说明
   防水型DS18B20是采购的成品,直接和大黄蜂实验板连接好后可以进行程序设计了,按照在《外设篇 10. STM32DS18B20温度传感工作原理》中的讲解我们就可以很轻松编写出这篇采集程序,我们还是采用库函数的方式进行程序设计。
在这节程序设计中,用到了外部中断函数;prinif 重定向打印输出函数;USART串口通讯函数;定时器函数。
5.04.4.2 STM32库函数文件


?
   本节实验及以后的实验我们都是用到库文件,其中stm32f10x_gpio.h头文件包含了GPIO端口的定义。stm32f10x_rcc.h头文件包含了系统时钟配置函数以及相关的外设时钟使能函数,所以我们要把这两个头文件对应的stm32f10x_gpio.c和stm32f10x_rcc.c加到工程中;Misc.c库函数主要包含了中断优先级的设置,stm32f10x_exti.c库函数主要包含了外部中断设置参数,tm32f10x_tim.c库函数主要包含定时器设置,tm32f10x_usart.c库函数主要包含串行通讯设置,这些函数也要添加到函数库中。以上库文件包含了本次实验所有要用到的函数使用功能。
5.04.4.3 自定义头文件


?
                                 
   我们已经创建了两个公共的文件,这两个文件主要存放我们自定义的公共函数和全局变量,以方便以后每个功能模块之间传递参数。


5.04.4.4 pbdata.h文件里的内容是



5.04.5 STM32系统时钟配置SystemInit()
我们总在强调,每个工程都必须在开始时配置并启动STM32系统时钟,这次也不例外。
5.04.6  GPIO引脚时钟使能



   本节实验用到了PA端口,所以要把PA端口的时钟打开;串口1时钟源是通过APB2预分频器得到的,串口1时钟初始化;因为要与外部芯片通讯,所以要打开功能复用时钟。
5.04.7  GPIO管脚电平控制函数
   在主程序中采用while(1)循环语句,等待外部中断的到来后,主程序中读取缓冲区的温度值,并就打印输出到屏幕。



5.04.8  stm32f10x_it.c文件里的内容是
在中断处理stm32f10x_it.c文件里中仅串口1子函数非空,进入中断处理函数后,只有串口1有参数输出。


?

5.04.9  ds18b20.h文件里的内容是
函数ds18b20.h在这里是为了红外程序自定义的功能函数,ds18b20.h的内容如下:


?

5.04.10  ds18b20.c文件里的内容是
我们先详细介绍DS18B20时序图,然后再按照时序图要求编写程序。
5.04.10.1  DS18B20初始化时序



?
(1).数据线拉到低电平“0”。
(2).延时480微妙(该时间的时间范围可以从480到960微妙)。
(3).数据线拉到高电平“1”。
(4).延时等待80微妙。如果初始化成功则在15到60微妙时间内产生一个由DS18B20所返回的低电平“0”.根据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时判断。
(5).若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(3)步的时间算起)最少要480微妙。
5.04.10.2  DS18B20读时序



(1).将数据线拉低“0”。
(2).延时4微妙。
(3).将数据线拉高“1”,释放总线准备读数据。
(4).延时10微妙。
(5).读数据线的状态得到1个状态位,并进行数据处理。
(6).延时45微妙。
(7).重复1~7步骤,直到读完一个字节。




1).数据线先置低电平“0”
(2).延时15微妙。
(3).按从低位到高位的顺序发送数据(一次只发送一位)。
(4).延时60微妙。
(5).将数据线拉到高电平。
(6).重复1~5步骤,直到发送完整的字节。
(7).最后将数据线拉高。
图5.04.4  DS18B20写时序
自定义函数ds18b20.c的内容如下:






5.04.11  main.c文件里的内容是


?

5.04.12 程序下载
在这一章节中要掌握DS18B20的工作时序,了解常用的温度传感器功能和原理。
请根据下图所指向的7个重点区域配置。其中(1)号区域根据自己机器的实际情况选择,我的机器虚拟出来的串口号是COM3。(2)号区域请自己选择程序代码所在的文件夹。(7)号区域当程序下载完后,进度条会到达最右边,并且提示一切正常。(4、5、6)号区域一定要按照上图显示的设置。当都设置好以后就可以直接点击(3)号区域的开始编程按钮下传程序了。


?
本节实验的源代码在光盘中:(LY-STM32 光盘资料\1.课程\2,外设篇\模块篇04.防水DS18B20温度传感器实验\程序)
5.04.13 实验效果图
把防水温度计放入盛温水的烧杯中,如“图5.04.13.1 防水DS18B20测试水温实验效果图”,打开众想科技多功能监控软件,然后打开串口,我们在接收区可以观察到实测采集到的水温数据,水温大约60摄氏度左右,说明我们防水型DS18B20工作正常,程序编写的很成功。


[url=]
[/url]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:218534 发表于 2017-8-18 11:31 | 只看该作者
你好,想问一下,我用的是正点原子的ds18b20的程序,一个板子用的是STM32F103RBT6的芯片,可以正常都去温度,可是用stm32f103c8t6的芯片就不能正常读取,是什么原因?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表