收藏 分销(赏)

多功能时钟流程图模板.doc

上传人:人****来 文档编号:4718885 上传时间:2024-10-10 格式:DOC 页数:11 大小:50KB 下载积分:8 金币
下载 相关 举报
多功能时钟流程图模板.doc_第1页
第1页 / 共11页
多功能时钟流程图模板.doc_第2页
第2页 / 共11页


点击查看更多>>
资源描述
多功能时钟流程图 11 资料内容仅供参考,如有不当或者侵权,请联系本人改正或者删除。 多功能时钟流程图 一. 功能确认 l 时钟功能: 1. 时钟显示小时和分钟 2. 用户能够经过按键调整时钟的时间 3. 无论当前时钟是否在前台显示, 时钟始终是运行的。 l 定时闹铃功能: 1. 用户能够经过按键设置闹铃时间( 小时和分钟) , 设置完成后能够按确定键退出设置。 2. 当系统时钟的时间等于预设的闹铃时间时, 系统蜂鸣器响5秒钟。 3. 用户能够设置两个闹铃。 l 秒表功能: 1. 用户能够经过按键进入秒表功能, 也能够退出秒表状态。 2. 秒表高2位显示秒, 低2位显示百分之一秒。 3. 能够经过按键暂停、 ( 继续) 运行秒表, 能够经过按键对秒表清零。 二. 状态分析及模块分割 根据以上的分析, 系统共有三个大的功能: 时钟、 设置定时、 秒表, 各个功能之间能够经过按键来切换, 且各个功能内部仍需要使用按键来处理, 故能够考虑将系统定义为三个状态( status) : 时钟状态、 设置定时状态、 秒表状态。显然, 同一个按键在不同状态下的功能是不一样的。这样, 在某种状态下, 按下某个按键, 代表唯一确定的含义。这种处理方法能够称为”状态—按键”法。 这样我们能够把程序对应地分成以下三个任务模块。 Key_1 Key_1 Key_1 程序开始 A:时钟状态( 默认) B: 设置闹铃状态 C: 秒表状态 ( 处理时钟状态下的所有事务) ( 处理设置闹铃状态下的所有事务) ( 处理秒表状态下的所有事务) 这个流程就能够作为主流程( main( ) 函数) , 当然, A、 B、 C三框内部的流程仍有待于细化。 三. 详细设计 A框内部要处理的事务见第一部分: 功能确认。在此, 为了完成时钟调整功能, 我们能够定义Key_2为小时调整键, Key_3为分钟调整键, 每次按下键, 小时数或分钟数加1。当然, 当用户没有按键的时候, 我们还得经常保持显示屏上的时间刷新。 A框: 时钟状态下的处理流程: 没有按键: 刷新显示当前时间( 小时分钟) 分析用户按下了什么键? 切换到设置闹铃状态, 显示ON01 Key_1键: 时钟调校: 小时数加1 Key_2键: 时钟调校: 分钟数加1 Key_3键: 结束 B框要处理的功能是设置定时闹铃的事务, 这里需要预设闹铃时间, 同样能够定义Key_2为小时预设键, Key_3为分钟预设键, 而Key_1则负责状态切换, 当我们预设好时间之后, 按下Key_1, 就算完成了闹铃预设, 让系统离开当前状态, 转到秒表状态上去。 B框: 设置闹铃状态下的处理流程: 分析用户按下了什么键? 切换到秒表状态 调用秒表显示 Key_1键: 闹铃预设: 小时数加1 Key_2键: 闹铃预设: 分钟数加1 Key_3键: 结束 显示ON01或者预设的闹铃时间 没有按键: C框要处理的是秒表的功能, 这里能够定义Key_2为启动/暂停键, Key_3为复位清零键, 而Key_1依然负责状态切换, 用户如果按下Key_1, 就让系统离开秒表状态, 转到时钟状态上去。 C框: 设置秒表状态下的处理流程: 分析用户按下了什么键? 切换到时钟状态 调用时钟显示 Key_1键: 原来停, 就启动 原来动, 就暂停 Key_2键: 秒表的所有数据清零 Key_3键: 结束 显示秒表时间 没有按键: 四. 代码框架 全局定义: uchar code zixing[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar code ziwei[]={0x10,0x20,0x40,0x80}; uchar *h,*m; uchar hour=12,min=0,sec=0,h_ding,m_ding,count=0,ms_50,ms_10,miaobiao_sec; sbit dp=P0^7; sbit k1=P3^2; //3个按键定义 sbit k2=P3^3; sbit k3=P3^4; sbit sound=P2^3; //蜂鸣器定义 sfr ZIXING=0x80; //p0口输出字形 sfr ZIWEI=0xa0; //P2口输出字位 typedef enum //枚举类型: 3种状态// { CLOCK, SET_RING1, MIAOBIAO_RUN, }STATE; STATE status; typedef struct //定时时间的数据结构// { uchar hour; uchar min; }DINGSHI_TIME; //C语言中的结构体知识 DINGSHI_TIME dingshi_time; #define NO_KEY -1 //定义一下方便使用 #define KEY_1 1 #define KEY_2 2 #define KEY_3 3 主程序: Main( ) { //一些初始化的工作, 如状态赋初值, 寄存器设置等 while(1) //程序循环 { switch(status) { case CLOCK: key_process_clock(); // 处理时钟状态下的按键和显示// break; case SET_RING1: key_process_set_dingshi(); //处理设置定时状态下的按键和显示// break; case MIAOBIAO_RUN: key_process_miaobiao_run(); //处理秒表状态下的按键和显示// break; } if( (hour==dingshi_time.hour) //定时响铃// &&(min==dingshi_time.min) &&(sec<5)) ) sound=0; else sound=1; } } 秒表状态处理函数样例: /********秒表运行状态按键处理及显示*********/ void key_process_miaobiao_run() { switch(get_key()) { case KEY_1: TR1=0; status=CLOCK; //回到时钟显示状态 break; case KEY_2: TR1=!TR1; //定时器1暂停、 继续 break; case KEY_3: TR1=0; //秒表复位 miaobiao_sec=0; ms_10=0; break; case NO_KEY: //无按键操作// show_miaobiao(); break; } } 其它函数说明: /*********** 检测按键动作函数 *************/ int get_key() { uchar d; if(!k1) { for(d=0;d<50;d++); if(!k1) { while(!k1); return(KEY_1); } } if(!k2) { for(d=0;d<50;d++); if(!k2) { while(!k2); return(KEY_2); } } if(!k3) { for(d=0;d<50;d++); if(!k3) { while(!k3); return(KEY_3); } } else return NO_KEY; } 1月4日
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服