DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1276|回复: 0
打印 上一主题 下一主题

[工仪] 基于AT89C52单片机的防腐监测仪设计

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 19:49:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  
         
    Design and Application Of Corrosion Intensity Checking System
摘要:介绍了89C52单片机的防腐监测仪的设计开发过程。介绍了一个对微电流进行采集、转换、显示、储存的一套完整系统。该系统的工作原理是首先通过传感器采集微电流信号,再进行放大后送到A/D转换芯片中进行模数转换得到对应的数字信号,利用AT89C52单片机对此信号进行处理,结合按键输入,在液晶显示屏上实时显示当前的腐蚀电流以及对应的腐蚀度,同时判断检测卡槽是否有卡,在有卡的情况下,利用I2C串行通讯技术每隔一分钟将数据送入IC卡进行存储,实现对一段时间内微电流的监测。最后通过基于VB的上位机系统读卡,把IC卡里的数据导入计算机存档。该系统实际应用效果良好。
关键词:实时显示;I2C串行通信;微电流;上位机
Abstract:It introduces a corrosion intensity checking system, which collects the weak corrosion current and then converts, displays and stores it. Firstly, it collects the weak current by a current sensor, and then amplifies it. Secondly, the amplified signal is converted to the digital signal by the A/D converter, which is processed by AT89C52.Thirdly, the present current and its corresponding corrosion degree is displayed on the LCD screen real-time. Meanwhile it will detect whether there is an IC card. If so, it stores the data into the E2PROM based on the I2C serial communication technique. Thus the weak current in a period can be supervised. Finally, Super-computer based on VB is in communication with Smart Card Reader, and the data in the card can be read and stored on the computer. The following paper mainly depicts the design and development of the corrosion intensity checking system. The effect that system reality is applied is fine.
Keyword: Real-time,I2C serial communication technique,Weak Current,Super-computer
0 引言
本文介绍的腐蚀仪是为了监测野外输油管道腐蚀度而设计的,由于输油管道的腐蚀度影响到石油的生产,会造成经济损失和安全事故,故对其腐蚀度的监测是非常必要的。本系统中,可以通过检测管道里的微电流,然后通过输入经验参数来换算出管道当前的腐蚀度,并通过上位机程序把数据存档,绘制腐蚀度变化曲线图,以便操作人员可以直观的了解输油管道的腐蚀变化情况。
1  总体方案设计
1.1  设计总体构成方案
设计主要由下位机和上位机两个部分组成。下位机以单片机为核心,运用程序控制来进行电流的采集、处理、显示,并将有关数据存储到IC卡。上位机则是通过计算机与Q系列接触式IC卡读写器之间进行的串口通信,将IC卡里的数据导入计算机。
    其下位机系统框图如图1所示。


500)this.style.width=500;" border=0>
图1  下位机系统框图
其上位机系统的系统框图如图2所示。


500)this.style.width=500;" border=0>
图2  上位机系统框图
1.2  下位机电路的设计
本系统的设计过程中,主要元件包括12位并行模/数转换芯片AD1674、扩展多功能接口芯片8155、时钟日历芯片DS12887、AT89C52单片机。
放大芯片采用了AD524放大器。考虑到腐蚀电流的取值范围为0uA"100uA,故选取固定增益值GAIN=1000,使放大后的电流量满足AD1674的输入端要求。
模拟电流量通过AD1674后转换成对应的数字量。本系统中AD1674与AT89C52的硬件接口电路如图3:采用+12V、-12V双电源供电,单极输入方式,模拟量从10VIN输入。其中CS接GAL16V8的18号管脚,它的启动地址为4000H,高八位地址为4002H,低八位地址为4003H。转换结束信号STS接到INT0上,AT89C52的读写信号W/R、RD通过与非门接到AD1674的操作使能端CE来控制AD1674的读/转换操作。可用中断方式,也可用查询方式。本系统中采用查询方式,其流程如图4所示。


500)this.style.width=500;" border=0>
图3  AD1674与AT89C52的硬件接口电路


