C++电子闹钟设计说明书

合集下载

(完整word版)C51单片机实现电子闹钟

(完整word版)C51单片机实现电子闹钟

课程名称:单片机原理与接口技术实践设计课题:基于MCS 51单片机实现电子闹钟功能的设计学院:电子与信息工程学院专业:通信工程小组成员:电子闹钟在科学技术高度发展的今天,千家万户都少不了它,所以很多家庭个人都需要有一个电子闹钟,为人们提供报时方便,但普通电子闹钟不够方便实用。

本文给出了一种基于MCS51单片机实现电子闹钟功能的设计方法,从而给人们带来更为方便的工作与生活。

一.电子闹钟简介我们设计的电子闹钟是以MCS 51单片机中的计时器作为时钟,用8位数码管显示当前时间,并且可以设置闹钟时间,并在设置的时间点发出闹铃。

简易闹钟具有以下功能:1.时钟能准确地走时,并可以通过数码管进行显示2.复位后可以进行当前时间的设置3.可以随意设置闹钟时间,闹钟会在设置时间响铃整个系统的任务要求:1)输入数字按键的功能。

保证数字的输入。

2)复位电路的功能。

所有时间回到初始化状态,用于启动设定时间参数(调时或设定闹钟时间);3)显示电路的功能。

当输入数字时显示24小时时间功能。

4)闹铃功能设置闹铃的时间后.能按设置好的时间准时闹铃。

二.系统方案的设计要求根据以上各模块并结合显示屏的功能及元器件材料的情况,决定采用AT89C51为内核显示设计方案。

先进行系统的整体规划确定整个系统的功能,然后按照每个功能的具体要求,进行各个模块的实物设计并逐个调试,待全部通过后,进行整个系统的联调,最终实现一个完整的系统。

整个系统的设计步骤如下:在单片机最小系统的基础上,完成按键电路和复位电路的设计。

完成显示电路、数字按键、单片机时钟电路。

Ⅰ硬件设计系统硬件的设计可以根据系统的各个功能,把整个系统划分成若干个模块,分别对这些模块来进行设计,然后在通过单片机程序来实现对各个硬件模块功能的调度。

本系统涉及到的硬件模块有:按键电路、数码管显示电路、单片机时钟电路、蜂鸣器电路。

各部分实现功能如下:按键电路:提供按键信号。

单片机时钟电路、复位电路:提供内部时钟。

c电子时钟课程设计

c电子时钟课程设计

c 电子时钟课程设计一、课程目标知识目标:1. 学生能够理解电子时钟的基本原理,掌握电子时钟的主要部件及其功能。

2. 学生能够掌握时、分、秒的概念,学会电子时钟的时间设置与调整。

3. 学生能够了解电子时钟的设计与制作过程,掌握基本的电路连接方法。

技能目标:1. 学生能够运用所学知识,独立完成电子时钟的组装与调试。

2. 学生能够运用电子时钟的设计原理,进行简单的时钟程序编写与优化。

3. 学生能够通过实际操作,培养动手能力、逻辑思维能力和问题解决能力。

情感态度价值观目标:1. 学生通过学习电子时钟的制作,培养对科学技术的热爱和兴趣,增强创新意识。

2. 学生在团队协作中,学会互相帮助、沟通与交流,培养合作精神。

3. 学生能够认识到时间的宝贵,养成珍惜时间、合理安排时间的好习惯。

课程性质:本课程为电子技术实践课程,旨在让学生通过动手实践,掌握电子时钟的基本原理与制作方法。

学生特点:五年级学生具有一定的认知能力、动手能力和逻辑思维能力,对新鲜事物充满好奇。

教学要求:结合学生特点,注重理论与实践相结合,充分调动学生的主观能动性,引导学生在实践中探索、发现、解决问题。

将课程目标分解为具体的学习成果,以便在教学设计和评估中实现课程目标的有效落实。

二、教学内容1. 电子时钟基本原理:电子时钟的工作原理、主要部件(如晶体振荡器、分频器、计数器、显示器件等)及其功能。

教材章节:《电子技术》第五章第二节2. 时间概念与电子时钟设置:时、分、秒的概念,电子时钟的时间设置与调整方法。

