溫度傳感器java代碼,溫度傳感器程序代碼

溫度傳感器會提供java接口嗎?

java不可能直接調(diào)用傳感器的啊。。。就算是單片機那也有系統(tǒng)的啊。。具體和硬件交互是系統(tǒng)負責的啊。。。

十年的博樂網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應快,48小時及時工作處理。營銷型網(wǎng)站的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整博樂建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“博樂網(wǎng)站設(shè)計”,“博樂網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。

java調(diào)用mac溫度傳感器

234567891011121314151617181920212223242526????import?java.io.BufferedReader;import?java.io.IOException;import?java.io.InputStreamReader;?public?class?ClientSocket?{????public?static?void?main(String[]?args)throws?Exception{????????getString();????}????//獲取本機全部MAC地址????private?static?void?getString()?throws?IOException{????????Process??p?=?Runtime.getRuntime().exec("cmd?/C?ipconfig?/all");????????BufferedReader?br?=?new?BufferedReader(new?InputStreamReader(p.getInputStream()));????????String?str?=?null;????????String?Name_Mac?=?"";????????while((str=br.readLine())!=null){????????????try?{????????????????if(!str.substring(0,?1).equals("?"))????????????????????Name_Mac?+=?str+"??";????????????????else?if(str.indexOf("Physical?Address")!=-1){????????????????????Name_Mac?+=?str.substring(str.indexOf(":")+1)+"\n";????????????????}????????????}?catch?(Exception?e)?{}????????}????????System.out.println(Name_Mac);????}}????

//測試結(jié)果,Mac我必須修改一下,Sorry,另外請封裝返回參數(shù)

Windows?IP?Configuration??Ethernet?adapter?VMware?Network?Adapter?VMnet8:???00-50-56-C0-0X-XX

Ethernet?adapter?VMware?Network?Adapter?VMnet1:???00-50-56-C0-0X-XX

Ethernet?adapter?無線網(wǎng)絡(luò)連接:???74-E5-43-63-D4-XX

用單片機C語言設(shè)計數(shù)字溫度計!求代碼!急急急

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

//DS18B20溫度傳感器輸出顯示,運行本例時,外界溫度將顯示在1602LCD上

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

#include reg52.h

#include intrins.h

#define uchar unsigned char

#define uint unsigned int

#define delayNOP() {_nop_();_nop_();_nop_();_nop_();}

sbit DQ=P2^2;

sbit dula=P2^6; //定義鎖存器鎖存端

sbit wela=P2^7;

sbit rs=P3^5; //定義1602液晶RS端

sbit lcden=P3^4;//定義1602液晶LCDEN端

sbit s1=P3^0; //定義按鍵--功能鍵

sbit s2=P3^1;//定義按鍵--增加鍵

sbit s3=P3^2;//定義按鍵--減小鍵

sbit s4=P3^6;//鬧鐘查看鍵

sbit rd=P3^7;

sbit beep=P2^3; //定義蜂鳴器端

uchar code Temp_Disp_Title[]={" Current Temp : "};

uchar Current_Temp_Display_Buffer[]={" TEMP: "};

uchar code Alarm_Temp[]={"ALARM TEMP Hi Lo"};

uchar Alarm_HI_LO_STR[]={"Hi: Lo: "};

uchar temp_data[2]={0x00,0x00};

uchar temp_alarm[2]={0x00,0x00};

uchar display[5]={0x00,0x00,0x00,0x00,0x00};

uchar display1[3]={0x00,0x00,0x00};

uchar code df_Table[]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};

uchar CurrentT=0;//當前讀取的溫度整數(shù)部分

uchar Temp_Value[]={0x00,0x00};//從DS18B20讀取的溫度值

uchar Display_Digit[]={0,0,0,0}; //待顯示的各溫度數(shù)位

bit DS18B20_IS_OK=1;//傳感器正常標志

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

//延時1

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

void delay1(uint x)

{

uchar i;

while(x--) for(i=0;i200;i++);

}

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

//延時2

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

void Delay(uint x)

{

while(x--);

}

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

//忙檢查

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

void write_com(uchar com)//液晶寫命令函數(shù)

{

rs=0;

lcden=0;

P0=com;

delay1(5);

lcden=1;

delay1(5);

lcden=0;

}

void Write_LCD_Data(uchar date)//液晶寫數(shù)據(jù)函數(shù)

{

rs=1;

lcden=0;

P0=date;

delay1(5);

lcden=1;

delay1(5);

lcden=0;

}

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

//設(shè)置LCD顯示位置

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

void Set_Disp_Pos(uchar Pos)

{

write_com(Pos|0x80);

}

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

//LCD初始化

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

void Initialize_LCD()

