首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于VB的计算机温度采集系统设计与实现
来源:本站整理  作者:佚名  2009-08-21 10:36:16




应用较广泛的有:逐次逼近式A/D转换双积分式A/D转换器、V/F变换式A/D转换器。本系统所使用的单片机89C51是8位,因此采用8位A/D转换器,其接口电路简单。绝大部分集成A/D转换器的数据输出都具有TTL电平,数据输出寄存器具有可控三态输出功能,可直接挂在数据总线上,否则,就要加缓冲器接口,数据分两次读出,比较麻烦。根据系统所要求的测量分辨力,采用8位A/D转换器时,其分辨力为50/250=0.2,已经高于规定值。温度是一个缓慢变化的物理量,测量它时不需要高速A/D转换器,通道上也不需要加采样保持器。逐次逼近型A/D转换器属于中速A/D转换器,常用于工业多通道单片机控制系统。基于以上原因,本系统采用
ADC0809作为模数转换器。其结构框图如图3。该芯片是8位逐次比较式A/D转换芯片,具有地址锁存控制的8路模拟开关,最大非线性误差小于+1LSB,应用单一+5V电源,其模拟量输入电压的范围为0 +5V,对应的数字量输出为00H FFH,可锁存三态输出,输出与TTL兼容,功耗为15mW,转换时间为100 S,无需调零或调整满量程。有28个引脚,其中:IN0、IN1、IN2、…、IN7接8路模拟量输入;AD-DA、ADDB、ADDC接地址线,用以选定8路输入中的一路。
该系统中ADDC接地,AD-DA、ADDB分别接89C51的P3.3和P3.4,构成4路输入;ALE是地址锁存允许,START是芯片的起动引脚,其上脉冲的下降沿起动一次新的A/D转换,一起接入P3.7;EOC是转换结束信号,与P362相接,向单片机申请中断;OE是输出允许端,直接接+5V;CLK是时钟端,因芯片的时钟频率最高只工作于640KHZ,故通常由单片机的ALE经分频后接向该引脚;DB0 DB7是数字量输出,与PO相接,LSB表示最低位,MSB表示最高位。
3.3 串行接口电路设计
下位机(单片机)通过串行口(RXD和TXD)与上位机(PC机)进行异步通信,采用RS—232标准接口。RS—232规定了自己的电气标准,而此标准并不能满足TTL电平(MCS—51单片机串行口电平为TTL电平)传送要求。因此当RS232电平与TTL电平接口时,必须进行电平转换。目前RS232与TTL的电平转换最常用的芯片是传输线驱动器MC1488和传输线接收器MC1489,其作用除了电平转换外,还实现正负逻辑电平的转换。
4 软件设计
系统软件主要是用VB6.0对RS232串口编程。实现硬件之间的通讯。MSComm是Microsoft公司提供的主要用于串行通信编程的ActiveX控件。ActiveX控件包括一系列的属性、方法和事件,应用程序通过ActiveX控件提供的接口来访问控件的功能。通信控件把许多复杂的操作都留给了VB和Windows处理,编程人员编程时只需设置其中的一些属性。
    系统的关键代码如下:
Coast CMDconfig = "%0101210600" ’设置端口命令字符,
0--100度,科学单位
Coast CMDdataInl = "#O1" ‘读串口1数据命令字符
Coast CMDdataIn2 = "#02" ‘读串口2数据命令字符
Coast CMDspanCalibration = "$010" ‘校准命令字符
Coast CMDoffsetCalibration = "$011" ‘偏移量校准命令字符
Coast CMDconfigStatus = "$012"‘读端口信息命令字符
Coast CMDmoduleName = "$OlM"‘读模块名命令字符
Private Sub CmdStart_onClick( )‘开始命令子程序
    MSComml.CommPor = COMnum‘设置申口号
    If MSComml.PortOpen = False Then‘打开串口
        MSComml.PorOpen = True
    End If
    If COMnum = 1 Then
          CMDdataln = CMIMataInl
      Else
          CMDdataln = CMDdataIn2
      End If
    MSComml.Outpu t= CStr(CMDdataIn)&vbCr‘发出读数命令
      TimeDelay 500‘延时500 ms
      Picturel.CurrentX = 0‘绘制曲线坐标起点
      Picturel. CurrentY = temperature
    Timer1.Enabled = True‘开始计时
End Sub
Private Sub MSComml_OnComm( ) ‘事件响应子程序
  Select Case MSComml.CommEvent‘判断MSComml通讯事件
      Case comEvReceive‘收到Rthreshold个字节产生的接收事件
        MSComml.RThreshold = 0‘关闭OnComm事件接收
        TimeDelay 20‘延时20ms
    temperatureShow = Right(MSComml.Input.7) ‘读取第一个数据字节(BCD码高位字节)
        temperature = VaI(temperature5how ) ‘数值组合,标定小数点
        MSComml.Output = CStr(CMDdataIn)&vbCr‘发送读命令
        MSComml.InBufferCount = 0‘清空缓存
        MSComml.RThreshold = 1‘关闭OnComm事件接收
      Case comEventBreak‘收到Break

      Case Else
  End Select
End Sub
    系统时钟最小可以设为1ms,在使用中需要注意,由于串口速度有限,系统运行速度有限,ADAM4013模块的采样率也有限,所以设置串口采样间隔一般不能小于50ms,否则会出现延时错误。其实对于温度采集来说,20次/s的采样率已经够用,大的采样率并无太大意义。
5 结束语
系统中没有对温度超过测温范围时情况的处理,可在系统改进中增加一个报警电路。将单片机的一个口与一个发光二极管相接,所测温度超过规定温度时,发光二极管点亮,提醒用户。本系统由于进行了实时显示和数据存储的设计,便于直观地观察温度变化和数据处理。本系统最大的特点就是容易实现,不需要数据采集卡,不需要硬件驱动程序,硬件连接方便,软件编制也比较容易掌握,特别适合短期的测温系统开发。

上一页  [1] [2] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:198,074.20000 毫秒