教材章节:《电子技术》第五章第三节3. 电子时钟设计与制作:电子时钟的设计流程、电路连接方法,以及组装与调试技巧。

教材章节:《电子技术》第五章第四节、第五节4. 时钟程序编写与优化:基于电子时钟原理,进行简单的时钟程序编写与调试。

教材章节:《电子技术》第五章第六节5. 实践操作与作品展示:学生分组进行电子时钟的组装、调试,展示作品并进行评价。

教材章节:《电子技术》第五章实践环节教学进度安排:第一课时:电子时钟基本原理及主要部件介绍第二课时:时间概念与电子时钟设置方法第三课时:电子时钟设计与制作(一)第四课时:电子时钟设计与制作(二)第五课时:时钟程序编写与优化第六课时:实践操作与作品展示教学内容确保科学性和系统性,结合教材章节,以理论与实践相结合的方式进行教学,旨在帮助学生掌握电子时钟相关知识,培养动手能力与创新能力。

c闹钟课程设计

c闹钟课程设计

c 闹钟课程设计一、课程目标知识目标:1. 学生能理解并掌握闹钟的基本原理和组成部分。

2. 学生能运用所学知识,设计并制作一个简单的闹钟电路。

3. 学生能理解时间概念,学会读取和设置闹钟时间。

技能目标:1. 学生能运用基本的电子元件,如电池、导线、开关等,搭建闹钟电路。

2. 学生能通过实际操作,培养动手能力和问题解决能力。

3. 学生能运用所学知识,对闹钟电路进行创新设计和改进。

情感态度价值观目标:1. 学生对科学产生兴趣,培养探索精神和创新意识。

2. 学生在小组合作中,学会沟通、协作和分享,培养团队精神。

3. 学生通过学习闹钟的制作,认识到时间的重要性,培养珍惜时间的观念。

课程性质:本课程为实践性较强的科学课程,结合电子技术和时间概念,让学生在动手实践中学习。

学生特点:三年级学生具备一定的认知能力和动手能力,对新鲜事物充满好奇心,但注意力集中时间较短。

教学要求:教师需提供明确的指导,确保学生在实践过程中掌握知识技能,同时注重培养学生的合作意识和情感态度。

教学过程中,将目标分解为具体的学习成果,便于教学设计和评估。

二、教学内容本课程教学内容紧密结合课程目标,确保科学性和系统性。

具体安排如下:1. 闹钟原理及组成部分:- 介绍闹钟的基本原理,如电路的闭合与断开。

- 讲解闹钟的组成部分,如电源、控制开关、闹铃装置等。

2. 电子元件的使用:- 讲解电池、导线、开关等基本电子元件的作用。

- 演示如何正确使用这些元件搭建闹钟电路。

3. 时间概念及设置:- 介绍时间概念,让学生学会读取和设置闹钟时间。

- 指导学生通过闹钟电路的实际操作,加深对时间概念的理解。

4. 实践操作:- 制定详细的实践操作步骤,让学生分组进行闹钟电路的搭建。

- 引导学生通过实践,掌握电路连接和调试方法。

5. 创新设计与改进:- 鼓励学生对闹钟电路进行创新设计,提高闹钟的实用性或趣味性。

- 指导学生针对现有闹钟电路进行改进,培养创新思维。

基于C51单片机的数字时钟课程设计(C语言带闹钟)

基于C51单片机的数字时钟课程设计(C语言带闹钟)

单片机技术课程设计数字电子钟学院:班级:姓名:学号:教师:摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。

所以设计一个简易数字电子钟很有必要。

本电子钟采用AT89C52单片机为核心,使用12MHz 晶振与单片机AT89C52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。

该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEY5键,进行相应的操作就可实现校时、定时、复位功能。

具有时间显示、整点报时、校正等功能。

走时准确、显示直观、运行稳定等优点。

具有极高的推广应用价值。

关键词:电子钟 AT89C52 硬件设计软件设计目录NO TABLE OF CONTENTS ENTRIES FOUND.一、数字电子钟设计任务、功能要求说明及方案介绍1.1 设计课题设计任务设计一个具有特定功能的电子钟。

具有时间显示,并有时间设定,时间调整功能。

1.2 设计课题的功能要求说明设计一个具有特定功能的电子钟。

该电子钟上电或按键复位后能自动显示系统提示符“d.1004-22”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从12时59分0秒开始运行,进入时钟运行状态;按电子钟S5键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按S5键再次进入时钟运行状态。

1.3 设计课的设计总体方案介绍及工作原理说明本电子钟主要由单片机、键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1所示:图1-1总体设计方案图本电子钟的所有的软件、参数均存放在AT89C52的Flash ROM和内部RAM 中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。

键盘采用动态扫描方式。

利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。

C电子闹钟设计说明书

C电子闹钟设计说明书

电子闹钟设计阐明书一、实现旳功能一种简朴旳电子闹钟设计程序,和一般旳闹钟旳功能差不多。

一方面此程序可以同步电脑上旳显示时间,保证时间旳精确性;24小时制,可以根据自己喜欢旳铃声设立闹钟提示音,还能自己设立提示语句,如“时间到了该起床了”,“大懒虫,天亮了,该起床了”等等,因此这是一种集实用和趣味于一体旳小程序。

二、设计环节1、打开Microsoft Visual C++ 6.0,在文献中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名张卢锐旳闹钟及其所在位置,点击拟定,如图所示。

2、将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完毕,如图所示。

然后始终点下一步,最后点完毕,就建立了一种基于对话窗口旳程序框架,如图所示。

3、下面是计算器旳界面设计在控件旳“编辑框”按钮上单击鼠标左键,在对话框编辑窗口上合适旳位置按下鼠标左键并拖动鼠标画出一种大小合适旳编辑框。

在编辑框上单击鼠标右键,在弹出旳快捷莱单中选择属性选项,此时弹出Edit属性对话框,以显示小时旳窗口为例,如图所示,在该对话框中输入ID属性。

在控件旳“Button”按钮上单击鼠标左键,在对话框上旳合适旳位置上按下鼠标左键并拖动鼠标画出一种大小合适旳下压式按钮。

在按钮上单击鼠标右键,在弹出旳快捷菜单中选择属性选项,此时也弹出Push Button属性对话框,以数字按钮打开为例,如图所示,在该对话框中输入控件旳ID值和标题属性。

按照上面旳操作过程编辑其她按钮对象旳属性。

表1 各按钮和编辑框等对象旳属性完毕后界面如图所示。

4、连接变量和代码1)、给编辑框连接变量。

在编辑框上单击鼠标右键,在弹出菜单中选择ClassWizard菜单项,弹出MFC ClassWizard 对话框,选择Member Variables选项卡,如图所示。

2)、给按钮连接代码(以打开按键为例)给打开按钮连接代码。

在打开按钮上单击鼠标右键,选择ClassWizard菜单项,在弹出旳对话框中选择Messages Maps选项卡,然后在Object IDs列表框中选择IDC_HOUR,在Messages列表框中选择BN_CLICKED项,即选择单击按钮事件,如图所示。

电子闹钟的设计

电子闹钟的设计

(电子闹钟的设计)课程设计说明书目录一、概述 (6)51 单片机: (6)汇编语言: (6)二、设计基本原理简介 (6)1设计要求及说明 (7)2整体设计方案及流程 (7)三、程序 (11)四、程序显示状态 (20)1正常显示状态 (20)2时钟调整状态 (21)五、调试过程及结果分析总结 (22)主要参考资料 (22)摘要:此系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。

系统功能要求电子时钟一运行就从12点00分00秒开始计时,并在数码管上显示时、分、秒当前值。

基本工作原理:AT89C51利用定时器每百分之一秒对百分之一秒寄存器的内容加一,并依次对秒、分、小时寄存器的内容加一;7SEG -MPX6-CA数码管动态显示时、分、秒的当前值。

本课题要求实现的功能比较简单。

此系统键的输入是通过独立式键盘来完成的,编程容易易懂,结构简单,实现起来方便。

由P3.2、P3.3、P3.4作为控制端,构成独立式按键接口方式。

