迅维网

标题: [原创]基于状态机的AVR单片机控制器 [打印本页]

作者: yzz163    时间: 2011-9-7 09:19
标题: [原创]基于状态机的AVR单片机控制器
  遇到一个小项目,需要按以下时序控制各设备动作。通过对其整个控制过程的深入了解,画出状态流程,各状态所需最小控制时间,最后用定时器时标和状态机编程思想较好的解决了该控制器的逻辑框架。使设备控制更“智能”,控制更缜密,解决了人为操作错误造成的控制混乱。

时序图:


  从图可看到有三路输入,2路键盘输入,一路开关量输入。输出有8路。除了跟踪开关量的变化外,还要允许两个键盘在不同时间段干预,因此控制分支比较多,状态的转换多。

状态分析:

状态一:待机。所有输出=0,等待按键或开关量出现高电平。(按键识别最小要求10-20ms)
 |
 |
状态二:延时去抖动(60-100ms)
 |
 |
状态三:OUT输出高,设备1启动。同时监测是否有按键按下。(需要时间量10ms-1S)
 |
 |
。。。。。。。。(略)

实现电路(部分):

输入电路:
sr.gif
登录/注册后看高清大图



输出电路:
sc.gif
登录/注册后看高清大图


程序:(部分)








main.gif
登录/注册后看高清大图





作者: yzz163    时间: 2011-9-7 10:32
实物图:

1.jpg
登录/注册后看高清大图


2.jpg
登录/注册后看高清大图



作者: yzz163    时间: 2011-9-7 10:48
开发调试环境:
CVAVR(编译器)+AVR Studio 4(仿真)+AVRISP(在线下载烧录)
AVR.gif
登录/注册后看高清大图

作者: 新沂致远科技    时间: 2011-9-11 09:50
逻辑关系貌似很简单的哦!
作者: yzz163    时间: 2011-12-21 09:50
这个东西有几个地方的逻辑关系是不容易处理好的。

1、按键的及时响应(20ms)
2、模拟按键按下和断开(100-500ms)
3、主程序的执行顺序不被上述事件打乱。




欢迎光临 迅维网 (https://www.chinafix.com/) Powered by Discuz! X3.4