单片机作为典型的嵌入式操控器,具有集成度高、处理功用强、运转速度快、体积小、扩展灵敏等优势,在仪器仪表、家用电器、进程操控等范畴被广泛应用。锅炉温度是工业进程中最常见的工艺参数之一,其丈量进程的抗搅扰才能和丈量值的精度是影响对锅炉温度操控作用的重要要素。为使体系更智能化,一般挑选单片机为体系操控中心。可是,传统的单片机丈量体系中完结A/D转化成果输出以及各器材之间的数据传递大多选用并行的通讯办法,这种数据交换办法占用了许多的I/O资源,体系结构也因而变得复杂。一起许多的硬件连线也会带来许多搅扰要素,降低了锅炉温度值的丈量精度。为了处理传统规划中存在的问题,本文提出运用Philips公司推出的I2C总线(Inter Integrated Circuit Bus)规范来规划体系,大大简化了体系硬件结构,释放了单片机I/O资源,也进步了体系的扩展性和抗搅扰才能。
1 体系整体规划方案
依据I2C总线的锅炉温度丈量体系结构如图1所示,体系首要由温度传感器及信号调理电路、A/D转化器、微操控器、液晶显现、报警电路、存储器电路等组成。体系首要通过温度传感器取得锅炉温度值,调理电路把传感器的输出信号转化为0~5 V的电压值,规范电压值送入A/D转化器转化为数字信号,并送入单片机数据处理,单片机将接纳到的锅炉温度值存储到非易失性的E2PROM,液晶显现器1602将显现锅炉的实时温度,单片机还将当时锅炉温度与预先设定的温度规模进行比较。当温度高于设定温度最大值或小于温度极小值时,体系将主动报警。
锅炉温度丈量体系是依据I2C总线规范规划的,首要通讯部件之间只需求两条总线,一条是双向串行数据线SDA,另一条是串行时钟线SCL。AT89S51不具备I2C总线接口,本规划运用了两个一般I/O口来模仿I2C规范中SDA和SCL的作业,图2是丈量体系I2C总线串行通讯线路图,体系的多个I2C器材悉数通过SDA和SCL衔接并进行数据交换,不同器材之间通过总线竞赛取得数据交换的权力。
2 硬件电路规划
微操控器模块运用AT89S51单片机,首要完结数据的收集、处理和操控显现等功用,单片机最小体系包含时钟电路和复位电路。规划运用单片机的P1.0发生I2C总线中的SCL时钟信号,P1.1模仿SDA数据信号线,进行数据的双向传递。SCL和SDA引脚内部漏极开路,规划时要外加约5 ?赘的上拉电阻。体系的硬件电路如图3所示。
A/D转化模块选用具有I2C接口的8 bit CMOS可编程转化器PCF8591,该芯片一起集成了A/D转化和D/A转化功用,这儿运用其逐次比较型A/D转化功用。与传统的ADC0809转化输出需求8根并口数据线比较,PCF8591为体系节约了6根数据线。典型的I2C总线接口器材的总线地址由器材地址、引脚地址、方向位组成[1]。在锅炉温度丈量体系中,为简化规划把PCF8591的A0、A1、A2三个地址引脚接地。依据其硬件规划,确认PCF8591的总线地址为91H,依据体系所需功用,确认其操控寄存器的值为00H,单片机从PCF8591中读取A/D转化值。通道输入的模仿电压U和转化成果D之间的关系为D=255U/5。在运用I2C总线的体系中,主控器宣布的第一个字节信息为器材地址信息,操控寄存器信息是主控器对PCF8591拜访时宣布的第二个字节信息。
存储器模块选用ATMEL公司推出低功耗CMOS串行带I2C接口的E2PROM芯片AT24C01[2],首要完结温度值的存储。单片机从PCF8591读取A/D转化成果后,把温度值存储到E2PROM。此刻,AT24C01地址为A0H,当体系需求从E2PROM读取温度值时,AT24C01地址为A1H。与一般存储器扩展比较,选用AT24C01为体系节约了6根数据线及许多的地址线,使得体系结构更简化,丈量进程的搅扰要素也大大削减。
体系作业时,AT89S51宣布地址信息,PCF8591和AT24C01把本身的地址与接纳到的地址信息进行比较,相同则为被拜访器材,并预备数据的发送和接纳。
温度传感器选用恒流源输出的AD590,不需进行冷端补偿,可进行远距离传送,有较好的抗搅扰才能。信号调理电路模块将AD590输出的电流信号转化为0~5 V的电压信号,为A/D转化做预备。
显现模块运用液晶显现屏LCD1602,能够显现16×2个字符,1602的三个功用操控引脚RS、RW、E由单片机的P0.5、P0.6、P0.7三个I/O操控,数据接口D0~D7则由P2口的8 bit来操控。与选用LED显现器比较,液晶显现器的硬件连线更少,电路焊接因而变得简略。
声光报警模块由LED、蜂鸣器和电阻组成。光、声响报警分别由单片机的P1.2和P1.3操控,为进步驱动才能,发光二极管和蜂鸣器均由NPN三极管驱动。
3 体系软件规划完结
本体系的软件规划部分选用C言语编程完结,运用的软件是KeiluVision3,从功用上看,体系软件首要包含主程序、数据处理子程序、读A/D转化成果、温度比较及报警输出子程序、读写E2PROM子程序、显现子程序等,体系主程序流程图如图4所示。
体系主程序首要完结体系的初始化,及各功用模块函数的调用、等候中止。采样时刻挑选500 ms,运用单片机内部定时器T0完结,因而要对T0的作业办法、计时初值、中止答应、开端计时等进行初始化,T0每50 ms中止一次,中止10次即开端一次温度采样。
数据处理子程序对收集到单片机内的锅炉温度值进行处理,包含四次均值滤波和标度改换部分。
I2C总线通讯的编程是体系软件规划的要害,AT89S51不具有I2C接口,I2C总线信号将通过两个独立I/O进行软件模仿。这部分总线数据通讯程序编写思路为:先由单片机宣布起始信号,接着通过SDA宣布I2C器材的总线地址。与该地址相同的器材宣布应对,应对正确后,再由单片机通过SDA向应对器材写数据或从应对器材中读取对应地址的数据,一次数据通讯完毕时要由单片机宣布完毕信号。
起始信号程序如下:
Start( )
{ SDA=1;
_NOP_( );
SCL=1; //I2C发动总线时,SCL保持高电平
FOR(I=0;I++;I<5)
_NOP_( );
SDA=0; //I2C发动总线时,SDA发生高电平到
低电平的跳变
FOR(I=0;I++;I<4)
_NOP_( );
SCL=0;//预备发送或接纳数据
_NOP_( );
}
完毕信号程序如下:
Stop( )
{CLR SDA;
_NOP_( );
_NOP_( );
SCL=1; //I2C总线中止时,SCL保持高电平
FOR(I=0;I++;I<5)
_NOP_( );
SDA=1; //I2C总线中止时,SDA发生低电平到
高电平的跳变
FOR(I=0;I++;I<4)
_NOP_( );
}
编写读取PCF8591的A/D转化成果子程序时,流程为:发动起始信号,发器材地址,PCF8591应对,正确则接着发送操控字节,PCF8591应对,正确则传送A/D转化后的数字量,数据传送完则宣布完毕信号。
本文提出了一种依据日趋盛行的I2C总线的锅炉温度丈量体系规划办法,通过实践测验,体系运转杰出,开发周期缩短。与其他传统规划办法比较,该体系具有简化硬件规划、节约操控器I/O资源、扩展便利、便于完结等优势,进步了丈量体系的抗搅扰才能和丈量精度,具有必定的实用价值。