基于STC89C52的温湿度测量电路的设计 毕业论文(8)

2019-04-23 14:59

基于单片机温湿度测量电路的设计

typedef signed int S16; /* defined for signed 16-bits integer variable

有符号16位整型变量 */

typedef unsigned long U32; /* defined for unsigned 32-bits integer variable

无符号32位整型变量 */

typedef signed long S32; /* defined for signed 32-bits integer variable

有符号32位整型变量 */

typedef float F32; /* single precision floating point variable (32bits) 单精度浮点数(32位长度) */

typedef double F64; /* double precision floating point variable (64bits) 双精度浮点数(64位长度) */ //

#define uchar unsigned char #define uint unsigned int

#define Data_0_time 4 //相当于用Data_0_time代替4.

//----------------------------------------------//

//----------------IO口定义区--------------------// //----------------------------------------------// sbit DQ = P3^0 ;

//----------------------------------------------//

//----------------定义区--------------------// //----------------------------------------------// U8 U8FLAG,k; U8 U8count,U8temp;

U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;

29

基于单片机温湿度测量电路的设计

U8

U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;

U8 U8comdata;

U8 outdata[5]; //定义发送的字节数 U8 indata[5]; U8 count, count_r=0; U16 U16temp1,U16temp2; //以上为变量的定义. void COM(void);

void Delay2(U16 j) //延时函数 { U8 i;

for(;j>0;j--) { }

for(i=0;i<27;i++);

}

void Delay_10us(void) //延时10us的延时函数. { U8 i; i--; i--; i--;

i--; i--; i--; }

30

基于单片机温湿度测量电路的设计

void COM(void) {

U8 i;

for(i=0;i<8;i++) 中.

} }

//-------------------------------- //-----湿度读取子程序 ------------ //-------------------------------- //----以下变量均为全局变量--------

//----温度高8位== U8T_data_H------

{

U8FLAG=2;

while((!DQ)&&U8FLAG++);

Delay_10us();

Delay_10us();

Delay_10us(); U8temp=0;

if(DQ)U8temp=1;

U8FLAG=2;

while((DQ)&&U8FLAG++);

//超时则跳出for循环 if(U8FLAG==1)break;

//判断数据位是0还是1

// 如果高电平高过预定0高电平值则数据位为 1 U8comdata<<=1; //左移1位

U8comdata|=U8temp; //U8comdata与U8temp相或,结果保存在U8comdata

//----温度低8位== U8T_data_L------

31

基于单片机温湿度测量电路的设计

//----湿度高8位== U8RH_data_H----- //----湿度低8位== U8RH_data_L----- //----校验 8位 == U8checkdata----- //----调用相关子程序如下---------- //---- Delay();, Delay_10us();,COM(); //--------------------------------

void RH(void)

{

//主机拉低18ms

DQ=0;

Delay2(180); DQ=1;

//总线由上拉电阻拉高 主机延时20us Delay_10us(); Delay_10us(); Delay_10us(); Delay_10us();

//主机设为输入 判断从机响应信号 DQ=1;

//判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行 if(!DQ) { U8FLAG=2;

//判断从机是否发出 80us 的低电平响应信号是否结束 while((!DQ)&&U8FLAG++); U8FLAG=2;

//判断从机是否发出 80us 的高电平,如发出则进入数据接收状态 while((DQ)&&U8FLAG++); //数据接收状态

//T !

COM(); //调用COM函数

32

基于单片机温湿度测量电路的设计

U8RH_data_H_temp=U8comdata;

COM();

U8RH_data_L_temp=U8comdata;

COM();

U8T_data_H_temp=U8comdata; COM();

U8T_data_L_temp=U8comdata; COM();

U8checkdata_temp=U8comdata; DQ=1; //数据校验

U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);

if(U8temp==U8checkdata_temp) {

U8RH_data_H=U8RH_data_H_temp; U8RH_data_L=U8RH_data_L_temp;

U8T_data_H=U8T_data_H_temp;

U8T_data_L=U8T_data_L_temp; U8checkdata=U8checkdata_temp; }//对数据作出相应的处理与运算. } }

33


基于STC89C52的温湿度测量电路的设计 毕业论文(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:专业文献(2.26)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: