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

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

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

  3)接收到红外信号时,经判断若为有效信号,则使生命值标识Life减一。同时判断当前的Life值,设置PA口的值控制LED灯(生命值)的显示。

  4结束语

  文中进行了一种基于Atmega128单片机和无线通信的无人车控制系统设计。实验结果表明,教学无人车在无障碍区域无线通信有效传输距离可达 80~100米,利用车载摄像头可以实时获取无人车所处环境信息,实现远程监控。其创新点是采用了PC控制模式和单兵运行模式两种方式对无人车进行控制,极大地增强了无人车的功能性和环境适应能力。在实际对抗演练中,无人车在遇到干扰的情况下顺利完成货物运输、环境勘探、反击敌方车辆等功能,取得了良好的控制效果。该设计可广泛应用于短途货运客运、应急救援、恶劣环境下自动作业等领域。

  基于AVR单片机的控制系统设计

  引言

  现在许多的系统都采用了多通道Input/Output的设计,控制系统的设计也日趋复杂、庞大,所以有必要将控制电路单独分离出来。过去许多系统均采用 C51系列单片机作为控制电路,但其功能有限,电路设计较为复杂、影响了系统的稳定性,也不易扩展。本文介绍的AVR单片机由美国ATMEL公司生产,采用RISC指令集,内置RAM及可以擦写数千次的FLASH,采用哈佛结构,速度较快。ATmega128为此系列中功能最强大的一款,用于设计控制系统能适应现时复杂系统的要求。

  系统硬件设计框架

  硬件系统主要由CPU(AVR单片机)、人机操作和显示接口(液晶显示、键盘、指示灯和蜂鸣器)、通信接口组成。系统框图如图1所示

  

  图1系统硬件设计框图

  CPU为核心处理器件,通过I/O接口方式或A/D总线方式与液晶、显示键盘、指示灯和蜂鸣器交互,作者实现了两个版本,分别采用I/O方式和A/D总线方式。通信接口主要用到了UART接口和扩展的网络接口。其中UART提供了RS-232和RS-485接口,RS-232提供全双工单对单通信同时,而 RS-485以主/从方式与系统的多个部分通信,可用于多通道的输入输出设备。该芯片本身并不带网络接口,通过扩展一个W3100A连接RT- L8201(L)芯片,实现TCP/IP协议栈,从而使设备可以接入LAN,实现在LAN内的远程控制管理和监控。

  系统软件结构

  系统软件体系分为几个部分:

  (1)系统的循环检测部分,用于检测各通道的系统设备工作是否正常,出现异常时则通过三色指示灯报警(绿色代表正常,红色代表异常,黄色为中间状态)。

  (2)系统的设置部分,接受用户按键,用户可以在GUI上设置希望设置的参数。

  (3)网络接口部分,此时单片机系统不参与设置,主要功能将网络部分获得的数据导至各通道。软件系统的核心部分在于菜单结构的设计。

  本系统采用一种基于节点编号的三叉树状菜单的设计。将整个菜单看作一个菜单树,每个界面对应于树中的一个节点,父节点为当前菜单的上一级菜单;右节点为当前菜单的"兄弟"菜单,亦即上级菜单的其余子菜单。

  我们采用对节点编号的方式将整个菜单树串起来,通过识别节点编号(ID)就能知道该节点处于哪一级菜单,同时也便于我们将菜单数初始化。编号方式:每级子菜单的编号为上级父菜单ID乘以10再加上该级子菜单在上级菜单中对应的子项号(1,2,3.),我们将根节点ID编号为1,则根节点菜单的子菜单对应的 ID分别为11,12,13.ID为11的节点的下级菜单ID为:111,112,113.一个树型结构菜单的结构和ID编号的实例如图2所示。

  Typedef structmenu{ long ID; / /当前菜单ID void ( * disp laymenu) ( long i, unsigned char j) ; / /当前菜单对应处理函数char cur; / /当前菜单子项char total; / /子菜单总数structmenu * up, * down, * right; / /毗邻子菜单}MENU;

  

  图2 一个菜单树的实例

  对于用户按键操作切换不同的菜单时,我们只需修改一个指向对应菜单节点的全局菜单节点指针即可。当用户按下"ESC"键时,菜单指针指向当前节点的父节点,按下"Enter"键时,则指针指向对应节点的子节点。

  用于AVR单片机的RAM空间较小,只有4KB,我们需设计一种合理而简洁的数据结构,我们将菜单的数据结构定义为(C语言实现)。

  

  图3 menuselect函数的流程图

将菜单分为显示型菜单和功能性菜单,显示型菜单项用于切换各级菜单,功能型菜单则执行最底层菜单所对应的操作,total变量为0则表示为功能型菜单,大于0则表示选择型菜单。通过菜单的ID,即可以知道当前菜单的显示位置和内容,将此信息放在对应的displaymenu函数中可以节省数据空间,不用对于功能型菜单建立额外的ID与处理函数间的对应关

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

网站地图

Top