急求:以DS18B20作为传感器 AT89S52作为单片机 并配以键盘、LCD 显示器等的电路图

如题所述

#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table1[]="Temperature:";

uchar idata a[4];
sbit lcden=P3^4;
sbit lcdrs=P3^5;
sbit ds=P3^7;
sbit l=P2^7;
sbit b=P3^6;
uchar num,num1;
uint num0,f_temp;
void delayms(uchar ms)
{
uchar i,j;
for(i=0;i<ms;i++)
for(j=110;j>0;j--);
}

uint temp;
bit testb;
void delay(uint z)
{
uint i;
for(i=0;i<z;i++)
{ _nop_();
}
}

void beep()
{
b=0;
delayms(100);
b=1;
delayms(100);
}

void dsreset()
{
ds=1;
delay(10);
ds=0;
delay(500);
ds=1;
delay(40);
if(ds==0)
{P1=0;}
else
{ l=0;}
}
void writebyte(uchar dat)
{
uchar j;
uchar i;
ds=0;

for(j=0;j<8;j++)
{
testb=dat&0x01;
dat=dat>>1;
if(testb)
{ ds=0;
i=i++;
ds=1;
i=8;while(i--);
}
else
{
ds=0;
i=8;while(i--);
ds=1;
i++;i++;
}
}
}
bit tempread()
{ uchar i;
bit z;
ds=0;i++;//2us左右
ds=1;i++;i++;//6us左右
z=ds;
i=8;while(i--);//30us左右
return z;
}
uchar tempreadbyte()
{
uchar i,j,k;
for(i=0;i<8;i++)
{
k=tempread();
j=(k<<7)|(j>>1);
}
return j;
}
void tempchange()
{ dsreset();
writebyte(0xcc);
writebyte(0x44);
}
uint get_temp()
{ uchar a,b;
dsreset();
writebyte(0xcc);
writebyte(0xbe);
a=tempreadbyte();
b=tempreadbyte();
temp=b;
temp=temp<<8;
temp=temp|a;
f_temp=temp*0.0625;
temp=f_temp*10+0.5;
return f_temp;
}

void warn(uchar z)
{
if(z>=40)
{
beep();
}
}

void write_com(uchar com)
{
lcdrs=0;
P1=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar ddata)
{
lcdrs=1;
P1=ddata;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
lcden=1;
write_com(0x38);//设置基本指令模式(16*2显示),5*7点阵,8位数据接口
write_com(0x0c); //开显示,关光标
write_com(0x06); //写一个字符后地址指针加1
write_com(0x01); //写入空格显示清0,数据指针清0
}

void main()
{ uchar i;
init();

while(1)
{
write_com(0x80);
for(i=0;i<11;i++)
{
write_data(table1[i]);
delay(5);
}
tempchange();
num=get_temp();
P2=get_temp();
a[1]=num%1000/100;
a[2]=num%100/10;
a[3]=num%100%10;

write_com(0xc0);
for(i=0;i<5;i++)
{
write_data(a[i]+0x30);
}
write_com(0xc6);
write_data(2+0x30);

}

}追问

要不我给你电路图 你帮我在搞下

追答

这是去年6月搞的吧 很长时间没看了 只是看到你问了 所以就把代码黏贴过来了。 你把管教改改就行了吧

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答
大家正在搜