基于51单片机的多功能温度控制器的设计

发布者:yunhui最新更新时间:2011-10-06 关键字:51单片机  多功能温度控制器 手机看文章 扫描二维码
随时随地手机看文章

0 概述

    在某些工业生产过程中,如恒温炉、仓库储藏、花卉种植、小型温室等领域都对温度有着严格的要求,需要对其加以检测和控制。传统的温度测量方法是将温度传感器输出的模拟信号放大后送至远端A/D转换器,最后单片机对A/D转换后的数据进行分析处理。这种方法的缺点是模拟信号在传输的过程中存在损耗并且容易受到外界的干扰,导致测量的温度精度不高。

    文中以STC89C52RC单片机为控制核心,利用美国Dallas公司最新推出的单总线数字温度传感器DSl8820测量温度,单片机处理后对温度进行控制,并将温度显示在LCDl602上,还可通过按键设置温度上下限值实现温度超限报警等功能。

1 系统的组成和工作原理

    多功能温度控制系统的结构如图1所示,系统由六部分组成:控制核心部分、温度数据采集部分、加热装置控制部分、液晶显示部分、按键输入部分和报警提示部分。单片机启动温度采集电路完成温度的一次转换,然后读出转换后的数字量并转化成当前的温度呈现在显示模块中,并将当前的温度与通过按键输入电路设定的保持恒温度数进行比较,以实现温度的控制。还可以通过按键设置温度的上下限值以实现超温或低温报警提示功能。本系统的设计目标要对温度的控制精度达到0.1℃。

1.1 报警电路

    报警电路采用蜂鸣器作为发声装置,当温度高于设定的上限值或低于下限值,给蜂鸣器送周期为1s,占空比为50%的方波,报警的时间可以持续1分钟或等待按键解除报警,这由软件控制实现。

1.2 按键电路

    采用2×3的小键盘,键盘的识别可以采用两种方法:行扫描法和行反转法。两种方法都要注意消除按键的抖动。文中采用行扫描法并做成子程序,出口参数为按键的键值。定义键K1设置TH,K2设置TL,K3调高TH或TL,K4调低TH或TL,K5对TH或TL的数值进行确认。

1.3 温度检测电路

    温度检测电路采用智能温度传感器DSl8820,它与单片机相连只需要3线,减少了外部的硬件电路。DSl8820主要性能特点如下:

    (1)测温的范围为-55~125℃,最大分辨率可以达到0.0625℃;
    (2)电源电压范围为3.0~5.5V;
    (3)供电模式:寄生供电和外部供电;
    (4)封装形式有两种:3脚的TO-92封装和8脚的SOIC封装;
    (5)可编程的温度转换分辨率,分辨率为9~12位(包括1位符号位),由配置寄存器决定具体位数,配置寄存器的格式如表1所示。


    其中RlR0是用来设定分辨率的,分辨率的定义如表2所示。


    由表2可以看出,分辨率设定得越高,温度转换所需要的时间就越长,因此应根据实际应用的需要来选择合适的分辨率。本文中选取12位分辨率,每隔1秒检测一次温度。12位分辨率的温度数据值格式如下:

   

    当S=0表示测得的温度为正值,当S=l表示测得的温度为负值。

1.3.1 DSl8820的存储器结构

    DSl8820的存储器有高速暂存RAM和非易失性电擦写EEPROM。高速暂存RAM的内容从低字节到高字节9个字节依次为:温度LSB、温度MSB、高温限值字节TH、低温限值字节TL、配置寄存器、保留、保留、保留,最后一个字节是前8个字节的CRC码。EEPROM用来存储TH和TL。

1.3.2 温度数据的处理方法

    从DSl8820读出的两个字节的二进制值温度必须先转换成十进制数值,然后才能将其ASCII码送往LCDl602显示。12位的分辨率,温度是以0.0625步进的,由于两个字节的温度采用补码表示,所以先判断读出温度的最高位是0还是1,即判断是正温还是负温,然后对其求补码转化成正温,之后将高字节的低4位和低字节的高4位组成一个字节,这个字节的二进制值不断除以10得出的余数即为温度值的个、十、百位值。若读出的温度数值是负数,显示处理时,在温度数的前面人为显示负号即可。对小数部分的温度只需将低字节的低4位乘以0.0625,然后对乘积取其小数点后的一位数即可。

1.3.3 DSl8820的控制步骤

    (1)首先对DSl8820进行复位。由单片机将数据线DQ拉至低电平480-960 μs,然后将DQ拉高15-60 μs,以便单片机检测到DSl8820送来的低电平响应。然后检测DQ,若DQ仍然为高电平,则复位操作失败,可采用循环的方式再次对其进行复位;若DQ为低电平,则复位操作成功。

    (2)DSl8820的ROM操作命令。DSl8820复位后,主机可以发器件ROM的操作命令如读ROM[33H]、匹配ROM[55H]、跳过ROM[0CCH],报警搜索[4EH]等。在单点总线的情况下,可发跳过ROM[0CCH]操作命令,以节省时间。另外,文中有报警的功能,温度转换后还需要发报警搜索命令,该命令会将最近一次测得的温度值T与高速RAM中的TH或TL作比较,若T>TH或T

    (3)DSl8820的存储器操作命令。如启动温度转换命令[44H],写入命令[4EH](写入该命令后,紧接着要写入报警上限TH,报警下限TL及配置寄存器字节),读暂存器RAM的内容命令[0BEH](读取将从第一个字节开始一直到第9个字节结束,如仅需要部分字节,主机可以在合适的时刻发复位命令来终止读取)及复制命令[48H](把暂存器RAM的第2、3、4字节转存到DSl8820的EEROM中)等。

    (4)DSl8820的ROM或RAM操作的总线读写时序。对于读时序,首先将DQ拉低并延时1-15μs以内(延时时间不能太长),然后将DQ拉高并延时几个μs后再读取DQ的值,读完一位后需要延时45 μs以上才能读取下一位;对于写时序,先将DQ拉低10-15μs,接着向总线写入数据并延时50μs以上,最后将DQ拉高1μs以上再进行下一位的写入。

1.4 液晶显示模块

    采用的是长沙太阳人电子有限公司生产的SMCl602A。

1.4.1 主要技术参数

    芯片的工作电压4.5~5.5V,能显示两行,每行显示16个字符,字符的大小为2.95×4.35mm。

1.4.2 接口信号说明

    除电压、背光引脚及8个I/O引脚外,主要的控制引脚还有数据/命令选择RS引脚,该引脚为高电平时表示I/O引脚出现的是数据,该引脚为低电平时表示I/O引脚出现的是命令;读/写选择引脚及使能引脚E(该引脚为高电平时对SMCl602A的操作才有效)。

1.4.3 指令说明

    (1)初始化设置
    a.显示模式设置。指令码:00111000b,用于设置16×2显示,5×7点阵。
    b.显示开/关及光标设置。二进制指令码:00000DCB中D位用来控制显示开或关,C位用来控制显示光标,B位控制光标是否闪烁。二进制指令码:000001NS中N位控制读写一个数据后地址指针和光标加或减1,S位控制字符的移动。
    c.数据指针设置。指令码:80H+地址码(0-27H,40H-67H)用于设置数据指针。
    (2)其他设置。如指令码01H:显示清屏且数据指针清零。

1.4.4 LCDl602的初始化步骤

    (1)延时15ms,写指令38H(不检测忙信号);
    (2)延时5ms,写指令38H(不检测忙信号),上述过程执行两遍,后面的过程每次写指令、读/写数据之前均需要检测忙信号;
    (3)写指令38H:显示模式设置;
    (4)写指令08H:关闭显示;
    (5)写指令0lH:清屏且数据指针清零;
    (6)写指令06H:字符不移动,光标和指针加1;
    (7)写指令0FH:显示开,光标闪烁。

