应用多个单片机的液位监控仪

发布者:自由探索者最新更新时间:2011-10-11 关键字:多个单片机  液位监控仪 手机看文章 扫描二维码
随时随地手机看文章

采用单片机设计液位监控仪是很通用的做法。如果要测量的液位有很多路(16路以上),每路要求能滚动显示1年内每班、每日、每月的输入输出总量(1日3班),正常或意外停电数据不丢失,人机交互能力要强(要设置适当数量的按键及采用LCD显示),并且每路液位要求对应2路控制输出信号(液罐液体输入控制和输出控制),配置微型打印机端口,设置声音报警,所有这些无疑需要很多的I/O端口来支持,单凭一个单片机是办不到的,需要扩展I/O端口。在此设计中,笔者认为采用专用I/O扩展芯片有较多的弊端,权衡利弊,选择了用单片机来代替专用I/O接口芯片的方法。


1 专用 I/O芯片与单片机用作I/O芯片的对比

①专用I/O接口芯片的I/O口数量不比单片机多(笔者采用单片机型号为89C52);

②专用I/O接口芯片使用不灵活,几种使用方式已被芯片设计者设定,不能超出此范围变化,而单片机则受限制较小,使用起来较灵活;

③专用I/O接口芯片独立性差、智能性差,无论是接收输入信号还是输出控制信号,I/O专用芯片对信号的输入输出增色不能做出决定,必须要由单片机来做决定,仅起接力或过渡信号作用,没有监控能力,不能独立处理问题,而单片机则不然,可采用多种方式灵活处理问题;

④使用I/O扩展专用芯片就必须要熟悉它,工程技术人员一般对单片机的熟悉程度要比对它强很多,相比之下,使用它要浪费时间,再一个I/O扩展专用芯片的价格均要比单片机高,从成本核算上考虑不经济;

⑤专用I/O芯片实时性差,由于I/O扩展专用芯片仅起收发信号的作用,本身没有加工处理信号的能力,这样信号经过它来回的传递势必造成延迟,因而会出现实时性差的问题;

⑥使用单片机作I/O接口,便于软硬件设计模块化,分工清晰,给设计、调试、维护带来极大方便;

⑦使用单片机作I/O接口加强了对接口的监管力度,减轻了主单片机的负担。

 

2 硬件结构及分工

硬件设计共分如下几部分:单片机;A/D转换部分;控制信号输出部分;非易失性存储器(作RAM扩展);按键部分;显示部分;打印I/O端口部分;模拟开关部分。硬件结构框图如图1所示。

硬件设计中:

①单片机选用89C52,其特点是片内含有8KB ROM,不需片外扩展ROM;

②A/D转换器选用MC14433,其特点是转换精度高,抗干扰能力强,每秒可转换20次左右,因为液位变化不是很快,所以可满足监测液位变化的需要;

③控制信号输出采用单片机控制74LS373锁存器的方式,这样可通过增减锁存器个数的方式来增减控制输出端口数量;

④因每路要求能滚动显示1年内每班、每日、每月的输入输出量总量(1日3班),正常或意外停电数据不丢失,所以采用了AT29LV040A(512KB)的闪速存储器(也可采用FRAM),因89C52最多可外扩展64KB的RAM,为了保证有足够的存储空间可将AT29LV040A的A16、A17和A18地址线与1#单片机的某个端口连接,这样通过控制这3个地址线的变化就可达到使用AT29LV040A的512KB空间的目的。

⑤按键部分采用常规的非编码键盘方式即可;

⑥为了提高人机的交互能力,显示部分采用了GXM12864SL大屏幕LCD,这样屏幕上可显示自编的汉字、数字、等式及简单的图案;

⑦打印I/O端口,可根据要求进行相应的连接配置即可;

⑧模拟开关选用多片CD4051,它们与单片机配合,用于选择多路液位模拟量中的1路液位的模拟量,然后进行A/D转换。

由于选用了3个单片机,有效地解决了I/O端口不够用的问题,也使得在设计上简化了许多,只要按照常规的连接芯片方式即可,省去了很多的过渡芯片,如74LS244、74LS245、74LS73等,也使得软件设计变得简单容易。因硬件连接变得简单而且均为常规连接,所以本文没有提供详细的线路连接图。3个单片机之间的数据交换采用了串行口通信方式。本设计中,3个单片机采用同时复位,当然也可采用分开复位方式,但按键要增加,此种情况视要求而定。[page]

3 软件结构设计

