当前位置:网站首页 > 技术博客 > 正文

ds3232m

DS18B20 是一种数字温度传感器,它可以通过单总线接口与微控制器通信。下面是一个

基本

的DS18B20模块

驱动程序

示例:

首先,需要定义几个宏和变量:

```c

#define DS18B20_PIN P2_0 // DS18B20连接的IO口

#define DS18B20_DELAY_US(n) delay_us(n) // 延时函数

unsigned char ds18b20_temp[2] = {0}; // 存放温度值的数组

  然后,需要实现几个 基本 函数:  ```c // DS18B20初始化 void ds18b20_init(void) { // 设置DS18B20_PIN为输出模式 DS18B20_PIN_DIR |= DS18B20_PIN_BIT; // 将DS18B20_PIN拉高 DS18B20_PIN_OUT |= DS18B20_PIN_BIT; }  // 向DS18B20发送一个复位信号 void ds18b20_reset(void) { // 将DS18B20_PIN拉低 DS18B20_PIN_OUT &= ~DS18B20_PIN_BIT; // 延时480us DS18B20_DELAY_US(480); // 将DS18B20_PIN拉高 DS18B20_PIN_OUT |= DS18B20_PIN_BIT; // 延时60us DS18B20_DELAY_US(60); }  // 向DS18B20发送一个字节的数据 void ds18b20_write_byte(unsigned char byte) { unsigned char i; for (i = 0; i < 8; i++) { // 将DS18B20_PIN拉低 DS18B20_PIN_OUT &= ~DS18B20_PIN_BIT; // 延时1us DS18B20_DELAY_US(1); // 如果要发送的位为1,则将DS18B20_PIN拉高 if (byte & (1 << i)) { DS18B20_PIN_OUT |= DS18B20_PIN_BIT; } // 延时60us DS18B20_DELAY_US(60); // 将DS18B20_PIN拉高 DS18B20_PIN_OUT |= DS18B20_PIN_BIT; // 延时1us DS18B20_DELAY_US(1); } }  // 从DS18B20读取一个字节的数据 unsigned char ds18b20_read_byte(void) { unsigned char i, byte = 0; for (i = 0; i < 8; i++) { // 将DS18B20_PIN拉低 DS18B20_PIN_OUT &= ~DS18B20_PIN_BIT; // 延时1us DS18B20_DELAY_US(1); // 将DS18B20_PIN拉高 DS18B20_PIN_OUT |= DS18B20_PIN_BIT; // 延时1us DS18B20_DELAY_US(1); // 读取DS18B20_PIN的状态 if (DS18B20_PIN_IN & DS18B20_PIN_BIT) { byte |= (1 << i); } // 延时60us DS18B20_DELAY_US(60); } return byte; } 

最后,是读取DS18B20温度值的函数:

```c

// 读取DS18B20温度值

void ds18b20_read_temp(void)

{

ds18b20_reset(); // 发送复位信号

ds18b20_write_byte(0xcc); // 跳过ROM操作

ds18b20_write_byte(0x44); // 启动温度转换

DS18B20_DELAY_US(750); // 等待转换完成

ds18b20_reset(); // 发送复位信号

ds18b20_write_byte(0xcc); // 跳过ROM操作

ds18b20_write_byte(0xbe); // 读取温度值

ds18b20_temp[0] = ds18b20_read_byte(); // 读取温度值的低八位

ds18b20_temp[1] = ds18b20_read_byte(); // 读取温度值的高八位

}

  可以在主函数中调用 `ds18b20_init()` 函数进行初始化,并且每隔一段时间调用 `ds18b20_read_temp()` 函数读取温度值。读取到的温度值存放在 `ds18b20_temp` 数组中,需要自行进行转换。

  • 上一篇: psr代码规范
  • 下一篇: 密码学基础知识
  • 版权声明


    相关文章:

  • psr代码规范2024-12-20 09:01:00
  • 一个usb接口最多能连接的设备数2024-12-20 09:01:00
  • 图像处理中的数学方法2024-12-20 09:01:00
  • 私库寺库新版本2024-12-20 09:01:00
  • 树状数组lowbit2024-12-20 09:01:00
  • 密码学基础知识2024-12-20 09:01:00
  • left join和right join和inner join的区别2024-12-20 09:01:00
  • 左连接查询sql语句 实例2024-12-20 09:01:00
  • sql 在线2024-12-20 09:01:00
  • 网页爬虫怎么做2024-12-20 09:01:00