IC解密Temperature.h文件
- IC解密#ifndef _TEMPERATURE_H_
- #define _TEMPERATURE_H_
- #include "lpc11xx.h"
- #define DQ_H (LPC_GPIO0->DATA |= (1<<2))
- #define DQ_L (LPC_GPIO0->DATA &=~(1<<2))
- #define DQ_IN (LPC_GPIO0->DIR&=~(1<<2))
- #define DQ_OUT (LPC_GPIO0->DIR|=(1<<2))
- #define DQ_DATE ((LPC_GPIO0->DATA&0x4)>>2^1)
- //DS18B20 ROM 命令宏定义
- #define ReadRom 0x33
- #define MatchRom 0x55
- #define Skip_ROM 0xcc //跳过ROM
- #define SearchRom 0xf0
- #define AlertSearch 0xec
- #define CopyScratchpad 0x48
- #define SkipRom 0xcc
- #define ReadPower 0xb4
- //DS18B20 功能命令宏定义
- #define ConvertTemperature 0x44
- #define ReadScratchpad 0xbe
- #define WriteScratchpad 0x4e
- #define RecallE 0xb8
- extern unsigned char DS18B20_Init(void);
- #endif
- Temperature.c文件#include "temperature.h"#include "lpc11xx.h"
- #include "timer.h"
- extern uint16_t T;
- extern unsigned char tempH,tempL,wenduqk;
- /****************************************************************************
- * 名称: unsigned char DS18B20_Init(void)
- * 功能:对DS18B20 进行初始化
- * 入口参数:
- * 出口参数:
- * 说明:
- ****************************************************************************/
- unsigned char DS18B20_Init(void)
- {
- unsigned char result;
- DQ_OUT;
- DQ_L;
- Delay_Us(600); // 总线拉低480us~960us ,即主机发送复位脉冲
- DQ_H;
- DQ_IN; // 总线设为输入状态,等待18b20 应答
- Delay_Us(60);
- result=DQ_DATE; // 读取18b20 应答信号
- // Send_TO_DWIN(0x00,result,2);
- Delay_Us(500); // 等待480us 以上,保证总线释放
- return(result); // 返回0 则初始化成功
- }
- /****************************************************************************
- * 名称: unsigned char DS18B20_ReadBit(void)
- * 功能:从DS18B20 单总线上读1Bit 数
- * 入口参数:
- * 出口参数:
- * 说明:
- ****************************************************************************/
- unsigned char DS18B20_ReadBit(void)
- {
- unsigned char result;
- DQ_OUT; // 设置总线为输出状态
- DQ_L; // 总线拉低,产生读起始信号
- Delay_Us(2); // 保证低电平在1us 以上
- //要在15us 内读取总线上数据
- DQ_IN;
- Delay_Us(3); // 这个延时很重要,没有这个延时,读不出18B20的数据
- result=DQ_DATE; // 接收数据
- Delay_Us(60); // 延时60us,保证总线释放
- return(result); // 返回数据
- }
- /****************************************************************************
- * 名称: void DS18B20_WriteBit(unsigned char Data)
- * 功能:给DS18B20 单总线上写1Bit 数
- * 入口参数:
- * 出口参数:
- * 说明:
- ****************************************************************************/void
- DS18B20_WriteBit(unsigned char Data)
- {
- DQ_OUT; // 设置总线为输出
- DQ_L; // 产生写起始信号
- Delay_Us(10); //15us 后写入数据
- if(Data) DQ_H;
- else DQ_L;
- Delay_Us(80); // 延时60us~120us ,保证总线释放
- DQ_IN; // 空闲状态总线保持输入状态
- }
|