历史上的今天
今天是:2024年12月09日(星期一)
2020年12月09日 | DS18B20单片机数字温度计
2020-12-09 来源:51hei


①采用单片机设计电子温度计,选择适合的感温元件,温度测量范围-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) { alarm+=10; } } } if(key3==0) { delay(5); if(key3==0) { while(!key3); count=count-10; if(shu==2) { alarm-=10; } } } return(count); } 3.1.3DS18B20初始化程序设计 DS18B20的初始化 (1)先将数据线置高电平”1” (2)延时(该时间要求的不是很严格,但是尽可能的短一点) DS18B20初始化程序流程图如图3-3所示。 图3-3 DS18B20初始化程序流程图 代码: void dsreset()//发复位 { uint i; DS=0; i=103; while(i>0)i--; DS=1; i=4; while(i>0)i--; } uchar tmpread() //读取一字节 { uchar j,k,dat; uint i; 
(3)数据线拉到低电平“0”
(4)延时750微秒(该时间的时间范围可以从480到960微秒)
(5)数据线拉到高电平“1”
(6)延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返回的低电平”0”。据该状态可以来确走它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。
(7)若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起第(5)步的时间算起)最少要480微秒。
(8)将数据线再次拉高到高电平“1后结束。
史海拾趣
|
一、模拟电路设计 基础知识(笔试时候容易遇到的题目) 1.最基本的如三极管曲线特性(太低极了点) 2.基本放大电路(电压放大器,电流放大器,互导放大器和互阻放大器),种类,优 &nb ...… 查看全部问答> |
|
1、引言 医学超声诊断成像技术大多数采用超声脉冲回波法,即利用探头产生超声波进入人体,由人体组织反射产生的回波经换能器接收后转换为电信号,经过提取、放大、处理,再由数字扫描变换器转换为标准视频信号,最后由显示器进行显示。在基于FPGA+ ...… 查看全部问答> |
|
请教9261的串口收发问题 我在核中添加了下面的代码: at91_register_uart(AT91SAM9261_ID_US1, 1, ATMEL_UART_RTS); at91_register_uart(AT91SAM9261_ID_US2, 2, ATMEL_UART_RTS); at91_register_uart(AT91SAM9261_ID_US3, 3, ATMEL_UART_RTS ...… 查看全部问答> |
|
编辑完对话框类后无法在EDIT里输入汉字; 还有请帮忙看看一下代码怎么修改 LOGFONT m_lf; //字体结构 strcpy(m_lf.lfFaceName,ipadress ); 报错:error C2664: \ ...… 查看全部问答> |
|
图为直接耦合共射放大电路~ 直流通路里有直流电源Vcc,可是交流通路里没有Vcc啊,负载线方程怎么会相同呢? 请最好把Uce和Ic的函数关系式即负载线方程写出来~… 查看全部问答> |




