标题:
51单片机DS18B20温控步进电机Proteus仿真加源程序
[打印本页]
作者:
花落沉香
时间:
2019-1-15 20:08
标题:
51单片机DS18B20温控步进电机Proteus仿真加源程序
DS18B20温控步进电机仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png
(12.54 KB, 下载次数: 33)
下载附件
2019-1-16 04:33 上传
0.png
(44.46 KB, 下载次数: 32)
下载附件
2019-1-16 04:34 上传
单片机源程序如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code zs[]={0x01,0x02,0x04,0x08};
sbit DQ=P0^0;
void delay(uint M)
{
uint i;
for(i=0;i<M;i++)
{
;
}
}
void run(uint N)
{
uchar k;
for(k=0;k<=3;k++)
{
P2=zs[k];
delay(N);
}
}
void init()
{
uint m;
DQ=1;
delay(4);
DQ=0;
delay(45);
DQ=1;
while(DQ)
{
m++;
if(m>=100)break;
}
}
void write(uchar order)
{
uint j;
DQ=1;
delay(20);
for (j=8; j>0; j--)
{
DQ = 0;
DQ = order&0x01;
delay(5);
DQ = 1;
order>>=1;
delay(10);
}
delay(5);
}
uchar read()
{
unsigned char n=0;
unsigned char dat = 0;
DQ=1;
delay(20);
for (n=8;n>0;n--)
{
DQ = 0;
dat>>=1;
DQ = 1;
if(DQ)
{dat|=0x80;}
delay(4);
}
return(dat);
}
void main()
{
while(1)
{
uchar Teml=0x00;
uchar Temh=0x00;
uchar Tem=0x00;
init();
write(0xcc);
write(0x44);
while(DQ==0)
{
;
}
init();
write(0xcc);
write(0xbe);
Teml=read();
Temh=read();
Temh=Temh<<4;
Teml=Teml>>4;
Tem=Temh|Teml;
P1=~Tem;
if(Tem<=15)
{
run(1000);
}
else if((Tem>15)&(Tem<=25))
{
run(3000);
}
else if((Tem>25)&(Tem<=35))
{
run(6000);
}
else if((Tem>35)&(Tem<=45))
{
run(4000);
}
else if((Tem>45)&(Tem<=55))
{
run(3000);
}
else if((Tem>55)&(Tem<=65))
{
run(2000);
}
else if((Tem>65)&(Tem<=75))
{
run(1000);
}
else
{
run(500);
}
}
}
复制代码
所有资料51hei提供下载:
ourdev_446260.rar
(59.45 KB, 下载次数: 55)
2019-1-15 20:06 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
ttaniscy
时间:
2019-1-21 12:17
谢谢LZ分享,学习!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1