查看DS18b20能不能正常通信,晶振频率是否一致? |
温度固定的意思就是室温变化但是显示不变 |
要测室温,温度的显示应该是随温度的变化而变化的,但是我做的实物不能随温度的变化 |
#include"reg51.h" #include"intrins.h" #defineucharunsignegchar #defineuintunsignedint #defineoutp0 sbitsmg1=out^4; sbitsmg2=out^5; sbitDQ=p3^7; voiddelay5(uchar); voidinit_ds18b20(void); ucharreadbyte(void); voidwritebyte(uchar); ucharretemp(void); voidmain(void) { uchari,temp; delay5(1000); while(1) { temp=retemp(); for(i=0;i<10;i++) { out=(temp/10)&0x0f; smg1=0; smg2=1; delay5(1000); out=(temp%10)&0x0f; smg1=1; smg2=0; delay5(1000); } } } voiddelay5(ucharn) { do { _nop_(); _nop_(); _nop_(); n--; } while(n); } voidinit_ds18b20(void) { ucharx=0; DQ=0; delay5(120); DQ=1; delay5(16); delay5(80); } ucharreadbyte(void) { uchari=0; uchardate=0; for(i=8;i>0;i--) { DQ=0; delay5(1); DQ=1; date>>=1; if(DQ) date|=0x80; delay5(11); } return(date); } voidwritebyte(uchardat) { uchari=0; for(i=8;i>0;i--) { DQ=0; DQ=dat&0x01; delay5(12); DQ=1; dat>>=1; delay5(5); } } ucharretemp(void) { uchara,b,tt; uintt; init_ds18b20(); writebyte(0xcc); writebyte(0x44); init_ds18b20(); writebyte(0xcc); writebyte(0xBE); a=readbye(); b=readbye(); t=b; t<<=8; t=t|a; tt=t*0.0625; return(tt); } |
“单片机程序温度是固定的”是什么意思? 把程序贴上来让人看看。 你贴的截图,想试仿真一下都不行。 |