百分之一秒的控制由AT89c51的定时器T0完成;在闹钟方面,通过周期检测闹钟按键和按键标识位来控制开启闹铃服务程序。

在闹铃设置及正常时间设置时为避免时间停止,所以才用定时器计时。

我设置的闹铃是用脉冲的形式驱动扬声器。

关键词7SEG-MPX6-CA AT89C51 定时器一、概述一应用知识简介:51 单片机:单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

作为嵌入式系统控制核心的单片机具有其体积小、功能全、性价比高等诸多优点。

51 系列单片机是国内目前应用最广泛的单片机之一,随着嵌入式系统、片上系统等概念的提出和普遍接受及应用,51 系列单片机的发展又进入了一个新的阶段。

在今后很长一段时间内51 系列单片机仍将占据嵌入式系统产品的中低端市场。

汇编语言:汇编语言是一种面向机器的计算机低级编程语言,通常是为特定的计算机或系列计算机专门设计的。

多功能电子钟设计说明

多功能电子钟设计说明

“多功能电子钟”设计说明1程序设计框架说明本案例程序设计主要分为:DS1302、ADC、按键扫描三个模块。

1.1宏定义#define uchar unsigned char //宏定义#define uint unsigned int#define ADC_CHS1_7 0X07/***********时分秒写寄存器**************/#define DS1302_SECOND_WRITE 0x80#define DS1302_MINUTE_WRITE 0x82#define DS1302_HOUR_WRITE 0x84#define DS1302_WEEK_WRITE 0x8A#define DS1302_DAY_WRITE 0x86#define DS1302_MONTH_WRITE 0x88#define DS1302_YEAR_WRITE 0x8C#define ADC_POWER 0X80#define ADC_FLAG 0X10 //当A/D转换完成后,ADC_FLAG要软件清零#define ADC_START 0X08#define ADC_SPEED_90 0X60/***********时分秒读寄存器**************/#define DS1302_SECOND_READ 0x81#define DS1302_MINUTE_READ 0x83#define DS1302_HOUR_READ 0x85#define DS1302_WEEK_READ 0x8B#define DS1302_DAY_READ 0x87#define DS1302_MONTH_READ 0x89#define DS1302_YEAR_READ 0x8D#define P1_7_ADC 0x801.2引脚定义/********DS1302*******/sbit Rtc_sclk = P1^5; //时钟线引脚,控制数据的输入与输出sbit Rtc_rst = P1^6; //CE线引脚,读、写数据时必须置为高电平sbit Rtc_io = P5^4; //实时时钟的数据线引脚/********数码管显示******/sbit L ed_sel = P2^3; //流水灯和数码管选通引脚sbit S el0 = P2^0; //Sel0、Sel1、Sel2三位二进制进行数码管位选0-7 sbit S el1 = P2^1;sbit S el2 = P2^2;sbit K EY1=P3^2; //Key1对应触发外部中断0sbit K EY2=P3^3; //Key2对应触发外部中断1sbit KEY3=P1^7; //Key31.3 变量定义时间结构体typedef struct __SYSTEMTIME__{uchar Second;uchar Minute;uchar Hour;uchar Week;uchar Day;uchar Month;uchar Year;}SYSTEMTIME; //定义的时间类型SYSTEMTIME t;Fun_Key.c模块/*年、月、日标志*/bit set_Y_flag;bit set_M_flag;bit set_D_flag;/*时、分、秒标志*/bit set_H_flag;bit set_Ms_flag;bit set_S_flag;/*年、月、日值*/uint set_Y_val;uint set_M_val;uint set_D_val;/*时、分、秒值*/uint set_H_val;uint set_Ms_val;uint set_S_val;bit set_YMD_done; //年月日设置完bit set_HMS_done; //时分秒设置完bit show_set_YMD; //显示年月日bit show_set_HMS; //显示时分秒bit show_YMD; //显示年月日bit show_HMS; //显示时分秒bit show_YMDW;bit show_key_val;unsigned char key_val;bit ring_flag;/*标志闹钟*/unsigned int ring_H;unsigned int ring_Ms;unsigned int ring_S;CALENDAR模块bit c_moon;unsigned int year_moon;unsigned int month_moon; unsigned int day_moon;unsigned int week;DS1302模块bit set_YMD_flag; //设置年月日标记bit set_HMS_flag; //设置时分秒标记SYSTEMTIME t;SYSTEMTIME set_t;2程序函数说明延时程序void Delayms(char i);DS1302读写函数void Ds1302_write(uchar temp);uchar Ds1302_read();void WriteDS1302(uchar Addr, uchar Data);uchar ReadDS1302(uchar cmd)SYSTEMTIME DS1302_GetTime();系统初始化void Init();void Init_key();ADC转换unsigned char GetADC();检测导航键unsigned char Fun_Keycheck();监听按键3void Fun_key3();监听功能键,完成时分秒相关值的设置void Fun_Key_task_HMS();监听按键2,完成时分秒设置void Fun_key2();监听按键1,完成相关功能的操作void Key_OFFON();初始化DS1302void Initial_DS1302(void);中断显示程序void timer0() interrupt 1初始化ADCvoid Init_ADC();3 程序设计框架及关键技巧说明3.1 程序总框图设计流程开始初始化(包括定时器及其他相关的控制变量)最高位置0写入秒寄存器读取秒寄存器值确定晶振是否工作1显示时、分、秒模式(默认)判断最高位监听按键否是结合功能键进行年月日设置Key3是否按下否是是否控制校时(key2、key3都按下两次)、万年历(key2否、key3按下两次)、闹钟(key2按下两次、key3否)功能模块相关显示、数据的写入、数据的其他相关计算,Key1是否按下Key2是否按下结合功能键进行时分秒设置Key3是否按下Key2是否按下是是否年月日设置完成时分秒设置完成否否3.2 I/O 引脚及相关寄存器配置 3.2.1 I/O 引脚:(1)数码管位选引脚 整个设置P2口的值;(2)数码管使能引脚sbit led_sel = P2^3 ;(3)DS1302引脚sbit rtc_sclk=P1^5; //时钟线引脚sbit rtc_rst=P1^6; // CE线引脚sbit rtc_io=P5^4; //实时时钟的数据线引脚(4)按键引脚sbit KEY1 = P3^2 ; //控制时间校准时设置的值sbit KEY2 = P3^3 ; //设置时间sbit KEY3 = P1^7; //设置年月日3.2.2寄存器:(1)DS1302相关寄存器其中:①控制字寄存器:写地址0x8E,读地址0x8F位7:必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。

