文末下载链接和项目说明哦
这次的项目姑且算作旧瓶装新酒吧,以前做过STM32和DHT11的温度探测,这一次是较为低价版的C51和DS18B20温度探测。
DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。 个人感觉主要特点就是价格低,这对于很多精度要求不高的量产产品来说很重要。
这个设计实现了:温度探测功能。DS18B20模块采用排针和杜邦线与单片机连接。同时还设置了临界温度(温度上限),超过该温度使用蜂鸣器鸣响报警。临界温度可以采用两个按键调整。
proteus里有专门的一个DS18B20模块用来仿真,也可以按动上下箭头来模拟传感器输出的温度变化情况。模块上直接显示温度数据,比一些模拟传感器要好用一些。
在PCB设计里还是采用排针+杜邦线的形式,把传感器做成了一个外置模块(J1)。整体设计还是中规中矩,没有很大难度,亮点在于我这一次没使用通孔[/xk][/xk]。
代码主要则集中在DS18B20传感器的处理方面,大致有六个函数来实现数据传输功能。
部分代码如下:
//主函数
void main()
{
int tp,ts;
int s=30;
unsigned char x,y;
while(1)
{
s=keyscan(s);
temp=ds18b20readtemp();
if(temp<0)
{
temp=temp-1;
temp=~temp;
tp=temp;
temp=tp*0.0625*100+0.5;
}
else
{
tp=temp;
temp=tp*0.0625*100+0.5;
}
digdisplay(temp);
ts=temp/100;
if(ts>s)
{
beep=0;
for(y=2;y>0;y--)
{
for(x=110;x>0;x--)
{
digdisplay(temp);
}
}
beep=1;
for(y=2;y>0;y--)
{
for(x=110;x>0;x--)
{
digdisplay(temp);
}
}
}
}
}
//按键函数
int keyscan(int t)
{
int m;
unsigned char x,y;
m=t;
if(high==0)
{
delayms(10);
if(high==0)
{
m=m+1;
display_h(m);
while(!high);
}
for(y=10;y>0;y--)
{
for(x=110;x>0;x--)
{
display_h(m);
}
}
return m;
}
if(low==0)
{
delayms(10);
if(low==0)
{
m=m-1;
display_l(m);
while(!low);
}
for(y=10;y>0;y--)
{
for(x=110;x>0;x--)
{
display_l(m);
}
}
return m;
}
return m;
}
//温度显示函数
void digdisplay(int temp)
{
int bai;
int shi;
int ge;
int yi;
unsigned char i;
unsigned int j;
bai=temp/10000;
shi=temp%10000/1000;
ge=temp%1000/100;
yi=temp%100/10;
for(i=0;i<5;i++)
{
weixuan=wxcode[i];
duanxuan=0xff;
if(i==0)
{
duanxuan=dxcode[bai];
}
if(i==1)
{
duanxuan=dxcode[shi];
}
if(i==2)
{
duanxuan=dxcode[ge]&0x7f;
}
if(i==3)
{
duanxuan=dxcode[yi];
}
j=10;
while(j--);
duanxuan=0xff;
}
}
//上调临界值显示函数
void display_h(int t)
{
int shi,ge;
unsigned char a;
unsigned int b;
shi=t/10;
ge=t%10;
for(a=0;a<5;a++)
{
weixuan=wxcode[a];
duanxuan=0xff;
if(a==0)
{
duanxuan=dxcode[10];
}
if(a==1)
{
duanxuan=dxcode[12];
}
if(a==2)
{
duanxuan=dxcode[shi];
}
if(a==3)
{
duanxuan=dxcode[ge];
}
b=10;
while(b--);
duanxuan=0xff;
}
}
所有资源已上传CSDN下载,欢迎共同学习下载链接
-----------------------------------------------分界线------------------------------------------------
最近各个项目下载量激增,感谢大家的赏光(抱拳了!)
但是要说几个事情哈:
1、我的项目以开源为主,但是并不代表是用来白嫖的,留邮箱的可能发送不及时。
2、没有流程图的,想做毕设课设可以私下联系我Q:116597503,价格会比TB等地方便宜,钱款走闲鱼有保证。
3、CSDN对于项目下载积分有所谓的“定价权”,可能会私自上调我定的积分,如果C51系列多于5分,请留言或者私聊我,我会把积分下调。
知识有价,开源万岁!!