You are on page 1of 8

Bi hm nay chng ta s i tm hiu chip o nhit ds18b20 .

I c im:

Cc c im k thut ca cm bin DS18B20 c th k ra mt cch tm tt nh sau: S dng giao din mt dy nn ch cn c mt chn ra truyn thng. C th o nhit trong khong -55 -> +125 oC.Vi khong nhit l -10C to +85C th chnh xc 0.5C.C chc nng cnh bo nhit vc qua gi tr cho trc. in p s dng : 3 5.5 V,c th cu hnh m ha nhiu t 9 12 bit s bit cng ln th chnh xc cao hn.Thi gian chuyn i nhit ti a l 750ms cho m ha 12 bit Dng tiu th ti ch ngh cc nh. Mi cm bin c mt m nh danh duy nht 64 bit cha trong b nh ROM trn chip (on chip), gi tr nh phn c khc bng tia laze. Nu cu hnh cho DS18B20 theo 9,10,11,12 bit th ta c chnh xc tng ng l : 0.5C , 0.25C ,0.125C, 0.0625C.Theo mc nh ca nh sn xut nu chng ta khng cu hnh ch chuyn i th n s t cu hnh l 12 bit. Khi bt u chuyn i nhit th chn DQ s c ko xung mc thp v khi chuyn i xong th mc cao.Nh vy ta s cn c vo hin tng ny xc nh khi no chuyn i xong nhit .

II.Cc tp lnh ca ds18b20

READ ROM (33h) Cho php c ra 8 byte m khc bng laser trn ROM, bao gm: 8 bit m nh tn linh kin (10h), 48 bit s xut xng, 8 bit kim tra CRC. Lnh ny ch dng khi trn bus c 1 cm bin DS1820, nu khng s xy ra xung t trn bus do tt c cc thit b t cng p ng. - MATCH ROM (55h) Lnh ny c gi i cng vi 64 bit ROM tip theo, cho php b iu khin bus chn ra ch mt cm bin DS1820 c th khi trn bus c nhiu cm bin DS1820 cng ni vo. Ch c DS1820 no c 64 bit trn ROM trung khp vi chui 64 bit va c gi ti mi p ng li cc lnh v b nh tip theo. Cn cc cm bin DS1820 c 64 bit ROM khng trng khp s tip tc ch mt xung reset. Lnh ny c s dng c trong trng hp c mt cm bin mt dy, c trong trng hp c nhiu cm bin mt dy. - SKIP ROM (CCh)

Lnh ny cho php thit b iu khin truy nhp thng n cc lnh b nh ca DS1820 m khng cn gi chui m 64 bit ROM. Nh vy s tit kim c thi gian ch i nhng ch mang hiu qu khi trn b ch c mt cm bin. - SEARCH ROM (F0h) Lnh ny cho php b iu khin bus c th d tm c s lng thnh vin t ang c u vo bus v cc gi tr c th trong 64 bit ROM ca chng bng mt chu trnh d tm. - ALARM SEARCH (ECh) Tin trnh ca lnh ny ging ht nh lnh Search ROM, nhng cm bin DS1820 ch p ng lnh ny khi xut hin iu kin cnh bo trong php o nhit cui cng. iu kin cnh bo y c nh ngha l gi tr nhit o c ln hn gi tr TH v nh hn gi tr TL l hai gi tr nhit cao nht v nhit thp nht c t trn thanh ghi trong b nh ca cm bin. Sau khi thit b ch (thng l mt vi iu khin) s dng cc lnh ROM nh a ch cho cc cm bin mt dy ang c u vo bus, thit b ch s a ra cc lnh chc nng DS1820. Bng cc lnh chc nng thit b ch c th c ra v ghi vo b nh nhp (scratchpath) ca cm bin DS1820. khi to qu trnh chuyn i gi tr nhit o c v xc nh ch cung cp in p ngun. Cc lnh chc nng c th c m t ngn gn nh sau: - WRITE SCRATCHPAD (4Eh) Lnh ny cho php ghi 2 byte d liu vo b nh nhp ca DS1820. Byte u tin c ghi vo thanh ghi TH (byte 2 ca b nh nhp) cn byte th hai c ghi vo thanh ghi TL (byte 3 ca b nh nhp). D liu truyn theo trnh t u tin l bit c ngha nht v k tip l nhng bit c ngha gim dn. C hai byte ny phi c ghi trc khi thit b ch xut ra mt xung reset hoc khi c d liu khc xut hin. - READ SCRATCHPAD (BEh) Lnh ny cho php thit b ch c ni dung b nh nhp. Qu trnh c bt u t bit c ngha nhy ca byte 0 v tip tc cho n byte rh 9 (byte 8 CRC). Thit b ch c th xut ra mt xung reset lm dng qu trnh c bt k lc no nu nh ch c mt phn ca d liu trn b nh nhp cn c c. - COPYSCRATCHPAD (48h) Lnh ny copy ni dung ca hai thanh ghi TH v TL (byte 2 v byte 3) vo b nh EEPROM. Nu cm bin c s dng trong ch d cp ngun l bt u vic o. - CONVERT T (44h) Lnh ny khi ng mt qu trnh o v chuyn i gi tr nhit thnh s (nh phn). Sau khi chuyn i gi tr kt qu o nhit c lu tr trn thanh ghi nhit 2 byte trong b nh nhp Thi gian chuyn i khng qu 200 ms,