1.5 恒温保持控制模块

    选用6V固态继电器作为开关器件,通过控制其断与通的时序从而控制加热器件的工作时长,以实现样品的恒温保持功能。

2 系统硬件电路的设计

    该系统的主要电路原理图如图2所示。系统中使用USB口提供5V电源的电路;使用RS232串口通过P3.0和P3.1烧写程序的电路;以及使用继电器控制的恒温保持电路等在原理图中并未画出。

3 系统的软件设计

    系统总的流程图如图3所示。系统程序主要有主程序和LCDl602初始化子程序及读写时序子程序、DSl8820复位及读写时序子程序、键盘扫描子程序、温度数据处理子程序等构成。

4 程序的编辑及调试

    编程语言可以采用汇编语言,也可以采用C51语言。本文采用汇编语言,使用Keil C软件新建一个工程,然后新建一个文件输入源程序并保存成.asm格式,并将该源文件添加到刚刚新建的工程,随后编译链接后生成十六进制文件(.HEX),最后使用烧写软件stc-isp-v3.9l通过RS232串口将十六进制文件烧写进单片机的Flash中运行程序即可。

5 结论

    本文设计的多功能温度控制器体积小、功耗低、可靠性高,实验表明,对温度的控制精度达到了0.1℃的设计目标。

关键字:51单片机  多功能温度控制器 引用地址:基于51单片机的多功能温度控制器的设计

上一篇:利用TA89C2051设计的电子琴方案
下一篇:基于51单片机的调光控制器设计

推荐阅读最新更新时间:2024-03-16 12:42

51单片机软件I2C驱动中的CY
做一个MSP430的项目,虽然430内部有硬件I2C的模块,略难,准备直接移植51的。。碰到一句代码 dat = 1; //移出数据的最高位 pSDA = CY; //送数据口 digitalWrite(pSCL, HIGH); //拉高时钟线 CY是什么?? 百度了一下。。 位 7: CY:进位标志。 当最后一次算术操作产生进位(加法)或借位(减法)时,该位置 1。其它算 术操作将其清 0。 右移时最高位被移入CY。循环移八次,刚好把一字节移完。 意思就是左移的时候溢出后CY会成为1 一次一次发就把8位发完了。。 移植到430上直接d
[单片机]
以AT89C51单片机为核心的LED汉字滚动显示屏设计
引言 LED显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。它具有发光率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。并广泛的用于公交汽车、商店、体育场馆、车站、学校、银行、高速公路等公共场所的信息发布和广告宣传。LED显示屏发展较快,本文讲述了基于AT89C51单片机16×16LED汉字点阵滚动显示的基本原理、硬件组成与设计、程序编写与调试、Proteus软件仿真等基本环节和相关技术。 1 硬件电路组成及工作原理 本产品采用以AT89C51单片机为核心芯片的电路来实现,主要由AT89C51芯片、时钟电路、复位电路、列扫描驱动电路(74HCl54)、16×16LED点阵5部分组成,如图1所示
[单片机]
以AT89C<font color='red'>51单片机</font>为核心的LED汉字滚动显示屏设计
c51单片机外扩 62256 静态RAM
学习汇编语言寻址方式时 理论的知道 但是想知道地址总线物理的连接 所以自己就买了一个62256芯片(32K 静态RAM)进行连接,然后写程序测试。 上面原理图中 有个问题 62256芯片A0-A7没有接 需要用 74HC573 74HC573的链接图 然后网上又找到一张图 C51单片机中有ALE引脚,这个引脚会控制P0脚输出的是地址还是数据 使用原件 AT89S51 62256 74HC573 C51单片机建议买STC公司生产的40脚双列直插的 可以自己制作串口下载线
[单片机]
c<font color='red'>51单片机</font>外扩 62256 静态RAM
51单片机中的数据类型解析
  数据类型在数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作。数据类型包括原始类型、多元组、记录单元、代数数据类型、抽象数据类型、参考类型以及函数类型。本文主要以51单片机中的数据类型为中心而展开的话题。   在keil C51或者iar for c8051编译器下:   int 占两个字节 范围:-32768~+32767   long占四个字节 范围:-2147483648~+2147483647   float占四个字节 范围:3.40E+38 ~ +3.40E+38   double占8个字节 范围:-1.79E+308 ~ +1.79E+308   在标准C语言中,存在着如下六种基本数据类型:   1、
