java不可能直接调用传感器的啊...就算是单片机那也有系统的啊..具体和硬件交互是系统负责的啊...
//测试结果,Mac我必须修改一下,Sorry,另外请封装返回参数
//------------------------------------------------------------------
#include intrins.h
#define uchar unsigned char
#define uint unsigned int
#define delayNOP() {_nop_();_nop_();_nop_();_nop_();}
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 CurrentT=0;//当前读取的温度整数部分
uchar Display_Digit[]={0,0,0,0}; //待显示的各温度数位
//-------------------------------------
//延时1
void delay1(uint x)
{
uchar i;
}
void Delay(uint x)
while(x--);
//------------------------------------
//忙检查
void write_com(uchar com)//液晶写命令函数
rs=0;
lcden=0;
P0=com;
lcden=1;
void Write_LCD_Data(uchar date)//液晶写数据函数
rs=1;
P0=date;
//-----------------------------
//设置LCD显示位置
//---------------------------------
void Set_Disp_Pos(uchar Pos)
//LCD初始化
void Initialize_LCD()
uchar num;
dula=0;//关闭两锁存器锁存端,防止操作液晶时数码管会出乱码
wela=0;
write_com(0x0c);
write_com(0x01);
Write_LCD_Data(Temp_Disp_Title[num]);
status=DQ;Delay(100); //让单片机检测是否输出了存在脉冲(DQ=0表示存在) //延时足够长时间,等待存在脉冲输出完毕
DQ=1; // 将数据线拉高
return status; //返回检测成功标志
//函数功能:读一字节
//出口参数:dat---读出的数据
uchar ReadOneByte()
uchar i,dat=0;
DQ=1;_nop_(); // 先将数据线拉高 //等待一个机器周期
dat=1;
_nop_();//等待一个机器周期
DQ=1; // 将数据线拉高,为读下一位数据做准备
return dat;
//函数功能:写一字节
//入口参数:dat---待写入的数据
void WriteOneByte(uchar dat)
DQ=0; //将数据线从高拉低时即启动写时序
DQ=dat 0x01; //利用与运算取出要写的某位二进制数据,
DQ=1; //释放数据线
dat=1; //将dat中的各二进制位数据右移1位
//函数功能:读取温度值
//出入口参数:无
void Read_Temperature()
else
WriteOneByte(0xCC); // 跳过读序号列号的操作
WriteOneByte(0xCC); //跳过读序号列号的操作
WriteOneByte(0xBE); //读取温度寄存器,前两个分别是温度的低位和高位
//函数功能:在LCD上显示当前温度
//入口参数:
void Display_Temperature()
//延时值与负数标识
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]; //查表得到温度小数部分
Display_Digit[1]=CurrentT;//个位
//刷新LCD显示缓冲
Current_Temp_Display_Buffer[10]='.';
//高位为0时不显示
//高位为0且次高位为0时,次高位不显示
//负数符号显示在恰当位置
if(ng)
//在第一行显示标题
Set_Disp_Pos(0x00);
Write_LCD_Data(Temp_Disp_Title[i]);
Write_LCD_Data(Current_Temp_Display_Buffer[i]);
//显示温度符号
//函数功能:主函数
void main()
Initialize_LCD();
Read_Temperature();
while (1)
delay1(100);
不要使用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代码相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!