网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月10日漏签0天
单片机吧 关注:212,058贴子:1,047,455
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 3回复贴,共1页
<<返回单片机吧
>0< 加载中...

lcd1602没法显示传感器的温度

  • 只看楼主
  • 收藏

  • 回复
  • 我的大招好了
  • 上士
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
恳求吧里的大佬们,老师们指点一下,鼠鼠忙活一晚上了也没弄出个一二三,代码放评论区了


  • 我的大招好了
  • 上士
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
/* USER CODE BEGIN Includes */
#include <stdlib.h> // 用于数值转字符串
#include <string.h> // 用于字符串操作
#include <stdio.h> //snprintf
/* USER CODE END Includes */
/* USER CODE BEGIN PV */
//温度显示;
#define DS18B20_PIN GPIO_PIN_8
#define DS18B20_PORT GPIOA
uint8_t Temp_Buffer[10]; // 温度显示缓冲区
int16_t temp_raw;
float temperature;
/* USER CODE END PV */
/* USER CODE BEGIN 0 */
// 自定义微秒级延时函数(基于72MHz主频)
static inline void Delay_us(uint32_t us) {
uint32_t delay = us * (SystemCoreClock / 1000000) / 5; // 根据实际主频调整
while(delay--) {
__NOP(); // 空操作指令
}
}
/* DS18B20 底层驱动 */
void DS18B20_Init(void) {
// 配置PA8为开漏输出(已在CubeMX配置)
}
void DS18B20_WriteBit(uint8_t bit) {
HAL_GPIO_WritePin(DS18B20_PORT, DS18B20_PIN, GPIO_PIN_RESET);
Delay_us(2); // 保持至少1us
if(bit) HAL_GPIO_WritePin(DS18B20_PORT, DS18B20_PIN, GPIO_PIN_SET);
Delay_us(60); // 保持60-120us
HAL_GPIO_WritePin(DS18B20_PORT, DS18B20_PIN, GPIO_PIN_SET);
}
void DS18B20_WriteByte(uint8_t byte) {
for(uint8_t i=0; i<8; i++) {
DS18B20_WriteBit(byte & 0x01);
byte >>= 1;
}
}
uint8_t DS18B20_ReadBit(void) {
uint8_t bit = 0;
HAL_GPIO_WritePin(DS18B20_PORT, DS18B20_PIN, GPIO_PIN_RESET);
Delay_us(2); // 保持至少1us
HAL_GPIO_WritePin(DS18B20_PORT, DS18B20_PIN, GPIO_PIN_SET);
Delay_us(12); // 等待15us后采样
bit = HAL_GPIO_ReadPin(DS18B20_PORT, DS18B20_PIN);
Delay_us(45); // 总周期至少60us
return bit;
}
uint8_t DS18B20_ReadByte(void) {
uint8_t byte = 0;
for(uint8_t i=0; i<8; i++) {
byte >>= 1;
if(DS18B20_ReadBit()) byte |= 0x80;
}
return byte;
}
uint8_t DS18B20_Start(void) {
if(HAL_GPIO_ReadPin(DS18B20_PORT, DS18B20_PIN) == GPIO_PIN_RESET) return 0;
HAL_GPIO_WritePin(DS18B20_PORT, DS18B20_PIN, GPIO_PIN_RESET);
Delay_us(480);
HAL_GPIO_WritePin(DS18B20_PORT, DS18B20_PIN, GPIO_PIN_SET);
Delay_us(60);
if(!HAL_GPIO_ReadPin(DS18B20_PORT, DS18B20_PIN)) {
Delay_us(420);





2025-08-10 04:35:13
广告
不感兴趣
开通SVIP免广告
  • 岁月不留人08
  • 大校
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
小事


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 3回复贴,共1页
<<返回单片机吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示