设置一个闹钟

本文档描述了如何通过继承Clock类创建AlarmClock类,该类具备设置时间、设定闹钟、按秒显示时间及闹钟功能。举例说明了AlarmClock的使用,包括设置闹钟时间、启动闹钟,并展示了在闹钟触发时,如何同时显示当前时间和闹铃提示。
摘要由CSDN通过智能技术生成

要求:

通过继承Clock类实现活闹钟类AlarmClock, 该类具有设置时间、设置闹铃时间、按秒显示时间、闹铃等功能。

例如:

AlarmClock myClock(h,m,s);

myClock.setAlarmTime(ah,am,as);

myClock.start();

运行程序,计算机在同一位置显示:

8:59:50, 8:59:51 ...

8:59:55,bbb,8:59:56,bbb,8:57:55,bbb,8:59:58,bbb,8:59:59,bbb,

9:0:0,9:0:1 ...

闹铃时间为5秒,计算机同时显示正确的时间,闹铃完成后时钟继续运行。

#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <cstdio>

using namespace std;

class Clock
{
    int H,M,S;
public :
    void SetTime(int H = 0,int M = 0,int S = 0)
    {
        this->H = H;
        this->M = M;
        this->S = S;
    }
    clock(int H = 0,int M = 0,int S = 0)
    {
        this->H = H;
        this->M = M;
        this->S = S;
    }
    int Get_H()
    {
        return H;
    }
    int Get_M()
    {
 
好的,以下是一个简单的89c51单片机闹钟和时钟分开显示的程序示例,其中使用第4个中断实现闹钟功能: ```c #include <reg51.h> // 闹钟时间和当前时间的全局变量 unsigned char alarm_hour = 0; unsigned char alarm_minute = 0; unsigned char hour = 0; unsigned char minute = 0; unsigned char second = 0; // 中断服务函数,用于处理定时器中断 void timer_isr() interrupt 1 { // 定时器1设置为1秒中断一次,所以每次中断时second加1 second++; // 如果second等于60,则表示已经过了1分钟,minute加1 if (second == 60) { second = 0; minute++; } // 如果minute等于60,则表示已经过了1小时,hour加1 if (minute == 60) { minute = 0; hour++; } // 如果hour等于24,则表示已经过了1天,将hour置为0 if (hour == 24) { hour = 0; } // 检测当前时间是否与闹钟时间相同,如果相同则触发闹钟 if (hour == alarm_hour && minute == alarm_minute) { // 触发闹钟,可以在这里进行相关操作,如发出蜂鸣器声音等 } } // 初始化定时器1,用于时钟和闹钟的计时 void init_timer1() { TMOD |= 0x10; // 设置定时器1为模式1(16位定时器) TH1 = 0xFC; // 定时器初值为0xFC67,定时1秒 TL1 = 0x67; TR1 = 1; // 启动定时器1 ET1 = 1; // 允许定时器1中断 EA = 1; // 允许中断 } void main() { init_timer1(); // 初始化定时器1 while (1) { // 在这里可以将当前时间闹钟时间显示在LCD屏幕或数码管上 // 等待下一次中断触发,更新时间 } } ``` 在上面的示例代码中,中断服务函数timer_isr()用于处理定时器1中断,每次中断时更新当前时间,同时检测当前时间是否与闹钟时间相同,如果相同则触发闹钟。 在主函数main()中,我们初始化定时器1并进入一个无限循环,等待定时器中断触发。在定时器中断服务函数中更新时间后,可以将当前时间闹钟时间显示在LCD屏幕或数码管上。 请注意,上述示例代码只是一个简单的示例,实际应用中需要根据具体需求进行修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值