嵌入式系统开发与应用 电子与信息技术系.

Slides:



Advertisements
Similar presentations
等可能性事件的概率(二) 上虞春晖中学数学组欢迎你! 1 本课件制作于 §10.5 等可能事件 的概率 ( 二 )
Advertisements

科學論文 鰂魚涌街的衛生情況 作者:廖梓芯 學校:北角官立上午小學 班級:P.5A.
明清文人集中的寓言 pg359-371 韓佩思 中碩一
时间与我们的世界 Pb 段心蕊.
HTM-52 单片机开发板教学视频 深圳市航太电子 QQ交流群:
《女性消费行为与研究方法》 广东外语外贸大学 杨晓燕教授.
《成佛之道》序~第三章 圓融 /
第二章 项目一:企业厂区与车间平面设计 1.
TEM8(2009)英译汉试卷评析 复旦大学 黄关福教授.
实验四 利用中规模芯片设计时序电路(二).
新办企业办税须知 --新办企业纳税人涉税事项介绍
大气的受热过程 周南中学.
5.4 顺序脉冲发生器、 三态逻辑和微机总线接口 顺序脉冲发生器 顺序脉冲 计数型 分类 移位型.
中国科学院档案数字化 工作情况介绍 潘亚男 2013年10月24日
计算机基础知识 丁家营镇九年制学校 徐中先.
《计算机操作员》精品 课件 淮南市潘集职教中心
Hadoop I/O By ShiChaojie.
第11章 单片机应用系统的 串行扩展 1.
单片机应用技术 项目三 智能温控装置 第2讲 温度控制子项目 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
Roy Wan PCI MS/s 14-bit 高速数字化仪 Roy Wan
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
ARDUINO+BLUETOOTH Arduino实现蓝牙数据传输.
走进编程 程序的顺序结构(二).
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
利用Arduino制作定向装置 核科学与技术系 崔伟毅 梁嘉祺
逆向工程-汇编语言
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
SATT 系列300MHz~3.5GHz数控衰减器 仪器级的性能,极富竞争力的价格
SATT 系列10MHz~4GHz数控衰减器 仪器级的性能,极富竞争力的价格
应用实例 识别Ps & Pt ADTS 压力通道并校验 CPD8000 New MENSOR‘s ADTS: CPA8001.
《手把手教你学STM32-UCOS》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
安捷伦Agilent 3458A 八位半高精度万用表
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
I2C总线 广州创龙电子科技有限公司 Inter-Integrated Circuit
8051單晶片 蘇恆生 老師.
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
K60入门课程 02 首都师范大学物理系 王甜.
本节内容 随机读取 视频提供:昆山爱达人信息技术有限公司.
香港傳統的農村生活.
(Random Access Memory)
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
EEPROM(IIC总线) IIC串行总线的组成及工作原理 2. AT24C02驱动程序编写 普中科技 单片机开发仪视频教程
组合逻辑电路 ——中规模组合逻辑集成电路.
诺 金 EE07系列 小型OEM数字输出温湿度变送器 产品特点: 典型应用: ► 气象应用 ► 加湿器、除湿器 技术参数: 选型指南:
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
第二章 类型、对象、运算符和表达式.
静电场中的无限大问题 物理无限远: 1、并非仅指场点到“无限远” 处的位移为无穷大
数据报分片.
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
苏教版小学信息技术3年级第2课 认识计算机.
临界区问题的硬件指令解决方案 (Synchronization Hardware)
温度传感器DS18B20 MCU起航 QQ:
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
4-14 類比中斷 HT66F70A.
第六章 Excel的应用 五、EXCEL的数据库功能 1、Excel的数据库及其结构 2、Excel下的数据排序 (1)Excel的字段名行
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
THERMOPORT 20 手持式温度表 THERMOPORT系列手持温度表基于所用技术及对实际应用的考 虑,确立了新的标准。
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
静电场高斯定律在空间对称引力场中的应用 PB 严寒 2019/7/9.
数据表示 第 2 讲.
1/27 高速采样压力控制器 模块化数字型控制器 RKC挤出机温度,压力控制解决方案.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
真信心的果效 雅各書2:
B12 竺越
第九章 存储器和可编程逻辑器件 本章主要内容 半导体存储器 只读存储器 随机存取存储器 存储器容量的扩展 可编程逻辑器件
工业机器人入门使用教程 ESTUN机器人 主讲人:李老师
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
DSP技术与应用 电子与信息技术系.
摘要簡報 作品名稱:魔鬼記憶問答 作者:台中市西屯區永安國民小學 葉政德老師、王素珍老師.
Presentation transcript:

嵌入式系统开发与应用 电子与信息技术系

第十九讲 DS18B20温度传感器实验

目录 DS18B20介绍 1 实验程序讲解 2

DS18B20介绍 DS18B20技术性能特征 ①、 独特的单总线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实 ② 、测温范围 -55℃~+125℃,精度为±0.5℃。 ③、支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个, 实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的 不稳定。 ④、 工作电源: 3.0~5.5V/DC (可以数据线寄生电源)。 ⑤ 、在使用中不需要任何外围元件。 ⑥、 测量结果以9~12位数字量方式串行传送。

DS18B20介绍 DS18B20封装

DS18B20介绍 连接方式

DS18B20介绍 硬件连接 阿波罗

DS18B20介绍 硬件连接 精英 战舰 mini 探索者

DS18B20介绍 单总线是一种半双工通信方式 DS18B20共有6种信号类型:复位脉冲、应答脉冲、写0、写1、读0和读1。所有这些信号,除了应答脉冲以外,都由主机发出同步信号。并且发送所有的命令和数据都是字节的低位在前。 边讲信号类型,边讲代码配置的方式,让大家了解STM32驱动18B20过程。

DS18B20介绍 信号线:PB12(阿波罗F429) 信号线:PB12(阿波罗F767) //IO方向设置 ////IO操作函数 #define DS18B20_IO_IN() {GPIOB->MODER&=~(3<<(12*2));GPIOB->MODER|=0<<12*2;}//PB5输入模式 #define DS18B20_IO_OUT() {GPIOB->MODER&=~(3<<(12*2));GPIOB->MODER|=1<<12*2;}//PB5输出模式 ////IO操作函数 #define DS18B20_DQ_OUT PBout(12) //数据端口 PB12 #define DS18B20_DQ_IN PBin(12) //数据端口 PB12 信号线:PB12(阿波罗F767) //IO方向设置 #define DS18B20_IO_IN() {GPIOB->MODER&=~(3<<(12*2));GPIOB->MODER|=0<<12*2;} //PB12输入模式 #define DS18B20_IO_OUT() {GPIOB->MODER&=~(3<<(12*2));GPIOB->MODER|=1<<12*2;} //PB12输出模式 //IO操作函数 #define DS18B20_DQ_OUT(n) (n?HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12,GPIO_PIN_SET) \ :HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12,GPIO_PIN_RESET)) //数据端口PB12 #define DS18B20_DQ_IN HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_12) //数据端口 PB12

DS18B20介绍 信号线:PG11(战舰/精英) 信号线:PA0(mini) 信号线:PG9(探索者) //IO方向设置 #define DS18B20_IO_IN() {GPIOG->CRH&=0XFFFF0FFF;GPIOG->CRH|=8<<12;} #define DS18B20_IO_OUT() {GPIOG->CRH&=0XFFFF0FFF;GPIOG->CRH|=3<<12;} //IO操作 #define DS18B20_DQ_OUT PGout(11) //数据端口PA0 #define DS18B20_DQ_IN PGin(11) //数据端口 PA0 信号线:PA0(mini) //IO方向设置 #define DS18B20_IO_IN() {GPIOA->CRL&=0XFFFFFFF0;GPIOA->CRL|=8<<0;} #define DS18B20_IO_OUT() {GPIOA->CRL&=0XFFFFFFF0;GPIOA->CRL|=3<<0;} ////IO操作 #define DS18B20_DQ_OUT PAout(0) //数据端口 PA0 #define DS18B20_DQ_IN PAin(0) //数据端口 PA0 信号线:PG9(探索者) //IO方向设置 #define DS18B20_IO_IN() {GPIOG->MODER&=~(3<<(9*2));GPIOG->MODER|=0<<9*2;} //PG9输入模 #define DS18B20_IO_OUT() {GPIOG->MODER&=~(3<<(9*2));GPIOG->MODER|=1<<9*2;} //PG9输出模////IO操作 #define DS18B20_DQ_OUT PGout(9) //数据端口PG9 #define DS18B20_DQ_IN PGin(9) //数据端口 PG9

DS18B20介绍 复位脉冲 单总线上的所有通信都是以初始化序列开始。主机输出低电平,保持低电平时间至少480 us,,以产生复位脉冲。接着主机释放总线,4.7K的上拉电阻将单总线拉高,延时15~60 us,并进入接收模式(Rx)。接着DS18B20拉低总线60~240 us,以产生低电平应答脉冲。 //复位DS18B20 void DS18B20_Rst(void) { DS18B20_IO_OUT(); //设置为输出模式 DS18B20_DQ_OUT=0; //拉低DQ delay_us(750); //拉低750us(至少480us) DS18B20_DQ_OUT=1; //DQ=1拉高释放总线 delay_us(15); //15US //进入接受模式,等待应答信号。 }

DS18B20介绍 ② 应答信号 //等待DS18B20的回应 //返回1:未检测到DS18B20的存在 返回0:存在 u8 DS18B20_Check(void) { u8 retry=0; DS18B20_IO_IN();//SET PA0 INPUT while (DS18B20_DQ_IN&&retry<200) retry++; delay_us(1); }; if(retry>=200)return 1; else retry=0; while (!DS18B20_DQ_IN&&retry<240) if(retry>=240)return 1; return 0; }

DS18B20介绍 ③ 写时序 写时序包括写0时序和写1时序。所有写时序至少需要60us,且在2次独立的写时序之间至少需要1us的恢复时间,两种写时序均起始于主机拉低总线。 写1时序:主机输出低电平,延时2us,然后释放总线,延时60us。 写0时序:主机输出低电平,延时60us,然后释放总线,延时2us。

DS18B20介绍 //写一个字节到DS18B20 //dat:要写入的字节 void DS18B20_Write_Byte(u8 dat) { u8 j; u8 testb; DS18B20_IO_OUT();//设置PA0为输出 for (j=1;j<=8;j++) testb=dat&0x01; dat=dat>>1; if (testb) //输出高 DS18B20_DQ_OUT=0;// 主机输出低电平 delay_us(2); //延时2us DS18B20_DQ_OUT=1;//释放总线 delay_us(60); //延时60us } else //输出低 DS18B20_DQ_OUT=0;//主机输出低电平 delay_us(60); //延时60us

DS18B20介绍 ④ 读时序 单总线器件仅在主机发出读时序时,才向主机传输数据,所以,在主机发出读数据命令后,必须马上产生读时序,以便从机能够传输数据。 所有读时序至少需要60us,且在2次独立的读时序之间至少需要1us的恢复时间。每个读时序都由主机发起,至少拉低总线1us。主机在读时序期间必须释放总线,并且在时序起始后的15us之内采样总线状态。 典型的读时序过程为:主机输出低电平延时2us,然后主机转入输入模式延时12us,然后读取单总线当前的电平,然后延时50us。

DS18B20介绍 典型的读时序过程为:主机输出低电平延时2us,然后主机转入输入模式延时12us,然后读取单总线当前的电平,然后延时50us。 //从DS18B20读取一个位 //返回值:1/0 u8 DS18B20_Read_Bit(void) // read one bit { u8 data; DS18B20_IO_OUT();//设置为输出 DS18B20_DQ_OUT=0; //输出低电平2us delay_us(2); DS18B20_DQ_OUT=1; //拉高释放总线 DS18B20_IO_IN();//设置为输入 delay_us(12);//延时12us if(DS18B20_DQ_IN)data=1;//读取总线数据 else data=0; delay_us(50); //延时50us return data; }

DS18B20介绍 读取一个字节数据 //从DS18B20读取一个字节 //返回值:读到的数据 u8 DS18B20_Read_Byte(void) // read one byte { u8 i,j,dat; dat=0; for (i=1;i<=8;i++) j=DS18B20_Read_Bit(); dat=(j<<7)|(dat>>1); } return dat;

DS18B20介绍 我们来看看DS18B20的典型温度读取过程,DS18B20的典型温度读取过程为:复位发SKIP ROM命令(0XCC)发开始转换命令(0X44)延时复位发送SKIP ROM命令(0XCC)发读存储器命令(0XBE)连续读出两个字节数据(即温度)结束。

DS18B20介绍 //开始温度转换 void DS18B20_Start(void)// ds1820 start convert { //返回值:温度值 (-550~1250) short DS18B20_Get_Temp(void) { u8 temp; u8 TL,TH; short tem; DS18B20_Start (); // ds1820 start convert DS18B20_Rst();复位 DS18B20_Check(); DS18B20_Write_Byte(0xcc);// skip rom DS18B20_Write_Byte(0xbe);// convert TL=DS18B20_Read_Byte(); TH=DS18B20_Read_Byte(); if(TH>7) TH=~TH; TL=~TL; temp=0;//温度为负 }else temp=1;//温度为正 tem=TH; //获得高八位 tem<<=8; tem+=TL;//获得底八位 tem=(float)tem*0.625;//转换 if(temp)return tem; //返回温度值 else return -tem; } //开始温度转换 void DS18B20_Start(void)// ds1820 start convert { DS18B20_Rst(); DS18B20_Check(); DS18B20_Write_Byte(0xcc);// skip rom DS18B20_Write_Byte(0x44);// convert } 转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0, 这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际 温度。 例如+125℃的数字输出为07D0H,,-25.0625℃的数字输出为FE6FH。

DS18B20介绍 再梳理一下开发板配套实验程序源码。

2019/6/16 2019/6/16