我邮箱171412435@qq.com 能用proteus 仿真 基于ct89c51和ds18b20 的数字温度计的电路图么?最好有程序

有lcd温度输出,最简单的就好 谢谢了
2024-12-24 14:10:40
推荐回答(3个)
回答1:

有proteus仿真,要吗? 

图,程序都有了,你自己参考下,就可以了。

动手还要你自己。 

已发请查收!

回答2:

程序-电路仿真+和周到的服务

一起来学习吧

你的问题已经解决了

回答3:

我给你一个我开发板上做的温度计,我用的是8位数码管动态显示,程序绝对好用,我实物仿真试过。我把我开发板得电路图给你,程序是我自己写的。 807065214

这是专为你的那个电路图写的程序,绝对好用,我没在软件上仿真,但我在我硬件开发板上运行的很好。
#include
#include
#define uchar unsigned char
#define uint unsigned int

sbit DQ=P2^5;
sbit we1=P2^1;
sbit we2=P2^0;
uint temp;

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;
shi=num/10;
ge=num%10;

if(shi==0x00) P0=0x00;
else P0=table[shi];

we1=0;
we2=1;
aaa();//********显示十位*********************************// 1111 1011

P0=(table[ge]);

we1=1;
we2=0;
aaa();//******显示个位**********************************// 1111 0111

}

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();

b=((b&0x03)<<4)+((a&0xf0)>>4);

return b;

}

void main()
{delay(30);
while(1)
{
temp=read_tu();
disp(temp);
}
}