»ùÓÚ51µ¥Æ¬»úµÄÁ¸²ÖÎÂʪ¶È¼ì²âϵͳ±ÏÒµÉè¼Æ ÏÂÔØ±¾ÎÄ

ÑĮ̀´óѧ±ÏÒµÂÛÎÄ£¨Éè¼Æ£©

#define jump_ROM 0xCC #define start 0x44

#define read_EEROM 0xBE

sbit DQ = P2^3; //DS18B20Êý¾Ý¿Ú

unsigned char TMPH,TMPL;

/******************************************************************** * Ãû³Æ : delay()

* ¹¦ÄÜ : ÑÓʱ,ÑÓʱʱ¼ä´ó¸ÅΪ140US¡£ * ÊäÈë : ÎÞ * Êä³ö : ÎÞ

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

void delay_1() {

int i,j;

for(i=0; i<=10; i++) for(j=0; j<=2; j++) ; }

/******************************************************************** * Ãû³Æ : delay() * ¹¦ÄÜ : ÑÓʱº¯Êý * ÊäÈë : ÎÞ * Êä³ö : ÎÞ

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

void delay(uint N) {

int i;

for(i=0; i

/******************************************************************** * Ãû³Æ : Delay_1ms()

* ¹¦ÄÜ : ÑÓʱ×Ó³ÌÐò£¬ÑÓʱʱ¼äΪ 1ms * x * ÊäÈë : x (ÑÓʱһºÁÃëµÄ¸öÊý) * Êä³ö : ÎÞ

*********************************************************************

21

ÑĮ̀´óѧ±ÏÒµÂÛÎÄ£¨Éè¼Æ£©

**/

void Delay_1ms(uint i)//1msÑÓʱ {

uchar x,j;

for(j=0;j

for(x=0;x<=148;x++); }

/******************************************************************** * Ãû³Æ : Reset()

* ¹¦ÄÜ : ¸´Î»DS18B20 * ÊäÈë : ÎÞ * Êä³ö : ÎÞ

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

uchar Reset(void) {

uchar deceive_ready; DQ = 0; delay(29); DQ = 1; delay(3);

deceive_ready = DQ; delay(25);

return(deceive_ready); }

/******************************************************************** * Ãû³Æ : read_bit()

* ¹¦ÄÜ : ´ÓDS18B20¶ÁÒ»¸öλֵ * ÊäÈë : ÎÞ

* Êä³ö : ´ÓDS18B20¶Á³öµÄÒ»¸öλֵ

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

uchar read_bit(void) {

uchar i; DQ = 0; DQ = 1;

for(i=0; i<3; i++); return(DQ); }

/******************************************************************** * Ãû³Æ : write_bit()

22

ÑĮ̀´óѧ±ÏÒµÂÛÎÄ£¨Éè¼Æ£©

* ¹¦ÄÜ : ÏòDS18B20дһλ

* ÊäÈë : bitval£¨Òª¶ÔDS18B20дÈëµÄλֵ£© * Êä³ö : ÎÞ

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

void write_bit(uchar bitval) {

DQ=0;if(bitval==1) DQ=1;

delay(5); DQ=1; }

/******************************************************************** * Ãû³Æ : read_byte()

* ¹¦ÄÜ : ´ÓDS18B20¶ÁÒ»¸ö×Ö½Ú * ÊäÈë : ÎÞ

* Êä³ö : ´ÓDS18B20¶Áµ½µÄÖµ

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

uchar read_byte(void) {

uchar i,m,receive_data; m = 1;

receive_data = 0; for(i=0; i<8; i++) {

if(read_bit()) {

receive_data = receive_data + (m << i); }

delay(6); }

return(receive_data); }

/******************************************************************** * Ãû³Æ : write_byte()

* ¹¦ÄÜ : ÏòDS18B20дһ¸ö×Ö½Ú

* ÊäÈë : val£¨Òª¶ÔDS18B20дÈëµÄÃüÁîÖµ£© * Êä³ö : ÎÞ

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

void write_byte(uchar val)

23

ÑĮ̀´óѧ±ÏÒµÂÛÎÄ£¨Éè¼Æ£©

{

uchar i,temp;

for(i=0; i<8; i++) {

temp = val >> i; temp = temp & 0x01; write_bit(temp); delay(5); } }

/******************************************************************** * Ãû³Æ : Main() * ¹¦ÄÜ : Ö÷º¯Êý * ÊäÈë : ÎÞ * Êä³ö : ÎÞ

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

void main() {

uchar lcd_string[2][33]={0}; uint temp,tmep1; long delay_time = 5; init_adc(); L1602_init(); while(1) {

Reset();

write_byte(jump_ROM); write_byte(start); Reset();

write_byte(jump_ROM); write_byte(read_EEROM); TMPL = read_byte(); TMPH = read_byte();

temp = TMPL / 16 + TMPH * 16;

lcd_string[0][0] = temp/10 + 0x30; //if (lcd_string[0][0]>=1)

//L1602_string(1,1,\ lcd_string[0][1] = temp + 0x30; if (temp > 30) P3 &= ~(0x01 << 2); else P3 |= (0x01 << 2);

if (temp < 27) P3 &= ~(0x01 << 3);

24