电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

51单片机实现状态机【精制材料】

38页
  • 卖家[上传人]:8**
  • 文档编号:151292409
  • 上传时间:2020-11-13
  • 文档格式:PPT
  • 文档大小:500KB
  • / 38 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、第9章 51单片机实现状态机 9.1 有限状态机 有限状态机(FSM)与流程图很相似,具有一组按照一定路径排列的状态,依据于状态中的事件和动作,一个状态可以转移到其他状态。 状态是时间中的一个点,例如,当你等火车的时候,你在等待状态。一种状态在一个状态机中,只能出现一次。 事件是某时发生的事情,例如火车到达,火车运行。 动作是当事件出现时,实现的任务,例如,火车到达后,上车 转移是两个状态之间的联系,可以从一个状态移动到另外一个状态。 状态图就是对一个事物在某个事件发生后从一个源状态到另外一个目的状态转移的图形描述。 状态图中,使用圆圈表示状态,圆圈中的文字或数字表示该状态的名字或是编码,状态转移方向用箭头表示,在箭头旁写的文字是转移条件。对于梅里状态图,在箭头旁用“输入/输出”的格式表示转移条件与满足该转移条件下的输出;而对于摩尔状态机,常将输出放在状态圆圈中。,1,实操应用,由图可知,当k=0时,状态从a0转移到a1,若是k0=1,从状态a1转移到a2,等等,若是reset=0,则无论在什么状态,都将转移到a0状态。,2,实操应用,一个状态机描述需要五个要素:状态、输入、输出、状态

      2、转移函数、输出函数。 如果在一个状态中包含着另一个状态序列,则称该状态为复合状态。 状态机就是能够根据状态转移条件进行状态转换和输出状态活动的自动机。状态机可以使用数字电路实现,或是单片机通过软件编程实现。 如果状态数量有限、输入数量有限、输出数量有限,则称为有限状态机(FSM)。 在数字电路中,有两类基本的电路,它们是组合电路和时序电路,它们之间的区别是组合电路的结构中没有反馈、输入值直接决定输出值,而时序电路的结构中具有反馈,其输出由状态和输入决定。状态机是时序电路的一种。,3,实操应用,9.1.1 时钟同步有限状态机 如果一个时序电路中的触发器都使用同一个时钟信号,则称为同步状态机 1. 结构 时钟同步状态机的结构如图所示。 其中次态逻辑由现态和输入形成。状态记忆是n个触发器,用于记忆2n状态。输出逻辑由现在状态和输入形成。 在时钟的上升沿或是下降沿(取决于触发器结构),触发器在次态逻辑的控制下动作。,4,实操应用,2. 输出逻辑 如果一个时序电路的输出与现在状态和输入都有关,则称为梅里状态机,就是说,在某状态下,满足某输入条件的输出就是梅里输出。值得注意的是梅里状态机的输入变化

      3、直接引起输出的变化,而不是等到下一个状态到来时输出才变化。就是梅里状态机。,与输入无关,输出只与状态有关的状态机,称为摩尔状态机,所以摩尔状态机的输出与状态变化同步。摩尔状态机是使用广泛的状态机,如图所示。,5,实操应用,3. 状态编码 具有n个状态变量的状态机具有2n个状态。究竟一个状态用什么样的二进制数表示,就是状态编码问题。状态与它的编码之间不是唯一关系。最简单的状态编码就是采用自然二进制整数顺序来表示状态,这样的编码虽然简单,但是最终的电路未必是最简单的。如果要得到最简单的结果,最好把各种编码都试一试,但是太累人,一般情况下采用经验编码方法。 在状态编码时应该考虑的一些因素: (1)选择初始状态的编码与状态机的复位状态相同,这样就会使状态机复位时就回到状态机的初始状态。 (2)每一次状态变化,应该使发生的状态变量最少。 (3)如果有未使用的状态,则尽量选择可以达到简化逻辑设计的状态编码。设计中应该保证从未使用状态一定可以进入初始状态。,6,实操应用,4. 主从状态机 一个大的状态机设计是非常复杂的,一般情况下,最好将大的状态机分解成小状态机的集合。一般划分的原则是按照功能划分,

      4、主要输入、输出和控制算法由主状态机完成,而辅助的、在主状态机控制下的算法由子状态机完成,就是说主状态机完成顶层算法,子状态机完成底层算法。 最常见的划分就是将计数器作为子状态机,这时,主状态机只要发出启动信号,而等待计数器返回的计数完成信号。虽然主状态机增加了启动计数器的输出信号和来自计数器的计数完成信号,但是该计数器就可以为主状态机节省n1个状态。 主从状态机的一般结构如图所示。,7,实操应用,5. 状态转移条件 状态转移的条件和输入的信号数有关,n个输入信号,将有2n个转移条件,这些条件之间应该是互斥的,只能有一个转移条件有效。也就是只能转移到另外一个状态,而不是一个以上的状态。 在状态机设计过程中,对于状态转移的条件是容易给出的,但是使多个状态转移条件满足互斥条件确是比较难的,因为这需要更深刻的考虑状态、转移条件之间的关系。 一个状态只向另外一个状态转移的状态机是最简单的状态机,因为只有一个状态转移条件。 有些状态图只给出本状态向外状态的转移条件,而向自己转移的条件未给出,这种情况可以理解为只要不向外状态转移就保持在本状态不动。,8,实操应用,6. 状态机的输入信号 状态机的输入

      5、信号往往使是按键信号,既然是按键信号,则按下去的时间长短是随机的,可能是一个或几个时钟脉冲的时间,如果状态机的状态转移是在某输入信号的作用之下连续转移,例如,在状态1,当按键第一次为0时,转移到状态2,第二次为0时转移到状态1,则会因为按键一直保持在0,引起状态不断的转换,不能实现每按一次按键,转换一次状态的目的。 解决的方法是设计边沿微分电路,使按键按下时,只在下降沿输出一个时钟周期的低电平,保证只有一个状态转移。 7. 上电状态机初始化 在状态机上电时,无论为何种输入条件,都应该进入到一个确定的状态,该状态称为上电初始状态。有些状态机可以在上电时,自动进入上电初始状态,有些状态机则不能,需要复位信号的帮助才能进入上电初始状态。 9.1.2状态图 状态图是用于小型、中型状态机设计的一种方法,该方法的特点是简单。 状态图中的状态转移是用一根弧线表示的,所以不管有多少输入变量,也只能有一个转移条件表达式,应该使现在状态到所有次态的转移条件互斥,也就是说只能转移到一个次态。 另外需要说明的是用于控制器的状态机大部分都是摩尔状态机,就是说这些状态机的输出仅仅与状态有关。,9,实操应用,例题9

      6、-1 设计一个顺序开关装置,该开关装置在按键k第一次按下时,三盏灯x、y和z同时点亮,当k 再次按下时,x灯立刻熄灭;y灯15s后熄灭,在y灯熄灭后18s后,z灯熄灭。,10,实操应用,11,实操应用,例题9-2 试设计一个交通信号灯控制器,该交通灯的红、黄、绿灯亮灭顺序是如下:,12,实操应用,13,实操应用,9.2.1 C语言描述状态机的语句 int state=S0; /初始状态 while(1) /无限循环 switch (state) case S0: If( T0转移条件满足) 状态转移到满足T0条件的次态;操作; If( T1转移条件满足) 状态转移到满足T1条件的次态;操作; If( TN转移条件满足) 状态转移到满足TN条件的次态;操作; break; case S1: /插入S1的操作; /插入离开S1的转移; break; case SN: /插入SN的操作; /插入离开SN的转移; break; 通常将表示状态转移的一系列通常将表示状态转移的多个if语句写成if-else语句,这样可以使转移条件形成互斥。,14,实操应用,当然也可以直接使用if 语句描写状态机,

      7、例如: if( state =S0) if(T0转移条件满足) 状态转移到满足T0条件的次态;操作; else if(T1转移条件满足) 状态转移到满足T1条件的次态;操作; else if(TN转移条件满足) 状态转移到满足TN条件的次态;操作; if( state =S1) /插入离开该状态的条件语句 /插入要转移的次态 /插入S1状态的操作语句 if( state =SN) /插入离开该状态的条件语句 /插入要转移的次态 /插入SN状态的操作语句 ,15,实操应用,9.2.2 描述状态机的完整C程序格式 #include 数码管的译码表格 设置定时器的定时变量 设置状态变量 设置其他全局变量 主程序: 局部变量初始化 定时器初始化语句 中断允许语句 主程序无限循环中: (1)输入信号处理语句 获得所有的输入信号状态,16,实操应用,(2)状态机描述语句 主要是描述状态转移、转移条件、定时变量清零等 该状态下的输出语句 显示该状态的发光二极管(不是必须的,用于调试) (3)显示处理语句 将定时数据送到数码管显示(不是必须的,用于调试) (4)其他语句 (5)若是在状态描述语句中没有

      8、描述输出,可单独将各个状态下的输出描述 定时器中断服务程序中: 设置静态局部变量 根据定时器工作模式确定是否设置初值,若是需要精确定时,选择不需要预置初值的工作方式2 每中断一次就增加数值的语句,获得确定的中断时间(例如1s)。 按照确定的中断时间,增加定时变量 ,17,实操应用,9.3 示例程序 在状态机描述中,除了直接描述状态机的语句外,还需要按键(钮)输入语句、定时器描述等语句,本节通过示例对按键、定时等的C描述给予介绍。 示例程序1 按键处理程序。 P3口全部连接按键,P0口连接的数码管显示按键的值,程序中变量kk是按键的值,不同的按键按下,数码管显示不同的值。,18,实操应用,源程序如下: #include AT89X51.h unsigned int code table=0 xC0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90; unsigned int kk=0 x08; void main() unsigned int nn; while(1) P3=0 xff; /P3口连接8个按键作为输入 if(P3|

      9、0 x00)!=0 xff) /如果有按键按下 for(nn=0; nn1000;nn+); /延时 if(P3|0 x00)!=0 xff) /按键还在按下状态 switch (P3) case 0 xfe: /P3_0=0, fe=1111 1110 kk=0; break; case 0 xfd: /P3_1=0, fd=1111 1101 kk=1; break;,19,实操应用,case 0 xfb: /P3_2=0, fb=1111 1011 kk=2; break; case 0 xf7: /P3_3=0 f7=1111 0111 kk=3; break; case 0 xef: /P3_4=0, ef=1110 1111 kk=4; break; case 0 xdf: /P3_5=0, df=1101 1111 kk=5; break; case 0 xbf: /P3_6=0, bf=1011 1111 kk=6; break; case 0 x7f: /P3_7=0 7f=0111 1111 kk=7; break; default: kk=8; while(P3!=0 xff) ; /如果按键还在按下时,则停留在此,等待按键抬起 P0=tablekk; /将键值送到P0口连接的数码管显示 ,20,实操应用,示例程序2 按键控制秒计数(定时器0工作在方式1)。 P3口引脚连接按键,按键按下后,P0口连接的数码管显示按键号,P1口循环显示0按键号之间的值,P2_0连接的LED灯亮1s,灭1s。如下程序采用定时器0,方式1工作,由于预装初值需要时间,所以不是精确计数。,21,实操应用,源程序如下: #include AT89X51.h /文件夹名yuzuo2 unsigned int code table=0 xC0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90; unsigned int kk=0 x08; unsigned int

      《51单片机实现状态机【精制材料】》由会员8**分享,可在线阅读,更多相关《51单片机实现状态机【精制材料】》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.