当前位置:首页 > 毕业设计 基于PROTEUS的温湿度测量系统设计
河南城建学院本科毕业设计(论文) 附录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_temp
{ 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_humi { 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
共分享92篇相关文档