±ÏÒµÉè¼Æ »ùÓÚPROTEUSµÄÎÂʪ¶È²âÁ¿ÏµÍ³Éè¼Æ ÁªÏµ¿Í·þ

·¢²¼Ê±¼ä : ÐÇÆÚÒ» ÎÄÕ±ÏÒµÉè¼Æ »ùÓÚPROTEUSµÄÎÂʪ¶È²âÁ¿ÏµÍ³Éè¼Æ¸üÐÂÍê±Ï¿ªÊ¼ÔĶÁ70d6b2d476a20029bd642d58

ºÓÄϳǽ¨Ñ§Ôº±¾¿Æ±ÏÒµÉè¼Æ£¨ÂÛÎÄ£© ¸½Â¼A ϵͳԴ³ÌÐò

{

for( j =0;j<50;j++ ); } }

void Speaker(void) //±¨¾¯³ÌÐò {

unsigned int i; for(i=0;i<80;i++ ) { speaker=~speaker; Delay_xMs(2); } }

void doing_temp(SHT_dat *s) {float xianshi_temp; setwen_h=80.00; setwen_l=20.00;

xianshi_temp=s->temperature;

if((xianshi_tempsetwen_l)) { cold=0;hot=0;speek=0;speaker=0;ganzao=0;jiashi=0;} if(xianshi_temp>setwen_h)

{ cold=1;hot=0;speek=1;Speaker();Delay_xMs(200);speaker=0;} if(xianshi_temp

{ cold=0;hot=1;speek=1;Speaker();Delay_xMs(200);speaker=0;} }

void doing_humi(SHT_dat *s) {float xianshi_humi; setshi_h=90.00; setshi_l=30.00;

xianshi_humi=s->humidity;

if((xianshi_humisetshi_l)) { cold=0;hot=0;speek=0;speaker=0;ganzao=0;jiashi=0;} if(xianshi_humi>setshi_h)

{ ganzao=1;jiashi=0;speek=1;Speaker();Delay_xMs(200);speaker=0;} if(xianshi_humi

41

ºÓÄϳǽ¨Ñ§Ôº±¾¿Æ±ÏÒµÉè¼Æ£¨ÂÛÎÄ£© ¸½Â¼A ϵͳԴ³ÌÐò

{ ganzao=0;jiashi=1;speek=1;Speaker();Delay_xMs(200);speaker=0;} } #endif

SHT11.h

#ifndef

#define _SHT11_h_

#define uchar unsigned char #define uint unsigned int #define NOP() _nop_() #define TEMP 0 #define HUMI 1

sbit DQ=P2^7; //¶Ë¿Ú¶¨Òå sbit SCK=P2^6; typedef struct {

float temperature; float humidity; float crc_temp; float crc_humi; uchar num_temp[5]; uchar num_humi[5]; }SHT_dat;

/*========================================= Æô¶¯º¯Êý

=========================================*/ void init_SHT() { DQ=1; SCK=0; NOP(); SCK=1; NOP(); DQ=0;

42

ºÓÄϳǽ¨Ñ§Ôº±¾¿Æ±ÏÒµÉè¼Æ£¨ÂÛÎÄ£© ¸½Â¼A ϵͳԴ³ÌÐò

NOP(); SCK=0; NOP(); NOP(); NOP(); SCK=1; NOP(); DQ=1; NOP(); SCK=0; }

/*========================================= ×Ö½Ú´«Ëͺ¯Êý

=========================================*/ uchar write_byte(uchar value) {

uchar i,error=0;

for(i=0x80;i>0;i/=2) //¸ßλÏÈ´«ËÍ {

if(i & value)DQ=1; //Ñ­»·ÏàÓ룬½á¹û¼´ÎªÒª·¢Ë͵Äλ else DQ=0; SCK=1; NOP(); NOP(); NOP(); SCK=0; }

DQ=1; //ÊÍ·Å×ÜÏß SCK=1;

if(DQ==1) error=1; //¼ì²éÓ¦´ð£¬È·ÈÏͨѶÕý³£ SCK=0;

return error; //error£½1£¬Í¨Ñ¶ÓÐÎó }

/*=========================================

43

ºÓÄϳǽ¨Ñ§Ôº±¾¿Æ±ÏÒµÉè¼Æ£¨ÂÛÎÄ£© ¸½Â¼A ϵͳԴ³ÌÐò

¶ÁÊý¾Ýº¯Êý

=========================================*/ uchar read_byte(uchar dat) {

uchar i,val=0; DQ=1;

for(i=0x80;i>0;i/=2) { SCK=1;

if(DQ) val=(val | i); SCK=0; } DQ=dat; SCK=1; NOP(); NOP(); NOP(); SCK=0; DQ=1;

return val; }

/*========================================= ¸´Î»º¯Êý

=========================================*/ void reset_SHT() { uchar i; DQ=1; SCK=0;

for(i=0;i<9;i++) //DATA±£³Ö¸ßµçƽ£¬SCKʱÖÓ³ö·¢9´Î¸´Î» { SCK=1; NOP(); SCK=0; }

init_SHT();

44