单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2112|回复: 0
收起左侧

智能温度采集与控制系统

[复制链接]
daming 发表于 2014-12-30 23:27 | 显示全部楼层 |阅读模式
1、本设计研究的意义:
    温度的采集与控制系统是一个很广泛实用的系统,可以用在各种地方,比如水温控制、室内温度报警、加热控制等。温度控制系统可以用多种方法实现,比如FPGA编程、微机控制、单片机控制等。一片FPGA价格比较贵,且用为单一的温度控制系统资源浪费很大,而微机控制也是大材小用。单片机价格便宜,用来做温度控制资源利用合理。而本系统是基于MCS—51单片机设计的智能系统,其有对采集的温度进行实时处理能力,且可以根据温度的高低来对其他的装置比如加热器等进行实时地控制。除了可以单独作为一个温度控制系统外,还可以结合其他的更为复杂的系统,嵌入到其他的系统中,作为其中一的部分。比如家里用的电火锅、电冰箱、空调等大型的产品。
2、实现功能:
   (1)系统能通过I/O接口线对加热装置进行控制,并通过A/D转换电路采集该装置温度信息。
   (2可利用两位LED数码管即时显示采集的温度值。用定时器设计定时功能,使显示停留时间为5S,利用单片机的中断系统进行控制。
   (3)当温度每变化1度时应立即更新显示。
   (4)对加热装置的某个温度值进行控制,此实验设定为50o,但可以修改
   (5)用一个单色LED灯显示加热情况:灯亮表示正在加热,灭表示已停止加热。
                                         二、硬件电路设计系统的硬件设计框图如下:



由于本系统是基于AEDK5196ET单片机实验系统而设计的,故里里面的好多芯片和装置已经安装固定。下面对具体的装置及其在本设计系统中的功能和接法进行说明:
1、加热器和温度传感器 :这里采用到的是实验系统上的AEDK—DJ3温度/压力实验平台。本实验只用到其温度测量和控制部分。其包括:加热机构、温度传感器和放大器。温度采集使用热敏电阻,转化为电信号送出。加热器是可控制的,当要加热时,可以向相应的管脚写入“0”,停止加热时写入“1”。在此实验系统中,当DJ3接入AEDK5196ET实验机时,可以用芯片74LS273的PO4脚来控制加热器。接线时用专用25芯插座把DJ3接到AEDK5196ET实验机,其输出端接到AD0809的IN1通道入口。
2、采样装置:这里采样的是实验箱中的AD0809,其具体的图形如下:已经和单片机有部分线连接好了。其采入由传感器转化后的模拟电信号,然后转化为数字电信号。送入到MCS—51单片机中进行处理。接线时把EOC接到单片机的P1.7口用来进行查询采样是否完成。片选信号可以接入74LS138的地址选口。



3、单片机:这是整个系统的核心装置。单片机主的的工作是控制和处理,其先控制A/D采进来的数据。然后根据传感器的温度——电压对比值对应为相应的温度,可以根据查表法,也可以根据公式法,本实验采用的是MCS—51单片机的查表指令设计的查表法。再将对应出来的温度值进行实时的处理,包括:和控制温度(50°)对比,看是否需要停止加热;和前一次温度对比,看是否需要更换LED的温度显示;对LED的显示进行定时;将加热与断开状态送到单色LED上显示等。
4、单色LED:用一个发光二极管接到单片机一个I/O口,加热时此口送出“1”,停止时此口清零。将单片机的P1.0口接到74LS240的任一个入口DLx。
5、八段LED:可以用实验箱上的两个八段LED来显示温度的值。它在实验系统中由可编程芯片8279控制。其装置图如下:



     智能温度采集与控制系统是将上面的装置联合起来,具体的实现方案如下:由温度传感器将温度信号转化为模拟电信号,由A/D采样将模拟电信号采进来并转化为数字电信号送给单片机处理,单片机将采进来的数字信号根据传感器的温度——电压对比值对应为相应的温度,再将对应出来的温度值进行实时的处理,包括:和控制温度(50°)对比,看是否需要停止加热,即对加热器实时控制;和前一次温度对比,看是否需要更换LED的温度显示,即对单色LED实时控制;对LED的显示进行定时;将加热与断开状态送到单色LED上显示等。
                                            三、软件设计流程及描述
根据设计思路,写出实验流程图如下:



                        总程序流程图
(源代码程序请参见:《智能温度采集与控制系统源代码》)
                     
                                             四、设计所遇到问题分析
在本次设计中遇到下面几个问题,但是根据查资料和请教他人,遂一一解决:
1、八段LED显示两位温度:因为这里用的是AEDK5196ET单片机实验系统,它里面的LED是用8279控制的,所以得先熟悉8279芯片。用实验系统上的LED显示温度时,必须查LED的段码表,把对应的数字对就为LED的相应段码。其实要是可以外接的话,可以直接把温度转化为BCD码,然后用两个74LS48或者74LS47(要看是共阴极还是共阳极选定相应的译码器)译码器接到单片机的P1口,直接将温度转化后的BCD码送出来就可以显示了。这样的话,程序可以很简短,也没有那么复杂了。
2、在写程序的时候要注意到的问题有:(1)栈地址SP的设置问题。因为在程序中用到了比较多的寄存器,而SP的刚开始地址为0007H,可以和寄存器地址重复,所以在程序的开始应该给其定一个比较大的值;(2)用一个直接地址的时候要注意最好不用寄存器已经分配的地址,如想用一个直接地址存一个备用数据,因为已经用到了R1R7等寄存器,所以最好不用00H1FH地址;(3)这里用到了查表程序,就要熟悉MCS51单片机的两条查表程序,即用DPTRPC和查表程序。其中DPTR的查表程序比较简单,但是PC的查表程序就比较复杂;(4)程序中要注意娄制的问题。要注意单片机内的数据只有二进制数,当人为地送进去十进制、十六进制等数的时候,它都一律转化为相等的二进制数处理。所以可以随意写入任意进制的数。存在于单片机内的数一律为二进制,但是注意一些码和常数的区别。比如BCD码,当一个十进制数30写入单片机中时,会被单片机存为0001 1110,而30BCD码为0011 0000,所以想把单片机内一个等于30的常数显示于LED上,要先转化为BCD码,再直接用译码器或者用查表法显示出来。但是这里涉及到是把什么进制的数转化为BCD码,根据上面的知识,因为单片机内只有二进制数,所以应该把二进制数转化为BCD码。 源码下载:http://www.51hei.com/bbs/dpj-29903-1.html


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51hei电子论坛2群 联系QQ:125739409;技术交流QQ群219535678

Powered by 单片机教程网

快速回复 返回顶部 返回列表