胡剑 基于状态机思路的24小时时钟程序的编写.doc_第1页
胡剑 基于状态机思路的24小时时钟程序的编写.doc_第2页
胡剑 基于状态机思路的24小时时钟程序的编写.doc_第3页
胡剑 基于状态机思路的24小时时钟程序的编写.doc_第4页
胡剑 基于状态机思路的24小时时钟程序的编写.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于状态机思路的24小时时钟程序的编写盐城机电高等职业技术学校胡剑1数字钟的研究的背景及意义数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。本文采用Atmel公司的AT89C51单片机,以C语言为程序设计的基础,设计一个用六位数码管显示时、分的时钟。在实物图中,当第一次按下设置键时,秒位的两位数码管出现闪烁,时间停止走动,进入校时状态,表示此时可以进行秒钟的调整,当按一次加一键(左键)可实现秒钟的加一功能,秒钟以60分为极限,超出60分则返回数值0,从0再重新算起;如果再次按下设置键时,秒钟的数码管停止闪烁,分钟数码管闪烁,当按一次加一键(左键)可实现秒钟的加一功能,秒钟以60分为极限,超出60分则返回数值0,从0再重新算起;反过来表示小时的两位数码管则开始闪烁,此时可进行小时的调整,按加1键可实现小时的加1功能,小时调整以24为上限,同样超出24小时则从新回0;当第四次按下设置键时,数码管停止闪烁开始计时。时钟题目分析2状态机的概念状态机是软件编程中的一个重要概念。比这个概念更重要的是对它的灵活应用。在一个思路清晰而且高效的程序中,必然有状态机的身影浮现。比如说一个按键命令解析程序,就可以被看做状态机:本来在A状态下,触发一个按键后切换到了B状态;再触发另一个键后切换到C状态,或者返回到A状态。这就是最简单的按键状态机例子。实际的按键解析程序会比这更复杂些,但这不影响我们对状态机的认识。进一步看,击键动作本身也可以看做一个状态机。一个细小的击键动作包含了:释放、抖动、闭合、抖动和重新释放等状态。显示扫描程序也是状态机;通信命令解析程序也是状态机;甚至连继电器的吸合/释放控制、发光管(LED)的亮/灭控制又何尝不是个状态机。当我们打开思路,把状态机作为一种思想导入到程序中去时,就会找到解决问题的一条有效的捷径。有时候用状态机的思维去思考程序该干什么,比用控制流程的思维去思考,可能会更有效。这样一来状态机便有了更实际的功用。程序其实就是状态机。也许你还不理解上面这句话。请想想看,计算机的大厦不就是建立在“0”和“1”两个基本状态的地基之上么?3状态机的要素状态机可归纳为4个要素,即现态、条件、动作、次态。这样的归纳,主要是出于对状态机的内在因果关系的考虑。“现态”和“条件”是因,“动作”和“次态”是果。详解如下:现态:是指当前所处的状态。条件:又称为“事件”。当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。如果我们进一步归纳,把“现态”和“次态”统一起来,而把“动作”忽略(降格处理),则只剩下两个最关键的要素,即:状态、迁移条件。状态机的表示方法有许多种,我们可以用文字、图形或表格的形式来表示一个状态机。3.1时钟程序状态迁移表(图1)工作状态 显示内容 说明状态A键功能B键功能C键功能时:分:秒00-00-00时:分:秒00-00-00 显示时间 0- 启动时间0状态0为工作,其他状态为设置设置秒 1- 秒加1秒减1xx-xx-00设置分2- 分加1分减1xx-00-xx设置时 3- 时加1时减100-xx-xx4状态机应用的注意事项基于状态机的程序调度机制,其应用的难点并不在于对状态机概念的理解,而在于对系统工作状态的合理划分。初学者往往会把某个“程序动作”当作是一种“状态”来处理。我称之为“伪态”。那么如何区分“动作”和“状态”。本匠人的心得是看二者的本质:“动作”是不稳定的,即使没有条件的触发,“动作”一旦执行完毕就结束了;而“状态”是相对稳定的,如果没有外部条件的触发,一个状态会一直持续下去。初学者的另一种比较致命的错误,就是在状态划分时漏掉一些状态。我称之为“漏态”。“ 伪态”和“漏态”这两种错误的存在,将会导致程序结构的涣散。因此要特别小心避免。5更复杂的状态机前面介绍的是一种简单的状态结构。它只有一级,并且只有一维,如果有必要,我们可以建立更复杂的状态机模型。6 多级状态结构状态机可以是多级的。在分层的多级状态机系统里面,一个“父状态”下可以划分多个“子状态”,这些子状态共同拥有上级父状态的某些共性,同时又各自拥有自己的一些个性。在某些状态下,还可以进一步划分子状态。比如,我们可以把前面的时钟例子修改如下:把所有和时钟功能有关的状态,合并成1个一级状态。在这个状态下,又可以划分出3个二级子状态,分别为显示时间、设置小时、设置分钟、设置秒;同样,我们也可以把所有和闹钟功能有关的状态,合并成1个一级状态。在这个状

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论