89C51单片机温度传感器(C语言版).docx
文本预览下载声明
#include reg51.h
#include math.h
#include intrins.h
#define uchar unsigned char
bit chushihua (void); //DS18B20初始化
uchar du (void); //DS18B20读函数
void xie (uchar m); //DS18B20写函数
void delay1 (uchar m); //延时1 ms
void delayd (uchar m); //延时6 us
void xianshi (void); //显示函数
void bj (void);
void sxian (void);
uchar gewei,shiwei,fuhao;
void delay750 (void);
sbit wei1=P2^0;
sbit wei2=P2^1;
sbit wei3=P2^2;
sbit wei4=P2^3;
sbit sw1=P1^0;
sbit sw2=P1^1;
sbit sw3=P1^2;
sbit sw4=P1^3;
sbit dq=P1^4;
sbit fmq=P1^5;
uchar cishu,i,j;
uchar code nshuma[13]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0xc6};
uchar code yshuma[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
main ()
{
uchar gao,di,wendu;
SP=0x5f;
TMOD=0x01;
ET0=1;EA=1;TR0=1;
TL0=(65536-16584)%256;
TH0=(65536-16584)/256;
cishu=25;i=0;j=0;
while (1) //读取温度显示
{
if (sw4==0) //设置温度报警值
{
while (1)
{
TR0=0;
sxian ();
if (sw1==0)
{
delay1 (3);
if (sw1==0) {cishu++;sxian ();}
}
if (sw2==0)
{
delay1 (3);
if (sw2==0) {cishu--;sxian ();}
}
i=cishu/10;
j=cishu%10;
if (sw3==0) break;
}
TR0=1;
}
if (chushihua ()) continue;
xie (0xcc);
xie (0x44);
delay750 ();
if (chushihua ()) continue;
xie (0xcc);
xie (0xbe);
di=du();
gao=du();
if (chushihua ()) continue;
di=di 0xf0;
gao=gao 0x0f;
wendu=(gao4) | (di4);
fuhao=11;
if (wendu 0x80)
{
wendu=cabs (wendu);
fuhao=10;
}
gewei=wendu%10;
shiwei=wendu/10;
if (wendu=cishu) bj();
}
}
//------------------------------------------------------------
//****************************子函数**************************
//------------------------------------------------------------
void delay750 (void) //延时750 ms
{
uchar i,j,k;
for (i=0;i4;i++)
for (j=0;j250;j++)
for (k=0;k250;k++) ;
}
void delay1 (uchar m) //延时1 ms
{
uch
显示全部