500)this.style.width=500;" border=0>
图4  AD1674转换流程图
其对应的C51语言程序如下所示:
#define ADSEL    XBYTE[0x4000]      //AD1674相关定义
#define HIGH_READ    XBYTE[0x4002]
#define LOW_READ    XBYTE[0x4003]
unsigned int ad1674()
{  uchar high,low,j=0;
    unsigned  int   ad_value1;
   unsigned  int ad_value2,ad[20],sum=0;
for(j=0;j>=4;
   ad_value1=high*256+low;         //合并12位二进制数为十进制数
   ad_value2=ad_value1*0.0002442*10;      //1/0XFFF=0.0002442,这里取单位为mA级
   ad[j]=ad_value2;
   }
for(j=0;j<10;j++)   sum+=ad[j];    //对10次采集值求平均值
    sum/=10;
   return (sum);
}
AT89C52有256B的内部RAM,满足本系统对数据存储器的需求;内部有8KB的可编程只读存储器,构成应用系统时,不需要外扩程序存储器[3]。
DS12887的MOT接GND,即选用Intel工作模式。其读写允许输入脚DS/RD、R/W分别与AT89C52的读写信号相接。它的复用地址数据总线AD0-AD7接AT89C52的P0.0-P0.7,片选输入CS接GAL16V8的15号管脚,它的命令寄存器地址为:分-5002H,小时-5004H,星期-5006H,日-5007H,月-5008H,年-5009H,寄存器A-500ah,B-500bh,C-500ch,D-500dH,不掉电数据存储器为:500EH-507FH。RESET直接接VCC,保证DSI2C887在掉电时,其内部控制寄存器不受影响。
液晶显示器NS1602,它能显示16字符X2行的内容。系统运用的是间接访问方式8位数据总线接口电路。其3个控制信号RS、R/W、E分别与AT89C52的P3.3、P3.4、P3.5口相接,8位数据信号接8155的PB端口。对液晶显示器的操作要严格遵守LCD1602的接口时序。其操作分两类:写指令代码,写显示数据。两者的区别取决于RS,RS=0时访问命令寄存器,RS=1时访问数据寄存器[6]。另外,对LCD的初始化工作是非常重要的,包括清屏、数据格式设置、显示器特性设置、显示地址设置等。
键盘输入采用4*4键盘,其中键盘行线接P1.0-P1.3,输出接地信号;键盘列线接P1.4-P1.7,输入回馈信号,来检测按键是否按下。键盘是非编码键盘,要通过软件编程来识别键盘。键盘输入信息的主要过程是:判断是否有键按下,扫描确定按下的是哪一个键;把此键代表的信息翻译成计算机所能识别的代码。
由于IO口不够用,外加一片扩展多功能接口芯片8155。其片选端接GAL16V8的14号管脚,IO/M端接地址A8,8155的命令口地址为2100H,A口地址为2101H,B口地址为2102H,C口地址为2103H。8155的PB口为LCD的数据口。
1.3 上位机电路的设计
利用接触式IC卡读写器跟计算机之间进行串口通信将IC卡里的数据导入计算机。读写器提供了性能完善、可靠的接口函数库,在用VB编程时可直接运用这些函数。
首先要调用通讯口初始化函数IC_InitComm(Port)来检测串口,再设置卡型,成功后输入页码就可读入该页的数据了。读入的数据可通过保存控件保存到指定的路径下。程序退出之前要执行IC_ExitComm()函数关闭串口释放串口设备句柄否则再次初始化串口将出错。

2. 数据的串行存储
2.1  I2C总线通信原理
I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。SDA总线上的数据仅在SCL为低电平时可以改变,每一个SCL周期表示传送一位串行码。若SCL高电平期间,SDA由高转低,表示“开始”状态,提示一个通信进程的激活。而SDA由低转高,表示“停止”状态,该状态终止所有通信。所有地址和数据均以8位串行码为数据单位输入输出,总线上任何接收设备必需在接收到8位串行码后,将SDA总线置1位低电平以确认它成功地收到一个字节数据。写操作需在“开始”状态后, 发出一个8位的控制及器件地址码并得到确认,再发出一个8位或16位数据码地址并在被确认后随时钟不断滚动输出8位数据码,直至“停止”状态发生[2]。

2.2  I2C总线的编程实现
本系统中是用P3.0和P3.1分别作为SDA和SCL信号,单片机所用晶体振荡器的频率为12MHz。当无卡插入时开关闭合,PC0为低电平,当有卡插入时开关断开,PC0为拉为高电平。每个机器周期为1us,设计可根据I2C总线的工作时序用软件模拟I2C总线产生起始位、停止位以及发送字节。  
3. 结束语
现有一块美国FANN公司生产的机械电流测量表,价格一万多元人民币。本文以AT89C52单片机为核心处理器设计的防腐监测仪则只需几百元的成本,而且能自动定时将腐蚀相关数据进行存储,与传统的机械电流测量表相比,无需专门的工作人员来记录相关数据,操作起来更简单方便。在外形上,本设计利用液晶屏显示,其体积更小巧。本设计能较好的对石油管道的腐蚀状况进行监测,将对减少石油管道事故和降低由此带来的经济损失起到良好效果。
本文作者创新点:与国外的同类仪器相比具有价格上的绝对优势,从使用的角度看读数精确,携带方便。
参考文献
[1] 杨振江,蔡德芳.新型集成电路适用指南与经典应用[M].西安:西安电子科技大学出版社,1998.10
[2] 杨金岩,郑应强,张振仁.8051单片机数据传输接口扩展技术与应用实例[M].北京:人民邮电出版社,2005.1
[3] 李群芳,张士军,黄建.单片微型计算机与接口技术(第二版)[M].北京:电子工业出版,2005.1
[4] 王述全,孟臣.智能型LED键盘显示技术及其在仪器仪表中的应用[J].微计算机信息,2004,(10).
[5] http://www.analog.com/UploadedFiles/Data_Sheets/346669145AD1674_c.pdf[S].
[6] http://www.gemtech-hb.com/chinese/web/pdf/char.pdf[S].
[7] The I2C Bus concept and Specification[S]. Philips Semiconductors.1992
作者简介:
杨君(1977-),女(汉族),湖北钟祥人,武汉科技大学信息科学与工程学院,讲师,从事数字信号处理及电路设计的研究。
通信地址:武汉科技大学信息科学与工程学院173#  邮编:430081
[1]
         
          [/td]
        [/tr]
      
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-5-5 07:36 , 耗时 0.083843 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

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