/*
本程序使用LM75A数字温度传感器对环境温度的测量,显示格式如下0XX.XXC
其中最高位0代表符号位,XX.XX为显示位数,保留两位小数,C为温度单位摄氏度。*/
#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit led1= P1^0;
sbit led2= P1^1;
sbit led3= P1^2;
sbit bell= P1^3;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
sbit SCL= P3^6;
sbit SDA= P3^7;
bit ack;
uchar data LM75A=0x90; // LM75A 的I2C 地址
uchar data temp[2]={0};
uchar s=0;
uchar z;
uchar x;
uchar flag=0;
uchar code table[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};//0~9 uchar code zfs[]={0xfc,0x02};//+/-
uchar code Tab[8]={0,12,25,37,50,62,75,87};
void Start_I2c();
void Stop_I2c();
void SendByte(uchar);
uchar RcvByte();
void Ack_I2c(bit);
void ReadTemp();
void ConvertTemp();
void delay(uint);
void control(uchar,uchar);
void disply(uchar,uchar,uchar); void alert();
void main()
{
P1=0x07;
while(1)
{
ReadTemp();//读取LM75A 当前温度值ConvertTemp();
alert();
disply(s,z,x);
}
}
void alert()
{
if(z>24) flag=1;
else {flag=0;bell=0;}
if(flag!=0) bell=1;
}
void delay(uint i)
{
while(i--) ;
}
void control(uchar con1,uchar con2) {
uchar i,j;
uchar s;
s=con1;
for(i=6;i>0;i--)
{
P1_7=0;delay(1);
P1_5=s%2;
s=s/2;
P1_7=1;delay(1);
}
j=con2;
for(i=8;i>0;i--)
{