1、总体构成
本测量仪的信号采样通过P0口的八根输入线可接受八路经过整形后的标准TTL电平,因此可测量不同传感器传来的脉冲型物位采样信号,只要在原始信号基础上加以整形处理即可,每来一个脉冲均被P0口捕捉到并可以通过软件编制使脉冲计数增一,定时读取计数和便可以换算成相应的物位情况。通过P3.3~P3.5三条线与串行显示驱动器Max7219的连接加以软件编程可完成八位数码管显示驱动,利用P1.3~P1.6四条口线接入四个按键,完成按键操作,利用P2口作为八路输出控制,可驱动八路固态继电器。具体组成见图1。
图1
2、硬件线路设计
2.1 资源分配
AT89C52 芯片是基于MCS-51结构的高集成度8位微控制器,其主要特性是具有一个用于多处理器通讯的增强型串口和一个增/减定时器计数器,专门适用于控制应用。选用89C52的另外一个重要原因就是在芯片上实现了256字节的RAM,高端128字节的地址和特殊功能寄存器(SFR)的地址相同,但可以通过不同寻址方式区分,因此解决了测量仪的软件编程所用的RAM空间,不必再另外扩展随机存储器,节约了硬件资源。
2.2 串行显示设计
多位LED显示时,常将所有位的段选线并联在一起,由一个8位I/O口控制,也可采用并行扩展口构成显示电路,通常,需要扩展器件管脚的较多,价格较高。在本测量仪中,为了节约I/O口资源,采用了由Max7219芯片构成的串行显示方式。Max7219是串行输入,输出共阴极显示驱动电路,可直接与单片机的3条I/O线接口,特别适用于I/O口线少的系统,并且可以程序控制数码管的亮度。在本设计中,采用P3.3~P3.4三条线经74LS273锁存后与Max7219相连接,P3.3、P3.4锁存后分别作为7219串行数据输入信号DIN和时钟信号 CLK,P3.5输出口锁存作为LOAD信号。具体硬件线路图见图2。
图2 主要硬件连接图
2.3 软件计数器的设计
在物位测量仪表中,当传感器书送来的信号为脉冲量时,通常需要通过专门计数器芯片如8254等来完成脉冲的计数,CPU将此变化的计数信号处理后使传感器送来的脉冲的个数与物位信号相对应。而在本设计中,巧妙利用了89C52的P0口资源,将脉冲量整形后直接送至P0口的8条数据线,此时P0口作为数据输入口使用。通过软件设计,每路开辟存贮单元(利用片内RAM),当P0口有电平跳变时,相应的计数单元计数加1,通过软件设置定时器,当定时时间到时,读取存储单元数值并清零,这样就完成了软件计数器的功能,节约了硬件资源,降低了硬件成本。
3、软件设计
3.1 128字节内存分配
本测量仪设计的另一大特点就是充分利用了128字节的片内RAM,无外部扩展存储芯片。CPU内部地址从15H开始算起,直到0C5H全部被开辟作标志或存储单元。具体分配为:15H~1CH为各路采样时间, 09H~0FH 为各种标志位, 42H~5BH为与各路计数有关的计数存储处理单元,5CH~63H为物位报警域值对应的计数存储单元,64H~6FH和 3cH~3FH位报警类别等存储单元。通过合理分配,尽管只有128字节RAM,可以满足8路物位测量的数据处理要求。
3.2 串行显示子程序
Max7219驱动的显示部分程序放在DISP显示子程序中,在程序开始完成Max7219的初始化工作,将每次待显示的数据放置于从20H~27H开始的显示缓冲区地址中,每路需要送显时,直接调用显示子程序即可。
其中显示部分程序如下:
DISP: MOV R0,#20H ;R0指向显示缓冲区首地址
MOV R1,#01H
MOV R3,#08H
LOOP3: MOV a,@R0
MOV R4,A ;显示缓冲区数据送R4
MOV A,R1
lCALL WRITE ;数据锁存到273
INC R1
INC R0
DJNZ R3,LOOP3
3.3 采样处理子程序
调试过的部分源代码如下:
LOOP: MOV A,#0FH ;主程序循环开始
MOV P0,A ;先查询P0口,读取射线计数
MOV A,P0
XCH A,PQ
XRL A,PQ
MOV B,A
JB B.0,JIA1 ;第1路有计数,跳至加1程序
JIA10:JB B.1,JIA2 ;第2路有计数,跳至加1程序
JIA20:JB B.2,JIA3 ;…..
JIA30:JB B.3,JIA4
JIA40:JB B.4,JIA5
JIA50:JB B.5,JIA6
JIA60:JB B.6,JIA7
JIA70:JB B.7,JIA8 ;第8路有计数,跳至加1程序
LJMP LOOP01 ;接着处理键盘的查询
3.4 主程序部分流程图
主程序流程图见图3。
图3 主程序流程图
4、结束语
本设计的创新点在于充分利用了AT89C52的硬件资源,实现了软件计数器,能够对脉冲量信号所反映的物位信号通过数码管来显示,显示部分的处理采用Max7219显示驱动器,与软件编程相结合,大大节约了硬件资源,减少了通用的单片机扩展芯片,降低了成本。本仪表投入生产后成本比用其它方式组成的系统节约直接硬件成本每台约300元,投产后产生年经济效益约60万元(按每套仪表利润0.8万元计)。