由于3个单片机同时复位,所以复位后3个单片机是处于并行工作状态的。1#单片机的主要工作是将所有路液位模拟量转换成数字量保存起来。它可根据键盘命令或系统默认格式将采集加工后的结果传送给2#单片机显示及3#单片机输出控制,也可根据命令只监测指定的某1路或某几路的液位变化。2#单片机的主要工作是读入键盘命令,加工处理后,向1#和3#发布命令,然后根据反馈结果在LCD上显示出来。也可根据1#单片要同采集到的数据,不断更新其显示内容。LCD显示方式可多种多样,可循环显示指定的某几路液位,或固定显示某1路液位,或循环显示某1个月的每天或某天的每班输入输出量等。每1路液体的比重、计算修正值、液位上下限高度设定等都可通过键盘输入并保存起来。也可通过键盘设定密码,防止别人或误操作破坏设定内容,键入方式应设计成无须看说明书,只要按照LCD显示上的提示进行选择即可。3#单片机的主要工作是根据键盘命令或1#单片机及时采集到的数据,发出控制信号或打印输出结果,打印输出格式可根据键盘命令进行选择。

3个单片机之间通过串行口,除传送正常的数据、命令外,3者之间还要进行互相监督(这是I/O扩展芯片很难做到的)。

①相互之间传送信息后一定要进行印证,也就是发送者要及时收到接收者的回执;

②3者之间定时互访,确保相安无事;

③每次上电复位除自检外,还要互检。

互相监督的目的是为提高整个系统的性能,为系统维护提供方便。1#和3#单片机上都配有2个发送二极管,用于监测指示另外两个单片机工作是否正常。2#单片机本身有LCD显示,无需发光二极管。串行通信中断服务程序、发送程序流程图及定时互访程序流程图等因比较简单没有给出。

4 调试

在一个系统中,使用多个单片机对整个系统调试确实会带来一些不便。系统中有多少个单片机最好就有多少个单片机开发装置,这对调试是有极大帮助的,因为在调试中可随时查看每个单片机的状态,但实际当中往往不会有多个,只有1个。

每个单片机的程序基本上是由两部分组成的,一部分是与其它单片机没有任何联系的独立部分,另一部分是单片机之间相互通信联系的部分(这部分程序量较小)。调试时先把单片机各自独立部分调试出来,这部分对单片机应用人员来说不会有问题。然后调试单片机相互之间的串行通信程序,先把相互之间的简单通信建立起来,相互之间能识别传递数据后,再逐步把完整的程序一步一步添加进去。在设计、编制程序时要想到如何调试,这样在编制程序时就会有意识地程序分成有效的块,调试时就可以一块一块地调试。多单片机调试方法较多,此是一孔之见。

结语

在一个液位监控系统中采用多个单片机是一种尝试,但它确实简化了系统设计,便于分工和多人投入协作,也便于产品改进更新。其最显著的效果是缩短了产品的设计、调试和生产的周期。

 

 

关键字:多个单片机  液位监控仪 引用地址:应用多个单片机的液位监控仪

上一篇:基于单片机的无线呼叫系统设计
下一篇:单片机实现智能家居的远程控制

推荐阅读最新更新时间:2024-03-16 12:43

Microchip推出集成多个16PWM的单片机
Microchip推出集成3个高分辨率16位PWM的8引脚封装新器件不断扩展8位PIC®单片机产品组合 全新PIC单片机集成16位PWM和通信,小尺寸实现精确驱动      全球领先的整合单片机、混合信号、模拟器件和闪存专利解决方案的供应商——Microchip Technology Inc.(美国微芯科技公司)在近日举办的2014嵌入式世界国际展览会(Embedded World)上宣布推出全新的PIC12(L)F157X系列产品,以扩展其8位PIC®单片机(MCU)产品组合。新器件的一大特点是在8引脚封装内集成了多个16位PWM以及各种模拟外设和串行通信。该单片机系列提供了三个带独立定时器的功能齐全的16位PWM
[单片机]
Microchip推出集成<font color='red'>多个</font>16<font color='red'>位</font>PWM的<font color='red'>单片机</font>
51单片机STC89C52点亮多个LED(IO口的字节操作)
程序源码 /*-----------------------包含头文件区域-------------------------*/ #include reg52.h //单片机头文件 /*-----------------------主函数区域-----------------------------*/ void main() { P2=0x0F; //P2端口高四位输出低电平,低四位输出高电平,即D5~D8亮,D1~D4灭 while(1); //死循环,主程序停留在此不再往下执行 } 运行结果
[单片机]
51<font color='red'>单片机</font>STC89C52点亮<font color='red'>多个</font>LED(IO口的字节操作)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved