基于单片机的电子温度计设计
基于单片机的电子温度计设计(本科)要做毕业设计了选了这个课题,找了一些资料。有一种是带电子时钟的温度计,但感觉这样的功能更偏向于他是主要功能是时钟而辅助功能才是温度计,不...
基于单片机的电子温度计设计 (本科)要做毕业设计了选了这个课题,找了一些资料。有一种是带电子时钟的温度计,但感觉这样的功能更偏向于他是主要功能是时钟而辅助功能才是温度计,不知道应该加什么的功能能体现是以温度计为主题又符合本科毕业设计的难度
展开
1个回答
展开全部
看看这个吧,是个通过温度传感器实现对电风扇的智能控制的程序
温度传感器是ds18b20
不懂的地方m我 qq 296264785
#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit DQ=P3^4;
sbit ka=P3^0;
sbit guan=P3^1;
uchar wendu[]={0x00,0x00};
uchar code tab[]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};
uchar code duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar bai,shi,ge,xiao,wen;
//延时子程序
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void delay1(uint a)
{
while(--a);
}
uchar init_18b20() //18b20初始化
{
uchar b;
DQ=1;
delay1(8);
DQ=0;
delay1(90);
DQ=1;
delay1(8);
b=DQ;
delay1(100);
DQ=1;
return b;
}
uchar du()//读字节
{
uchar i,dat=0;
DQ=1;_nop_();
for(i=0;i<8;i++)
{
DQ=0;
dat >>=1;
DQ=1;
_nop_(); _nop_();
if(DQ)dat|=0x80;
delay1(30);
DQ=1;
}
return dat;
}
void xie(uchar da)//写字节
{
uchar i;
for(i=0;i<8;i++)
{
DQ=0;
DQ=da & 0x01;
delay1(5);
DQ=1;
da>>=1;
}
}
void duwendu()
{
while(init_18b20()); //DQ=1;等待
xie(0xcc);
xie(0x44);
init_18b20();
xie(0xcc);
xie(0xbe);
wendu[0]=du();
wendu[1]=du();
}
void xshi()
{
uchar i;
xiao=tab[wendu[0] & 0x0f];
wen=((wendu[0] & 0xf0)>>4) | ((wendu[1] & 0x07)<<4);
bai=wen/100;
shi=wen%100/10;
ge=wen%10;
for(i=0;i<15;i++)
{
P1=0xfe;
P2=duanma[xiao];
delay(5);
P1=0xfd;
P2=duanma[ge];
delay(5);
P1=0xfb;
P2=duanma[shi];
delay(5);
P1=0xf7;
P2=duanma[bai];
delay(5);
}
}
void main()
{
ka=0;
guan=0;
duwendu();
delay(10);
while(1)
{
duwendu();
xshi();
if(wen>=25) //温度高于25度 开风扇
{
ka=1;
guan=0;
}
else
{
ka=0;
guan=1;
}
}
}
温度传感器是ds18b20
不懂的地方m我 qq 296264785
#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit DQ=P3^4;
sbit ka=P3^0;
sbit guan=P3^1;
uchar wendu[]={0x00,0x00};
uchar code tab[]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};
uchar code duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar bai,shi,ge,xiao,wen;
//延时子程序
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void delay1(uint a)
{
while(--a);
}
uchar init_18b20() //18b20初始化
{
uchar b;
DQ=1;
delay1(8);
DQ=0;
delay1(90);
DQ=1;
delay1(8);
b=DQ;
delay1(100);
DQ=1;
return b;
}
uchar du()//读字节
{
uchar i,dat=0;
DQ=1;_nop_();
for(i=0;i<8;i++)
{
DQ=0;
dat >>=1;
DQ=1;
_nop_(); _nop_();
if(DQ)dat|=0x80;
delay1(30);
DQ=1;
}
return dat;
}
void xie(uchar da)//写字节
{
uchar i;
for(i=0;i<8;i++)
{
DQ=0;
DQ=da & 0x01;
delay1(5);
DQ=1;
da>>=1;
}
}
void duwendu()
{
while(init_18b20()); //DQ=1;等待
xie(0xcc);
xie(0x44);
init_18b20();
xie(0xcc);
xie(0xbe);
wendu[0]=du();
wendu[1]=du();
}
void xshi()
{
uchar i;
xiao=tab[wendu[0] & 0x0f];
wen=((wendu[0] & 0xf0)>>4) | ((wendu[1] & 0x07)<<4);
bai=wen/100;
shi=wen%100/10;
ge=wen%10;
for(i=0;i<15;i++)
{
P1=0xfe;
P2=duanma[xiao];
delay(5);
P1=0xfd;
P2=duanma[ge];
delay(5);
P1=0xfb;
P2=duanma[shi];
delay(5);
P1=0xf7;
P2=duanma[bai];
delay(5);
}
}
void main()
{
ka=0;
guan=0;
duwendu();
delay(10);
while(1)
{
duwendu();
xshi();
if(wen>=25) //温度高于25度 开风扇
{
ka=1;
guan=0;
}
else
{
ka=0;
guan=1;
}
}
}
leipole
2024-11-29 广告
2024-11-29 广告
上海雷普电气有限公司(以下简称雷普电气)是一家集研发、生产、销售、服务为一体的科技型企业。一直以来,公司秉承“以科技改变生活,为社会创造美好”的理念,旗下“低压电源为主导” 的电联接件及接口模块系列、继电耦合系列、风扇及过滤器系列、机床控制...
点击进入详情页
本回答由leipole提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询