trong thi gian ang chuyn i nu thc hin lnh c th cc gi tr c ra u bng 0. - READ POWER SUPPLY (B4h) Mt lnh c tip sau lnh ny s cho bit DS1820 ang s dng ch cp ngun nh th no, gi tr c c bng 0 nu cp ngun bng chnh ng dn d liu v bng 1 nu cp ngun qua mt ng dn ring.
III.ng dng o nhit hin th led 7.

Code c DS18b20 void Init_DS18B20(void) { unsigned char x=0; DQ = 1; delay_18B20(8); DQ = 0; delay_18B20(80); DQ = 1; delay_18B20(14); x=DQ;

delay_18B20(20); } unsigned char ReadOneChar(void) { unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i) { DQ = 0; dat>>=1; DQ = 1; if(DQ) dat|=080; delay_18B20(4); } return(dat); } void WriteOneChar(unsigned char dat) { unsigned char i=0; for (i=8; i>0; i) { DQ = 0; DQ = dat&001; delay_18B20(5); DQ = 1; dat>>=1; } } void ReadTemp(void) { unsigned char a=0; unsigned char b=0; unsigned char t=0; Init_DS18B20(); WriteOneChar(0xCC); WriteOneChar(044); delay_18B20(100); Init_DS18B20(); WriteOneChar(0xCC); WriteOneChar(0xBE); delay_18B20(100);

a=ReadOneChar(); b=ReadOneChar(); nhiet_thuc=b<<4; nhiet_thuc+=(a&0xf0)>>4;


Cho hi v giao tip gia DS18B20 v 89C51???????
Em mi hc k thut vi x l thi!Nhng thy bt lm n Mi Che T ng,trong c phn giao tip 89C51 vi DS18B20,hin th nhit ln LED 7 on,em c datasheet ca n ri,qui nh v thi gian reset,presence,write/read qu kh khn,em ko th hiu ht??????Em tm c on code ny trn mng,nhng cha hiu,code th chy OK,nhng thy thi gian reset,presence,write/read ko hp l vi datasheet?????C anh ch no bit th ch gip em vi!..V lm sao ly c 12bit ca n ra hin th????Xin anh ch tr gip.hichic Em chn thnh cm n! dq bit p2.7 gnd bit p2.6 dem equ r2 ;@@@@@@@@@@@@@@@@@@@@@ org 0000h jmp CHUONG_TRINH_CHINH write_time_slot: clr dq nop nop mov dq, c mov r5, #30 lcall delay setb dq nop nop ret read_time_slot: clr dq nop nop setb dq nop nop nop nop nop nop nop nop mov c, dq mov r5,#50 lcall delay ret reset_ds1820: clr dq

mov r5,#255 lcall delay setb dq mov r5,#255 lcall delay ret write_byte: mov dem,#8 write_lai: rrc a lcall write_time_slot djnz dem, write_lai setb dq mov r5,#50 lcall delay ret read_byte: mov dem,#8 read_lai: lcall read_time_slot rrc a djnz dem, read_lai mov r5,#50 lcall delay ret delay: djnz r5,$ ret delay_long: mov r6,#0ffh delay_lai: lcall delay djnz r6, delay_lai ret CHUONG_TRINH_CHINH: setb dq clr gnd again: lcall reset_ds1820 mov a,#0cch ; SKIP ROM (CCh) nhp thng n cc lnh b nh ca DS1820 lcall write_byte mov a,#44h ; CONVERT T khi ng mt qu trnh o v chuyn i gi tr nhit lcall write_byte lcall reset_ds1820 mov a,#0cch ; SKIP ROM (CCh) nhp thng n cc lnh b nh ca DS1820 lcall write_byte mov a,#0beh ; READ SCRATCHPAD cho php thit b ch c ni dung b nh nhp lcall write_byte lcall read_byte mov p0,a lcall reset_ds1820 lcall delay_long

jmp again end

You might also like