13板外的第一个扩展DS18B20温度测量2实际制做.docx
- 文档编号:2815815
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:16
- 大小:213.26KB
13板外的第一个扩展DS18B20温度测量2实际制做.docx
《13板外的第一个扩展DS18B20温度测量2实际制做.docx》由会员分享,可在线阅读,更多相关《13板外的第一个扩展DS18B20温度测量2实际制做.docx(16页珍藏版)》请在冰豆网上搜索。
13板外的第一个扩展DS18B20温度测量2实际制做
13、板外的第一个扩展——DS18B20温度测量
(2)实际制做
2008-07-2823:
38
这个扩展,电路很简单,板子就不用做了吧!
把电路焊好就行了。
这个是原理图:
实际接线图如下:
接好的实物图如下:
接下来就是写程序了,我们还是一步步地来完成:
① 向总线发出复位信号:
sbitTMDAT=P1^1; //设P1.1为TMDAT
voidtmreset(void)
{
uinti;
TMDAT=0; //将总线拉低
i=103;
while(i>0)i--; //延时700微秒
TMDAT=1; //释放总线
i=4;
while(i>0)i--; //延时40微秒
}
②检测总线上是否有器件应答(是否有存在信号):
voidtmpre(void)
{
uinti;
while(TMDAT); //检测低电平的存在。
否则一直循环。
while(~TMDAT);//检测高电平的存在。
否则一直循环。
i=4;
while(i>0)i--; //延时
}
这段程序就是检测一个先低后高的脉冲的存在。
说明有器件应答了。
③从DS18B20上读一个bit
bittmrbit(void)
{
uinti;
bitdat;
TMDAT=0; //先将总线拉低
i++; //延时一微秒
TMDAT=1; //释放总线
i++;
i++; //延时两微秒
dat=TMDAT; //读取总线
i=8;
while(i>0)i--; //延时
return(dat);
}
④向总线写一个bit
voidtmwbit(bittestb)
{
if(testb) //如果是1
{TMDAT=0; //先拉低总线
i++;i++; //延时2微秒
TMDAT=1; //释放总线
i=8;
while(i>0)i--; //延时40微秒
}
else //如果是0
{TMDAT=0; //先拉低总线
i=8;
while(i>0)i--; //延时40微秒
TMDAT=1; //释放总线
i++;i++; //延时2微秒
}
}
我这么写大家能看懂吧!
与单片机连接图:
好!
现在上完整的程序:
(要慢慢的读了)
//LCD12864
//**********************************************************
//连线表:
CPU=89C51 SysClock=12MHz *
//RS=P2.0 R/W=P2.1 E=P2.2 CS1=P2.3 CS2=P2.4 *
//DB0-DB7=P3.0-P3.7 /Reset=InBoard *
//**********************************************************
//DS18B20
//**********************************************************
//连线表:
CPU=89C51 SysClock=12MHz *
//单总线:
TMDAT=P1.1
//
//**********************************************************
#include
#include
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
/********************LCD引脚定义********************/
#defineDataPortP3 //LCD128*64I/O信号管脚
sbit RS=P2^0; //数据指令
sbit RW=P2^1; //读写
sbit E =P2^2; //使能
sbit CSL=P2^3; //左片选
sbit CSR=P2^4; //右片选
ucharPage; //页地址
ucharCol; //列地址
ucharcodeASC_5x7[]; //5×7阵点字模
ucharstr[4]; //char的值转换成字符串
/********************DS18B20引脚定义********************/
sbitTMDAT=P1^1;
/********************DS18B20函数定义*******************/
voiddmsec(uintcount);//延时(count)毫秒
voidtmreset(void); //产生复位信号
voidtmpre(void); //检测器件应答信号
bittmrbit(void); //从总线读一个bit
uchartmrbyte(void); //从总线读一个字节
voidmwbyte(uchardat);//向总线写一个字节
voidtmstart(void); //启动一次温度转换
uchartmrtemp(void); //读取温度数据
/********************LCD函数定义*******************/
voidBusyL(void); //左屏检测忙
voidBusyR(void); //右屏检测忙
voidCheckBusy(void); //读取忙信号
voidDelay(uintMS); //延时
voidLocatexy(void); //将屏幕横向0-12纵向0-7转换成左、右屏的的X、Y
voidWriteCommandL(ucharCommandByte); //向左屏写入指令
voidWriteCommandR(ucharCommandByte); //向右屏写入指令
ucharReadData(void); //读数据
voidWriteData(ucharDataByte); //写数据
voidLcmClear(void); //清屏
voidLcmInit(void); //初始化
uchar*uchartostr(unsignedcharunm); //将值转成字符串
voidLcmPutAsc(ucharasc); //显示一个5×7的ASC字符
voidLcmPutstr(ucharrow,uchary,uchar*str); //在设定位置显示字符串
/*****************DS18B20函数体定义****************/
voiddmsec(uintcount)
{
uinti;
while(count--)
{for(i=0;i<125;i++){}
}
}
voidtmreset(void)
{
uinti;
TMDAT=0;
i=103;
while(i>0)i--;
TMDAT=1;
i=4;
while(i>0)i--;
}
voidtmpre(void)
{
uinti;
while(TMDAT);
while(~TMDAT);
i=4;
while(i>0)i--;
}
bittmrbit(void)
{
uinti;
bitdat;
TMDAT=0;
i++;
TMDAT=1;
i++;
i++;
dat=TMDAT;
i=8;
while(i>0)i--;
return(dat);
}
uchartmrbyte(void)
{
uchari,j,dat;
dat=0;
for(i=1;i<=8;i++)
{j=tmrbit();
dat=(j<<7)|(dat>>1);
}
return(dat);
}
voidtmwbyte(uchardat)
{
uinti;
ucharj;
bittestb;
for(j=1;j<=8;j++)
{testb=dat&0x01;
dat=dat>>1;
if(testb)
{TMDAT=0;
i++;i++;
TMDAT=1;
i=8;
while(i>0)i--;
}
else
{TMDAT=0;
i=8;
while(i>0)i--;
TMDAT=1;
i++;i++;
}
}
}
voidtmstart(void)
{
tmreset();
tmpre();
dmsec
(1);
tmwbyte(0xcc);
tmwbyte(0x44);
}
uchartmrtemp(void)
{
uchara,b,y1,y2,y3;
tmreset();
tmpre();
dmsec
(1);
tmwbyte(0xcc);
tmwbyte(0xbe);
a=tmrbyte();
b=tmrbyte();
y1=a>>4;
y2=b<<4;
y3=y1|y2;
return(y3);
}
/************LCD12864函数体***************/
/***************************/
/*检查Busy */
/***************************/
voidBusyL(void)
{
CSL=1;
CSR=0;
CheckBusy();
}
voidBusyR(void)
{
CSL=0;
CSR=1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 13 第一 扩展 DS18B20 温度 测量 实际 制做