DS18B20数字温度计C程序.doc

上传人:人*** 文档编号:562375344 上传时间:2022-11-16 格式:DOC 页数:5 大小:35KB
返回 下载 相关 举报
DS18B20数字温度计C程序.doc_第1页
第1页 / 共5页
DS18B20数字温度计C程序.doc_第2页
第2页 / 共5页
DS18B20数字温度计C程序.doc_第3页
第3页 / 共5页
DS18B20数字温度计C程序.doc_第4页
第4页 / 共5页
DS18B20数字温度计C程序.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《DS18B20数字温度计C程序.doc》由会员分享,可在线阅读,更多相关《DS18B20数字温度计C程序.doc(5页珍藏版)》请在金锄头文库上搜索。

1、/*DS18B20数字温度计C程序*/*MCU: AT892051 /*MCU-crystal: 12M /*Version: 01 /*Last Updata: 2007-6-10 /*Author: zhaojun /*Description: /DS18B20的读写程序,数据脚P3.4 /温度传感器18B20汇编程序,采用器件默认的12位转化 /最大转化时间750微秒,显示温度-55到+125度,显示精度 /为0.1度,显示采用4位LED共阳显示测温值 /P1口为段码输入,P0P3为位选 /*/#include reg51.h#include intrins.h /_nop_();延时函

2、数用#define Disdata P1 /段码输出口#define discan P3 /扫描口#define uchar unsigned char#define uint unsigned intsbit DQ=P34; /温度输入口sbit DIN=P17; /LED小数点控制uint h; uint temp;/*温度小数部分用查表法*/uchar code ditab16=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09;/uchar code dis_712=0xc0,0

3、xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf;/共阳LED段码表 0 1 2 3 4 5 6 7 8 9 不亮 -uchar code scan_con4=0xfe,0xfd,0xfb,0xf7; /列扫描控制字uchar data temp_data2=0x00,0x00; /读出温度暂放uchar data display5=0x00,0x00,0x00,0x00,0x00; /显示单元数据,共4个数据和一个运算暂用/*11us延时函数*/void delay(uint t) for (;t0;t-);/*显示扫描函数*/sca

4、n() char k; for(k=0;k0;i-) DQ=1;_nop_();_nop_(); /从高拉倒低 DQ=0;_nop_();_nop_();_nop_();_nop_(); /5 us DQ=val&0x01; /最低位移出 delay(6); /66 us val=val/2; /右移1位 DQ=1; delay(1);/*DS18B20读1字节函数*/从总线上取1个字节uchar read_byte(void)uchar i;uchar value=0;for(i=8;i0;i-) DQ=1;_nop_();_nop_(); value=1; DQ=0;_nop_();_no

5、p_();_nop_();_nop_(); /4 us DQ=1;_nop_();_nop_();_nop_();_nop_(); /4 us if(DQ)value|=0x80; delay(6); /66 usDQ=1;return(value);/*读出温度函数*/read_temp() ow_reset(); /总线复位 delay(200); write_byte(0xcc); /发命令 write_byte(0x44); /发转换命令 ow_reset(); delay(1); write_byte(0xcc); /发命令 write_byte(0xbe); temp_data0=

6、read_byte(); /读温度值的第字节 temp_data1=read_byte(); /读温度值的高字节 temp=temp_data1; temp6348) / 温度值正负判断 tem=65536-tem;n=1; / 负温度求补码,标志位置1 display4=tem&0x0f; / 取小数部分的值 display0=ditabdisplay4; / 存入小数部分显示值 display4=tem4; / 取中间八位,即整数部分的值 display3=display4/100; / 取百位数据暂存 display1=display4%100; / 取后两位数据暂存 display2=display1/10; / 取十位数据暂存 display1=display1%10;/*符号位显示判断*/ if(!display3) display3=0x0a; /最高位为0时不显示 if(!display2) display2=0x0a; /次高位为0时不显示 if(n)display3=0x0b; /负温度时最高位显示-/*主函数*/main() Disdata=0xff; /初始化端口 disc

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号