Advertisement

DS18B20数字温度传感器在STM32F407开发板上的KEIL实验源码.zip

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
本资源包含基于STM32F407开发板使用Keil软件进行DS18B20数字温度传感器编程的完整实验代码,适用于嵌入式系统学习与项目开发。 在使用STM32F407开发板与DS18B20数字温度传感器进行实验的过程中,编写了以下的KEIL软件工程源码: ```c main(void) { u8 t = 0; short temperature; // 初始化HAL库函数 HAL_Init(); // 设置时钟频率至168MHz,并初始化延时函数和USART通信接口、USMART设备,以及LED与按键的初始化工作。 Stm32_Clock_Init(336, 8, 2, 7); delay_init(168); uart_init(115200); usmart_dev.init(84); LED_Init(); KEY_Init(); // 初始化LCD显示 LCD_Init(); POINT_COLOR = RED; // 显示欢迎信息和测试说明 LCD_ShowString(30, 50, 200, 16, 16, Explorer STM32F4); LCD_ShowString(30, 70, 200, 16, 16, DS18B20 TEST); LCD_ShowString(30, 90, 200, 16, 16, ATOM@ALIENTEK); LCD_ShowString(30, 110, 200, 16, 16, 2017/4/15); // 初始化DS18B20传感器 while(DS18B20_Init()) { LCD_ShowString(30, 130, 200, 16, 16,DS18B20 Error); delay_ms(200); // 清除错误信息显示区域 LCD_Fill(30, 130, 239, 146, WHITE); delay_ms(200); } // 显示传感器初始化成功的信息,并设置字体颜色为蓝色。 LCD_ShowString(30, 130, 200, 16, 16,DS18B20 OK); POINT_COLOR = BLUE; // 初始化LCD显示温度信息 LCD_ShowString(30, 150, 200, 16, 16,Temp: . C); while (true) { if(t % 10 == 0) { temperature = DS18B20_Get_Temp(); // 根据温度值显示相应字符 if(temperature < 0) { LCD_ShowChar(30 + 40, 150, -, 16, 0); temperature *= -1; } else { LCD_ShowChar(30 + 40, 150, , 16, 0); } // 显示温度数值 LCD_ShowNum(30 + 48, 150, (temperature / 10),2 ,16); LCD_ShowNum(30 + 72, 150, (temperature % 10),1, 16); } // 延时处理 delay_ms(10); t++; if(t == 20) { LED0 = !LED0; t = 0; } } } ``` 这段代码的功能是在STM32F4开发板上初始化DS18B20温度传感器,并通过LCD显示当前的环境温度。程序每隔一段时间读取一次温度值并更新显示屏上的数据显示,同时在每经过一定时间后切换LED的状态以示工作状态变化。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • DS18B20STM32F407KEIL.zip
    优质
    本资源包含基于STM32F407开发板使用Keil软件进行DS18B20数字温度传感器编程的完整实验代码,适用于嵌入式系统学习与项目开发。 在使用STM32F407开发板与DS18B20数字温度传感器进行实验的过程中,编写了以下的KEIL软件工程源码: ```c main(void) { u8 t = 0; short temperature; // 初始化HAL库函数 HAL_Init(); // 设置时钟频率至168MHz,并初始化延时函数和USART通信接口、USMART设备,以及LED与按键的初始化工作。 Stm32_Clock_Init(336, 8, 2, 7); delay_init(168); uart_init(115200); usmart_dev.init(84); LED_Init(); KEY_Init(); // 初始化LCD显示 LCD_Init(); POINT_COLOR = RED; // 显示欢迎信息和测试说明 LCD_ShowString(30, 50, 200, 16, 16, Explorer STM32F4); LCD_ShowString(30, 70, 200, 16, 16, DS18B20 TEST); LCD_ShowString(30, 90, 200, 16, 16, ATOM@ALIENTEK); LCD_ShowString(30, 110, 200, 16, 16, 2017/4/15); // 初始化DS18B20传感器 while(DS18B20_Init()) { LCD_ShowString(30, 130, 200, 16, 16,DS18B20 Error); delay_ms(200); // 清除错误信息显示区域 LCD_Fill(30, 130, 239, 146, WHITE); delay_ms(200); } // 显示传感器初始化成功的信息,并设置字体颜色为蓝色。 LCD_ShowString(30, 130, 200, 16, 16,DS18B20 OK); POINT_COLOR = BLUE; // 初始化LCD显示温度信息 LCD_ShowString(30, 150, 200, 16, 16,Temp: . C); while (true) { if(t % 10 == 0) { temperature = DS18B20_Get_Temp(); // 根据温度值显示相应字符 if(temperature < 0) { LCD_ShowChar(30 + 40, 150, -, 16, 0); temperature *= -1; } else { LCD_ShowChar(30 + 40, 150, , 16, 0); } // 显示温度数值 LCD_ShowNum(30 + 48, 150, (temperature / 10),2 ,16); LCD_ShowNum(30 + 72, 150, (temperature % 10),1, 16); } // 延时处理 delay_ms(10); t++; if(t == 20) { LED0 = !LED0; t = 0; } } } ``` 这段代码的功能是在STM32F4开发板上初始化DS18B20温度传感器,并通过LCD显示当前的环境温度。程序每隔一段时间读取一次温度值并更新显示屏上的数据显示,同时在每经过一定时间后切换LED的状态以示工作状态变化。
  • MSP430F1XX单片机DS18B20.zip
    优质
    该资源包含针对MSP430F1XX单片机与DS18B20数字温度传感器连接进行实验的完整源代码,适用于嵌入式系统学习和实践。 MSP430F1XX单片机开发板实验例程源码--DS18B20温度传感器实验例程.zip
  • STM32F407使用KEIL进行MPU6050六轴.zip
    优质
    本资源包含在STM32F407开发板上利用Keil软件进行MPU6050六轴传感器实验的完整源代码,适用于嵌入式系统学习与开发。 在使用MPU6050六轴传感器与STM32F407开发板配合KEIL软件进行实验的过程中,下面是一段用于发送数据到串口1的代码示例: ```c void usart1_send_char(u8 c) { while (__HAL_UART_GET_FLAG(&UART1_Handler, UART_FLAG_TC) == RESET); USART1->DR = c; } // 传送数据给匿名四轴上位机软件(V2.6版本) void usart1_niming_report(u8 fun, u8* data, u8 len) { u8 send_buf[32]; u8 i; if (len > 28) return; // 最多传送28字节数据 send_buf[len + 3] = 0; // 校验数置零 send_buf[0] = 0XAA; // 帧头 send_buf[1] = 0XAA; // 帧头 send_buf[2] = fun; // 功能字 send_buf[3] = len; // 数据长度 for (i = 0; i < len; i++) { send_buf[4 + i] = data[i]; // 复制数据到发送缓冲区 } for (i = 0; i < len + 4; i++) send_buf[len + 4] += send_buf[i]; // 计算校验和 for (i = 0; i < len + 5; i++) { usart1_send_char(send_buf[i]); // 发送数据到串口1 } } // 发送加速度传感器与陀螺仪的数据(传感器帧) void mpu6050_send_data(short aacx, short aacy, short aacz, short gyrox, short gyroy, short gyroz) { u8 tbuf[18]; // 将数据存储到缓冲区 tbuf[0] = (aacx >> 8) & 0XFF; tbuf[1] = aacx & 0XFF; tbuf[2] = (aacy >> 8) & 0XFF; tbuf[3] = aacy & 0XFF; tbuf[4] = (aacz >> 8) & 0XFF; tbuf[5] = aacz & 0XFF; // 存储陀螺仪数据 tbuf[6] = (gyrox >> 8) & 0XFF; tbuf[7] = gyrox & 0XFF; tbuf[8] = (gyroy >> 8) & 0XFF; tbuf[9] = gyroy & 0XFF; tbuf[10] = (gyroz >> 8) & 0XFF; tbuf[11] = gyroz & 0XFF; // 因为启用MPL后,无法直接读取磁力计数据,所以这里用零填充。 for(int i=12; i<18; ++i){ tbuf[i]=0; } usart1_niming_report(0X02, tbuf, 18); // 发送传感器帧 } // 向电脑发送经过计算的姿态数据(状态帧) void usart1_report_imu(short roll, short pitch, short yaw, short csb, int prs) { u8 tbuf[12]; // 将姿态角度和高度信息存储到缓冲区中。 for(int i=0; i<3; ++i){ tbuf[i*2] = (roll >> 8) & 0XFF; tbuf[i*2+1] = roll++ & 0XFF; } // 存储气压计高度信息 for(int i=6; i<12; ++i){ tbuf[i] = prs>>(4-i)&0xFF; } usart1_niming_report(0X01, tbuf, 12); // 发送状态帧 } int main(void) { u8 report = 1; while (true) { if(report){ mpu6050_send_data(); // 假设这里调用发送传感器数据的函数。 usart1_report_imu(roll, pitch, yaw, csb_value, prs_value); // 发送姿态信息 } } } ``` 以上代码展示了如何通过串口与上位机软件通信,传输加速度、陀螺仪
  • DS18B20
    优质
    本项目通过实验探索DS18B20数字温度传感器的工作原理与应用技术,旨在掌握其在数据采集和处理中的精确性和可靠性。 ### DS18B20数字温度传感器实验 DS18B20是一种由Maxim Integrated生产的广泛应用于嵌入式系统的数字温度传感器。它因其独特的单线通信协议、高精度以及宽工作电压范围而受到欢迎,在基于STM32的系统中可以方便地实现温度测量和数据传输。 #### 1. DS18B20特性 - **单线通信**:DS18B20最显著的特点是采用了一种只需要一根信号线即可完成数据传输的接口,大大简化了硬件连接。 - **高精度**:该传感器能够达到±0.5℃的测量精度,并且通过校准可以进一步提高到±0.1℃。 - **宽电源电压范围**:DS18B20的工作电压在3.3V至5.5V之间,适用于多种电源环境。 - **可编程分辨率**:用户可以选择9、10、11或12位的分辨率来平衡精度和响应时间的需求。 - **内置存储器**:传感器内包含一个唯一的96位ID号,便于在多传感器网络中进行识别与管理。 #### 2. STM32与DS18B20接口 STM32微控制器通过配置GPIO口实现与DS18B20的单线通信。需要将GPIO设置为输入/输出模式,并使用中断处理程序来控制数据传输时序。 #### 3. 单线通信协议 DS18B20的单线通信包括启动条件(脉冲上升沿)、数据传输(高电平持续时间代表0,低电平持续时间代表1)以及停止条件。STM32需要精确地控制这些时序以发送命令并接收返回的数据。 #### 4. 实验步骤 - **硬件连接**:将DS18B20的信号线连接到STM32的GPIO口,并确保电源和接地已正确设置。 - **固件开发**:配置GPIO为推挽输出模式,实现单线通信协议所需的时序控制。 - **读取温度值**:向传感器发送命令以获取当前测量的温度数据。 - **解析与显示**:根据DS18B20的数据格式对返回的数值进行处理,并将其展示在LCD屏幕上或通过串口传输到上位机。 #### 5. 实验注意事项 - DS18B20单线通信时序严格,因此编程中需特别注意延时函数的准确性。 - 在多传感器系统中,每个DS18B20应具有不同的地址以避免总线冲突。这通常通过物理上使用parasitic power或外部电源来实现。 本实验能够帮助你深入了解如何将DS18B20与STM32集成,并进行温度测量及数据显示的实践操作。这对于学习嵌入式系统开发和理解传感器的应用具有重要价值。
  • STM32F103DS18B20程序.rar
    优质
    本资源包含基于STM32F103芯片与DS18B20数字温度传感器结合使用的完整源代码,适用于嵌入式系统开发学习。 STM32F103实验:使用DS18B20数字温度传感器的程序源代码。开发环境为KEIL,编程语言是C语言。
  • STM32F407读取DS18B20
    优质
    本项目介绍如何使用STM32F407微控制器通过单总线接口读取DS18B20数字温度传感器数据,实现环境温度监测。 已经完成了全面测试,并通过了407单片机的完美测试,可以直接使用。
  • DS18B20资料.zip
    优质
    本资源包包含DS18B20数字温度传感器的详细技术文档和应用指南,帮助用户快速掌握其使用方法及编程技巧,适用于各类温度监测项目。 使用DS18B20温度传感器通过TFT显示屏实时显示温度。
  • DS18B20资料.zip
    优质
    本资源包包含DS18B20数字温度传感器的详细实验文档和代码示例,适用于初学者进行温度测量项目开发。 开发板采用GD32F103RBT6型号MCU,与STM32F103完全兼容,并使用DS28B20进行温度采集。
  • DHT11湿STM32F407 HAL库版单片机软件.rar
    优质
    本资源包含DHT11温湿度传感器与STM32F407微控制器通过HAL库进行通信的完整实验代码,适用于嵌入式系统开发学习。 STM32F407单片机(HAL库版本)与DHT11数字温湿度传感器实验软件例程源码RAR文件。
  • DS18B20.zip
    优质
    本资源包包含针对DS18B20数字温度传感器的应用程序和文档,适用于进行精确温度测量的各类项目。 DS18b20温度传感器.zip