C指针型闹钟课程设计

C指针型闹钟课程设计

课程设计说明书题目:指针型闹钟学院名称:专业班级:姓名学号:指导教师:2013 年 07 月课程设计任务书专业班级:学生姓名:指导教师:一、课程设计题目:设计一个如图所示的指针式闹钟二、目的与要求:1、目的:(1)要求学生熟练掌握C++语言的基本知识和C++调试技能;(2)掌握用C++开发应用程序的一般步骤和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象的程序设计问题。

(4)培养学生综合利用C++语言进行程序设计的能力,主要是培养学生利用系统提供的标准图形函数进行创新设计。

2、基本要求:(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;(2)要求在设计的过程中,对Windows环境下的编程有一个基本的认识;(3)学会Windows环境下绘图的基本方法;(4)能够完成基本的钟表的走时功能、对表功能、定时功能;(5)界面美观大方。

3、创新要求:在基本要求达到后,可进行创新设计,如定时提醒功能、声音提醒功能、定时运行别的程序的功能等。

4、写出设计说明书按照设计过程写出设计说明书。

三、设计方法和基本原理:1、问题描述(功能要求):要求所编写的闹钟能够完成基本的走时、对时、定时功能。

2、问题的解决方案(参考):根据题目的要求,可以将问题解决分为以下步骤:(1)分析问题,画出要解决问题的流程图(类及其层次结构图);(2)利用对话框编辑器完成界面的设计,要求界面要美观实用;(3)添加成员变量和成员函数(消息映射函数);(4)利用结构化程序的设计思路完成秒针、分针、时针的走动及闹铃指针的设置。

(5)程序功能调试;(6)完成系统总结报告以及系统使用说明书。

四、设计中涉及到的重要内容及关键技术:1、对话框应用程序的编写方法及其相关函数;2、绘图工具的使用方法;3、一些常用系统API函数的使用方法。

五、程序设计和调试:编写程序代码、完成程序调试。

六、编写课程设计说明书:按照课程设计说明书的规范格式要求以及说明书中的内容要求编写课程设计说明书。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子闹钟设计说明书一、实现的功能一个简单的电子闹钟设计程序,和一般的闹钟的功能差不多。

首先此程序能够同步电脑上的显示时间,保证时间的准确性;24小时制,可以根据自己喜欢的铃声设置闹钟提示音,还能自己设置提示语句,如“时间到了该起床了”,“大懒虫,天亮了,该起床了”等等,所以这是一个集实用和趣味于一体的小程序。

二、设计步骤1、打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名张卢锐的闹钟及其所在位置,点击确定,如图所示。

2、将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成,如图所示。

然后一直点下一步,最后点完成,就建立了一个基于对话窗口的程序框架,如图所示。

3、下面是计算器的界面设计在控件的“编辑框”按钮上单击鼠标左键,在对话框编辑窗口上合适的位置按下鼠标左键并拖动鼠标画出一个大小合适的编辑框。

在编辑框上单击鼠标右键,在弹出的快捷莱单中选择属性选项,此时弹出Edit属性对话框,以显示小时的窗口为例,如图所示,在该对话框中输入ID属性。

在控件的“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。

在按钮上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时也弹出Push Button属性对话框,以数字按钮打开为例,如图所示,在该对话框中输入控件的ID值和标题属性。

按照上面的操作过程编辑其他按钮对象的属性。

表1 各按钮和编辑框等对象的属性对象ID 标题或说明编辑框IDC_HOUR 输入定时的整点时间编辑框IDC_MINUTE 输入定时的分钟数编辑框IDC_FILE 链接提示应所在地址编辑框IDC_WARING 自己编辑显示文本按钮IDC_OPEN 打开按钮IDC_IDOK 闹钟开始按钮IDC_CHANGE 重新输入静态文本IDC_STATIC 界面上的静态文本,如时,分,备注完成后界面如图所示。

4、连接变量和代码1)、给编辑框连接变量。

