ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:16.67KB ,
资源ID:10244043      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-10244043.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(温度传感器DS18B20驱动程序.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

温度传感器DS18B20驱动程序.docx

1、温度传感器DS18B20驱动程序#include ds18b20.h#include #if 0/*FUNCTION NAME: InitDS18b20 *CREATE DATE: 2009/11/12 *CREATED BY: XS *FUNCTION: 复位DS18B20和检测存在脉冲 *MODIFY DATE: 2009/11/12 *INPUT: 无 *RETURN: 初始化成功,返回1,否则返回0 */ BOOL InitDs18b20(void) BOOL flag = FALSE; BIT bt; bt = ET0; ET0 = 0; DQ = 1; Delay70us(1);

2、/稍作延时 DQ = 0; / 复位 Delay70us(8); /精确延时大于480us DQ = 1; /拉高总线,等待存在脉冲 Delay70us(1); / 60-75us之间 if(0=DQ) flag = TRUE; Delay70us(8); / 复位后大于480us延时 ET0 = bt; return flag;/*FUNCTION NAME: ReadByte *CREATE DATE: 2009/11/12 *CREATED BY: XS *FUNCTION: 从DS18B20中读取一个字节的数据 *MODIFY DATE: 2009/11/12 *INPUT: 无 *R

3、ETURN: 读取的数据 */ UCHAR ReadByte(void) UCHAR i; UCHAR dat = 0; BIT bt; bt = ET0; ET0 = 0; for (i=0;i= 1; DQ = 0; Delay5us(); DQ = 1; Delay5us(); if(1=DQ) dat |=0x80; Delay70us(1); ET0 = bt; return(dat);/*FUNCTION NAME: WriteByte *CREATE DATE: 2009/11/12 *CREATED BY: XS *FUNCTION: 向DS18B20中写入一个字节的数据 *M

4、ODIFY DATE: 2009/11/12 *INPUT: 写入的数据 *RETURN: 无 */ void WriteByte(UCHAR wDat) UCHAR i; BIT bt; bt = ET0; ET0 = 0; for (i=0; i= 1; ET0 = bt;/*FUNCTION NAME: ReadDs18b20 *CREATE DATE: 2009/11/12 *CREATED BY: XS *FUNCTION: 从DS18B20储存器中读取多字节数据 *MODIFY DATE: 2009/11/12 *INPUT: 读取数据存入的地址和需要读取数据的数量 *RETURN

5、: 无 */ void ReadScrat(UCHAR *prDat,UCHAR num) UCHAR i; for(i=0;i=ERR_COUNTER) / 连续3次初始化失败,即认为DS18B20出现故障 return 0; WriteByte(SKIP_ROM); / 跳过读序号列号的操作 WriteByte(CONVERT_T); / 启动温度转换 Delay70us(20); / 延时至少500us,以供温度转换 while(1) if(InitDs18b20() counter = 0; break; else counter+; if(counter=ERR_COUNTER) /

6、 连续3次初始化失败,即认为DS18B20出现故障 return 0; WriteByte(SKIP_ROM); /跳过读序号列号的操作 WriteByte(READ_SCRAT); /读取温度寄存器等(共可读9个寄存器) ReadScrat(tempBuff, 9); if(0=CRC8(tempBuff,9) if(0=(tempBuff1&0x80) /为正温度 tempDat = (tempBuff1&0x07)*0x100 + tempBuff0; else tempDat = (0xFF-tempBuff1)&0x07)*0x100 + (0x100-tempBuff0); tem

7、pDat = -tempDat; *prTemperature = tempDat * 0.0625; return TRUE; return FALSE; /*FUNCTION NAME: GetDS18B20Temperature *CREATE DATE: 2009/8/17 *CREATED BY: XS *FUNCTION: 采样3次求均值作为温度值 *MODIFY DATE: 2009/8/17 *INPUT: 温度储存的地址 *RETURN: 正常为1,故障为0 */ BOOL GetDS18B20Temperature(float *pgTemperature) UCHAR i

8、; UCHAR counter = 0; float tempDat = 0; float tempVal = 0; for(i=0;i=ERR_COUNTER) /连续10次温度采样错误,则判断为故障,并返回 return FALSE; *pgTemperature = tempVal / 3;/ SendStr(boxTemp:);/ print(*pgTemperature ,1);/ SendChar(n); return TRUE;/*FUNCTION NAME: CRC8 *CREATE DATE: 2009/8/17 *CREATED BY: XS *FUNCTION: CRC效

9、验 *MODIFY DATE: 2009/8/17 *INPUT: 需要效验的数据地址和个数 *RETURN: 效验结果 */ UCHAR CRC8(UCHAR *point,UCHAR CRClen) /效验成功则crc返回0 UCHAR i,j,crc_8,crcbuff; crc_8 = 0; for(i=0; iCRClen; i+) crcbuff=*point+; for(j=0;j= 1; else crc_8 = 0x18; crc_8 = 1; crc_8 |= 0x80; crcbuff = 1; return crc_8; /*FUNCTION NAME: Delay5u

10、s *CREATE DATE: 2009/8/17 *CREATED BY: XS *FUNCTION: 延时5us *MODIFY DATE: 2009/8/17 *INPUT: 无 *RETURN: 无 */ void Delay5us(void)/ UCHAR i; / for(i=0;i7;i+); _nop_(); _nop_(); #endif/*FUNCTION NAME: Delay70us *CREATE DATE: 2009/8/17 *CREATED BY: XS *FUNCTION: 延时70us *MODIFY DATE: 2009/8/17 *INPUT: 次数 *RETURN: 无 */ void Delay70us(UCHAR timers) UCHAR i,j; for(j=0;jtimers;j+) for(i=0;i22;i+) / Delay5us(); _nop_(); _nop_(); _nop_();

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2