基于51单片机简易温度计数码管显示
2021-10-11 来源:eefocus
一.硬件方案
本系统利用51单片机控制温度传感器DS18B20进行温度的实时检测并显示,能够实现快速测量环境温度。
硬件以微控制器为核心,外接时钟电路、复位电路、温度测量电路、LED显示电路组成。如图:
二.设计功能
(1)采用DS18B20温度传感器测温,测温范围-55~+125℃摄氏度,精度0.1摄氏度(显示到小数点后一位),误差±0.5度;
(2)采用0.56英寸四位一体共阳数码管显示当前温度;
(3)有一个复位按键。
三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:
(2)Protues仿真图如下:
(3)PCB图如下:
四.软件设计
主程序源码
/*****主函数*****/
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; //关闭显示
}
上一篇:基于51单片机的函数发生器设计