如果所万用表测温度怎么使用为120度用DS18B20(-55-125度)行不行?

DS18B20温度计C语言程序
单片机DS18B20温度计C语言程序
;单片机DS18B20温度计C语言程序 ( 17:01:06)
;标签:单片机 c语言 ds18b20 温度计 51 mcu
#include&reg51.h&
#include&intrins.h&
& #include
//要用到取绝对值函数abs()
//通过DS18B20测试当前环境温度, 并通过数码管显示当前温度值, 目前显示范围: -55~ +125度
& sbit wela =
P2^7;& //数码管位选
& sbit dula =
P2^6;& //数码管段选
& sbit ds = P2^2;
& int tempV
&//0-F数码管的编码(共阳极)
&unsigned char code
table[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
&//0-9数码管的编码(共阳极), 带小数点
&unsigned char code tableWidthDot[]={0x40,
0x79, 0x24, 0x30,
0x19, 0x12, 0x02,0x78, 0x00, 0x10};
&//延时函数, 对于11.0592MHz时钟,
例i=10,则大概延时10ms.
&void delay(unsigned int i)
&& while(i--)
for(j = 0; j & 125; j++);
//初始化DS18B20
&//让DS18B20一段相对长时间低电平, 然后一段相对非常短时间高电平,
&void dsInit()
//对于11.0592MHz时钟, unsigned int型的i, 作一个i++操作的时间大于?us
&& unsigned int
&& ds = 0;
i = 100;&&
//拉低约800us, 符合协议要求的480us以上
while(i&0) i--;
//产生一个上升沿, 进入等待应答状态
while(i&0) i--;
&void dsWait()
while(ds);
while(~ds);& //检测到应答脉冲
while(i & 0) i--;
//向DS18B20读取一位数据
//读一位, 让DS18B20一小周期低电平, 然后两小周期高电平,
//之后DS18B20则会输出持续一段时间的一位数据
bit readBit()
&& ds = 0;
i++;&& //延时约8us,
符合协议要求至少保持1us
& i++; i++;&
//延时约16us, 符合协议要求的至少延时15us以上
while(i&0) i--;& //延时约64us,
符合读时隙不低于60us要求
//读取一字节数据, 通过调用readBit()来实现
unsigned char readByte()
&& unsigned int
unsigned char j,
&& for(i=0;
j = readBit();
//最先读出的是最低位数据
dat = (j && 7) | (dat
//向DS18B20写入一字节数据
void writeByte(unsigned char dat)
&& unsigned char
& for(j = 0; j & 8;
b = dat & 0x01;
dat &&= 1;
//写"1", 将DQ拉低15us后, 在15us~60us内将DQ拉高, 即完成写1
&&&&&&&&&&&
&&&&&&&&&&
i++; i++;& //拉低约16us, 符号要求15~60us内
&&&&&&&&&&&
&&&&&&&&&&
i = 8; while(i&0) i--;&
//延时约64us, 符合写时隙不低于60us要求
else& //写"0", 将DQ拉低60us~120us
&&&&&&&&&&
&&&&&&&&&&&
i = 8; while(i&0) i--;&
//拉低约64us, 符号要求
&&&&&&&&&&&
&&&&&&&&&&
i++; i++;& //整个写0时隙过程已经超过60us, 这里就不用像写1那样,
再延时64us了
//向DS18B20发送温度转换命令
void sendChangeCmd()
dsInit();&&&
//初始化DS18B20, 无论什么命令, 首先都要发起初始化
dsWait();&&
//等待DS18B20应答
delay(1);&&&
//延时1ms, 因为DS18B20会拉低DQ 60~240us作为应答信号
writeByte(0xcc); //写入跳过序列号命令字 Skip Rom
&& writeByte(0x44);
//写入温度转换命令字 Convert T
//向DS18B20发送读取数据命令
void sendReadCmd()
&& dsInit();
&& dsWait();
&& delay(1);
&& writeByte(0xcc);
//写入跳过序列号命令字 Skip Rom
&& writeByte(0xbe);
//写入读取数据令字 Read Scratchpad
//获取当前温度值
int getTmpValue()
//存放温度数值
unsigned char low,
sendReadCmd();
//连续读取两个字节数据
& low = readByte();
& high = readByte();
//将高低两个字节合成一个整形变量
//计算机中对于负数是利用补码来表示的
//若是负值, 读取出来的数值是用补码表示的, 可直接赋值给int型的
tmpvalue =
tmpvalue &&= 8;
tmpvalue |=
&& value =
//使用DS18B20的默认分辨率12位, 精确度为0.0625度, 即读回数据的最低位代表0.0625度
&& t = value *
//将它放大100倍, 使显示时可显示小数点后两位, 并对小数点后第三进行4舍5入
&& //如t=11.0625,
进行计数后, 得到value = 1106, 即11.06 度
&& //如t=-11.0625,
进行计数后, 得到value = -1106, 即-11.06 度
value = t * 100 + (value & 0 ? 0.5 : -0.5);
//大于0加0.5, 小于0减0.5
unsigned char const timeCount = 3; //动态扫描的时间间隔
//显示当前温度值, 精确到小数点后一位
//若先位选再段选, 由于IO口默认输出高电平, 所以当先位选会使数码管出现乱码
void display(int v)
&& unsigned char
datas[] = {0, 0, 0, 0, 0};
&& unsigned int tmp
datas[0] = tmp / 10000;
&& datas[1] = tmp %
10000 / 1000;
&& datas[2] = tmp %
1000 / 100;
datas[3] = tmp % 100 / 10;
datas[4] = tmp % 10;
//关位选, 去除对上一位的影响
wela = 1; //打开锁存, 给它一个下降沿量
P0 = 0x40; //显示"-"号
dula = 1;& //打开锁存, 给它一个下降沿量
wela = 1; //打开锁存, 给它一个下降沿量
delay(timeCount);
for(count = 0; count != 5; count++)
//关位选, 去除对上一位的影响
wela = 1; //打开锁存, 给它一个下降沿量
if(count != 2)
&&&&&&&&&&&&&&
P0 = table[datas[count]];& //显示数字
&&&&&&&&&&&
P0 = tableWidthDot[datas[count]]; //显示带小数点数字
dula = 1;& //打开锁存, 给它一个下降沿量
P0 = _crol_(0xfd, count); //选择第(count + 1) 个数码管
wela = 1; //打开锁存, 给它一个下降沿量
delay(timeCount);
void main()
&& while(1)
//启动温度转换
sendChangeCmd();
for(i = 0; i & 40; i++)
&&&&&&&&&&
display(tempValue);
tempValue = getTmpValue();
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。DS18B20温度传感器模块/DS18B20专用温度传感器模块
DAM-3601:DS18B20专用温度传感器模块&8路&温度传感器输入&8通道DS18B20温度传感器输入(测温点数128;测温范围 -55~+125度;精度为0.0625度)※&支持美国DALLA&1-wire总线数字化温度传感器※&8通道DS18B20温度传感器输入※&测温点数:128※&测温范围:-55~+125℃※&测温精度:0.0625℃※&支持标准Modbus协议※&传感器排序方式:自动排序和手动排序※&内置看门狗※&电源极性保护
&|&相关影像
互动百科的词条(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。未经许可,禁止商业网站等复制、抓取本站内容;合理使用者,请注明来源于www.baike.com。
登录后使用互动百科的服务,将会得到个性化的提示和帮助,还有机会和专业认证智愿者沟通。
此词条还可添加&
编辑次数:2次
参与编辑人数:1位
最近更新时间: 10:55:15
贡献光荣榜
扫码下载APP精彩文章推荐豆丁微信公众号
君,已阅读到文档的结尾了呢~~
DS18B20的使用方法DS18B2
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
DS18B20的使用方法
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口DS18B20温度检测仪表(数码管显示)_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
DS18B20温度检测仪表(数码管显示)
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩16页未读,
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 万用表怎么测温度 的文章

 

随机推荐