高中生
最后登录1970-1-1
在线时间 小时
注册时间2018-10-20
|
发表于 2018-11-3 10:44:04
|
显示全部楼层
#include "stm32f4xx.h"
#include "usart/bsp_debug_usart.h"
#include "systick/bsp_SysTick.h"
#include "DS18B20/bsp_ds18b20.h"
#include "oled.h"
#include <stdio.h>
//用于存储格式化后字符串的数组
unsigned char cStr [ 10 ];
float temperature;
/**
* @brief 主函数
* @param 无
* @retval 无
*/
int main(void)
{
uint8_t uc,DS18B20Id[8];
unsigned char i;
/*初始化USART,配置模式为 115200 8-N-1*/
Debug_USART_Config();
printf("\r\n 实验开始***\n");
/* 系统定时器初始化 */
SysTick_Init();
I2C_Configuration();//配置CPU的硬件I2C
OLED_Init(); //初始化OLED
printf("\r\n OLED初始化成功,OLED正在工作! \r\n");
OLED_CLS();//清屏
if(DS18B20_Init()==0)
{
printf("DS18B20初始化成功\n");
}
else
{
printf("DS18B20初始化失败\n");
printf("请将传感器正确插入到插槽内\n");
/* 停机 */
while(1)
{}
}
DS18B20_ReadId ( DS18B20Id ); // 读取 DS18B20 的序列号
printf("\r\nDS18B20的序列号是: 0x");
for ( uc = 0; uc < 8; uc++ ) // 打印 DS18B20 的序列号
printf ( "%.2x", DS18B20Id[uc]);
printf("\n");
while(1)
{
temperature=DS18B20_Get_Temp();
printf("DS18B20读取到的温度为:%0.3f\n",temperature);
//sprintf把temperature的值格式化到字符串里的%d位置,格式化的结果存储在cStr中
//要转换浮点型变量可以使用 %f
sprintf ( (char*)cStr, " %0.3f",temperature );
//显示字符串,把cStr作为输入进行显示。以下函数是液晶的字符串显示函数,可根据自己的液晶驱动修改
for(i=0;i<4;i++)
{
OLED_ShowCN(22+i*16,0,i);
}
OLED_ShowStr(30,2, cStr, 2);
Delay_ms(1000);
}
}
|
|