[单片机]
<font color='red'>51单片机</font>中的数据类型解析
51单片机学习之路 —— 1.0 什么是51单片机
1 单片机 —— 什么是单片机?   单片机(Microcontrollers)是一种 集成电路 芯片 ,是采用 超大规模集成电路 技术把具有数据处理能力的 中央处理器  CPU、 随机存储器 RAM、 只读存储器ROM 、多种I/O口和 中断系统 、 定时器 /计数器等功能(可能还包括显示驱动电路、 脉宽调制 电路、模拟多路 转换器 、 A/D转换器 等电路)集成到一块硅片上构成的一个小而完善的 微型计算机系统 ,在 工业 控制领域广泛应用 ————来自百度   单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。 2 单片机 —— 发展历程 主要阶段
[单片机]
<font color='red'>51单片机</font>学习之路 —— 1.0 什么是<font color='red'>51单片机</font>
51单片机入门 - 实验板的选择
单片机的学习,最重要的一点就是多实践。站在岸上学不会游泳。没有实践,恐怕永远也学不好单片机。我将和大家一起,选择一款适合自己的单片机实验板。 方案选择 我们主要有三个可选方案: 自己动手搭建学习板; 购买成品开发板; 使用Proteus等仿真软件。 方案一非常适合动手能力较强,想锻炼动手能力,时间比较充裕的读者选用。自己动手搭建电路,能让我们对单片机更加了解,充分锻炼了动手能力,对以后需要自己制作东西很有帮助。或许你只是用现成的开发板学完单片机,等到想给好友或者心仪的异性做点东西表达下自己的心意时,才发现不会焊板子,那实在非常尴尬。这种方案的缺点在于:各种零散的元件不是很方便购买,不过如果能在淘宝上找到合适的卖家
[单片机]
51单片机对无线抢答器的设计
#include * 自定义Macro //编码的均为反向编码 #define CLEAR 0x7f //定义清空的反码 #define LED_BEGIN 0x01 // 定义开始时数码管的显示 #define LED_FOUL 0x38 // 犯规后显示字母“F”,数码管编码 #define LED_C 0x31 // 字母“C”的编码 #define LED_L 0x71 // 字母“L”的编码,两个用来在主持人取消之后显示“CL”--cancel #define GET 1 // 这个是作为一个函数的参数来混的,就是成功抢答的意思 #define FOUL 0 // 和上面的参数一起混的,犯规---这两个的用法在后面体现
[单片机]
<font color='red'>51单片机</font>对无线抢答器的设计
51单片机存储器结构介绍(1)
MCS-51单片机在物理结构上有四个存储空间: 1、片内程序存储器 2、片外程序存储器 3、片内数据存储器 4、片外数据存储器 但在逻辑上,即从用户的角度上,8051单片机有三个存储空间: 1、片内外统一编址的64K的程序存储器地址空间(MOVC) 2、256B的片内数据存储器的地址空间(MOV) 3、以及64K片外数据存储器的地址空间(MOVX) 在访问三个不同的逻辑空间时,应采用不同形式的指令(具体我们在后面的指令系统学习时将会讲解),以产生不同的存储器空间的选通信号。 程序内存ROM 寻址范围:0000H ~ FFFFH 容量64KB E
[单片机]
<font color='red'>51单片机</font>存储器结构介绍(1)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved