用C语言对STC89C52芯片编程,实现对DS18B20采集温度并显示出来,求程序

如题所述

#include <reg52.H>

extern GetTemp(); //声明引用外部函数
extern unsigned int idata Temperature; // 声明引用外部变量
void delay(unsigned int i);

//else IO
sbit LS138A=P2^2; //管脚定义
sbit LS138B=P2^3;
sbit LS138C=P2^4;

//此表为 LED 的字模, 共阴数码管 0-9 -
unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
unsigned long LedOut[5],LedNumVal;

void system_Ini()
{
TMOD|= 0x11;
TH1 = 0xD8; //10
TL1 = 0xF0;
IE = 0x8A;
TR1 = 1;

}

main()
{ unsigned char i;
system_Ini();
while(1)
{
GetTemp();

/********以下将读18b20的数据送到LED数码管显示*************/
LedNumVal=Temperature; //把实际温度送到LedNumVal变量中
LedOut[0]=Disp_Tab[LedNumVal%10000/1000];
LedOut[1]=Disp_Tab[LedNumVal%1000/100];
LedOut[2]=Disp_Tab[LedNumVal%100/10];//十位
LedOut[3]=Disp_Tab[LedNumVal%10]; //个位

for(i=0; i<4; i++)
{
P0 = LedOut[i] ;

switch(i)
{ //138译码
case 0:LS138A=0; LS138B=0; LS138C=0; break;
case 1:LS138A=1; LS138B=0; LS138C=0; break;
case 2:LS138A=0; LS138B=1; LS138C=0; break;
case 3:LS138A=1; LS138B=1; LS138C=0; break;
}

delay(100);
}

P0 = 0;

}
}

//延时程序
void delay(unsigned int i)
{
char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--);
}追问

貌似没有DB18B20采集温度的模块

温馨提示:答案为网友推荐,仅供参考