ds18b20测温c程序.docVIP

  • 3
  • 0
  • 约5.69千字
  • 约 10页
  • 2018-03-09 发布于河南
  • 举报
ds18b20测温c程序

#includereg52.h #includeintrins.h #includeZLG7289.h #define uint unsigned int #define uchar unsigned char uchar mod,x,dat,m,t; uchar pres_temp[]={9,9,9,9},old_temp[]={0,0,0,0}; sbit dq=P3^6; sbit P1_1=P1^1; sbit P1_2=P1^2; sbit P1_5=P1^5; sbit P1_6=P1^6; uint temp; uchar ID[2][8]={0x28,0x08,0x34,0x31,0x02,0x00,0x00,0xac, 0x28,0xf3,0xa0,0xd0,0x00,0x00,0x00,0x07}; void delay(uint count) { uint i,j; for(i=0;icount;i++) for(j=0;j10;j++); } void delayb20(uchar count) { uchar i; for(i=0;icount;i++); } uchar b20_Init() { uchar i; dq=1; delayb20(1); dq=0; delayb20(29); dq=1; delayb20(3); i=dq; delayb20(25); if(i==0) return 1; else return 0; } uchar b20_Readbit(void) { uchar i; dq=0; dq=1; for(i=0;i3;i++); return(dq); } uchar b20_Readbyte(void) { uchar i,j,dat; dat=0; for(i=0;i8;i++) { j=b20_Readbit(); dat=(j7)|(dat1); } return(dat); } void b20_Writebyte(uchar dat) { uchar i,j; bit testb; for(j=0;j8;j++) { testb=dat0x01; dat=dat1; if(testb) { dq=0; i++; i++; dq=1; for(i=0;i8;i++); } else { dq=0; for(i=0;i8;i++); dq=1; i++; i++; } } } uint b20_Matchrom(uint num) { uint j; b20_Init(); if(b20_Init()==1) { b20_Writebyte(0x55); for(j=0;j8;j++) b20_Writebyte(ID[num][j]); return 1; } else return 0; } void b20_temchange() { b20_Init(); delay(1); b20_Writebyte(0xcc); b20_Writebyte(0x44); delay(5000); delay(5000); } uint b20_tempget() { float tt; uchar a,b; b20_Writebyte(0xbe); a=b20_Readbyte(); b=b20_Readbyte(); temp=b; temp=8; temp=temp|a; tt=temp*0.0625; temp=tt*10+0.5; return(temp); } void dataconvt() {uint t=b20_tempget(); pres_temp[0] = t/ 1000; pres_temp[1] = t % 1000 / 100; pres_temp[2]=t%100/10; pres_temp[3] = t% 10; } void display(uchar p) { uint a; dataconvt(); a=pres_temp[0]*1000+pres_temp[1]*100+pres_temp[2]*10+pres_temp[3]; if(p) {if(a305) {P1_1=0; P1_2=0;} if(a295) {P1_1=1;

文档评论(0)

1亿VIP精品文档

相关文档