📄 wengdu1.c
字号:
#include<reg51.h>
#include<absacc.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit DAT=P1^5;
sbit DB=P2^2;
sbit DC=P2^1;
void GET_TEMPER();
void T_FORMAT();
void DISPLAY() ;
void Set_1820();
void WRITE_1820(uchar);
void READ_1820();
void delay(uchar);
uchar TEMPER_NUM,TEMPER_L,TEMPER_H,delay1;
uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77};
void main()
{
EA=0;
SP=0X60;
TEMPER_NUM=30;
while(1)
{
GET_TEMPER();
T_FORMAT();
DISPLAY();
}
}
void GET_TEMPER()
{
Set_1820();
WRITE_1820(0xcc); //跟匹配18B20匹配指令
WRITE_1820(0x44); //开始转化温度,大该要700--1000MS
DISPLAY();
Set_1820();
WRITE_1820(0xcc);
WRITE_1820(0xbe); //让温度出来。。
READ_1820();
}
void T_FORMAT() //取出16位中 低四位,高三位,一共7位
{
uchar t,f;
t=TEMPER_L;
t&=0XF0;
t>>=4;
f=TEMPER_H;
f&=0x07;
f<<=4;
TEMPER_NUM=t|f;
}
void DISPLAY()
{
uchar m;
for(m=0;m<200;m++)
{
DB=0;
P0=tab[TEMPER_NUM/10];
delay(80);
DB=1;
DC=0;
P0=tab[TEMPER_NUM%10];
delay(80);
DC=1;
}
}
void Set_1820()
{
uchar flag=1,flag1=0;
while(!flag1)
{
while(flag)
{
DAT=0;
delay1=250; //发一个480us--960的低电平
while(--delay1);
DAT=1;
delay1=30; //等待60US
while(--delay1);
flag=DAT; //有反应出来低电平给FLAG。
}
delay1=120; //检测反映是否正确
while(--delay1);
flag1=DAT;
}
delay1=240; //延时一会等待写地址
while(--delay1);
}
//--------------------------------------
void WRITE_1820(uchar val) //一位一位发送指令,一位40US
{
uchar i;
for(i=8;i>0;i--)
{
DAT=0;
delay1=8; //发之前先给15US的低电平
while(--delay1);
DAT=val&0x01;
delay1=20;
while(--delay1);
DAT=1;
val=val/2;
}
delay1=20;
while(--delay1);
}
//------------------------------------------------
void READ_1820()
{
uchar y,value=0;
for(y=8;y>0;y--)
{
value>>=1;
DAT=0;
DAT=0;
DAT=1;
delay1=4;
while(--delay1);
if(DAT)
value|=0x80; //先读低位地址,读8个
delay1=10;
while(--delay1);
}
TEMPER_L=value;
value=0;
for(y=8;y>0;y--)
{
value>>=1;
DAT=0;
DAT=0;
DAT=1;
delay1=4;
while(--delay1);
if(DAT)
value|=0x80;
delay1=10;
while(--delay1);
}
TEMPER_H=value;
}
void delay(uchar z)
{
for(;z>0;z--);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -