一.硬件方案
本系统利用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