单片机 > 单片机程序设计 > 详情

DS18B20单片机数字温度计

发布时间:2023-08-24 发布时间:
|

①采用单片机设计电子温度计,选择适合的感温元件,温度测量范围-50℃~110℃;

②测量误差小于0.1℃;

③LED数码直读显示;

1.2总体方案分析

在单片机电路设计中,大多都是使用传感器,所以本次设计采用温度传感器DS18B20。整个系统由单片机控制,温度传感器采用DS18B20。DS18b20采用单总线方式与单片机相连.把采集到得温度信息传给单片机。单片机采集到的温度输出到四个数码管上进行显示。当四位数码管显示的温度超过上限值时可以实现报警功能。系统总体方案如图1-1所示。

图1-1 系统总体方案

2电路设计2.1电路原理图

电路原理图如图2-1所示;


图2-1 电路原理图

2.2电路PCB图

电路PCB图底层如图2-2所示;

图2-2 电路PCB底层图

电路PCB顶层如图2-3所示;

图2-3 电路PCB顶层图

电路PCB3D图如2-4所示;

图2-4 电路PCB3D图

2.3设计计算及分析说明2.3.1时钟电路和复位电路

①复位电路

复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。在本系统中,上电复位采用电平方式开关复位。上电复位采用RC电路,其中电容为10uF,电阻为10K。

②晶振电路

单片机系统里晶振的作用非常大,它结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振提供的十种频率越高,单片机运行的速度也就越快。单片机的晶振频率应低于40MHZ,本设计中采用的晶振频率为11.0592MHZ,在晶振上并联两个30pF电容。

时钟电路和复位电路如图2-5所示。

图2-5 电路和复位电路图

2.3.2温度采集电路

DS18B20温度传感器是一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。DS18B20的性能特点如下:
①独特的单线接口仅需要一个端口引脚进行通信;
②多个DS18B20可以并联在惟一的三线上,实现多点组网功能;
③无须外部器件;
④可通过数据线供电,电压范围为3.0~5.5V;
⑤零待机功耗;
⑥温度以9或12位数字;
⑦用户可定义报警设置;
⑧报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
⑨负电压特性,电极接反时,温度计不会因发热而烧毁,只是不能正常工作。温度采集电路如图2-6所示。

图2-6 温度采集电路图

DS18B20测温原理如图2.7所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。

图2-7 DS18B20测温原理

2.3.3蜂鸣器报警电路

本设计报警系统使用蜂鸣器报警电路,在单片机程序内设置了报警温度的上下限值,当温度高于设定温度上限时,蜂鸣器提示;当温度低于设定温度下限时,蜂鸣器也会提示。报警功能是重要功能之一,在很多应用场合下通过报警功能可以避免很多人力、财力的损失,蜂鸣器报警电路所测温度超出上、下限温度极限值时,为实现报警功能,设计了蜂鸣器报警电路。报警电路如图2-8所示。

图2-8 蜂鸣器报警电路图

2.3.4位LED数码管显示电路

在该电路中采用的是4位共阳极数码管,通过P2.0~P2.3端来控制四位数码管的亮灭,通过P0并行口来控制数码管显示的数值。使用数码管时,采用动态扫描的方式, 动态显示的特点是将所有位数码管的段选线s一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。LED数码管显示电路图如图2-9所示。

图2-9 LED数码管显示电路图

2.3.5按键控制电路

本电路具有按键输入功能,当有按键被按下时,相对应的引脚会变成低电平,便可确定是哪一个按钮被按下。按键可设定报警温度的上限值和下限值,如果当前环境温度不在设定范围之内,蜂鸣器就会报警。按键控制电路如图2-10所示。

图2-10 按键控制电路图


2.4电路元件选择

由Altium Designer的bill of material功能导出得到本次设计的所有元器件,电路元器件如图2-11所示。

图2-11 电路元器件清单图



3程序3.1程序流程图及说明3.1.1主程序

主程序设计如图3-1所示;

图3-1 主程序流程图

代码:

//主函数

void main()

{

beep=0;

delay(10);

while( 1 )

{

tmpchange(); //温度变换

if(shu==0)

{

displayTemp(tmp( ));

}

keyscan(); //键盘扫描

if(shu==1)

{

displayTemp(count); //设置上限温度值

}

if(shu==2)

{

displayTemp(alarm); //设置下限温度值

}

if(shu==3)

{

shu=0;

}

if(temp>count||(temp

{

beep=0;

}

else

beep=1;

}

}


3.1.2按键控制程序设计

在键盘扫描程序中,对按键初始化,然后判断按键是否闭合,如果按键闭合,通过软件延时去抖,最后通过显示程序可以看到相应的按键设置值,以做下一步指示,这是最基本的人机交互模式。按键控制流程如图3-2所示。

图3-2 按键控制流程图

代码:

//键盘扫描函数

uint keyscan()

{

if(key1==0)

{

delay(5);

if(key1==0)

{

while(!key1);

shu++;

}

}

if(key2==0)

{

delay(5);

if(key2==0)

{

while(!key2);

count=count+10;

if(shu==2)

[1] [2] [3]


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
MSP430低功耗模式-while循环失效