基于89C51单片机和AD590芯片实现微机通信程序的开发
1系统功能及特点
本系统用单片机对整个测量电路进行管理和控制,使得整个系统智能化、体积小、功耗低、使用电子元件较少,内部配线少,成本低,制造、安装、调试及维修方便 。该系统中单片机作为下位机,完成测温任务,测量结果可在本地显示,也可通过下位机与上位机(PC机)通讯,给出结果和提示信息 。而上位机与下位机大多是通过PC机的RS-232串行接口实现通信 。VisualBasic是可视化面向对象的采用事件驱动技术的结构化程序设计语言,本系统上位机是在Windows环境下利用Visualbasic开发微机通信程序 。
2系统基本原理
系统结构如图1所示,其中,计算机要求能够运行Windows98或更高版本)操作系统和开发环境VB6.0,具有标准的RS232串口,主要功能为数据采集处理和系统控制,是人机交互的平台 。
文章插图
现场温度采集点共有4路,采用AD590采集温度送到单片机的A/D转换器转入端,测量范围最大值为50度,单片机定时采集温度信号,并按串行通信协议打包构成数据帧 。在微机中采用VB6.0编程,并选用MSCOMM控件进行串行口通讯 。MSComm控件是Microsoft提供的扩展控件,用于支持VB程序对串口的访问,同时支持查询方法和事件驱动通讯的机制 。事件驱动通讯是交互方式处理串口事务的一种非常有效的方法,特别适合Windows程序的编写 。因此用其实现微机串口的数据通讯相当简单,以很少的程序代码就可以轻松实现串口的访问和数据通讯 。
3硬件设计
3.1测量电路设计
AD590将温度转换成相应的电流后,需要有电流电压转换电路(如图2),其中电容C起滤波作用 。该电路中,考虑到测温范围是0度—50度,而ADC0809输出电压范围为0-5V,故电阻R2取3.3千欧,R3取15千欧,其中R2是滑动变阻器,精度高于R3,电阻R4取100,R5取50千欧,R4是滑动变阻器,精度高于R5,电阻R6取33千欧 。运放是温度电压变换电路,为了测试方便,设计时将0度时的输出电压定为0V,每升高一度输出电压上升100mV,与电压之间的关系为:U=K(T-T0)V式中,K为比例系数,K=0.98V/度,T为环境温度,单位为度,T0—测温下限0度 。当T=+50度和T=0度时,变换电路输出电压上限为Umax=5V,电压下限为Umin=0V,实现的办法是:首先调整R2,使得I1=273.2uA,当温度为0度时,通过AD590的电流I2=273.2uA,此时I3=0uA,R4、R5上无压降,即输出电压为0V;当环境温度为50度时,流过AD590的电流为323.2uA,此时,I3=I2-I1=50uA,调整R4,使R4+R5=98千欧,有(R4+R5)*I3=4.9V 。同样,可以计算出其余各温度所对应的输出电压 。
文章插图
3.2模数转换接口电路设计
文章插图
本系统以89C51芯片作为主芯片,管理和控制整个系统 。该芯片集成度高,兼容8051单处机,不同的是片内有4KB的ROM,为PEROM(FLASH存储器) 。A/D转换器的种类很多,目前应用较广泛的有:逐次逼近式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,对应的数字量输出为00HFFH,可锁存三态输出,输出与TTL兼容,功耗为15mW,转换时间为100S,无需调零或调整满量程 。有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经分频后接向该引脚;DB0DB7是数字量输出,与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处理,编程人员编程时只需设置其中的一些属性 。
系统的关键代码如下:
CoastCMDconfig=“%0101210600”’设置端口命令字符,0--100度,科学单位
CoastCMDdataInl=“#O1”‘读串口1数据命令字符
CoastCMDdataIn2=“#02”‘读串口2数据命令字符
CoastCMDspanCalibration=“$010”‘校准命令字符
CoastCMDoffsetCalibration=“$011”‘偏移量校准命令字符
CoastCMDconfigStatus=“$012”‘读端口信息命令字符
CoastCMDmoduleName=“$OlM”‘读模块名命令字符
PrivateSubCmdStart_onClick()‘开始命令子程序
MSComml.CommPor=COMnum‘设置申口号
IfMSComml.PortOpen=FalseThen‘打开串口
MSComml.PorOpen=True
EndIf
IfCOMnum=1Then
CMDdataln=CMIMataInl
Else
CMDdataln=CMDdataIn2
EndIf
MSComml.Output=CStr(CMDdataIn)&vbCr‘发出读数命令
TimeDelay500‘延时500ms
Picturel.CurrentX=0‘绘制曲线坐标起点
Picturel.CurrentY=temperature
Timer1.EnabLED=True‘开始计时
EndSub
PrivateSubMSComml_OnComm()‘事件响应子程序
SelectCaseMSComml.CommEvent‘判断MSComml通讯事件
CasecomEvReceive‘收到Rthreshold个字节产生的接收事件
MSComml.RThreshold=0‘关闭OnComm事件接收
TimeDelay20‘延时20ms
temperatureShow=Right(MSComml.Input.7)‘读取第一个数据字节(BCD码高位字节)
temperature=VaI(temperature5how)‘数值组合,标定小数点
MSComml.Output=CStr(CMDdataIn)&vbCr‘发送读命令
MSComml.InBufferCount=0‘清空缓存
MSComml.RThreshold=1‘关闭OnComm事件接收
CasecomEventBreak‘收到Break
…
CaseElse
EndSelect
EndSub
系统时钟最小可以设为1ms,在使用中需要注意,由于串口速度有限,系统运行速度有限,ADAM4013模块的采样率也有限,所以设置串口采样间隔一般不能小于50ms,否则会出现延时错误 。其实对于温度采集来说,20次/s的采样率已经够用,大的采样率并无太大意义 。
5结束语
系统中没有对温度超过测温范围时情况的处理,可在系统改进中增加一个报警电路 。将单片机的一个口与一个发光二极管相接,所测温度超过规定温度时,发光二极管点亮,提醒用户 。本系统由于进行了实时显示和数据存储的设计,便于直观地观察温度变化和数据处理 。本系统最大的特点就是容易实现,不需要数据采集卡,不需要硬件驱动程序,硬件连接方便,软件编制也比较容易掌握,特别适合短期的测温系统开发 。
【基于89C51单片机和AD590芯片实现微机通信程序的开发】责任编辑:gt
.dfma {position: relative;width: 1000px;margin: 0 auto;}.dfma a::after {position: absolute;left: 0;bottom: 0;width: 30px;line-height: 1.4;text-align: center;background-color: rgba(0, 0, 0, .5);color: #fff;font-size: 12px;content: "广告";}.dfma img {display: block;}
文章插图
推荐阅读
- 建设首个基于鲲鹏云底座的智慧城市:许昌
- 单片机语音芯片精简指令
- smart确认首款SUV将于2022年亮相:基于吉利SEA平台打造
- 基于田间条件下的动态高光谱成像和机器学习对于葡萄品种分类的研究
- 基于无线网络技术的视频监控系统的方案应用研究
- 基于AT89C2051单片机和红外无线实现齿轮箱温度在线监测系统的设计
- 基于高压检测原理实现池壳检测机的设计
- 百度进军生物计算领域 发布基于飞桨的生物计算平台 - 螺旋桨 PaddleHelix
- 人工分蜂注意事项
- 深圳先进院等提出基于卷积神经网络的低剂量光声成像方法