基于ARM9的18B20温度传感器程序

来源:本站
导读:目前正在解读《基于ARM9的18B20温度传感器程序》的相关信息,《基于ARM9的18B20温度传感器程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《基于ARM9的18B20温度传感器程序》的详细说明。
简介:本文给大家分享了基于ARM9的18B20温度传感器程序。

//-------------------------------------------------------------------------------------//函数名称: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温度传感器程序》最后刷新时间 2024-03-14 00:57:41,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《基于ARM9的18B20温度传感器程序》该内容的真实性请自行鉴别。