📄 practise.c
字号:
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit feng=P2^3;
sbit dq=P2^2;
sbit led=P1^0;
sbit dula=P2^6;
sbit wela=P2^7;
uchar L_temper;
uchar H_temper;
uint C_temper;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
uchar code table2[]={
0xfe,0xfd,0xfb,0xf7,0xef,0xdf
};
/******************延时***************************/
void delay_us()
{
_nop_();
}
void delay_ms(uint z)
{
uint ii,jj;
for(ii=z;ii>0;ii--)
for(jj=110;jj>0;jj--);
}
/****************复位与存在***********************/
void reset()
{
dq=1;
dq=0;
delay_us(600);
dq=1;
delay_us(30);
}
void exist()
{
uchar ii=20;
while(dq==0||ii<0) ii--;
delay_us(500);
dq=1;
}
/*************************************************/
bit read_bit()
{
bit bb;
dq=0;
delay_us(2);
dq=1;
delay_us(5);
bb=dq;
delay_us(60);
return bb;
}
/*************************************************/
//读字节
uchar read_byte()
{
uchar byte=0x00;
uchar ii=0,jj;
bit temp;
//uchar tt=0x01;
while(ii < 8)
{
delay_us(2);
temp=read_bit();
byte=(byte>>1)|(temp<<7);
++ii;
/*
delay_us(2);
temp=read_bit();
byte=byte+temp&tt;
tt<<1;
*/
}
return(byte);
}
//写入字节
void write_byte(uchar xx)
{
bit bb;
uchar test=0x01;//*********************************这里可能有问题?
uchar date=xx;
uchar ii=0;
while(ii < 8)
{
bb=test&date;
if(bb)
{
dq=0;
delay_us(5);
dq=1;
delay_us(15);
}
else
{
dq=0;
delay_us(100);
dq=1;
delay_us(2);
}
++ii;
}
}
/**********************温度************************/
void convert_temper()
{
reset();
exist();
write_byte(0xCC);
write_byte(0x44);
}
void read_temper()
{
uchar LSB_temper=0x00;
uchar MSB_temper=0x00;
reset();
exist();
write_byte(0xCC);
write_byte(0xBE);
LSB_temper=read_byte();
MSB_temper=read_byte();
C_temper=MSB_temper;
C_temper=(C_temper<<8)|LSB_temper;
C_temper=C_temper*0.0625*10+0.5;
return C_temper;
}
/******************响应******************************/
void display_temper()
{
uchar aa,bb,cc;
aa=C_temper/100;
bb=C_temper%10/10;
cc=C_temper/10;
wela=1;
P0=table2[0];
wela=0;
delay_ms(2);
dula=1;
P0=table[cc];
dula=0;
delay_ms(2);
wela=1;
P0=table2[1];
wela=0;
delay_ms(2);
dula=1;
P0=table[bb+0x80];
dula=0;
delay_ms(2);
wela=1;
P0=table2[2];
wela=0;
delay_ms(2);
dula=1;
P0=table[aa];
dula=0;
delay_ms(2);
}
void init1()
{
}
void main()
{
feng=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -