write_Data(DispBuf[3]);//第一行,第九个位置
write_Data(DispBuf[4]);//第一行,第十个位置
//write_Data(DispBuf[5]);//第一行,第十一个位置
//write_Data(DispBuf[6]);//第一行,第十二个位置
write_Data(0x00);//第一行,第十三个位置显示温度符号
}
void Timer1() interrupt 3//TR1
{
//TR1=0;
}
//P1M0=0x08;//P1.3高阻
/*
void RT_DJ()
{
D_J=0;
R_100K=0;
P1M0=0x18;//P1.3,P1.4高阻
P1M1=0x18;//P1.3,P1.4高阻
TH1=0x00;
TL1=0x00;
P1M0=0x48;//P1.3,P1.6高阻
P1M1=0x48;//P1.3,P1.6高阻
R_100K=1;
TR1=1;
while(!D_J);
TR1=0;
aa=TH1;
aa=aa<<8;
aa|=TL1;
Time_R=aa;
temp=aa;
}*/
void ADC_Conversion()//ADC开始转
{
ADC_CONTR=0x87;
delay(1);
ADC_CONTR=0x8f;
delay(1);
//while((ADC_CONTR==0x8f));
ADC_CONTR=0x87;
delay(1);
//temp=ADC_DATA;//高8位
}
void main()
{
//delay1(5);//程序1次延时时间为 19.53us
//P1M1=0x80;
//P1M0=0x80;
///sbit RT=P1^3;//外接NTC
//sbit R_100K=P1^4;//
//sbit D_J=P1^6;//检测
uchar i;
cc=0x3d;
dd=30;
//goto lk;
init();
Temperature_symbol();//写入温度符号
while(1)
{
DB18B20_init();//DB18B20复位
write_DB18B20(0xcc);//写DB18B20;0xcc 跳过 ROM 指令
write_DB18B20(0x44);//写DB18B20;0x44 启动温度转换指令
delay(1000);//延时1秒
DB18B20_init();//DB18B20复位
write_DB18B20(0xcc);//写DB18B20;0xcc 跳过 ROM 指令
write_DB18B20(0xbe);//写DB18B20;0xbe 读温度指令
Temperature=read_DB18B20();//读 DB18B20 温度,读出的温度在 Temperature
Negative();//温度为零度以下时,将变换温度,否则不变
TEMP_1=Temperature*0.0625*10000;//转换成 十进制(*10000,表示,显示到小数点后4位:0.0000)
write_Data_String1();//显示温度
//RT_DJ();
for(i=0;i<10;i++)
{
ADC_Conversion();
bb[i]=ADC_DATA;//高8位;
}
Time_RT=bb[0]+bb[1]+bb[2]+bb[3]+bb[4]+bb[5]+bb[6]+bb[7]+bb[8]+bb[9];
ee=Time_RT/10;
//lk: temp=0x46;
//if(ee==cc)
//{
// temp5=30;
//}
if(ee>cc)
{
for(i=0;i<94;i++)
{
cc=cc+1;
dd=dd+0.5;
if(ee==cc)
{
temp5=dd*10;
i=93;
}
}
}
if(ee<cc)
{
for(i=0;i<30;i++)
{
cc=cc-1;
dd=dd-0.5;
if(ee==cc)
{
temp5=dd*10;
i=29;
}
}
}
write_Data_String();
delay(100);
}
}
上一页 [1] [2]
本文关键字:程序 温度计 51单片机,单片机-工控设备 - 51单片机