當前位置:首頁 » 操作系統 » 溫濕度源碼

溫濕度源碼

發布時間: 2023-05-14 19:27:30

Ⅰ VC 已知溫度和濕度,求露點溫度的 vc 計算源碼

首先,濕度表示空氣中粗備實際的水汽壓與當時氣溫下的飽和水汽壓之比。
露點(或霜點)溫度:指空氣在水汽含量和氣壓都不改變的條件下,冷卻到飽和時的溫度。
當空氣中水汽已達到飽和時,氣溫與露點溫度相同;當水汽未達到飽和時,氣溫一定高於岩顫毀露點溫度。
RH:相對濕度(用露點溫度表示)
e:飽和條件下溫度的蒸汽壓力
es:濕度對應的飽和水蒸氣壓
rh=e/es×100%
其中關於飽和調價下的溫度到壓力以及洞拿濕度到氣壓力的轉換有相關軟體,這里就不發了

剩下的問題就計算器做除法,相信你沒問題吧!

Ⅱ txt文件轉換xml 求源碼 C/C++ 或者java 均可

樣本格式呈現cmd info cmd info這樣的連續間灶尺隔。希望背後的應用情況也嚴格保持同樣的格式。
不希望出現"樣本數據"未能"完全體現所有情況",可能導致代碼不能准確發揮。
在格式和卜辯吵樣本數據完全一致的情況下,可以
import java.io.FileReader;
import java.io.LineNumberReader;
import java.io.PrintWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
try {
LineNumberReader in=new LineNumberReader(new FileReader("3333.txt"));//輸入文件
PrintWriter o=new PrintWriter("output.xml");
o.println("<?xml version=\"1.0\" encoding=\"UTF8\" >");
o.println("<data>");
Pattern p_light=Pattern.compile("^\"info \\$LIGH\\d+(\\d{3})\"\\s*$");
Pattern p_tehu=Pattern.compile("^\"info \\$TEHU\\d+\\|(.*?)\\|(.*?)\\|\"\\s*$");
String line;
for(int l=0; (line=in.readLine())!=null; l++){
switch(l%4){
case 0:{
o.println("\t<info>");
}break;
case 1:{
Matcher m=p_light.matcher(line);
if(m.find()){
o.println("\t\t<光照>"+m.group(1)+"</光照>");
}else throw new Exception("光照格式不正確");
}break;
case 3:{
Matcher m=p_tehu.matcher(line);
if(m.find()){
o.println("\t\t<溫度>"+m.group(1)+"</溫度>");
o.println("\t\t<濕度>"+m.group(2)+"</濕度>");
o.println("\t</info>");
}else throw new Exception("溫濕格式不正確型侍");
}break;
}
}
o.println("</data>");
in.close();
o.close();
} catch (Exception e) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, e);
}
}
}

======
輸出output.xml內容
<?xml version="1.0" encoding="UTF8" >
<data>
<info>
<光照>166</光照>
<溫度>31.4</溫度>
<濕度>74.4</濕度>
</info>
<info>
<光照>167</光照>
<溫度>30.7</溫度>
<濕度>55.7</濕度>
</info>
</data>

Ⅲ 基於STC51單片機控制的溫濕度及關照強度和CO2通過RS232的電腦VB界面顯示的下位機C程序

建議 去 我的領地 5d6d 的冊鬧褲 proteus 論壇看看

那裡有很州簡多 單片機模擬實例彎基,包括模擬圖 和 源碼
搜 5d6d 和 proteus 2個關鍵詞

Ⅳ java編程:求溫濕度控製程序的源代碼,類似的也可以提供,作為參考。謝謝大家

到底是真實的溫控、還是模擬的溫控 。。。。。。。。。如果是真實的溫控,這么大工作的話題,放這不太合適

Ⅳ 嵌入式溫濕度感測器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-05-15 08:18:52 瀏覽:372
工商密碼器是什麼 發布:2025-05-15 08:18:50 瀏覽:750
c語言自考 發布:2025-05-15 07:52:42 瀏覽:501
壓縮的玉 發布:2025-05-15 07:51:22 瀏覽:790
android的控制項 發布:2025-05-15 07:50:36 瀏覽:553
南崗法院伺服器ip地址 發布:2025-05-15 07:46:02 瀏覽:288
實況如何退出賬號安卓 發布:2025-05-15 07:45:56 瀏覽:919
深入編譯器 發布:2025-05-15 07:41:35 瀏覽:879
電信手機號服務密碼怎麼查 發布:2025-05-15 07:40:10 瀏覽:614
python全局變數文件 發布:2025-05-15 07:35:06 瀏覽:955