系统整体硬件原理图见附录1。
4. 系统软件设计
程序设计包括主程序设计、显示程序设计等方面。
4.1 控制要求
对于自动加料机来说,应当实现:进入工作状态时,首先通过安装在真空管内部的两个传感器检测物料,用安装在顶部的传感器检测是否满料;用安装在底部的传感器检测是否空料。若满料,则发出信号,不启动电机,打开真空管,进行排料,排料完毕后关闭真空管,打开电机进行加料;若空料,则发出信号,关闭真空管,启动电机,进行加料;若顶部检测无料,底部检测有料,则等同空料,即开始加料,直到满料后加料过程自动停止。以上过程均在液晶显示屏上显示,加料时显示Empty,满料时显示Full。
4.2 程序设计
4.2.1 主程序设计
主程序启动设备后,若复位键未按下,则传感器检测空料或满料(有料不满按空料处理),若满料,则系统不启动电机,打开真空管,进行排料;若空料,则系统关闭真空管,打开电机加料。系统主程序流程图如图8所示,相应主程序见附录2。
图8 主程序流程图
4.2.2 显示程序设计
主程序运行后,当要调用显示子程序时,系统要先对LCD液晶显示模块进行初始化,初始化结束后,要将LCD显示的内容和LCD的地址发送到单片机,由单片机发出信号,检测显示设备LCD是否忙碌。若LCD处于空闲状态,则单片机将信息发送给LCD并将数据显示出来;若LCD处于忙碌状态,则需要等待,当完成当前数据处理后,再将单片机发出的数据显示出来。显示子程序的流程图如图9所示:
图9 显示程序流程图
4.3 软件抗干扰措施
软件干扰方面,本设计系统主要采用软件陷阱和指令冗余。CPU受到干扰后会把一些操作数或立即数当作指令码程序段来执行,这样会引起程序混乱。在继电器开/闭指令 SET/CLR前边插入两条NOP指令。若程序飞到ROM中未使用的非程序区时,非程序区被要求能迅速捕获PC指针并强行拉到故障处理程序中[17]。
5. 系统仿真
由于此处的真空管、料位开关等无法模拟仿真,故这里用按键开关代替料位开关。系统结果如下:
空料时,液晶显示屏显示Empty,料位开关发出信号(此处用按键开关按下代替),继电器动作,关闭料斗,绿灯亮,电动机正转,通过鼓风或抽吸加料;
满料时,液晶显示屏显示Full,料位开关发出信号(此处用按键开关断开代替),继电器动作,电机停止,打开料斗进行排料,红灯亮。
仿真结果如图10、图11所示。
图10 满料仿真图
图11 空料仿真图
实际生产中,应当有传感器检测电路,若检测到满料,则液晶显示屏显示Full,继电器断开,电机不工作,真空管打开排料(图10);若检测到空料(有料不满也视为空料),则液晶显示屏应显示Empty,继电器吸合,启动电机,系统通过抽吸或鼓风的方式进行加料,直至满料(图11),如此循环。
作品实物图见附录3。
6. 结束语
本设计是基于AT89S51的自动加料系统,硬件上采用了LCD1602来显示工作状态,用继电器控制电路来控制真空管和电机。软件设计上没有外扩ROM和RAM,程序直接放在AT89S51内部闪存中。另外,系统从硬件和软件方面采取了抗干扰措施。理论上、仿真上、实物模拟上都可以基本达到自动加料的功能,但在实际问题中肯定还会有各种各样的问题,这是必须要注意的。
本系统也存在不足,没有设计人工手动操作的相关内容,如果考虑到这一点,再加上一个键盘输入,其功能会更完善。 AT89S51单片机自动加料机的控制系统设计+硬件原理图+源码(7):http://www.751com.cn/zidonghua/lunwen_1395.html