?? 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 + -