新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 基于89C52的DH11 C語言測試程序

基于89C52的DH11 C語言測試程序

作者: 時間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
//單片機 : AT89S52 或 STC89C52RC

// 功能 :串口發(fā)送溫濕度數(shù)據(jù) 波特率 9600

本文引用地址:http://m.butianyuan.cn/article/201611/322631.htm

//單片機教程之DH11的測試程序

#include

#include

typedefunsigned charU8;// defined for unsigned 8-bits integer variable 無符號8位整型變量 */

typedef signed charS8;// defined for signed 8-bits integer variable 有符號8位整型變量 */

typedefunsigned intU16;// defined for unsigned 16-bits integer variable 無符號16位整型變量 */

typedef signed intS16;//defined for signed 16-bits integer variable 有符號16位整型變量 */

typedefunsigned longU32;// defined for unsigned 32-bits integer variable 無符號32位整型變量 */

typedef signed longS32;// defined for signed 32-bits integer variable 有符號32位整型變量 */

typedef floatF32;// single precision floating point variable (32bits) 單精度浮點數(shù)(32位長度)

typedefdoubleF64;// double precision floating point variable (64bits) 雙精度浮點數(shù)(64位長度)

#define uchar unsigned char

#define uint unsigned int

#define Data_0_time 4

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

//----------------IO口定義區(qū)--------------------//

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

sbit P2_0 = P2^0 ; //DH11

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

//----------------定義區(qū)--------------------//

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

U8 U8FLAG,k;

U8 U8count,U8temp;

U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;

U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;

U8 U8comdata;

U8 outdata[5];//定義發(fā)送的字節(jié)數(shù)

U8 indata[5];

U8 count, count_r=0;

U8 str[5]={"RS232"};

U16 U16temp1,U16temp2;

SendData(U8 *a)

{

outdata[0] = a[0];

outdata[1] = a[1];

outdata[2] = a[2];

outdata[3] = a[3];

outdata[4] = a[4];

count = 1;

SBUF=outdata[0];

}

voidDelay(U16 j)

{ U8 i;

for(;j>0;j--)

{

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

}

}

voidDelay_10us(void)

{

U8 i;

i--;

i--;

i--;

i--;

i--;

i--;

}

voidCOM(void)

{

U8 i;

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

{

U8FLAG=2;

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

P2_1=0 ;//T

P2_1=1 ;//T

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

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

Delay_10us();

Delay_10us();

// Delay_10us();

U8temp=0;

if(P2_0)U8temp=1;

U8FLAG=2;

while((P2_0)&&U8FLAG++);

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

P2_1=0 ;//T

P2_1=1 ;//T

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

//超時則跳出for循環(huán)

if(U8FLAG==1)break;

//判斷數(shù)據(jù)位是0還是1

// 如果高電平高過預定0高電平值則數(shù)據(jù)位為 1

U8comdata<=1;

U8comdata|=U8temp;//0

}//rof

}

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

//-----濕度讀取子程序 ------------

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

//----以下變量均為全局變量--------

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

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

//----濕度高8位== U8RH_data_H-----

//----濕度低8位== U8RH_data_L-----

//----校驗 8位 == U8checkdata-----

//----調(diào)用相關(guān)子程序如下----------

//---- Delay();, Delay_10us();,COM();

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

voidRH(void)

{

//主機拉低18ms

P2_0=0;

Delay(180);

P2_0=1;

//總線由上拉電阻拉高 主機延時20us

Delay_10us();

Delay_10us();

Delay_10us();

Delay_10us();

//主機設(shè)為輸入 判斷從機響應信號

P2_0=1;


上一頁 1 2 下一頁

關(guān)鍵詞: 89C52DH11C語言測

評論


技術(shù)專區(qū)

關(guān)閉