📄 xianshi.c
字号:
#include "reg51.h"
typedef unsigned char uchar;
typedef unsigned int uint;
sbit DQ=P0^0;
sbit P0_1=P0^1;
uchar data0,sign;
void delay(int delay_time)
{int i=0;
for(;i<delay_time;i++);
}
uchar IC_reset(void)
{
uchar presence;
DQ=0;
delay(29);
DQ=1;
delay(3);
presence=DQ;
delay(25);
return(presence);
}
uchar read_bit(void)
{
uchar i;
DQ=0;
DQ=1;
for(i=0;i<3;i++);
return(DQ);
}
void write_bit(char bitval)
{
DQ=0;
if(bitval==1) DQ=1;
delay(5);
DQ=1;
}
uchar read_byte(void)
{
uchar i;
uchar value=0;
for(i=0;i<8;i++)
{
if(read_bit()) value|=0x01<<i;
delay(6);
}
return value;
}
void write_byte(char val)
{
uchar i;
uchar temp;
for(i=0;i<8;i++)
{
temp=val>>i;
temp&=0x01;
write_bit(temp);
}
delay(5);
}
void IC_start(void)
{
IC_reset();
write_byte(0xcc);
write_byte(0x44);
}
void read_temp(void)
{
IC_reset();
write_byte(0xcc);
write_byte(0xbe);
data0=read_byte();
sign=read_byte();
}
main()
{uchar data0,temp,temp2,temdec; uchar bai,shi,ge,ge1,shi1,bai1,qian1;
uchar display[]={0xc0,0xf9,0xA4,0xB0,0x99,0x92,0x82,0xf8,0x80,0x98};
while(1)
{
IC_start();
read_temp();
temp=sign;
temp&=0xf0;
if( temp==0x00)
{
temp=data0>>4;
temp2= sign<<4;
temp=temp | temp2;
temdec=(data0 &0x0f)*625;
}
if (temp >=20)
P0_1=0;
else P0_1=1;
bai=temp/100;
shi=temp%100/10;
ge=temp%100%10;
ge1=temdec/1000;
shi1=temdec%1000/100;
bai1=temdec%1000%100/10;
qian1=temdec%1000%100%10;
P1=0xfe;
P2=display[bai];
delay(10);
P1=0xfd;
P2=display[shi];
delay(10);
P1=0xfb;
P2=display[ge];
delay(10);
P1=0xf7;
P2=0x7f;
delay(10);
P1=0xef;
P2=display[ge1];
delay(10);
P1=0xdf;
P2=display[shi1];
delay(10);
P1=0xbf;
P2=display[bai1];
delay(10);
P1=0x7f;
P2=display[qian1];
delay(10);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -