多功能时钟流程图.doc_第1页
多功能时钟流程图.doc_第2页
多功能时钟流程图.doc_第3页
多功能时钟流程图.doc_第4页
多功能时钟流程图.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

多功能时钟流程图一 功能确认l 时钟功能:1. 时钟显示小时和分钟2. 用户可以通过按键调整时钟的时间3. 无论当前时钟是否在前台显示,时钟始终是运行的。l 定时闹铃功能:1. 用户可以通过按键设置闹铃时间(小时和分钟),设置完成后可以按确定键退出设置。2. 当系统时钟的时间等于预设的闹铃时间时,系统蜂鸣器响5秒钟。3. 用户可以设置两个闹铃。l 秒表功能:1. 用户可以通过按键进入秒表功能,也可以退出秒表状态。2. 秒表高2位显示秒,低2位显示百分之一秒。3. 可以通过按键暂停、(继续)运行秒表,可以通过按键对秒表清零。二 状态分析及模块分割根据以上的分析,系统共有三个大的功能:时钟、设置定时、秒表,各个功能之间可以通过按键来切换,且各个功能内部仍需要使用按键来处理,故可以考虑将系统定义为三个状态(status):时钟状态、设置定时状态、秒表状态。显然,同一个按键在不同状态下的功能是不一样的。这样,在某种状态下,按下某个按键,代表唯一确定的含义。这种处理方法可以称为“状态按键”法。这样我们可以把程序对应地分成以下三个任务模块。Key_1Key_1Key_1程序开始A:时钟状态(默认)B: 设置闹铃状态C: 秒表状态(处理时钟状态下的所有事务)(处理设置闹铃状态下的所有事务)(处理秒表状态下的所有事务)这个流程就可以作为主流程(main()函数),当然,A、B、C三框内部的流程仍有待于细化。三 详细设计A框内部要处理的事务见第一部分:功能确认。在此,为了完成时钟调整功能,我们可以定义Key_2为小时调整键,Key_3为分钟调整键,每次按下键,小时数或分钟数加1。当然,当用户没有按键的时候,我们还得经常保持显示屏上的时间刷新。A框:时钟状态下的处理流程:没有按键:刷新显示当前时间(小时分钟)分析用户按下了什么键?切换到设置闹铃状态,显示ON01Key_1键:时钟调校:小时数加1Key_2键:时钟调校:分钟数加1Key_3键:结束B框要处理的功能是设置定时闹铃的事务,这里需要预设闹铃时间,同样可以定义Key_2为小时预设键,Key_3为分钟预设键,而Key_1则负责状态切换,当我们预设好时间之后,按下Key_1,就算完成了闹铃预设,让系统离开当前状态,转到秒表状态上去。B框:设置闹铃状态下的处理流程:分析用户按下了什么键?切换到秒表状态调用秒表显示Key_1键:闹铃预设:小时数加1Key_2键:闹铃预设:分钟数加1Key_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=P07;sbit k1=P32;/3个按键定义sbit k2=P33;sbit k3=P34;sbit sound=P23;/蜂鸣器定义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_11#define KEY_22#define KEY_33主程序: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)&(sec5) )sound=0;elsesound=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;其他函数说明:/* 检测按键动作函数 */intget_key()uchar d; if(!k1)for(d=0;d50;d+);if(!k1)while(!k1);return(KEY_1); if(!k2)f

温馨提示

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

评论

0/150

提交评论