本 电路图是温度检测及控制系统的设计硬件总图,保证清晰、准确!是我自己画的...大家多多捧场呀!
0
|
|
|
|
本帖最后由 gk320830 于 2015-3-5 23:16 编辑
|
|
|
|
|
missile60 发表于 2012-10-14 11:17
好的吧
henhao
|
|
|
|
|
谢谢
|
|
|
|
|
#include
#include
#define uchar unsigned char
#define uint unsigned int
***it DQ=P2^2;
***it dula=P0^0;
***it wela=P0^1;
uint temp,ff,min;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//*************************ds18b20温度传感器程序**************************************************************************//
void aaa()
{
uchar i,j;
for(i=0;i<20;i++)
for(j=0;j<30;j++);
}
void delay(uint x)//大延时
{
uchar i;
while(x--)
for(i=0;i<120;i++);
}
void delay1( uint a)//小延时
{
while(--a);
}
void write(uchar dat)//写数据
{
uchar i;
for(i=0;i<8;i++)
{
DQ=0;
DQ=dat&0x01;
delay1(5);
DQ=1;
dat>>=1;
}
}
uchar read()//读数据
{
uchar i,dat=0;
DQ=1;
_nop_();
for(i=0;i<8;i++)
{
DQ=0;
_nop_();
_nop_();
dat>>=1;
DQ=1;
_nop_();
_nop_();
if(DQ)
dat|=0x80;
delay1(30);
DQ=1;
}
return dat;
}
void disp(uchar num)
{
uchar shi,ge,ge1,ge2,ge3,ge4;
shi=num/10;
ge=num%10;
ge4=min%10;
ge3=(min/10)%10;
ge2=(min/100)%10;
ge1=min/1000;
if(shi==0x00) P1=0x00;
else P1=table[shi];
dula=1;
dula=0;
P1=0xfb;
wela=1;
wela=0;
aaa();//********显示十位*********************************// 1111 1011
P1=(table[ge]|0x80);
dula=1;
dula=0;
P1=0xf7;
wela=1;
wela=0;
aaa();//******显示个位**********************************// 1111 0111
if(ff!=0){P1=0x40;dula=1;
dula=0;
P1=0xfd; wela=1;
wela=0;
aaa();}//*********显示符号位*********************************// 1111 1101
P1=table[ge1];
dula=1;
dula=0;
P1=0xef;
wela=1;
wela=0;
aaa();//******显示小数点后第一位**********************************// 1110 1111
P1=table[ge2];
dula=1;
dula=0;
P1=0xdf;
wela=1;
wela=0;
aaa();//******显示小数点后第二位**********************************// 1101 1111
P1=table[ge3];
dula=1;
dula=0;
P1=0xbf;
wela=1;
wela=0;
aaa();//******显示小数点后第三位**********************************// 1011 1111
P1=table[ge4];
dula=1;
dula=0;
P1=0x7f;
wela=1;
wela=0;
aaa();//******显示小数点后第四位**********************************// 0111 1111
}
void start()
{
DQ=1;
delay1(8);
DQ=0;
delay1(90);
DQ=1;
_nop_();
_nop_();
delay1(100);
DQ=1;
}
uchar read_tu()
{uchar a,b;
start();
write(0xcc);
write(0x44);
start();
write(0xcc);
write(0xbe);
a=read();
b=read();
ff=b&0xf8;
min=(a&0x0f)*625 ;
b=((b&0x03)<<4)+((a&0xf0)>>4);
return b;
}
void main()
{delay(30);
while(1)
{
temp=read_tu();
disp(temp);
}
}
|
|
|
|
|