胡剑 基于状态机思路的24小时时钟程序的编写

胡剑 基于状态机思路的24小时时钟程序的编写

ID:14941421

大小:199.50 KB

页数:7页

时间:2018-07-31

胡剑 基于状态机思路的24小时时钟程序的编写_第1页
胡剑 基于状态机思路的24小时时钟程序的编写_第2页
胡剑 基于状态机思路的24小时时钟程序的编写_第3页
胡剑 基于状态机思路的24小时时钟程序的编写_第4页
胡剑 基于状态机思路的24小时时钟程序的编写_第5页
资源描述:

《胡剑 基于状态机思路的24小时时钟程序的编写》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于状态机思路的24小时时钟程序的编写盐城机电高等职业技术学校—胡剑1数字钟的研究的背景及意义数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站,码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研

2、究数字钟及扩大其应用,有着非常现实的意义。本文采用Atmel公司的AT89C51单片机,以C语言为程序设计的基础,设计一个用六位数码管显示时、分的时钟。在实物图中,当第一次按下设置键时,秒位的两位数码管出现闪烁,时间停止走动,进入校时状态,表示此时可以进行秒钟的调整,当按一次加一键(左键)可实现秒钟的加一功能,秒钟以60分为极限,超出60分则返回数值0,从0再重新算起;如果再次按下设置键时,秒钟的数码管停止闪烁,分钟数码管闪烁,当按一次加一键(左键)可实现秒钟的加一功能,秒钟以60分为极限,超出60分则返回数值0,从0再重新算起;反过来表示小时的两位数码管则开始闪烁,此

3、时可进行小时的调整,按加1键可实现小时的加1功能,小时调整以24为上限,同样超出24小时则从新回0;当第四次按下设置键时,数码管停止闪烁开始计时。时钟题目分析2状态机的概念状态机是软件编程中的一个重要概念。比这个概念更重要的是对它的灵活应用。在一个思路清晰而且高效的程序中,必然有状态机的身影浮现。比如说一个按键命令解析程序,就可以被看做状态机:本来在A状态下,触发一个按键后切换到了B状态;再触发另一个键后切换到C状态,或者返回到A状态。这就是最简单的按键状态机例子。实际的按键解析程序会比这更复杂些,但这不影响我们对状态机的认识。进一步看,击键动作本身也可以看做一个状态机

4、。一个细小的击键动作包含了:释放、抖动、闭合、抖动和重新释放等状态。显示扫描程序也是状态机;通信命令解析程序也是状态机;甚至连继电器的吸合/释放控制、发光管(LED)的亮/灭控制又何尝不是个状态机。当我们打开思路,把状态机作为一种思想导入到程序中去时,就会找到解决问题的一条有效的捷径。有时候用状态机的思维去思考程序该干什么,比用控制流程的思维去思考,可能会更有效。这样一来状态机便有了更实际的功用。程序其实就是状态机。也许你还不理解上面这句话。请想想看,计算机的大厦不就是建立在“0”和“1”两个基本状态的地基之上么?3状态机的要素状态机可归纳为4个要素,即现态、条件、动作

5、、次态。这样的归纳,主要是出于对状态机的内在因果关系的考虑。“现态”和“条件”是因,“动作”和“次态”是果。详解如下:①现态:是指当前所处的状态。②条件:又称为“事件”。当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。③动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。④次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。如果我们进一步归纳,把“现态”和“次态”统一起来,而把“动作”忽略(降格处理)

6、,则只剩下两个最关键的要素,即:状态、迁移条件。状态机的表示方法有许多种,我们可以用文字、图形或表格的形式来表示一个状态机。3.1时钟程序状态迁移表(图1)工作状态显示内容说明状态A键功能B键功能C键功能时:分:秒{00-00-00}时:分:秒{00-00-00}显示时间0------------启动时间0状态0为工作,其他状态为设置设置秒1----秒加1秒减1{xx-xx-00}设置分2----分加1分减1{xx-00-xx}设置时3----时加1时减1{00-xx-xx}4状态机应用的注意事项基于状态机的程序调度机制,其应用的难点并不在于对状态机概念的理解,而在于对

7、系统工作状态的合理划分。初学者往往会把某个“程序动作”当作是一种“状态”来处理。我称之为“伪态”。那么如何区分“动作”和“状态”。本匠人的心得是看二者的本质:“动作”是不稳定的,即使没有条件的触发,“动作”一旦执行完毕就结束了;而“状态”是相对稳定的,如果没有外部条件的触发,一个状态会一直持续下去。初学者的另一种比较致命的错误,就是在状态划分时漏掉一些状态。我称之为“漏态”。“伪态”和“漏态”这两种错误的存在,将会导致程序结构的涣散。因此要特别小心避免。5更复杂的状态机前面介绍的是一种简单的状态结构。它只有一级,并且只有一维,如果有必要,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。