温度传感器java代码,温度传感器程序代码

温度传感器会提供java接口吗?

java不可能直接调用传感器的啊。。。就算是单片机那也有系统的啊。。具体和硬件交互是系统负责的啊。。。

十年的博乐网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站的优势是能够根据用户设备显示端的尺寸不同,自动调整博乐建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“博乐网站设计”,“博乐网站推广”以来,每个客户项目都认真落实执行。

java调用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);    }}    

//测试结果,Mac我必须修改一下,Sorry,另外请封装返回参数

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 无线网络连接:   74-E5-43-63-D4-XX

用单片机C语言设计数字温度计!求代码!急急急

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

//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;//当前读取的温度整数部分

uchar Temp_Value[]={0x00,0x00};//从DS18B20读取的温度值

uchar Display_Digit[]={0,0,0,0}; //待显示的各温度数位

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)//液晶写命令函数

{

rs=0;

lcden=0;

P0=com;

delay1(5);

lcden=1;

delay1(5);

lcden=0;

}

void Write_LCD_Data(uchar date)//液晶写数据函数

{

rs=1;

lcden=0;

P0=date;

delay1(5);

lcden=1;

delay1(5);

lcden=0;

}

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

//设置LCD显示位置

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

void Set_Disp_Pos(uchar Pos)

{

write_com(Pos|0x80);

}

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

//LCD初始化

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

void Initialize_LCD()

{

uchar num;

rd=0; //软件将矩阵按键第4列一端置低用以分解出独立按键

dula=0;//关闭两锁存器锁存端,防止操作液晶时数码管会出乱码

wela=0;

lcden=0;

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

write_com(0x0c);

write_com(0x06);

write_com(0x01);

write_com(0x80);//设置显示初始坐标

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

{

Write_LCD_Data(Temp_Disp_Title[num]);

delay1(5);

}

}

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

//函数功能:初始化DS18B20

//出口参数:status---DS18B20是否复位成功的标志

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

uchar Init_DS18B20()

{

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

DQ=1;Delay(8); //先将数据线拉高 //略微延时约6微秒

DQ=0;Delay(90); //再将数据线从高拉低,要求保持480~960us

//略微延时约600微秒 以向DS18B20发出一持续480~960us的低电平复位脉冲

DQ=1;Delay(8); //释放数据线(将数据线拉高) //延时约30us(释放总线后需等待15~60us让DS18B20输出存在脉冲)

status=DQ;Delay(100); //让单片机检测是否输出了存在脉冲(DQ=0表示存在) //延时足够长时间,等待存在脉冲输出完毕

DQ=1; // 将数据线拉高

return status; //返回检测成功标志

}

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

//函数功能:读一字节

//出口参数:dat---读出的数据

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

uchar ReadOneByte()

{

uchar i,dat=0;

DQ=1;_nop_(); // 先将数据线拉高 //等待一个机器周期

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

{

DQ=0; //单片机从DS18B20读书据时,将数据线从高拉低即启动读时序

dat=1;

_nop_();//等待一个机器周期

DQ=1; //将数据线"人为"拉高,为单片机检测DS18B20的输出电平作准备

_nop_();_nop_(); //延时约6us,使主机在15us内采样

if (DQ) dat|=0x80; //如果读到的数据是1,则将1存入dat,如果是0则保持原值不变

Delay(30); //延时3us,两个读时序之间必须有大于1us的恢复期

DQ=1; // 将数据线拉高,为读下一位数据做准备

}

return dat;

}

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

//函数功能:写一字节

//入口参数:dat---待写入的数据

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

void WriteOneByte(uchar dat)

{

uchar i;

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

{

DQ=0; //将数据线从高拉低时即启动写时序

DQ=dat 0x01; //利用与运算取出要写的某位二进制数据,

//并将其送到数据线上等待DS18B20采样

Delay(5); //延时约30us,DS18B20在拉低后的约15~60us期间从数据线上采样

DQ=1; //释放数据线

dat=1; //将dat中的各二进制位数据右移1位

}

}

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

//函数功能:读取温度值

//出入口参数:无

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

void Read_Temperature()

{

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

DS18B20_IS_OK=0;

else

{

WriteOneByte(0xCC); // 跳过读序号列号的操作

WriteOneByte(0x44); // 启动温度转换

Init_DS18B20(); //将DS18B20初始化

WriteOneByte(0xCC); //跳过读序号列号的操作

WriteOneByte(0xBE); //读取温度寄存器,前两个分别是温度的低位和高位

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

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

DS18B20_IS_OK=1;

}

}

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

//函数功能:在LCD上显示当前温度

//入口参数:

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

void Display_Temperature()

{

uchar i;

//延时值与负数标识

uchar t=150,ng=0;

//高5位全为1(0xF8)则为负数,为负数时取反加1,并设置负数标示

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后如果低字节为00表示有进位,进位位再加到高字节上

ng=1; //负数标示置1

}

Display_Digit[0]=df_Table[Temp_Value[0] 0x0F]; //查表得到温度小数部分

//获取温度整数部分(高字节的低3位与低字节中的高4位,无符号)

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

//将整数部分分解为3位待显示数字

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'转换成整数48,然后与前面数字相加,得到相应数字的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]=' ';

//负数符号显示在恰当位置

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');

}

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

//函数功能:主函数

//入口参数:

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

void main()

{

Initialize_LCD();

Read_Temperature();

Delay(50000);

Delay(50000);

while (1)

{

Read_Temperature();

if (DS18B20_IS_OK) Display_Temperature();

delay1(100);

}

}

温度传感器的数据是怎样传回电脑的?

亲,可以RF24L01有增强版的模块,传输距离据说可达2Km,其51驱动网上一大把,过程大概是这样:把读取的温度16进制数存到一个寄存器,把这个寄存器的内容发送给RF24L01,启动发送。电脑端也要搞一个单片机,驱动24L01,当收到信号,会产生中断,单片机把数据读出来,通过串口传给PC即可(推荐使用usb转串口的小板子,就几块钱,使用很方便,不需要给板子加max232了)。PC串口收到数据,在串口助手中勾选16进制显示,就是16进制的温度了,或者单片机把16进制的温度转化成字符串形式发到PC,这样串口助手不用勾选16进制显示,直接就能显示成温度。

java通过串口接收数据,不正常。求大神指导

不要使用inputStream.available(),如果我没有记错的话,available返回的是没有被阻断的字节数(已经被缓冲的内容),可以尝试read(byte b[])方法,然后通过返回值是否-1来判断,如下。

int bytesRead = inputStream.read(readBuffer);

while (bytesRead != -1) {

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

bytesRead = inputStream.read(readBuffer);

}

java编程:求温湿度控制程序的源代码,类似的也可以提供,作为参考。谢谢大家

到底是真实的温控、还是模拟的温控 。。。。。。。。。如果是真实的温控,这么大工作的话题,放这不太合适


标题名称:温度传感器java代码,温度传感器程序代码
分享地址:http://scyanting.com/article/hcggdo.html