//-------------------------------------------------------------------------------------//函数名称:dmsec //入口参数:count //函数功能:延时子程序//-------------------------------------------------------------------------------------void dmsec(uint count) { uchar i; while(count--) { for(i=0; i<125; i++); }}//-------------------------------------------------------------------------------------//函数名称:tmreset //入口参数:无 //函数功能: //-------------------------------------------------------------------------------------void tmreset(void) { ushort i; dq=0; i=343; while(i>0) i--; //大约900us dq=1; i=13; while(i>0) i--;} //------------------------------------------------------------------------------------- //函数名称:tmpre //入口参数:无 //函数功能:等待DS18B20应答 //-------------------------------------------------------------------------------------void tmpre(void) { uchar i; while(dq); while(~dq); i=13; while(i>0) i--; } //------------------------------------------------------------------------------------- //函数名称:tmrbit //入口参数:无 //返回值: dat //函数功能:在总线上读一位 //-------------------------------------------------------------------------------------bit tmrbit(void) { uchar i; bit dat; dq=0; i++; dq=1; i++; i++; dat=dq; i=30; while(i>0) i--; return(dat);} //------------------------------------------------------------------------------------- //函数名称:tmrbyte //入口参数:无 //返回值: dat //函数功能:读一个字节 //-------------------------------------------------------------------------------------uchar tmrbyte(void) { uchar i,j,dat=0; for(i=1;i<=8;i++) { j=tmrbit(); dat=(j<<7)|(dat>>1); } return(dat);} //------------------------------------------------------------------------------------- //函数名称:tmwbyte //入口参数:dat //函数功能:写命令 //-------------------------------------------------------------------------------------void tmwbyte(uchar dat) { uint i; uchar j; bit testb; for(j=1;j<=8;j++) { testb=dat&0x01; dat=dat>>1; if(testb) { dq=0; //写1 i++; i++; dq=1; i=27; while(i>0) i--; } else { dq=0; //写0 i=27; while(i>0) i--; dq=1; i++; i++; } }} //------------------------------------------------------------------------------------- //函数名称:tmrbyte //入口参数:无 //函数功能:读取温度值 //-------------------------------------------------------------------------------------void read_tr() { uchar a,b; ushort y; tmreset(); tmpre(); dmsec(1); tmwbyte(0xcc); tmwbyte(0x44); dmsec(100); tmreset(); tmpre(); dmsec(1); tmwbyte(0xcc); tmwbyte(0xbe); a=tmrbyte(); //l b=tmrbyte(); //h y=b&0x0f; y=y<<8; y=a|y; if(y>0x800) { y=0x1000-y; bjTr=cal12bit(y); bjTr=bjTr+0x8000; } else { bjTr=cal12bit(y); } } //12位精度void temp_init(void) { tmreset(); tmpre(); tmwbyte(0xcc); tmwbyte(0x4e); tmwbyte(0x88); tmwbyte(0x44); tmwbyte(0x7f); tmreset();}
导读:目前正在解读《基于ARM9的18B20温度传感器程序》的相关信息,《基于ARM9的18B20温度传感器程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《基于ARM9的18B20温度传感器程序》的详细说明。
简介:本文给大家分享了基于ARM9的18B20温度传感器程序。
提醒:《基于ARM9的18B20温度传感器程序》最后刷新时间 2024-03-14 00:57:41,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《基于ARM9的18B20温度传感器程序》该内容的真实性请自行鉴别。