51程序实现DS18B20自动查找ROM
本文档主要介绍了如何在基于51单片机的项目中实现DS18B20温度传感器的自动搜索ROM功能。DS18B20是一种数字温度传感器,它包含一个独特的128位序列号存储在ROM(只读存储器)中,用于唯一标识每个传感器。在实际应用中,我们需要先找到这个序列号,以便进行设备管理和通信。 文章首先定义了必要的宏和变量,如数据类型(uchar、uint),以及用于存储DS18B20序列号的数组。DS18B20通信接口使用了3根引脚:数据线(DQ)、写选通(RW)和读选通(RST)。变量`num`用于计数找到的传感器数量,`al`数组用于临时存储搜索到的序列号。 核心部分是`alarm_search()`函数,其中实现了自动搜索过程。该过程包括初始化LCD显示,设置通信模式(通过设置RS和RW信号),以及发送读取序列号的操作。代码使用`LCD_write_com()`和`LCD_write_data()`函数来控制LCD显示搜索状态信息和序列号。`delay()`函数确保了通信操作之间的适当延时。 在初始化阶段,LCD被配置为4位模式,然后设置为显示搜索ROM的状态。搜索过程中,会循环读取DS18B20的序列号,并在搜索成功时更新LCD显示,显示已找到的总传感器数量和特定传感器的序列号。 当搜索全部完成时,LCD将显示"SEARCHROMOK!",并可能显示出所有找到的DS18B20的序列号列表。整个过程利用了51单片机的中断处理能力,使得系统可以在等待DS18B20应答的同时执行其他任务。 总结来说,本代码提供了DS18B20与51单片机配合进行自动搜索ROM序列号的方法,适用于需要对多个DS18B20进行管理的嵌入式系统中。这有助于简化设备连接和配置过程,提高系统的稳定性和可靠性。在实际应用中,开发者需要注意正确配置通信参数,以确保有效的数据通信和错误检测。
期可分为两个部分,即温度检测和数据处理。下面是DS18B20的程序,51单片机的实现方式。已经过实践。
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char //定义无符号单字节
#define uint unsigned int //定义无符号整形
#define MAXNUM 2 //定义最多DS18B20个数 超过的无法显示
sbit DQ=P1^3; //定义数据线
sbit RS=P2^4;
sbit RW=P2^5;
sbit E=P2^6;
uchar code lcd0[]={"SEARCH ROMING..."};
uchar code lcd1[]={"SEARCH ROM OK!"};
uchar code lcd2[]={"The total is:"};
uchar code lcd3[]={"No.( ):"};
uchar code lcd4[]={'0','1','2','3','4','5','6','7','8','9','.',0xdf,0x43};
uchar dat[6];
uchar temp_l,temp_h,is_fuwen,temp_x,temp_over,t;
uchar num=0;
uint i;
uchar al[MAXNUM];
idata uchar ID[MAXNUM][8]; // ={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
void alarm_search(void);
void delay()//延时程序
{
uchar y;
for(y=0;y<250;y++);
}
void LCD_write_com(uchar com)//写
{
delay();
RS=0;
RW=0;
E=0;
E=1;
P0=com;
E=0;
delay();
}
void LCD_write_data(uchar dat)
{
delay();
RS=1;
RW=0;
E=0;
E=1;
P0=dat;
E=0;
delay();
}
void init()//初始化
{
剩余15页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- WebLogic集群配置与管理实战指南
- AIX5.3上安装Weblogic 9.2详细步骤
- 面向对象编程模拟试题详解与解析
- Flex+FMS2.0中文教程:开发流媒体应用的实践指南
- PID调节深入解析:从入门到精通
- 数字水印技术:保护版权的新防线
- 8位数码管显示24小时制数字电子钟程序设计
- Mhdd免费版详细使用教程:硬盘检测与坏道屏蔽
- 操作系统期末复习指南:进程、线程与系统调用详解
- Cognos8性能优化指南:软件参数与报表设计调优
- Cognos8开发入门:从Transformer到ReportStudio
- Cisco 6509交换机配置全面指南
- C#入门:XML基础教程与实例解析
- Matlab振动分析详解:从单自由度到6自由度模型
- Eclipse JDT中的ASTParser详解与核心类介绍
- Java程序员必备资源网站大全