文骁阳 山东省科学院激光研究所 山东济宁 272000
PC机基于串口与89C52单片机通讯读取DS18B20的数据
文骁阳山东省科学院激光研究所山东济宁272000
【文章摘要】
微型控制系统由于其自身的优越性能—成本低、柔性好,在社会中的用途社会生活中的用途越来越广泛,影响也越来越大。本文采用89C52单片机采集温度传感器DS18B20的数据,利用串口连接PC机和89C52单片机,进而把DS18B20的温度信息采集到PC机中。
【关键词】
单总线通信;89C52;DS18B20
DS18B20是一种价格便宜,精度可调的温度传感器;89C52是一款性能稳定,物美价廉的微型控制器,如果把这些价格便宜、性能稳定的零部件应用到养殖业或者农业,定能起到意想不到的作用。
整个系统的结构图如图1所示:
此系统中测温层为DS18B20组,可根据采集温度的需要,进行确定传感器的数量及布置方式,测温组的工作电源既可采用寄生电源方式产生,也可由专门的电源提供,电源电压范围为+3.0V~+5.5V,电压低,对人体不会照成伤害,比较安全。
该系统中微控制器采用89C52单片机,89C52单片机和89C51相比,引脚是一样的,区别主要在于AT89C52 的ROM空间为8K,而AT89C51的空间为4K,是AT89C51空间的两倍,可以多存储一些数据。
该系统的人机界面采用VB高级语言在PC机上编写的采集和显示界面,可以方便地实时读取单片机中的数据。
图1:系统结构原理图
PC机与单片机之间的通信通过串口实现。需要注意的是单片机使用的TTL电平与RS232电平不兼容,本系统通过MAX232E芯片实现TTL电平与RS232电平的转换,如图2所示。
MAX232E芯片是包含两路接收器和驱动器的RS-232电平转换芯片,适用于各种232通信接口。芯片内部有一个电源电压变换器,外加4只1μF的泵电容可以把输入的+5V电源电压变换成为RS-232C输出电平所需的±10V电压。所以采用此芯片接口的串行通信系统只需单一的+5V电源就可以了
单片机采集的数据通过VB编写的通信程序经过串口进入上位机,在温度读取中我们用到VB中的一个重要控件- MSComm控件。下面介绍此控件的一些主要属性,如表1所示。
其中CommEvent属性是一个非常重要的属性。一旦串口发生通信事件或产生错误,依据产生的事件和错误,MSComm控件为CommEvent属性赋以不同的代码,同时产生OnComm事件。用户程序就可在OnComm事件处理程序中针对不同的代码,进行相应的处理。
具体初始化程序如下:
Private Sub Form_Load ( )
MSComm1.CommPort = 1 '设置串行端口号为1
MSComm1.Settings = "9600,N,8,1" '参数设置
M S C o m m 1 . I n p u t M o d e = comInputModeBinary '二进制数据格式
MSComm1.InBufferSize = 1024 '置接收缓冲区为1024字节
MSComm1.InputLen = 0 '置InputLen 为0时,使用Input将使MSComm控件
初始化完成后,PC机就可以与单片机进行通信了。
通过实验,该系统实现了预定的目标,即:单片机采集DS18B20温度传感器组的温度信息,PC通过VB高级语言及串口读取单片机中采集的数据并提供人机界面。该类系统由于其造价低、系统安全等多方面的优点,可以广泛应用于大棚种植业,动植物养殖业。
表1 MSComm控件的主要属性
图2:系统的运行结果