DS18B20测温度发到串口 avr 单片机
根据给定的文件信息,我们可以深入探讨如何使用DS18B20温度传感器与AVR单片机结合,实现温度测量并将数据通过串口发送至电脑。以下将详细解析这一过程中的关键技术点。 ### DS18B20温度传感器 DS18B20是一种数字温度传感器,具有很高的精度(±0.5°C),可直接读取温度值而无需额外的模数转换器。它使用1-Wire总线系统进行通信,这意味着只需要一个数据引脚就能与微控制器通信,极大地简化了电路设计。 ### AVR单片机 AVR单片机是一系列基于RISC架构的微控制器,广泛应用于各种嵌入式系统中。它们以其高性能、低功耗和丰富的外设资源而著称。在本例中,AVR单片机用于控制DS18B20温度传感器,并处理温度数据。 ### 温度测量原理 DS18B20的工作流程主要包括初始化、写命令、读取温度等步骤。初始化DS18B20,通过拉低总线并延时来复位设备;然后,向DS18B20发送跳过ROM命令(0xCC)和启动温度转换命令(0x44)。完成温度转换后,再次初始化DS18B20,并发送读取暂存器命令(0xBE),读取温度数据。 温度数据由两个字节组成:高位字节和低位字节。高位字节包含温度的整数部分,低位字节包含小数部分。这两个字节需要进行一定的计算才能得到实际的温度值。如果温度为负,则高位字节的高三位为1,此时需要进行补码转换。 ### 代码解析 在给出的代码片段中,`init_1820()`函数负责初始化DS18B20传感器,`write_1820()`和`read_1820()`分别用于向传感器写入命令和读取数据。`gettemp()`函数实现了完整的温度读取过程,包括温度转换和数据读取,以及对温度值的计算和格式化。 ### 串口通信 一旦温度数据被读取,下一步是通过串口将这些数据发送到电脑。这通常涉及到设置AVR单片机的串行通信接口(USART),包括波特率、数据位、停止位和奇偶校验位的配置。然后,使用USART的发送功能将温度数据转换成ASCII码并发送出去。电脑端可以通过串口监控软件接收这些数据并显示。 ### 结论 使用DS18B20温度传感器和AVR单片机进行温度测量并通过串口发送数据是一个典型的嵌入式系统应用案例。它不仅展示了传感器和微控制器之间的通信机制,还涉及了数据处理和串行通信的实现。通过对上述技术点的掌握,可以进一步扩展到更复杂的应用场景,如物联网项目或自动化控制系统。
CODE:
/**************************************
** Filename: 18b20.c
** Describe: 18b20 温度传感器
** Author : 古欣 [url]www.avrvi.com[/url]
** Time : 2007-2-15
**************************************/
#include "config.h"
unsigned char wmh,wml,flag,count; //flag温度为负标志,count为实际温度
void init_1820(void)
{
SET_DIR_1WIRE; //设置PC2 为输出
SET_OP_1WIRE;
CLR_OP_1WIRE;
delay_us(480); //480us以上
SET_OP_1WIRE;
CLR_DIR_1WIRE;
delay_us(20); //15~60us
while(CHECK_IP_1WIRE);
SET_DIR_1WIRE;
SET_OP_1WIRE;
delay_us(140); //60~240us
}
void write_1820(unsigned char x)
- 粉丝: 4
- 资源: 11
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助