当前位置: 首页 > news >正文

户外商品网站制作久久建筑网下载教程

户外商品网站制作,久久建筑网下载教程,wordpress表白模板下载,如何加强省市网站建设DS18B20温度传感器 DS18B20数字温度传感器提供9位至12位精度的温度测量#xff0c;并具有非易失性用户可编程上下触发点报警功能。DS18B20通过单总线通信#xff0c;根据定义#xff0c;只需要一条数据线(和地线)即可与单片机通信。此外#xff0c;DS18B20可以直接从数据线…DS18B20温度传感器 DS18B20数字温度传感器提供9位至12位精度的温度测量并具有非易失性用户可编程上下触发点报警功能。DS18B20通过单总线通信根据定义只需要一条数据线(和地线)即可与单片机通信。此外DS18B20可以直接从数据线获得电源(“寄生电源”)消除了每个DS18B20都有一个唯一的64位串行代码这允许多个DS18B20在同一条总线上工作。因此使用一个微处理器来实现是很简单的。 控制分布在大面积上的许多ds18b20。可以从此功能中受益的应用包括HVAC环境控制建筑物设备或机械内部的温度监测系统以及过程监测和控制系统。 2.14.1 模块来源 采购链接 DS18B20 测温模块 温度传感器模块 DS18B20开发板 资料下载链接 https://pan.baidu.com/s/1L83uG8So6k1NG_QznraoFQ 2.14.2 规格参数 工作电压3-5.5V 工作电流750nA~1.5mA 测量分辨率9位到12位可编程分辨率 温度量程: -55 ~ 125 ℃ 测量精度±0.5 ℃ 通信协议单总线 管脚数量3 Pin2.54mm间距排针 工作电流750nA~1.5mA 测量分辨率9位到12位可编程分辨率 温度量程: -55 ~ 125 ℃ 测量精度±0.5 ℃ 通信协议单总线 管脚数量3 Pin2.54mm间距排针 2.14.3 移植过程 我们的目标是在梁山派GD32F470上能够实现读取温度的功能。首先要获取资料查看数据手册应如何实现读取数据再移植至我们的工程。 2.14.3.1 查看资料 时序说明 初始化 将总线拉低保存低电平至少480us。转为输入模式总线被上拉电阻拉高大约15~60us。如果初始化成功则会产生一个由DS18B20所返回的低电平“0”持续时间大约60~240us。DS18B20释放总线将总线拉高。 读时序将数据线拉低至少1us。将数据线转为输入模式DS18B20开始采集数据大约15us。18B20要送出0就把总线拉为低电平直到读周期结束。若要送出1则释放总线为高电平。 注意所有读时隙必须至少需要60us且在两次独立的时隙之间至少需要1us的恢复时间。 写时序 数据线先置低电平“0”延时15us。按从低位到高位的顺序发送数据(一次只发送一位)。延时60us。拉高数据线“1”。穿越火线1~4步骤直到发送完整的字节。拉高数据线释放总线。 寄存器说明 0XCC 主机可以使用此命令同时对总线上的所有设备进行寻址而无需发送其他的任何地址。 DS18B20通过发出0XCC命令然后是温度转换命令[44h]来执行同步温度转换。注意只有在总线上有一个从设备时Read Scratchpad [BEh]命令才能跟随Skip ROM命令。在这种情况下通过允许主服务器从从服务器读取而不发送设备的64位ROM代码可以节省时间。如果总线上有多个从设备那么Skip ROM命令后跟Read Scratchpad命令将导致数据冲突因为多个设备将尝试传输数据同时进行。 0X44 该命令为启动单次温度转换。转换后产生的温度数据存储在地址为【BEh】的2字节温度寄存器中。 0XBE 该命令允许主机读取温度寄存器上的内容。数据传输从低位开始直到读取第9个字节(bit8CRC)。如果只需要温度数据主机可以在任何时候发出复位以终止读取。 温度换算 温度传感器的分辨率我们可配置为9、10、11或12位分别对应于0.5°C、0.25°C、 0.125°C和0.0625°C的增量。开机时的默认分辨率是12位。我们不进行修改因为分辨率越高就越精准。 例如数据手册中的示例如当前当前的温度是25.0625℃寄存器读出的高8位数据为0000 0001低8位数据为1001 0001。将其整合得到16位数据0000 0001 1001 0001。再转换为10进制数据为401。将读取到的数据乘以分辨率即可得到实际温度。 401 * 0.0625 25.0625℃ 2.14.3.2 引脚选择 该模块有3个引脚具体引脚连接见 表2.14.3.2 各引脚连接。 DS18B20立创·梁山派VCC5VDQPB0GNDGND 2.14.3.3 移植至工程 移植步骤中的导入.c和.h文件与上一节相同只是将.c和.h文件更改为bsp_ds18b20.c与bsp_ds18b20.h。见2.2.3.3 移植至工程。这里不再过多讲述。移植完成后面修改相关代码。 在文件bsp_ds18b20.c中编写如下代码。 /********************************************************************************* 文 件 名: bsp_ds18b20.c* 版 本 号: 初版* 修改作者: LC* 修改日期: 2023年04月23日* 功能介绍: ******************************************************************************* 注意事项: *********************************************************************************/#include bsp_ds18b20.h #include bsp_usart.h #include stdio.h #include systick.h/******************************************************************* 函 数 名 称bsp_ds18b20_GPIO_Init* 函 数 说 明MLX90614的引脚初始化* 函 数 形 参无* 函 数 返 回1未检测到器件 0检测到器件* 作 者LC* 备 注无 ******************************************************************/ char DS18B20_GPIO_Init(void) {unsigned char ret 255;/* 使能时钟 */rcu_periph_clock_enable(RCU_DQ);/* 配置DQ为输出模式 */gpio_mode_set(PORT_DQ,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLUP,GPIO_DQ);/* 配置为推挽输出 50MHZ */gpio_output_options_set(PORT_DQ,GPIO_OTYPE_PP,GPIO_OSPEED_50MHZ,GPIO_DQ);ret DS18B20_Check();//检测器件是否存在return ret; }/******************************************************************* 函 数 名 称DS18B20_Read_Byte* 函 数 说 明从DS18B20读取一个字节* 函 数 形 参无* 函 数 返 回读取到的字节数据* 作 者LC* 备 注无 ******************************************************************/ uint8_t DS18B20_Read_Byte(void) { uint8_t i0,dat0;for (i0;i8;i) {DQ_OUT();//设置为输入模式DQ(0); //拉低delay_us(2);DQ(1); //释放总线DQ_IN();//设置为输入模式delay_us(12);dat1;if( DQ_GET() ){datdat|0x80;}delay_us(50); } return dat; }/******************************************************************* 函 数 名 称DS18B20_Write_Byte* 函 数 说 明写一个字节到DS18B20* 函 数 形 参dat要写入的字节* 函 数 返 回无* 作 者LC* 备 注无 ******************************************************************/ void DS18B20_Write_Byte(uint8_t dat) { uint8_t i;uint8_t testb;DQ_OUT();//设置输出模式for (i0;i8;i) {if ( (dat0x01) ) //写1{DQ(0);delay_us(2); DQ(1);delay_us(60); }else //写0{DQ(0);//拉低60usdelay_us(60); DQ(1);//释放总线delay_us(2); }datdat1;//传输下一位} }/******************************************************************* 函 数 名 称DS18B20_Check* 函 数 说 明检测DS18B20是否存在* 函 数 形 参无* 函 数 返 回1:未检测到DS18B20的存在 0:存在* 作 者LC* 备 注无 ******************************************************************/ uint8_t DS18B20_Check(void) { uint8_t timeout0;//复位DS18B20DQ_OUT(); //设置为输出模式DQ(0); //拉低DQdelay_us(750); //拉低750usDQ(1); //拉高DQ delay_us(15); //15us //设置为输入模式 DQ_IN();//等待拉低拉低说明有应答while ( DQ_GET() timeout200){timeout;//超时判断delay_us(1);};//设备未应答if(timeout200)return 1;else timeout0;//等待18B20释放总线while ( !DQ_GET() timeout240){timeout;//超时判断delay_us(1);};//释放总线失败if(timeout240)return 1; return 0; }/******************************************************************* 函 数 名 称DS18B20_Start* 函 数 说 明DS18B20开始温度转换* 函 数 形 参无* 函 数 返 回无* 作 者LC* 备 注无 ******************************************************************/ void DS18B20_Start(void) { DS18B20_Check(); //查询是否有设备应答DS18B20_Write_Byte(0xcc); //对总线上所有设备进行寻址DS18B20_Write_Byte(0x44); //启动温度转换 } /******************************************************************* 函 数 名 称DS18B20_GetTemperture* 函 数 说 明从ds18b20得到温度值* 函 数 形 参无* 函 数 返 回温度数据* 作 者LC* 备 注无 ******************************************************************/ float DS18B20_GetTemperture(void) {uint16_t temp;uint8_t dataL0,dataH0;float value;DS18B20_Start(); DS18B20_Check(); DS18B20_Write_Byte(0xcc);//对总线上所有设备进行寻址DS18B20_Write_Byte(0xbe);// 读取数据命令 dataLDS18B20_Read_Byte(); //LSB dataHDS18B20_Read_Byte(); //MSB temp(dataH8)dataL;//整合数据if(dataH0X80)//高位为1说明是负温度{temp(~temp)1;valuetemp*(-0.0625);}else{valuetemp*0.0625; }return value; } 在文件bsp_ds18b20.h中编写如下代码。 #ifndef _BSP_DS18B20_H_ #define _BSP_DS18B20_H_#include gd32f4xx.h//端口移植 #define RCU_DQ RCU_GPIOB #define PORT_DQ GPIOB #define GPIO_DQ GPIO_PIN_8//设置DQ输出模式 #define DQ_OUT() gpio_mode_set(PORT_DQ,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLUP,GPIO_DQ) //设置DQ输入模式 #define DQ_IN() gpio_mode_set(PORT_DQ,GPIO_MODE_INPUT,GPIO_PUPD_PULLUP,GPIO_DQ) //获取DQ引脚的电平变化 #define DQ_GET() gpio_input_bit_get(PORT_DQ,GPIO_DQ) //DQ输出 #define DQ(x) gpio_bit_write(PORT_DQ,GPIO_DQ, (x?SET:RESET))void DS18B20_Reset(void); uint8_t DS18B20_Check(void); char DS18B20_GPIO_Init(void); void DS18B20_Start(void); float DS18B20_GetTemperture(void); #endif 2.14.4 移植验证 在自己工程中的main主函数中编写如下。 /********************************************************************************* 文 件 名: main.c* 版 本 号: 初版* 修改作者: LC* 修改日期: 2022年04月19日* 功能介绍: ******************************************************************************* 注意事项: *********************************************************************************/#include gd32f4xx.h #include systick.h #include stdio.h #include main.h #include sys.h #include bsp_usart.h #include bsp_ds18b20.h/************************************************ 函数名称 main 功 能 主函数 参 数 无 返 回 值 无 作 者 LC *************************************************/ int main(void) {nvic_priority_group_set(NVIC_PRIGROUP_PRE2_SUB2); // 优先级分组systick_config(); // 滴答定时器初始化usart_gpio_config(115200U); // 串口0初始化DS18B20_GPIO_Init();while(1) {printf(temperature %.2f\r\n, DS18B20_GetTemperture() );delay_1ms(1000);} } 移植现象输出当前检测到的温度。 移植成功示例见文件2.14.4-1 。
http://www.hkea.cn/news/14313620/