在编辑框上单击鼠标右键,在弹出菜单中选择ClassWizard菜单项,弹出MFC ClassWizard 对话框,选择Member Variables选项卡,如图所示。

2)、给按钮连接代码(以打开按键为例)给打开按钮连接代码。

在打开按钮上单击鼠标右键,选择ClassWizard菜单项,在弹出的对话框中选择Messages Maps选项卡,然后在Object IDs列表框中选择IDC_HOUR,在Messages 列表框中选择BN_CLICKED项,即选择单击按钮事件,如图所示。

三、关键部分的代码1、获取电脑时间和输入定时时间代码:if(onoff==TRUE){CTime time;CString strtime,m_stime;time=CTime::GetCurrentTime();strtime=time.Format("%H%M"); //获取电脑时间m_stime=m_hour+m_minute; //自己输入时间if(m_stime==strtime){onoff=FALSE;OnOpenMusic();OnTingle();MessageBox(m_waring);}}2、打开提示音音乐文件代码:void CAlarmclockDlg::OnOpenMusic(){//SHELLEXECUTEINFO shell = { sizeof(shell) };shell.fMask = SEE_MASK_FLAG_DDEW AIT;shell.lpVerb = "open";shell.lpFile = m_file;shell.nShow = SW_SHOWNORMAL;BOOL ret = ShellExecuteEx(&shell);//打开音乐文件}3、到达设定时间点闹钟提醒程序:void CAlarmclockDlg::OnTray(){NOTIFYICONDATA nid;nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);nid.hWnd=this->m_hWnd;nid.uID=IDR_MAINFRAME;nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ;nid.uCallbackMessage=WM_SHOWTASK;//自定义的消息名称nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME) );strcpy(nid.szTip,"闹钟提醒");//信息提示条为“计划任务提醒”Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标4、计划任务提醒代码:void CAlarmclockDlg::OnTray(){NOTIFYICONDATA nid;nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);nid.hWnd=this->m_hWnd;nid.uID=IDR_MAINFRAME;nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ;nid.uCallbackMessage=WM_SHOWTASK;//自定义的消息名称nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME) );strcpy(nid.szTip,"闹钟提醒");//信息提示条为“计划任务提醒”Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标5、抖动完成以后回到起始位置放置乱跑和抖动圈数代码:void CAlarmclockDlg::OnTingle(){ShowWindow(SW_SHOWNORMAL);CPoint CurrentPos; //抖完还要回到这个位置,不要乱跑。

CRect rect; //这一段计算主要是为了满足SetWindowPos()的参数要求…不解释吧GetClientRect(&rect);ClientToScreen(&rect);CurrentPos.x = rect.left;CurrentPos.y = rect.top;int FrameWidth;int FrameHight;int CaptionHight; //我当前系统设置上这三个值分别为3,3,22FrameWidth = GetSystemMetrics(SM_CXFIXEDFRAME);FrameHight = GetSystemMetrics(SM_CYFIXEDFRAME);CaptionHight = GetSystemMetrics(SM_CYCAPTION); //这是个好函数//这里需要将CurrentPos坐标offset()到主窗口左上角坐标CurrentPos.Offset(-FrameWidth, -CaptionHight-FrameHight); //实现抖动: 半个小圈+ 三个大圈+ 半个小圈SetWindowPos(&wndTopMost,CurrentPos.x-1,CurrentPos.y-2,0,0, SWP_NOSIZE);Sleep(10);//上面的SWP_NOSIZE参数忽略cx,cy,故可置0SetWindowPos(&wndTopMost,CurrentPos.x-4,CurrentPos.y-4,0,0, SWP_NOSIZE);Sleep(10);SetWindowPos(&wndTopMost,CurrentPos.x-7,CurrentPos.y-2,0,0, SWP_NOSIZE);Sleep(10);SetWindowPos(&wndTopMost,CurrentPos.x-8,CurrentPos.y,0,0, SWP_NOSIZE);Sleep(10);int i = 0;for (;i<7;i++) //想抖几圈就改几{SetWindowPos(&wndTopMost,CurrentPos.x-6,CurrentPos.y+6,0,0, SWP_NOSIZE);Sleep(10);SetWindowPos(&wndTopMost,CurrentPos.x,CurrentPos.y+8,0,0, SWP_NOSIZE);Sleep(10);SetWindowPos(&wndTopMost,CurrentPos.x+6,CurrentPos.y+6,0,0, SWP_NOSIZE);Sleep(10);SetWindowPos(&wndTopMost,CurrentPos.x+8,CurrentPos.y,0,0, SWP_NOSIZE);Sleep(10);SetWindowPos(&wndTopMost,CurrentPos.x+6,CurrentPos.y-6,0,0, SWP_NOSIZE);Sleep(10);SetWindowPos(&wndTopMost,CurrentPos.x,CurrentPos.y-8,0,0, SWP_NOSIZE);Sleep(10);SetWindowPos(&wndTopMost,CurrentPos.x-6,CurrentPos.y-6,0,0, SWP_NOSIZE);Sleep(10);SetWindowPos(&wndTopMost,CurrentPos.x-8,CurrentPos.y,0,0, SWP_NOSIZE);Sleep(10);}SetWindowPos(&wndTopMost,CurrentPos.x-7,CurrentPos.y+2,0,0, SWP_NOSIZE);Sleep(10);SetWindowPos(&wndTopMost,CurrentPos.x-4,CurrentPos.y+4,0,0, SWP_NOSIZE);Sleep(10);SetWindowPos(&wndTopMost,CurrentPos.x-1,CurrentPos.y+2,0,0, SWP_NOSIZE);Sleep(10);SetWindowPos(&wndTopMost,CurrentPos.x,CurrentPos.y,0,0, SWP_NOSIZE);6、测试计算器的功能1.程序主界面2、输入15:10,选择打开音乐文件,和提示语句,运行结果如下提示音乐会由相应的播放器开始播放,执行效果很不错。

相关文档
最新文档