微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 设计干货精选:AVR单片机工业控制方案合集

设计干货精选:AVR单片机工业控制方案合集

时间:11-24 来源:本站整理 点击:

系表,从而实现功能型菜单和显示型菜单的一致性操作。一个供参考的执行函数可以写作:

  if(g_pmenu->total>0)

  { g_pmenu=menuselect(g_pmenu,Key);} else {(g_pmenu->displaymenu)(g_pmenu->ID,g_pmenu->cur);}

  其中menuselect函数用于切换对应的菜单子项,按键为"UP"键和"DOWN"键时,只需修改g_pmune->cur即可;按下 "ENTER"键时,则g_pmenu=g_pmenu->down,再根据cur值,g_pmenu=g_pmenu->right;按下 "ESC"键,则g_pmenu=g_pmenu->up.

  这种设计使得代码数据量变得较小,同时增强了程序的扩展性,需要增加或修改菜单项时,不论是功能型菜单还是执行性菜单,只需要修改对应的菜单结构的数组即可,而不必修改对应的执行代码。经过这样的简化后,发现对于菜单数较多的多通道输入/输出系统,系统RAM区还是不够用。对于一个8输入通道的系统,每个通道的参数设置项可能多达40项,总菜单节点大于300个,每个节点占用14B,则整个菜单节点所占的RAM已超过4K,所以这种方式还是需要进一步改进。

  注意到多通道的参数设置项完全相同,ID为111,112,118的菜单分支完全一样,ID为121和122的菜单分支也完全相同。可以定义一种 Sibling菜单,从而删去ID为112~118以及ID为122的菜单节点和子节点(虚线框所示),其上级菜单(ID为11和ID为12)的项目中的 total值均变为1.为了区别不同的通道分支,有两种实现办法:

  一种处理方法采用全局变量

  增加一个g_CODER_Channel_Number的全局变量,用于保存当前的通道号。在menuselect函数中,增加一个针对本系统设计的一个判断,当ID为11时,则不修改对应的g_pmenu->cur,而是直接修改变量g_CODER_Channel_Number,进入对应的显示函数后,直接根据g_CODER_Channel_Number判断通道号,从而输出对应的值。这种方法不需要改变系统设计的结构,但需要针对不同的系统修改主处理函数menuselect.

  另一种处理方法在菜单结构中增加一个MenuSibling结构,定义为

  typedef struct _menuSibling{

  signedcharcur;signedchartotal;}SIBLING;同时对应的菜单结构修改为typedefstructmenu{……

  SIBLINGSibling;}MENU;

  这样,ID为11的结构项的Sibling.total为8,Sibling.cur为当前的子菜单项。判断到total>0且 Sibling.total>0时,可知其下一级菜单为SIB2LING菜单,此时以前需修改cur想的操作则修改Sibling.cur即可。这种设计下,每个节点增加了2B的空间,但是保证的程序的一致性,对于不同的系统其设计基本一致。

  以上菜单项的设计用于系统设置部分,当退出系统设置时,即进入系统循环检测部分。单片机通过RS-485接口检测各个通道是否正常,当正常时则显示为绿灯,出现异常则显示为红灯,黄灯为中间状态。指示灯的流程参见图4.

  

  图4循环检测的指示灯流程

  结束语

  按照本文提供的方法优化后的设计,可以满足大多数的多通道输入/输出系统的控制系统的需要,整个系统的设计主要在于建立一个菜单树,将对应的节点编号,再编写对应的节点处理函数即可。这种设计使得程序的开发、维护都很容易,具有较强的可扩展性和可移植性。

  基于AVR单片机的有害气体红外感应及语音警示控制系统

  引言

  利用红外感应系统感应附近有无有害气体,当红外感应系统感受到有有害气体接近时,送出持续一段时间的高电平;单片机通过开启中断,启动语音芯片,单片机通过串口通信,从上位机提取的有害气体参数提示给附近人体,并经过与安全值的比较判定当前环境是否安全。对语音芯片的使用,先将必要的文字、数字信息录制进去,放音时,通过单片机自动寻址,把实时参数读取出来。为便于以后系统改进或移植到其他系统,可设计录音、放音电路,通过切换录制不同内容。系统设计友好、方便,给人的信息也更加直接。

  1系统总体设计方案

  在气体浓度是现有可利用的数据的基础上,考虑了系统的衔接性和可移植性。系统总体方案见图1。

  

  本系统分为四大模块:核心控制模块、语音电路模块、红外感应模块以及数据的读取。在气体浓度为现有可利用资源的前提下设计了系统如何进行读取控制。核心控制模块采用单片机作为控制器件,配合适当的外围电路,控制整个系统的运行。红外感应模块以一个红外传感器为核心,配置一定的信号处理电路,往单片机发信号。语音电路以语音芯片为核心,设计了录音、放音两种电路。

  1.1核心控制模块的设计

核心控制器件选用了单片机,其最小系统构成如图2所

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top