{

uchar num;

rd=0; //軟件將矩陣按鍵第4列一端置低用以分解出獨立按鍵

dula=0;//關(guān)閉兩鎖存器鎖存端,防止操作液晶時數(shù)碼管會出亂碼

wela=0;

lcden=0;

write_com(0x38);//初始化1602液晶

write_com(0x0c);

write_com(0x06);

write_com(0x01);

write_com(0x80);//設(shè)置顯示初始坐標

for(num=0;num14;num++)//顯示年月日星期

{

Write_LCD_Data(Temp_Disp_Title[num]);

delay1(5);

}

}

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

//函數(shù)功能:初始化DS18B20

//出口參數(shù):status---DS18B20是否復位成功的標志

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

uchar Init_DS18B20()

{

uchar status; //儲存DS18B20是否存在的標志,status=0,表示存在;status=1,表示不存在

DQ=1;Delay(8); //先將數(shù)據(jù)線拉高 //略微延時約6微秒

DQ=0;Delay(90); //再將數(shù)據(jù)線從高拉低,要求保持480~960us

//略微延時約600微秒 以向DS18B20發(fā)出一持續(xù)480~960us的低電平復位脈沖

DQ=1;Delay(8); //釋放數(shù)據(jù)線(將數(shù)據(jù)線拉高) //延時約30us(釋放總線后需等待15~60us讓DS18B20輸出存在脈沖)

status=DQ;Delay(100); //讓單片機檢測是否輸出了存在脈沖(DQ=0表示存在) //延時足夠長時間,等待存在脈沖輸出完畢

DQ=1; // 將數(shù)據(jù)線拉高

return status; //返回檢測成功標志

}

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

//函數(shù)功能:讀一字節(jié)

//出口參數(shù):dat---讀出的數(shù)據(jù)

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

uchar ReadOneByte()

{

uchar i,dat=0;

DQ=1;_nop_(); // 先將數(shù)據(jù)線拉高 //等待一個機器周期

for (i=0;i8;i++)

{

DQ=0; //單片機從DS18B20讀書據(jù)時,將數(shù)據(jù)線從高拉低即啟動讀時序

dat=1;

_nop_();//等待一個機器周期

DQ=1; //將數(shù)據(jù)線"人為"拉高,為單片機檢測DS18B20的輸出電平作準備

_nop_();_nop_(); //延時約6us,使主機在15us內(nèi)采樣

if (DQ) dat|=0x80; //如果讀到的數(shù)據(jù)是1,則將1存入dat,如果是0則保持原值不變

Delay(30); //延時3us,兩個讀時序之間必須有大于1us的恢復期

DQ=1; // 將數(shù)據(jù)線拉高,為讀下一位數(shù)據(jù)做準備

}

return dat;

}

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

//函數(shù)功能:寫一字節(jié)

//入口參數(shù):dat---待寫入的數(shù)據(jù)

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

void WriteOneByte(uchar dat)

{

uchar i;

for (i=0;i8;i++)

{

DQ=0; //將數(shù)據(jù)線從高拉低時即啟動寫時序

DQ=dat 0x01; //利用與運算取出要寫的某位二進制數(shù)據(jù),

//并將其送到數(shù)據(jù)線上等待DS18B20采樣

Delay(5); //延時約30us,DS18B20在拉低后的約15~60us期間從數(shù)據(jù)線上采樣

DQ=1; //釋放數(shù)據(jù)線

dat=1; //將dat中的各二進制位數(shù)據(jù)右移1位

}

}

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

//函數(shù)功能:讀取溫度值

//出入口參數(shù):無

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

void Read_Temperature()

{

if(Init_DS18B20() == 1) //DS18B20故障

DS18B20_IS_OK=0;

else

{

WriteOneByte(0xCC); // 跳過讀序號列號的操作

WriteOneByte(0x44); // 啟動溫度轉(zhuǎn)換

Init_DS18B20(); //將DS18B20初始化

WriteOneByte(0xCC); //跳過讀序號列號的操作

WriteOneByte(0xBE); //讀取溫度寄存器,前兩個分別是溫度的低位和高位

Temp_Value[0]=ReadOneByte(); //溫度低8位

Temp_Value[1]=ReadOneByte(); //溫度高8位

DS18B20_IS_OK=1;

}

}

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

//函數(shù)功能:在LCD上顯示當前溫度

//入口參數(shù):

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

void Display_Temperature()

{

uchar i;

//延時值與負數(shù)標識

uchar t=150,ng=0;

//高5位全為1(0xF8)則為負數(shù),為負數(shù)時取反加1,并設(shè)置負數(shù)標示

if ((Temp_Value[1] 0xF8)==0xF8)

{

Temp_Value[1]=~Temp_Value[1];

Temp_Value[0]=~Temp_Value[0]+1;

if(Temp_Value[0]==0x00) Temp_Value[1]++; //加1后如果低字節(jié)為00表示有進位,進位位再加到高字節(jié)上

ng=1; //負數(shù)標示置1

}

Display_Digit[0]=df_Table[Temp_Value[0] 0x0F]; //查表得到溫度小數(shù)部分

//獲取溫度整數(shù)部分(高字節(jié)的低3位與低字節(jié)中的高4位,無符號)

CurrentT=((Temp_Value[0] 0xF0)4)|((Temp_Value[1] 0x07)4);

//將整數(shù)部分分解為3位待顯示數(shù)字

Display_Digit[3]=CurrentT/100;//百位 digit[CurrentT/100];

Display_Digit[2]=CurrentT%100/10;//十位

Display_Digit[1]=CurrentT%10;//個位

//刷新LCD顯示緩沖

Current_Temp_Display_Buffer[11]=Display_Digit[0]+'0';//先將'0'轉(zhuǎn)換成整數(shù)48,然后與前面數(shù)字相加,得到相應數(shù)字的ASCII字符

Current_Temp_Display_Buffer[10]='.';

Current_Temp_Display_Buffer[9]=Display_Digit[1]+'0'; //個位

Current_Temp_Display_Buffer[8]=Display_Digit[2]+'0'; //十位

Current_Temp_Display_Buffer[7]=Display_Digit[3]+'0'; //百位

//高位為0時不顯示

if(Display_Digit[3]==0) Current_Temp_Display_Buffer[7]=' ';

//高位為0且次高位為0時,次高位不顯示

if(Display_Digit[2]==0 Display_Digit[3]==0)

Current_Temp_Display_Buffer[8]=' ';

//負數(shù)符號顯示在恰當位置

if(ng)

{

if (Current_Temp_Display_Buffer[8]==' ')

Current_Temp_Display_Buffer[8]='-';

else if(Current_Temp_Display_Buffer[7]==' ')

Current_Temp_Display_Buffer[7]='-';

else

Current_Temp_Display_Buffer[6]='-';

}

//在第一行顯示標題

Set_Disp_Pos(0x00);

for(i=0;i16;i++)

{

Write_LCD_Data(Temp_Disp_Title[i]);

}

Set_Disp_Pos(0x40); //在第二行顯示當前溫度

for(i=0;i16;i++)

{

Write_LCD_Data(Current_Temp_Display_Buffer[i]);

}

//顯示溫度符號

//Set_Disp_Pos(0x4D);Write_LCD_Data(0x00);

Set_Disp_Pos(0x4D);Write_LCD_Data(0xdf);

Set_Disp_Pos(0x4E);Write_LCD_Data('C');

}

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

//函數(shù)功能:主函數(shù)

//入口參數(shù):

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

void main()

{

Initialize_LCD();

Read_Temperature();

Delay(50000);

Delay(50000);

while (1)

{

Read_Temperature();

if (DS18B20_IS_OK) Display_Temperature();

delay1(100);

}

}

溫度傳感器的數(shù)據(jù)是怎樣傳回電腦的?

親,可以RF24L01有增強版的模塊,傳輸距離據(jù)說可達2Km,其51驅(qū)動網(wǎng)上一大把,過程大概是這樣:把讀取的溫度16進制數(shù)存到一個寄存器,把這個寄存器的內(nèi)容發(fā)送給RF24L01,啟動發(fā)送。電腦端也要搞一個單片機,驅(qū)動24L01,當收到信號,會產(chǎn)生中斷,單片機把數(shù)據(jù)讀出來,通過串口傳給PC即可(推薦使用usb轉(zhuǎn)串口的小板子,就幾塊錢,使用很方便,不需要給板子加max232了)。PC串口收到數(shù)據(jù),在串口助手中勾選16進制顯示,就是16進制的溫度了,或者單片機把16進制的溫度轉(zhuǎn)化成字符串形式發(fā)到PC,這樣串口助手不用勾選16進制顯示,直接就能顯示成溫度。

java通過串口接收數(shù)據(jù),不正常。求大神指導

不要使用inputStream.available(),如果我沒有記錯的話,available返回的是沒有被阻斷的字節(jié)數(shù)(已經(jīng)被緩沖的內(nèi)容),可以嘗試read(byte b[])方法,然后通過返回值是否-1來判斷,如下。

int?bytesRead?=?inputStream.read(readBuffer);

while?(bytesRead?!=?-1)?{

readStr?+=?new?String(readBuffer).trim();

bytesRead?=?inputStream.read(readBuffer);

}

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

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

文章題目:溫度傳感器java代碼,溫度傳感器程序代碼
鏈接分享:http://muchs.cn/article10/hcggdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應式網(wǎng)站、面包屑導航、軟件開發(fā)、小程序開發(fā)定制網(wǎng)站、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設(shè)