基于AT89S51的粮仓温度测控系统设计
2012-10-08庞兴龙
刘 健,庞兴龙
LIU Jian1, PANG Xing-long2
(1.北华航天工业学院 机械工程系,廊坊 065000 2.廊坊市环境保护局,廊坊 065000)
0 引言
粮食储备直接影响着国家的经济。检测粮仓温度,及时发现温度变化进行调整,以减少粮食损失是粮仓管理的重点。传统的通过人工使用温度计测量后再用设备加热、降温等来控制温度的方法,速度慢、准确度低,不易及时发现温度变化而会导致粮食大面积的变质,损失很大。随着计算机的普及和单片机功能的不断强大,由于操作简单、测量准确、价格低廉等优点而备受关注,被带入到控制检测行业中,推动了这一行业的改造、更新替换。本文就是利用单片机和PC机实现自动控制粮仓温度,大大提高了温度技术指标,具有广阔的发展前景。
1 系统方案
本设计的下位机采用单片机AT89S51八位机作为微处理单元控制,采集粮仓温度。温度通过转换保存到P1口。上位机选择PC机最合适,上下位机通过串口进行联络,下位机传送采集数据给上位机,上位机接收后,分析、处理并发送命令给下位机,实现人机交互。其中上位机选用VB6.0为开发软件,利用MSComm控件实现和下位机的通信,充分发挥两者的优点。又因为单片机和PC的串口电平不同,需要通过MAX232芯片转换单片机电平,整个设计的系统结构图如图1所示。
图1 系统结构图
2 下位机
2.1 单片机
单片机是温度检测系统的核心部分,因此选择单片机至关重要。目前国内MCS-51系列单片机是主流,它性价比高、技术成熟,迅速占领了市场。
单片机是把主要零件都集成到一块芯片,缩短了数据的传送距离,加快速度,可靠性更高,抗干扰能力强。在测控系统中,AT89S51低价,I/O口又多,程序空间大,是最理想的选择。AT89S51是高性能、低功耗,CMOS8位的单片机,含有4Kbytes可编程的Flash只读程序存储器,它兼容标准8051指令系统及引脚。它既可以在线编程也通用8位微处理器在芯片中,被灵活地用在各种控制领域里。图2为AT89S51引脚图。
各引脚功能说明:
VCC:电源+5V输入。
VSS:电源地端。
XTAL1:系统时钟的反相放大器输入端。
XTAL2:时钟的反相放大器输出端。
RESET:复位。重置引脚,对引脚电平提升到高电平并保持两个机器周期以上。
图2 AT89S51引脚图
EA/Vpp:外部访问。引脚接低电平后,系统用外部程序代码执行。
ALE/PROG:地址锁存器启用信号。触发外部8位锁存器,将地址总线(A0~A7)锁入。输出时钟或定时。:启用程序储存,利用PSEN及RD引脚分别启用存在外部的RAM与EPROM。
PORT0(P0.0~P0.7):端口0是一个8位双向I/O口, P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O口(P1、P2、P3)内部有一提升电路,P0在做I/O时推动8个LS的TTL负载。编程时,p0口接收指令,校验时输出指令字节,外接上拉电阻。
PORT1(P1.0~P1.7):和端口0一样,输出缓冲器推动4个TTL负载。
PORT2(P2.0~P2.7):P2除了当一般I/O口外,如果AT89S51扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8~A15,这时P2不能当I/O口用。
PORT3(P3.0~P3.7):P3除了具有一般双向I/O端口外,还多工具有特殊功能,如串行口通信、外部中断控制、外部数据的读取或写入控制等。
P3.0:RXD,串行输入。
P3.1:TXD,串行输出。
P3.2:INT0,外部中断0输入。
P3.3:INT1,外部中断1输入。
P3.4:T0,计时计数器0输入。
P3.5:T1,计时计数器1输入。
P3.6:WR:写入外部数据存储器。
P3.7:RD,读取信号。
2.2 Max232芯片
Max232是一种把电脑的串行口rs232信号电平(-10,+10v)转换为单片机所用到的TTL信号点平(0,+5)的芯片。由于单片机和PC机串口的工作电平不一致,就需要MAX232芯片把下位机的电平转换成PC机的RS 232电平。图3为max232引脚图。
Max232芯片的内部结构分三部分:
第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,供给串口RS-232电平。
第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。
其中第一数据通道是13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)。第二数据通道是8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)。
TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT口送到电脑; RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。
第三部分是供电。15脚DNG、16脚VCC(+5v)。
图3 max232引脚图
2.3 硬件连接线路
通过前两部分介绍,可以得到如图4的单片机和串口连通图。图中通过MAX232芯片转换电平实现PC机和AT89S51串行通信,采用PC机和标准插座连通。MAX232电平转换,将单片机TXD端输出的TTL电平转换成PC机的RS-232C标准电平,由MAX232的14引脚通过9针接口送到PC机; PC机输出的标准电平,从 MAX232的13引脚输入转换成TTL电平,由单片机的RXD端负责接收。
图4 单片机和串口连通
3 上位机
Visual Basic 是由微软公司开发的事件驱动编程语言。VB源于BASIC编程语言。它拥有图形界面和快速应用开发系统,连接数据库方便,它提供串口通信控件,开发串行通信程序很方便。本文选择VB为上位机软件开发平台,选择MSComm控件完成上下位机通信。上位机的图形显示、处理等优点和下位机的实时数据采集都能充分体现。MSComm控件只要用户编写很少量的代码就能实现通信软件的开发。
MSComm控件是串行ActiveX控件,通过串口发送和接收数据,提供串行功能给应用程序。MSComm控件的具备如下特性:
1)CommPort属性设置通信端口。CommPort属性值设成1~16任意数(默认1)。
2)Settings属性设置初始化参数。字符串形式返回4个参数。格式:“BBBB,P,D,S”。
3)Portopen属性设置通信串口的开关状态,True时打开串口; False时关闭串口,并清空接收和发送缓冲区。
4)Input属性读取数据从缓冲区。
5)Output属性写入数据向缓冲区。
6)InputMode属性读取或设置读取数据格式, InputMode=O表示格式为文字;InputMode=1为二进制。
上位机主要任务是数据的接收和处理、发送控制命令、计算和显示等功能。其程序分为:设计界面、初始化、数据通信和数据处理。
上位机通信程序分为数据的发送和接收,分别写在两个Click事件下。上位机发送命令程序代码:
Private Sub cmdstart_Click()
Dim outdata(1)As Byte
Outdata(1)=&AA
Buf = “ ”
Buf=MSComm1.input
MSComm1.output=outdata
End sub
上位机接收命令程序代码:
Private sub cmdreceive_click()
Dim inbuf() as byte
Inbuf=MSComm1.input
Num=Ubound(inbuf)
Redim indata(0 To num) As Integer
For i=0 to num
Indata(i)=inbuf(i)
Next i
Fot j=0 To num
MSFlexGrid1.Col=0
MSFlexGrid1.row=j+1
M S F l e x G r i d 1 .Text=FormatMYM(indata(j).”0.0”)
Next j
End sub
4 结论
本文从硬件和软件两方面阐述了粮仓温度的测控系统。该系统以单片机AT89S51芯片为核心部件,配合了Max232电平转换实现和上位机PC机的连接和传输数据。选择了Visual Basic的MSComm控件来实现软件方面上下位机的通信。该系统成本低、操作简单、性能稳定,非常适合需要随时对温度监测的粮仓使用。
[1] 贾好来.MCS-51单片机原理及应用[M].北京:机械工业出版社,2006.
[2] 李玉峰.倪虹霞.MCS-51系列单片机原理与接口技术[M].北京:人民邮电出版社,2004.
[3] 高峰.单片微型计算机与接口技术[M].北京:科学出版社,2003.
[4] 林海军,杨进宝,汪鲁才,杨艳华. 基于复合RBFNN的数字温度传感器误差补偿方法[J].传感技术学报,2011,(02).
[5] 李自菊,雷正保,曾雁.基于制动系统的CST电控系统智能设计[J].交通科学与工程,2010,(02).