相关文章:

  • 企业展示网站建设多少钱做外贸找工厂货源网站
  • 郑州网站建设口碑好机构ui设计培训
  • 平潭建设局网站首页做网站广告怎么做
  • 北仑网站建设29gz网站登录设计欣赏
  • 外贸网站建设知识 列表南京江北建设有限公司
  • 制作网站商城取个公司名称大全
  • phpstudy做正式网站购物网站后台模板下载
  • 装饰设计网站大全营销型公司官网建设
  • 建设一个商业网站费用耐思尼克网站
  • 肇庆做网站哪家好wordpress4.7中文
  • 携程旅游网站官网网站改版专题页
  • 未来做哪个网站致富泰安百姓网
  • 网站建设seo单位网站建设要多少钱
  • 微官网与手机网站首页微信手机网站搭建
  • 相对于网站根目录的的绝对路径网站建设课设
  • 接技术标做网站建立企业网站的好处
  • 商城网站设计公司有哪些ps企业网站模板
  • 公司网站建设佛山哪家好山西运城网站开发
  • 上海网站建设公司推wordpress相册间距
  • 中国网络排名前十名网站页面的优化
  • 苍山做网站wordpress 文章图片
  • 陕西省交通集团建设网站宝塔系统搭建wordpress
  • 网站建设的实施方式旅游企业网站开发
  • 重庆地产网站建设方案温州网站建设制作设计公司
  • centos7.2做网站重庆互联网
  • 企业网站建设的类型有哪些网站建设公司如何约客户
  • 苏州网站设计kgwl福田搭建网站费用
  • idc网站模板下载培训网站大全
  • 网站建设与运营 市场分析有哪些站内推广的方式
  • 展示型网站建设的标准教育机构做网站素材