51单片机温度计 - 图文(6)

2019-08-29 00:05

DS=0; _nop_(); DS=1; delay1(8); }

command=_cror_(command,1); } }

//-------------------------------------------------

//DS18B20读温度程序 uint readtemperature() {

uint temperature; EA=0;

reset(); //初始化 EA=1;

delay1(1); //转换需要一点时间,延时大一点,应该大于500us吧 EA=0;

write_byte(0xcc); //写SKIP ROM(跳过检查ROM序列,因为我们一般只有一个DS18B20!)

- 18 -

EA=1;

delay1(1); //转换需要一点时间,延时大一点,应该大于500us吧 EA=0;

write_byte(0x44); //写启动温度转换 EA=1;

delay1(12); //转换需要一点时间,延时大一点,应该大于500us吧 EA=0;

reset(); //初始化

write_byte(0xcc); //写SKIP ROM(跳过检查ROM序列,因为我们一般只有一个DS18B20!) EA=1;

delay1(1); //转换需要一点时间,延时大一点,应该大于500us吧 EA=0;

write_byte(0xbe); //读温度寄存器RAM(头两个值分别为温度的低位和高位) EA=1;

delay1(1); //转换需要一点时间,延时大一点,应该大于500us吧 EA=0;

tempL=read_byte(); //读出温度的低位LSB EA=1;

delay1(1); //转换需要一点时间,延时大一点,应该大于500us吧 EA=0;

- 19 -

tempH=read_byte(); //读出温度的高位MSB EA=1;

//温度转换,把高低位做相应的运算转化为实际温度

temperature=tempL+tempH*256;//将温度整理成16位变量 =((tempH*256)+tempL)*0.0625*10+0.5;//tempH*256的意思是tempH向左移8位

// delay_us(200);//两次间隔转换的间隔要延时一下 temperature=temperature*(0.625); return(temperature); }

/******************************************* 函数名称: wendu_read

功 能: 完成温度的读取与显示 参 数: 无 返回值 : 无

/********************************************/ void wendu_read(void) { uint t;

t=readtemperature(); wendu=(t/10)00; xiaoshu=t;

- 20 -

6.调试及仿真

我利用电脑中的 Proteus软件将设计好的电路图进行仿真,如下图所示:

其中温度上限设为38℃,下限设为5℃,并且可以由KEY1,KEY2按钮自由设置,非常方便。

- 21 -

6.电路的焊接及调试

我和曹群峰同学在电路调试和仿真成功的基础上,列出了这次电路焊接所需要的所有元件以及工具,出去进行购买,经过近两天的辛苦的搜罗寻找,我们终于集齐所有元件,清单如下

元件名称 单片机芯片 温度传感器 晶振 电源 三极管 电容 10uF 排阻 LED数码管 10K 03641B(共阳) 1K 电阻 6.8K 7.5K 万能板 IC插座 导线

型号 89C51 DS18B20 12MHz 5V 8550(PNP) 30pF 数量 1 1 1 1 4 2 1 2(并联) 1 4 1 1 1 若干 若干 - 22 -


51单片机温度计 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:80浮头换热器毕业设计-说明书2 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: