當前位置:首頁 » 操作系統 » d3源碼

d3源碼

發布時間: 2023-08-14 09:33:34

❶ 你很會寫指標,我急求四度空間指標源碼,請附上用法,非常感謝

***
用法主圖上有解盤
集成資訊全線主圖加四度空間解盤主圖(大智慧)
INPUT:M(10,3,250,3);均線:(MA(CLOSE,M) * 1),Colorred,linethick2;早晨之星:=REF(CLOSE,2)/REF(OPEN,2)<0.95 AND REF(OPEN,1)<ref(close,2) and="" abs(ref(open,1)-ref(close,1))="" ref(close,1)1.05 AND CLOSE>REF(CLOSE,2);
黃昏之星:=REF(CLOSE,2)/REF(OPEN,2)>1.03 AND REF(OPEN,1)>REF(CLOSE,2) AND ABS(REF(OPEN,1)-REF(CLOSE,1))/REF(CLOSE,1)<0.02 AND CLOSE/OPEN<0.97 AND CLOSE
長十字:=CLOSE=OPEN AND HIGH/LOW >1.03;
垂死十字:=CLOSE=OPEN AND CLOSE=LOW AND CLOSE<>HIGH;
早晨十字星:=REF(CLOSE,2)/REF(OPEN,2)<0.95 AND REF(OPEN,1)<ref(close,2) and="" ref(open,1)="REF(CLOSE,1)" and
CLOSE/OPEN>1.05 AND CLOSE>REF(CLOSE,2);
黃昏十字星:=REF(CLOSE,2)/REF(OPEN,2)>1.05 AND REF(OPEN,1)>REF(CLOSE,2) AND REF(OPEN,1)=REF(CLOSE,1) AND
CLOSE/OPEN<0.95 AND CLOSE
射擊之星:=MIN(OPEN,CLOSE)=LOW AND HIGH-LOW>3*(MAX(OPEN,CLOSE)-LOW) AND CLOSE>MA(CLOSE,5);
倒轉錘頭:=MIN(OPEN,CLOSE)=LOW AND HIGH-LOW>3*(MAX(OPEN,CLOSE)-LOW) AND CLOSE
錘頭:=HIGH = MAX(OPEN,CLOSE) AND HIGH-LOW>3*(HIGH-MIN(OPEN,CLOSE)) AND CLOSE
吊頸:=HIGH = MAX(OPEN,CLOSE) AND HIGH-LOW>3*(HIGH-MIN(OPEN,CLOSE)) AND CLOSE>MA(CLOSE,5);
穿頭破腳:=(REF(CLOSE,1)/REF(OPEN,1)>1.03 AND CLOSE/OPEN<0.96 AND CLOSEREF(CLOSE,1))
OR (REF(CLOSE,1)/REF(OPEN,1)<0.97 AND CLOSE/OPEN>1.04 AND CLOSE>REF(OPEN,1) AND OPEN
烏雲蓋頂:=REF(CLOSE,1)/REF(OPEN,1)>1.03 AND CLOSE/OPEN<0.97 AND OPEN>REF(CLOSE,1) AND CLOSE
曙光初現:=REF(CLOSE,1)/REF(OPEN,1)<0.97 AND CLOSE/OPEN>1.03 AND OPENREF(CLOSE,1);
身懷六甲:=ABS(REF(CLOSE,1)-REF(OPEN,1))/REF(CLOSE,1)>0.04 AND ABS(CLOSE-OPEN)/CLOSE<0.005 AND
MAX(CLOSE,OPEN)MIN(REF(CLOSE,1),REF(OPEN,1));
十字胎:=ABS(REF(CLOSE,1)-REF(OPEN,1))/REF(CLOSE,1)>0.04 AND CLOSE=OPEN AND
CLOSE < MAX(REF(CLOSE,1),REF(OPEN,1)) AND CLOSE > MIN(REF(CLOSE,1),REF(OPEN,1));
平頂:=ABS(HIGH-REF(HIGH,1))/HIGH<0.001;
平底:=(ABS(LOW-REF(LOW,1))/LOW<0.001 AND ABS(REF(LOW,1)-REF(LOW,2))/REF(LOW,1)<=0.001);
大陽燭:=CLOSE/OPEN>1.05 AND HIGH/LOW<close open+0.018;
三個白武士:=REF(CLOSE,2)>REF(OPEN,2) AND REF(CLOSE,1)>REF(OPEN,1) AND CLOSE>OPEN
AND REF(CLOSE,1)>REF(CLOSE,2) AND CLOSE>REF(CLOSE,1);
雙飛烏鴉:=REF(CLOSE,1)<ref(open,1) and="" close<open="" close="" open
孕育線:=REF(CLOSE,2)>REF(OPEN,2) AND (REF(CLOSE,2)-REF(OPEN,2))/REF(OPEN,2)>=2/100 AND REF(OPEN,1)>=REF(CLOSE,1) AND
(REF(OPEN,1)-REF(CLOSE,1))/REF(CLOSE,1)<=2/100 AND REF(OPEN,1)<=REF(CLOSE,2) AND REF(CLOSE,1)>=REF(OPEN,2) AND C>=OPEN AND
(CLOSE-OPEN)/OPEN>=2/100 AND CLOSE>=REF(OPEN,1) AND OPEN<=REF(CLOSE,1) AND (MAX(CLOSE,REF(C,2))-MIN(CLOSE,REF(CLOSE,2)))/MIN(CLOSE,REF(CLOSE,2))<=1/100;
多方炮:=REF(CLOSE,2)>REF(OPEN,2) AND REF(CLOSE,1)OPEN;
出水芙蓉:=(OPEN<ema(c,20) or="" open<ema(c,40)="" openMAX(EMA(C,20),MAX(EMA(C,40),EMA(C,60))))
AND (V/MA(V,30)>1.2 AND C/REF(C,1)>1.049);
上升三部曲:=REF(CLOSE,4)/REF(OPEN,4)>1.03 AND REF(CLOSE,3)<ref(open,3) and="" ref(close,2)<ref(open,2)="" ref(close,1)<ref(open,1)="" and
REF(LOW,4)<ref(low,3) and="" ref(low,4)<ref(low,2)="" ref(low,4)REF(HIGH,3) AND REF(HIGH,4)>REF(HIGH,2) AND
REF(HIGH,4)>REF(HIGH,1) AND CLOSE/OPEN>1.03 AND CLOSE>REF(CLOSE,4);
下跌三部曲:= REF(CLOSE,4)/REF(OPEN,4)<0.97 AND REF(CLOSE,3)>REF(OPEN,3) AND REF(CLOSE,2)>REF(OPEN,2) AND REF(CLOSE,1)>REF(OPEN,1) AND REF(LOW,4)<ref(low,3) and
REF(LOW,4)<ref(low,2) and="" ref(low,4)REF(HIGH,3) AND REF(HIGH,4)>REF(HIGH,2) AND REF(HIGH,4)>REF(HIGH,1) AND CLOSE/OPEN<0.97 AND
CLOSE
跳空缺口:=HIGHREF(HIGH,1);
三隻烏鴉:=REF(CLOSE,2)<ref(open,2) and="" ref(close,1)<ref(open,1)="" close<open="" ref(close,1)<ref(close,2)="" close
光腳陰線:=LOW=CLOSE AND HIGH<>LOW;
光頭陽線:=HIGH=CLOSE AND HIGH<>LOW;
分離:=OPEN=REF(OPEN,1) AND (CLOSE-OPEN)*(REF(CLOSE,1)-REF(OPEN,1))<0;
長下影:=(MIN(CLOSE,OPEN)-LOW)/(HIGH-LOW)>0.667;
長上影:=(HIGH-MAX(CLOSE,OPEN))/(HIGH-LOW)>0.667;
十字星:=CLOSE=OPEN AND HIGH<>LOW;
大陰燭:=OPEN/CLOSE > 1.05 AND HIGH/LOW < OPEN/CLOSE+0.018;
好友反攻:=(REF(CLOSE,1)OPEN AND ABS(CLOSE-REF(CLOSE,1))/CLOSE<0.002)
OR (REF(CLOSE,1)>REF(OPEN,1) AND CLOSE<open and="" abs(close-ref(close,1))="" close
傾盆大雨:=REF(C,1)/REF(O,1)>=1.03 AND OREF(O,1) AND C
解盤:='【解盤】'+
IFs(傾盆大雨,'★傾盆大雨,見頂信號;','')+
IFs(大陰燭,'★大陰燭,後市向淡,發生逆轉;','')+
IFs(好友反攻,'★好友反攻,底部反轉;','')+
IFs(跳空缺口,'★跳空缺口,注意向上還是向下跳空;','')+
IFs(光腳陰線,'★光腳陰線,下跌信號;','')+
IFs(光頭陽線,'★光頭陽線,後市看漲;','')+
IFs(三隻烏鴉,'★三隻烏鴉,可能見頂回落;','')+
IFs(分離,'★分離,注意看漲分離和看跌分離;','')+
IFs(長下影,'★長下影,持續下跌後出現,有可能止跌回升;在升勢末期出現,須多加留意;','')+
IFs(長上影,'★長上影,表明行情上檔壓力沉重,升勢受阻;','')+
IFs(下跌三部曲,'★下跌三部曲,下跌信號;','')+
IFs(上升三部曲,'★上升三部曲,上漲信號;','')+
IFs(早晨之星,'★早晨之星,見底回升;','')+
IFs(黃昏之星,'★黃昏之星,見頂回落;','')+
IFs(十字星,'★十字星,有轉向意味,注意股價位置在頂部還是底部;','')+
IFs(長十字,'★長十字,注意在頂部還是底部;','')+
IFs(垂死十字,'★垂死十字,下跌信號;','')+
IFs(早晨十字星,'★早晨十字星,上漲信號,見底回升;','')+
IFs(黃昏十字星,'★黃昏十字星,下跌信號,見頂回落;','')+
IFs(射擊之星,'★射擊之星,可能見頂回落,可靠性低;','')+
IFs(倒轉錘頭,'★倒轉錘頭,可能見底回升;','')+
IFs(錘頭,'★錘頭,可能見底回升,如有量配合,信號強烈;','')+
IFs(吊頸,'★吊頸,上升行情中見頂回落,頂部出現,見頂信號;','')+
IFs(平頂,'★平頂,溫和的反轉;','')+
IFs(穿頭破腳,'★穿頭破腳,頂部出現,見頂回落信號;','')+
IFs(烏雲蓋頂,'★烏雲蓋頂,見頂回落信號;','')+
IFs(曙光初現,'★曙光初現,後市見底回升;','')+
IFs(身懷六甲,'★身懷六甲,出現在底部,是見底回升信號;出現在頂部,是見頂回落信號;','')+
IFs(十字胎,'★十字胎;','')+
IFs(平底,'★平底,溫和的反轉;','')+
IFs(大陽燭,'★大陽燭,看漲;','')+
IFs(三個白武士,'★三個白武士,每日收盤價上移,表示可能見底回升;','')+
IFs(雙飛烏鴉,'★雙飛烏鴉,行情將見頂回落;','')+
IFs(孕育線,'★孕育線,注意股價位置;','')+
IFs(多方炮,'★多方炮,在底部出現有上漲意味,在中間出現有可能是上漲中繼,頂部出現是復合見頂信號;','')+
IFs(出水芙蓉,'★出水芙蓉,見底回升;','');
DRAWTEXTABS(0,0,解盤);
MA5:MA(C,5),COLORF00FF0;
MA21:MA(C,21),COLORE66878;
MA30:MA(C,30),COLORYELLOW; MA55:MA(CLOSE,55),LINETHICK1,ColorGREEN;
半年線:MA(C,120),COLOR399C7F,POINTDOT;
年線:MA(C,240),COLOR000999,POINTDOT;X1:=(C+L+H)/3;
X2:=EMA(X1,6);
X3:=EMA(X2,5);
DRAWICON(CROSS(X2,X3),L*0.98,7);
DRAWICON(CROSS(X3,X2),H*1.02,8);
DRAWGBKLAST(C>0,STRIP(RGB(10,10,50),RGB(50,10,10),0));
均價:=(3*C+H+L+O)/6;
VAR1:=(8*均價+7*REF(均價,1)+6*REF(均價,2)+5*REF(均價,3)+
4*REF(均價,4)+3*REF(均價,5)+2*REF(均價,6)+REF(均價,8))/36;
VAR2:=(LLV(VAR1,2)+LLV(VAR1,4)+LLV(VAR1,6))/3;
SZ1:=REF(VAR1,1)=REF(VAR2,1) AND VAR1>VAR2 AND CLOSE>VAR1;
SZ2:=VAR1>VAR2 AND VAR1>REF(VAR1,1) AND VAR2>REF(VAR2,1)
AND H/VAR1<1.1 AND L>VAR2 AND CLOSE>VAR1;
SZ3:=VAR1>VAR2 AND VAR1>REF(VAR1,1) AND VAR2>=REF(VAR2,1) AND H/VAR1>1.1;
SZ4:=VAR1>VAR2 AND VAR1>REF(VAR1,1) AND VAR2>REF(VAR2,1)
AND CLOSE>VAR2 AND CLOSE
SZ5:=(VAR1>VAR2 AND VAR2>REF(VAR2,1) AND VAR1<>REF(VAR1,1)
AND CLOSEVAR2 AND VAR1
AND VAR2<ref(var2,1) and="" close
SZ6:=REF(VAR1,1)>REF(VAR2,1) AND VAR1=VAR2 AND CLOSE
XD1:=VAR1=VAR2 AND CLOSE<var2 or="" (var1<ref(var1,1)="" and="" var2
AND REF(VAR1,1)=REF(VAR2,1) AND CLOSE
XD2:=VAR1=VAR2 AND CLOSE>VAR1;
SAT:=(AMOUNT/C)/(HHV(AMOUNT,20)/HHV(C,20));
量能飽和度:=IF(SAT>1,1,SAT)*100;
IF BARSTATUS=2 AND SZ1 THEN BEGIN
DRAWTEXTABS(390,25,'調整結束短線介入'),LINETHICK2,COLORRED;
END
ELSE
IF BARSTATUS=2 AND SZ2 THEN BEGIN
DRAWTEXTABS(390,25,'上升通道走勢良好'),LINETHICK2,COLORRED;
END
ELSE
IF BARSTATUS=2 AND SZ3 THEN BEGIN
DRAWTEXTABS(390,25,'股價偏離注意調整'),LINETHICK2,COLORRED;
END
ELSE
IF BARSTATUS=2 AND SZ4 THEN BEGIN
DRAWTEXTABS(390,25,'上升通道調整洗盤'),LINETHICK2,COLORGREEN;
END
ELSE
IF BARSTATUS=2 AND SZ5 THEN BEGIN
DRAWTEXTABS(390,25,'轉向特徵注意離場'),LINETHICK2,COLORGREEN;
END
ELSE
IF BARSTATUS=2 AND SZ6 THEN BEGIN
DRAWTEXTABS(390,25,'通道改變堅決離場'),LINETHICK2,COLORGREEN;
END
ELSE
IF BARSTATUS=2 AND XD1 THEN BEGIN
DRAWTEXTABS(390,25,'下跌通道只宜觀望'),LINETHICK2,COLORGREEN;
END
ELSE
IF BARSTATUS=2 AND XD2 THEN BEGIN
DRAWTEXTABS(390,25,'短期底部准備進入'),LINETHICK2,COLORYELLOW;
END;
;a:="LTFunc5@FORLT2";
s1:="LTFunc5@LT_S1";
hs:="LTFunc5@LT_HS";
ls:="LTFunc5@LT_LS";
p1:="LTFunc5@LT_P1";
upp:="LTFunc5@LT_UPP";
udd:="LTFunc5@LT_UDD";
{hs;ls;hhs;lls;us;ds;s1;p1;p0;upp;udd};
買入:p1=1 and ref(p1,1)=0,LineThick0,Precis0,ColorRed;
d1:=ema(abs("ddx.ddx"),60);
d2:=max("ddx.ddx"/d1+7.5,7.5);
d3:=min("ddx.ddx"/d1,10);
fb:=if(s1=0,hs,ls);
tr0:=ifs(p1=1,'明日收盤價<'+numtostrn(udd,2)+',出現S點\n','若明日收盤價> '+numtostrn(upp,2)+',出現B點\n');
tr1:=ifs(s1=1,'明日收盤價<'+numtostrn(ls,2)+',短線賣出機會','若明日收盤價> '+numtostrn(hs,2)+'短線買入機會');
tr2:=ifs(p1=1,ifs(cross(p1,0),'B點','持股'),ifs(cross(1,p1),'S點','持幣'));
tr3:=ifs(s1=0,'向下,','向上,');
tr4:='3.能量級別:'+numtostrn(d3,1)+'級';
bs:=''+datestr(date)+'買賣點決策系統提示\n'+'1.BS點:'+tr2+','+tr0+'2.短線:'+tr3+tr1+'\n'+tr4;
drawflagtext(1,fb,bs);
STICKLINE(p1=1 and c>=o and o<>0,c,o,d2,0),color5454ff;
STICKLINE(p1=1 and c>=o and o<>0,c,o,7.5,0),colorblack;
STICKLINE(p1=1 and c>=o and o<>0,c,c,7.5,0),color5454ff;
STICKLINE(p1=1 and c>=o and o<>0,o,o,7.5,0),color5454ff;
STICKLINE(p1=1 and c>=o and o<>0,o,c,7.5,1),color5454ff;
STICKLINE(p1=1 and c<=o,o,c,7.5,1),color5454ff;
STICKLINE(p1=1 and c<=o,l,c,0.5,1),color5454ff;
STICKLINE(p1=1 and c<=o,h,o,0.5,1),color5454ff;
STICKLINE((p1<>1 or barscount(c)<3) and c>=o,c,o,7.5,1),colorffff54;
STICKLINE((p1<>1 or barscount(c)<3) and c>=o,c,h,0.5,1),colorffff54;
STICKLINE((p1<>1 or barscount(c)<3) and c>=o,l,o,0.5,1),colorffff54;
drawbmp(p1=1 and ref(p1,1)=0,l,'buy1.bmp'),align1,valign0;
drawbmp(p1=0 and ref(p1,1)=1,h,'sell1.bmp'),align1,valign2;
drawbmp(s1=1 and ref(s1,1)=0 and (p1+ref(p1,1))<>1,l,'bs.bmp'),align1,valign0;
drawbmp(s1=0 and ref(s1,1)=1 and (p1+ref(p1,1))<>1,h,'ss.bmp'),align1,valign2;閃:EMA(c+(h- l)*0.618,3),Color0099FF,LINETHICK0; 進:EMA((o+h+l)/3,4),COLORCYAN,LINETHICK0;
預測明日買點:=EMA((o+h+l)/3,4)+((h+l)/2-ref((o+h+l)/3,3))/4;
DRAWTEXTREL(800,950,'測今日低點:'+NUMTOSTRN(ref(預測明日買點,1),2 )),ColorGREEN;
預測明日賣點:=EMA(c+(h-l)*0.618,3)+(EMA(c+(h-l)*0.618,3)-進)*0.618;
DRAWTEXTREL(580,950,'測今日高點:'+NUMTOSTRN(ref(預測明日賣點,1),2 )),Colorred;gj:=if(c=INDEXC,(INDEXC+INDEXh+INDEXl+INDEXO)/4,AMOUNT/(v+0.01)/100);
明日阻力:=l+(gj-l)+(c-l);

❷ 嵌入式溫濕度感測器C語言代碼求幫忙注釋

#include "ioCC2430.h" //包含頭文件,相應的板子以及感測器一些信息

#include "hal.h"

#include <math.h>

//#include <intrins.h>

#include <stdio.h>


typedef union //定義聯合體,

{

unsigned int i;

float f;

} value; //定義聯合體類型名稱為value


#define noACK 0

#define ACK 1

#define STATUS_REG_W 0x06 //0x06 = 0000 0110

#define STATUS_REG_R 0x07 //0x07 = 0000 0111

#define MEASURE_TEMP 0x03 //0x03 = 0000 0011

#define MEASURE_HUMI 0x05 //0x05 = 0000 0101

#define RESET 0x1e //0x1e = 0001 1110

#define SDA P1_6 //定義SDA代表的是P1_6腳

#define SCL P1_7

#define begin P2_0

unsigned char d1,d2,d3,d4,d5,d6,d7; //定義無符號字元型變數


void Wait(unsigned int ms) //定義wait函數,主要用於軟體循環,延時作用

{

unsigned char g,k;

while(ms)

{

for(g = 0;g <= 167; g++)

{

for(k = 0;k <= 48; k++);

}

ms--;

}

}


void QWait() //1us的延時

{

asm("NOP"); //加入匯編操作語句,空操作,主要用於機器周期執行

asm("NOP");

asm("NOP");

asm("NOP");

asm("NOP");

asm("NOP");

asm("NOP");

asm("NOP");

asm("NOP");

asm("NOP");

asm("NOP");

}


void initUART(void) //初始化單片機的串口

{

IO_PER_LOC_USART0_AT_PORT0_PIN2345(); //具體函數的定義與用法,你得參考頭文件中的程序代碼了

IO_DIR_PORT_PIN(1, 6, IO_OUT);

IO_DIR_PORT_PIN(1, 7, IO_OUT);

//IO_IMODE_PORT_PIN(1, 6, IO_IMODE_TRI);

//IO_IMODE_PORT_PIN(1, 7, IO_IMODE_TRI);

IO_DIR_PORT_PIN(2, 0, IO_OUT);

IO_FUNC_PORT_PIN(2, 0, IO_FUNC_GIO);

//SET_MAIN_CLOCK_SOURCE(RC);

SET_MAIN_CLOCK_SOURCE(CRYSTAL);

UART_SETUP(0, 115200, HIGH_STOP); //設置傳輸數據的波特率115200

UTX0IF = 1;

U0CSR |= 0XC7; //U0CSR = U0CSR | 0x1010 0111 (進行位或操作)

IEN0 |= 0x84;

SDA = 1;

SCL = 0;

}


int putchar (int c) //定義輸入字元函數,給的參數是一個整型的數

{

if (c == ' ') //判斷參數c的值是否和' '的值相等

{

while (!UTX0IF); //執行的時候UTX0IF的值是0,此處不是很理解?

UTX0IF = 0; //給UTX0IF賦0

U0DBUF = 0x0d; //U0DBUF賦值0x0d = 0000 1011

}

while (!UTX0IF);

UTX0IF = 0;

return (U0DBUF = c); //如果c的值不是' '也就是換行符的時候,將c的值傳遞到U0DBUF寄存器中

}


char s_write_byte(unsigned char value) //定義寫位元組函數(8位)

{

unsigned char i,error = 0;

for (i = 0x80;i > 0;i /= 2) //i 賦初始值0x80 = 128, 執行判斷是i > 0,執行語句是i = i / 2; 即i = 128,64,32,16,8,4,2,1,0.5(0),8位

{

if (i & value)

SDA = 1;

else

SDA = 0;

SCL = 1; //此時SCL埠處,也就是p1_7引腳處是高電平

QWait(); //因為寫入需要時間,所以程序之中加入下面幾條語句

QWait();

QWait();

QWait();

QWait();

SCL = 0; //使能p1_7眼角處低電平,使的數據寫入(具體需要看單片機控制晶元的手冊

asm("NOP");

asm("NOP");

}

SDA = 1;

SCL = 1;

asm("NOP");

error = SDA;

QWait();

QWait();

QWait();

SDA = 1;

SCL = 0;

return error;

}


char s_read_byte(unsigned char ack) //讀取數據,按照位元組位的順序讀取(8位)128 = 1000 0000 ,64 = 0100 0000, 32 = 0010 0000 ,16 = 0001 0000, 8 = 0000 1000, 4 = 0000 0100 , 2 = 0000 0010, 1 = 0000 0001

{

unsigned char i,val = 0;

SDA= 1;

for(i = 0x80;i > 0;i /= 2) //同上

{

SCL = 1;

if (SDA) //判斷SDA處是否有高電平

val = (val | i); //進行或操作

else

val = (val | 0x00);

SCL = 0;

QWait();

QWait();

QWait();

QWait();

QWait();

}

SDA = !ack;

SCL = 1;

QWait();

QWait();

QWait();

QWait();

QWait();

SCL = 0;

SDA = 1;


return val; //返回讀取到的數據,一個位元組,八位

}


void s_transstart(void) //傳輸使能函數,就是給控制器引腳處相應電平,使對應模塊工作

{

SDA = 1;

SCL = 0;

QWait();

QWait();

SCL = 1;

QWait();

QWait();

SDA = 0;

QWait();

QWait();

SCL = 0;

QWait();

QWait();

QWait();

QWait();

QWait();

SCL = 1;

QWait();

QWait();

SDA = 1;

QWait();

QWait();

SCL = 0;

QWait();

QWait();

}


void s_connectionreset(void) //復位操作函數

{

unsigned char i;

SDA = 1;

SCL = 0;

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

{

SCL = 1;

QWait();

QWait();

SCL = 0;

QWait();

QWait();

}

s_transstart(); //調用開始函數

}


char s_measure(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode) //函數,主要統計傳輸的數據個數

{

unsigned er = 0;

unsigned int i,j;

s_transstart();

switch(mode)

{

case 3 :er += s_write_byte(3);

break;

case 5 :er += s_write_byte(5);

break;

default :break;

}

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

{

for(j = 0;j < 65535;j++)

{if(SDA == 0)

{

break;

}

}

if(SDA == 0)

{

break;

}


}

if(SDA)

{

er += 1;

}

*(p_value) = s_read_byte(ACK);

*(p_value + 1) = s_read_byte(ACK);

*p_checksum = s_read_byte(noACK);

d6 = *(p_value);

d7=*(p_value + 1);

return er;

}


void calc_sth11(float *p_humidity ,float *p_temperature)//計算溫度值

{

const float C1 =- 4.0;

const float C2 =+ 0.0405;

const float C3 =- 0.0000028;

const float T1 =+ 0.01;

const float T2 =+ 0.00008;

float rh =* p_humidity;

float t =* p_temperature;

float rh_lin;

float rh_true;

float t_C;

t_C = t * 0.01 - 44.0 ;

rh_lin = C3 * rh * rh + C2 * rh + C1;

rh_true = (t * 0.01 - 40.0 - 25) * (T1 + T2 * rh) + rh_lin;

if(rh_true > 100)

{

rh_true = 100;

}

if(rh_true < 0.1)

{

rh_true = 0.1;

}

*p_temperature = t_C;

*p_humidity = rh_true;

}


void main() //主函數

{

value humi_val,temp_val; //聲明兩個聯合體變數

unsigned char error,checksum; //聲明兩個無符號的字元型變數

initUART(); //初始化串口

P1INP |= 0xC0; //初始化P1引腳 , 0xC0 = 1010 0000 ,使P1_7和P1_5引腳為1

begin = 0;

s_connectionreset();

while(1) //無限循環操作

{

error = 0;

error += s_measure((unsigned char*) &humi_val.i,&checksum,5); //讀入串口的數據進行溫度的計算

d1 = d6;

d2 = d7;

error += s_measure((unsigned char*) &temp_val.i,&checksum,3);

d3 = d6;

d4 = d7;

if(error != 0)

s_connectionreset();

else

{

humi_val.f = (float)humi_val.i;

temp_val.f = (float)temp_val.i;

humi_val.f = d1 * 256 + d2;

temp_val.f = d3 * 256 + d4;

calc_sth11(&humi_val.f,&temp_val.f);

printf("temp:%5.1fC humi:%5.1f%% ",temp_val.f,humi_val.f);

// printf("t1:%x h1:%x ",d1,d2);

//printf("t2:%x h2:%x ",d3,d4);

}

Wait(150);

}

}


熱點內容
備忘錄手繪在哪裡打開安卓 發布:2025-03-11 03:36:03 瀏覽:845
chrome的緩存文件夾 發布:2025-03-11 03:35:49 瀏覽:766
u3dandroid 發布:2025-03-11 03:22:41 瀏覽:357
ftp如何在網站上顯示圖片 發布:2025-03-11 03:17:41 瀏覽:931
不懂加工怎麼看數控車床配置 發布:2025-03-11 02:54:33 瀏覽:597
埋點系統存儲方案 發布:2025-03-11 02:41:20 瀏覽:443
編程要很久 發布:2025-03-11 02:41:10 瀏覽:196
筆記本電腦播放mp4時提醒伺服器運行失敗 發布:2025-03-11 02:40:32 瀏覽:441
吉利星瑞尊貴版配置有哪些 發布:2025-03-11 02:34:33 瀏覽:890
ecs中怎麼配置slb 發布:2025-03-11 02:33:17 瀏覽:720