基于51单片机简易温度计

一.硬件方案

本系统利用51单片机控制温度传感器DS18B20进行温度的实时检测并显示,能够实现快速测量环境温度。硬件以微控制器为核心,外接时钟电路、复位电路、温度测量电路、LED显示电路组成。

二.设计功能

(1)采用DS18B20温度传感器测温,测温范围-55~+125℃摄氏度,精度0.1摄氏度(显示到小数点后一位),误差±0.5度;
(2)采用0.56英寸四位一体共阳数码管显示当前温度;
(3)有一个复位按键。

三.设计原理图

(1)原理图主要采用AD软件进行设计,如图:
在这里插入图片描述

(2)Protues仿真图如下:
在这里插入图片描述

四.软件设计

主程序源码

/*****主函数*****/
void main()
{
	uc z;			//定义变量用于for循环
	for(z=0;z<100;z++)	//循环100次读取温度并显示开机画面,防止开机显示85
	{
		Disp_init();	//开机初始化显示
		check_wendu();	//读取温度
	}
	while(1)		//进入while循环
	{
		check_wendu();	//读取温度
		for(z=0;z<10;z++)	//显示10次
		Disp_Temperature();	//调用显示函数
	}
}
/*****显示温度子程序*****/
void Disp_Temperature()     //显示温度
{
	if(qian==0)		  //千位等于0
	{
		if(fuhao==1)  //是负温度
		P0=0x7f;      //显示-
		else		  //是正温度
		P0=0xff;	  //不显示
		P2=0xfd;	  //选中第一位
		Delay(10);	 //延时
		P2 = 0xff;	 //关闭位选
	}
	else if(qian!=0)	  //千位不等于0
	{
		P0 =~led[qian];	  //显示千位数据
		P2 = 0xfd;		  //打开第一位位选
		Delay(10);		  //延时
		P2 = 0xff;		  //关闭位选
	}
	if((bai==0)&&(qian==0))//百位千位都是0
	{
		P0=0xff;    //不显示
		P2=0xf7;	//打开第二位
		Delay(10);	//延时
		P2=0xff;	//关闭位选
	}
	else if((bai==0)&&(qian!=0))//千位不等于0,百位等于0
	{
		P0=~led[bai];			//正常显示百位数据
		P2=0xf7;				//打开第二位
		Delay(10);				//延时
		P2=0xff;				//关闭位选
	}
	else if(bai!=0)				//百位不等于0
	{
		P0=~led[bai];    //显示百位
		P2=0xf7;		 //打开第二位
		Delay(10);		 //延时
		P2=0xff;		 //关闭位选
	}
	P0=~led_dian[shi];    //显示十位数据
	P2=0xdf;			  //打开第三位
	Delay(10);			  //延时
	P2=0xff;			  //关闭位选
	P0=~led[ge];   		  //显示个位数据
	P2=0x7f;			  //打开第四位
	Delay(10);			  //延时
	P2=0xff;              //关闭显示
}

资料链接:https://pan.baidu.com/s/1avrjevXhEHVpYVzXyUTO9A?pwd=f6yj

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值