DS18B20驱动程序(LPC213).doc_第1页
DS18B20驱动程序(LPC213).doc_第2页
DS18B20驱动程序(LPC213).doc_第3页
DS18B20驱动程序(LPC213).doc_第4页
DS18B20驱动程序(LPC213).doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#define SetOut() IO0DIR|=0x04 /设置P0.2口为输出#define SetIn() IO0DIR&=0x04 /设置P0.2口为输入/=/ 函数名称 : Delay()/ 函数功能 : 10微秒延时/ 入口参数 : time 延时的毫秒数/ 出口参数 : 无/=void Delay(uint32 time) uint32 i;for(;time0;time-) for(i=84;i0;i-);/=/ 函数名称 : Delay_1()/ 函数功能 : 1微秒延时/ 入口参数 : time 延时的毫秒数/ 出口参数 : 无/=void Delay_1(uint32 time) uint32 i;for(;time0;time-) for(i=6;i=0;i-);/=/ 函数名称: void 18B20_Initial_IO(void)/ 函数功能: 端口初始化子程序/ 入口参数: 无/ 出口参数: 无/=void F_18B20_Initial_IO(void)PINSEL0&=(34); / 设置管脚P0.2连接GPIO/ IO0DIR|=0x04; /设置P0.2口为输出/=/ 函数名称: uint8 18B20_Reset(void)/ 函数功能: 一线总线复位及从设备应答控制程序/ 入口参数: 无/ 出口参数: 0表示复位失败 1表示复位成功/=uint8 F_18B20_Reset() uint8 flag=0; SetOut(); IO0SET=0x04; Delay(5); /延时50us IO0CLR = 0x04; /P0.2置低,初始化开始 Delay(70); /延时700us IO0SET = 0x04; /拉高总线 Delay(2); /延时20us SetIn(); /*等待18B20发出存在脉冲-低电平*/ Delay(3); /延时30us if(IO0PIN&0x04)=0) flag=1; else flag=0; return flag; /=/ 函数名称: uint8 DS18B20_Initial(void)/ 函数功能: DS18B20初始化/ 包括对端口的初始化,以及对DS18B20进行一次复位(总线)/ 入口参数: 无/ 出口参数: 初始化结果,返回0表示初始化失败/=uint8 DS18B20_Initial(void)uint8 uiTemp=0;F_18B20_Initial_IO();uiTemp = F_18B20_Reset(); /一线总线复位及从设备应答控制return uiTemp; /=/ 函数名称: void F_18B20_Write_1(void)/ 函数功能: 向一线总线写1/ 入口参数: 无/ 出口参数: 无/=void F_18B20_Write_1() SetOut(); /*先置高再置低,告诉18B20 写开始*/ IO0SET = 0x04; /P0.2置高 Delay(120); /延时120us IO0CLR = 0x04; /P0.2置低 Delay(1); /延时10us IO0SET = 0x04; /P0.2置高,写 1 开始 Delay(6); /延时60us SetIn(); Delay_1(5); /保证写2位数据的间隙大于 1 us /=/ 函数名称: void F_18B20_Write_0(void)/ 函数功能: 向一线总线写0/ 入口参数: 无/ 出口参数: 无/=void F_18B20_Write_0() SetOut(); /*先置高再置低,告诉18B20写开始*/ IO0SET = 0x04; /P0.2置高 Delay(120); /延时130us IO0CLR = 0x04; /P0.2置低,写 0 开始 Delay(7); /延时70us IO0SET = 0x04; /P0.2置高,释放总线 Delay_1(5); /保证写2位数据的间隙大于 1 us SetIn(); /=/ 函数名称: uint8 F_18B20_Read_DQ(void)/ 函数功能: 读一位一线总线的数据/ 入口参数: 无/ 出口参数: 当前读回的位的值0/1/=uint8 F_18B20_Read_DQ() uint8 read_byte; SetOut(); /*先置高再置低,告诉18B20 读开始*/ IO0SET = 0x04; /P0.2置高 Delay(2); /延时20us IO0CLR = 0x04; /P0.2置低 Delay(1); /延时10us SetIn(); Delay_1(5); /延时5us if(IO0PIN & 0x04) read_byte=0x80; else read_byte=0; SetOut(); /设置P0.2口为输出 IO0SET = 0x04; /P0.2置高,释放总线 SetIn(); return read_byte;/=/ 函数名称: void DS18B20_WriteByte(uint8 Data)/ 函数功能: DS18B20字节写入子程序/ 入口参数: Data 要写入的数值/ 出口参数: 无/=void DS18B20_WriteByte(uint8 Data) uint8 i;for(i=0;i1; /=/ 函数名称: uint8 DS18B20_ReadByte(void)/ 函数功能: DS18B20字节读出子程序/ 入口参数: 无/ 出口参数: 读出的字节数据/=uint8 DS18B20_ReadByte(void)uint8 i,Data=0;for(i=0;i1; Data = Data|F_18B20_Read_DQ();return Data; /=/ 函数名称: float DS18B20_ReadTemp(void)/ 函数功能: 启动一次DS18B20测温,并读取测温结果,以浮点数返回/ 在本函数中,启动测温后在程序里面作了等待,以待测DS18B20/ /完成本次测温转换如用户觉得不合适 / 入口参数: 无/ 出口参数: 测温值,浮点数 以摄氏度为单位/=float DS18B20_ReadTemp(void)float fTemp=0.0;uint16 t=0;if(F_18B20_Reset() /如果一线总线复位及从设备应答控制 成功 则向下执行 DS18B20_WriteByte(0xcc); /跳过读序号列号的操作 DS18B20_WriteByte(0x44); /启动温度转换 Delay(50); F_18B20_Reset(); /一线总线复位及从设备应答控制 DS18B20_WriteByte(0xcc); /跳过读序号列号的操作 DS18B20_WriteByte(0xbe); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度 a=DS18B20_ReadByte(); b=DS18B20_ReadByte(); t=b; t=8; t=t|a; fTemp=t*0.0625; return fTemp;/=/ 语法格式: uint8 DS18B20_SetConfig(uint8 Config)/ 实现功能: 设置DS18B20中的config寄存器,可通过该寄存器的设置选择温/ 度转换结果的有效位数/ 参数: Config 要设置的值/ 返回值: 如返回0则表示设置失败/=uint8 DS18B20_SetConfig(uint8 Config)uint8 uiTemp = 0;uint8 Data2;if(F_18B20_Reset() /如果一线总线复位及从设备应答控制 成功 则向下执行 DS18B20_WriteByte(0xcc); /跳过ROM DS18B20_WriteByte(0xbe); /读暂存存储器 uiTemp = DS18B20_ReadByte(); uiTemp = DS18B20_ReadByte(); Data0 = DS18B20_ReadByte(); Data1 = DS18B20_ReadByte(); F_18B20_Reset(); DS18B20_WriteByte(0xcc); /跳过ROM DS18B20_WriteByte(0x4e); /写暂存存储器 DS18B20_WriteByte(Data0); DS18B20_WriteByte(Data1); DS18B20_WriteByte(Config); uiTemp = F_18B20_Reset();return uiTemp;/=/ 语法格式: unsigned int DS18B20_GetConfig(void)/ 实现功能: 获取DS18B20中的config寄存器的值/ 参数: 无/ 返回值: Config 当中的值/=uint8 DS18B20_GetConfig(void)uint8 uiTemp =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论