?? jiang.c
字號:
//***讀取溫度和顯示溫度值主函數(shù)****//
#include <jiang.h>
#include <reg52.h>
#include <dis.h>
unchar data LM75A=0x90;// LM75A 的I2C 地址
unchar data MRD[2]={0};//接收緩沖區(qū)
unint a,b,temp;
float s,t;
unchar shu[7];
unint change_h_d1(unchar a)//把LM75A溫度寄存器11位中低3位轉(zhuǎn)為十進制
{
unchar i,j,k;
unint m;
unint n;
n=0;
a=a&0xe0;
a>>=5;
for(i=0;i<3;i++)
{
m=1;
k=a&0x01;
for(j=i;j>0;j--)
{
m=m*2;
}
n=n+m*k;
a>>=1;
}
return n;
}
unint change_h_d0(unchar a)//把LM75A溫度寄存器11位中高8位轉(zhuǎn)為十進制
{
unchar i,j,k;
unint m;
unint n;
n=0;
for(i=0;i<8;i++)
{
m=1;
k=a&0x01;
for(j=i+3;j>0;j--)
{
m=m*2;
}
n=n+m*k;
a>>=1;
}
return n;
}
void delay(unchar z)
{
unchar x,y;
for(x=z;x>0;x--)
for(y=10;y>0;y--);
}
void main()
{
while(1)
{
IRcvStr(LM75A,0x00,MRD,2);//讀取LM75A 當前溫度值
a=MRD[0];
b=MRD[1];
s=change_h_d0(a)+change_h_d1(b);
t=s/8.0;//換算成實際
temp=1000*t;
shu[0]=temp%10;//取整數(shù)各位值
shu[1]=(temp/10)%10;
shu[2]=(temp/100)%10;
shu[3]=(temp/1000)%10;//個位
shu[4]=(temp/10000)%10;//十位
shu[5]=(temp/100000)%10;//百位
mydisplay(3,shu[1]);
delay(35);
mydisplay(2,shu[2]);
delay(35);
mydisplay(4,10);
delay(35);
mydisplay(5,11);
delay(35);
mydisplay1(1,shu[3]);//顯示帶小數(shù)點的數(shù)值
delay(35);
mydisplay(0,shu[4]);
delay(35);
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -