基于DS18B20温度传感器设计 联系客服

发布时间 : 星期二 文章基于DS18B20温度传感器设计更新完毕开始阅读

四川职业技术学院毕业设计(论文)

void Init_DS18B20(void); unsigned char ReadOneChar(void); void WriteOneChar(unsigned char dat); void delay(unsigned int i);

/************************************************************************/

void wait(uint i) //延时函数 {

for(;i>0;i--); }

void T0Int(void) interrupt 1 using 0 //T0中断服务函数 {if(flag!=1&&flag_18B20==0) {C100us--;

if(C100us==0) //100us计数器为0,重置计? {C100us=20000; second++;

if(second==60){second=0;minute++;} if(minute==60){minute=0;hour++;} if(hour==24){hour=0;} } } }

void display() {uchar mi,ho; if(flag_18B20==0) { if(flag!=3) {mi=minute; ho=hour; } if(flag==3) {mi=nminute; ho=nhour; }

第 28 页共 39页

四川职业技术学院毕业设计(论文)

P0=LED_CODES[second]; P2=Select[0]; wait(30); P2=0xff;

P0=LED_CODES[second/10]; P2=Select[1]; wait(30); P2=0xff;

P0=LED_CODES[mi]; if(wei==1&&flag>0) if(flash>100) P0=0xff; P2=Select[2]; wait(30); P2=0xff;

P0=LED_CODES[mi/10]; if(wei==2&&flag>0) if(flash>100) P0=0xff; P2=Select[4]; wait(30); P2=0xff;

P0=LED_CODES[ho]; if(wei==3&&flag>0) if(flash>100) P0=0xff; P2=Select[3]; wait(30); P2=0xff;

P0=LED_CODES[ho/10]; if(wei==4&&flag>0) if(flash>100) P0=0xff; P2=Select[5];

第 29 页共 39页

四川职业技术学院毕业设计(论文)

wait(30); P2=0xff; flash--; if(flash==0) flash=200; } }

uchar anjian(void) { unsigned scode ,recode; P3=0xf0;

if((P3&0xf0)!=0xf0) {

wait(100);

if((P3&0xf0)!=0xf0) {

scode=0xfe;

while((scode&0x10)!=0) {

P3=scode;

if((P3&0xf0)!=0xf0) {

recode=(P3&0xf0)|0x0f; return ((~scode)+(~recode)); }

else scode=(scode<<1)|0x01; } } } return 0; }

void pan(uchar x) {number=10;

第 30 页共 39页

四川职业技术学院毕业设计(论文)

switch(x) {

case 0x11: number=0; break; //0 case 0x21: number=1; break; //1 case 0x41: number=2; break; //2 case 0x81: number=3; break; //3

case 0x12: number=4; break; //4 case 0x22: number=5; break; //5 case 0x42: number=6; break; //6 case 0x82: number=7; break; //7

case 0x14: number=8; break; //8 case 0x24: number=9; break; //9 case 0x44: flag=1; break;

case 0x18: if(de==0)wei--;

de++; break; case 0x48: if(de==0){led=~led;} case 0x88: flag_18B20=1; break; case 0x28: flag=3; break; de++; break; }

if(x!=0x48&&x!=0x18) de=0; if(wei==0) wei=4; } tiaoshi() {

if(flag==1)

第 31 页共 39页

case 0x84: flag=0; flag_18B20=0; break;