本资源包含基于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的状态以示工作状态变化。