📄 prj.c
字号:
#include "reg51.h"
typedef unsigned char uchar;
typedef unsigned int uint;
sbit DQ=P0^0;
sbit P0_1=P0^1;
uchar IC_reset(void)
{
uchar presence,i;
DQ=0;
for(i=240;i>0;i--);
DQ=1;
for(i=40;i>0;i--);
presence=DQ;
for(i=200;i>0;i--);
return(presence);
}
uchar read_byte(void)
{
uchar i,j;
uchar value=0;
for(i=8;i>0;i--)
{ value>>=1;
DQ=0;
for(j=2;j>0;j--);
DQ=1;
for(j=4;j>0;j--);
if(DQ) value|=0x80;
for(j=30;j>0;j--);
DQ=1;
}
return value;
}
void write_byte(char val)
{
uchar i,j;
for(i=8;i>0;i--)
{
DQ=0;
for(j=2;j>0;j--);
DQ=val&0x01;
for(j=30;j>0;j--);
DQ=1;
val>>=1;
}
}
void IC_start(void)
{
IC_reset();
write_byte(0xcc);
write_byte(0x44);
}
uchar read_temp(void)
{
uchar data0,sign;
IC_reset();
write_byte(0xcc);
write_byte(0xBE);
data0=read_byte();
sign=read_byte();
if(sign) data0=~data0+1;
else data0=data0;
return data0 ;
}
main()
{uchar data0,i; uchar shi=0,ge=0;
uchar display[]={0xc0,0xf9,0xA4,0xB0,0x99,0x92,0x82,0xf8,0x80,0x98};
/*IC_start();
data0=read_temp();
shi=data0/10;
ge=data0%10; */
while(1)
{
IC_start();
data0=read_temp();
if (data0 >=20)
P0_1=0;
else P0_1=1;
shi=data0/10;
ge=data0%10;
P1=0xef;
P2=display[shi];
for(i=100;i>0;i--);
P1=0xdf;
P2=display[ge];
for(i=100;i>0;i--);
P1=0xbf;
P2=0x9c;
for(i=100;i>0;i--);
P1=0x7f;
P2=0xc6;
for(i=100;i>0;i--);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -