#include<iostream>
#include<iomanip>
using namespace std;
class Time{
private:int hour;
int minute;
int second;
public: void SetTime(int a,int b,int c){hour=a;minute=b;second=c;}
DisplayTime24();
DisplayTime12();
};
Time::DisplayTime24(){
for(int j=0;j<100000000;j++)
{
cout<<setw(2)<<setfill('0')<<hour<<":"<<setw(2)<<setfill('0')<<minute<<":"<<setw(2)<<setfill('0')<<second;
if(second==59&&minute!=59)
{minute++;
second=0;}
else if(second==59&&minute==59&&hour!=23)
{minute=0;
second=0;
hour++;}
else if(second==59&&minute==59&&hour==23)
{second=0;
minute=0;
hour=0;}
else second++;
for(int i=0;i<600000000;i++);
cout<<"\b"<<"\b"<<"\b"<<"\b"<<"\b"<<"\b"<<"\b"<<"\b";
}
cout<<setw(2)<<setfill('0')<<hour<<":"<<setw(2)<<setfill('0')<<minute<<":"<<setw(2)<<setfill('0')<<second;
}
Time::DisplayTime12(){
for(int j=0;j<100000000;j++)
{
cout<<setw(2)<<setfill('0')<<hour<<":"<<setw(2)<<setfill('0')<<minute<<":"<<setw(2)<<setfill('0')<<second;
if(second==59&&minute!=59)
{minute++;
second=0;}
else if(second==59&&minute==59&&hour!=11)
{minute=0;
second=0;
hour++;}
else if(second==59&&minute==59&&hour==11)
{second=0;
minute=0;
hour=0;}
else second++;
for(int i=0;i<100000000000;i++);
cout<<"\b"<<"\b"<<"\b"<<"\b"<<"\b"<<"\b"<<"\b"<<"\b";
}
cout<<setw(2)<<setfill('0')<<hour<<":"<<setw(2)<<setfill('0')<<minute<<":"<<setw(2)<<setfill('0')<<second;
}
void main(){
int a,b,c;
char d;
Time x;
cout<<"请输入你要设置的时间的小时:";
cin>>a;cout<<"\n";
cout<<"请输入你要设置的时间的分钟:";
cin>>b;cout<<"\n";
cout<<"请输入你要设置的时间的秒钟:";
cin>>c;cout<<"\n";
x.SetTime(a,b,c);
cout<<"显示时间:";cout<<endl;
cout<<"请问您要选择的模式:"<<endl;
cout<<"A.24小时制"<<endl;
cout<<"B.12小时制"<<endl;
cin>>d;
if(d=='A')
{cout<<"24小时显示模式:"<<endl;
x.DisplayTime24();
cout<<endl;}
else
{cout<<"12小时显示模式:"<<endl;
if(a>12)
{a=a-12;
x.SetTime(a,b,c);}
x.DisplayTime12();
cout<<endl;}
}
基于51单片机的数字电子钟C程序设计&仿真图
/***************************lns主程序snl***************************/
#include <absacc.h> //包含头文件
#include <reg52.h> //包含头文件
/***************************数据类型定义***************************/
#define uchar unsigned char //数据类型定义
/*************************定义变量并初始化*************************/
uchar n=31; //定义月份天数变量并初始化
uchar ms=0; //定义毫秒变量并初始化
uchar h1=0,m1=0,s1=0; //定义计时时、分、秒变量并初始化
uchar h2=0,m2=1,s2=1; //定义定时时、分、秒变量并初始化
uchar year=7,month=9,day=8; //定义年、月、日变量并初始化
uchar wday=6; //定义星期变量并初始化
uchar *h=&h1,*m=&m1,*s=&s1; //定义显视位变量并初始化
uchar *p; //定义调节指针
uchar k1=0,k2=0,k3=0,k4=0,k5=0; //定义控制变量并初始化
uchar counter=0; //定义铃声节拍变量并初始化
uchar count=0; //定义铃声音符变量并初始化
sbit sound=P1^0; //定义铃声输出位
uchar a[8]={1,2,3,4,5,6,7}; //定义显视输出位数组并初始化
uchar code tt[12]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,0x40,0x00
}; //数码管显视代码
uchar code array[]={
0x18, 0x30, 0x1C, 0x10, 0x20, 0x40, 0x1C, 0x10,
0x18, 0x10, 0x20, 0x10, 0x1C, 0x10, 0x18, 0x40,
0x1C, 0x20, 0x20, 0x20, 0x1C, 0x20, 0x18, 0x20,
0x20, 0x80, 0xFF, 0x00, 0x20, 0x30, 0x1C, 0x10,
0x18, 0x20, 0x15, 0x20, 0x1C, 0x20, 0x20, 0x20,
0x26, 0x40, 0x20, 0x20, 0x2B, 0x20, 0x26, 0x20,
0x20, 0x20, 0x30, 0x80, 0xFF, 0x00, 0x20, 0x20,
0x1C, 0x10, 0x18, 0x10, 0x20, 0x20, 0x26, 0x20,
0x2B, 0x20, 0x30, 0x20, 0x2B, 0x40, 0x20, 0x20,
0x1C, 0x10, 0x18, 0x10, 0x20, 0x20, 0x26, 0x20,
0x2B, 0x20, 0x30, 0x20, 0x2B, 0x40, 0x20, 0x30,
0x1C, 0x10, 0x18, 0x20, 0x15, 0x20, 0x1C, 0x20,
0x20, 0x20, 0x26, 0x40, 0x20, 0x20, 0x2B, 0x20,
0x26, 0x20, 0x20, 0x20, 0x30, 0x80, 0x20, 0x30,
0x1C, 0x10, 0x20, 0x10, 0x1C, 0x10, 0x20, 0x20,
0x26, 0x20, 0x2B, 0x20, 0x30, 0x20, 0x2B, 0x40,
0x20, 0x15, 0x1F, 0x05, 0x20, 0x10, 0x1C, 0x10,
0x20, 0x20, 0x26, 0x20, 0x2B, 0x20, 0x30, 0x20,
0x2B, 0x40, 0x20, 0x30, 0x1C, 0x10, 0x18, 0x20,
0x15, 0x20, 0x1C, 0x20, 0x20, 0x20, 0x26, 0x40,
0x20, 0x20, 0x2B, 0x20, 0x26, 0x20, 0x20, 0x20,
0x30, 0x30, 0x20, 0x30, 0x1C, 0x10, 0x18, 0x40,
0x1C, 0x20, 0x20, 0x20, 0x26, 0x40, 0x13, 0x60,
0x18, 0x20, 0x15, 0x40, 0x13, 0x40, 0x18, 0x80,
0x00, 0x00
}; //array[i]=0x00 代表歌曲演唱完毕
//array[i]=0xff 代表是休止符
/*******************************************************************
* 函数名称:leap()
* 功 能:计算二月份天数
* 入口参数:year
* 出口参数:无
*******************************************************************/
uchar leap(uchar year) //判断是否闰年并返回二月份的天数
{ //闰年返回29,平年返回28
year+=2000;
if(year%4==0)
{if(year%100==0)
{if(year%400==0)
return 29;
else return 28;
}
else return 29;
}
else return 28;
}
/*******************************************************************
* 函数名称:mon()
* 功 能:计算并返回每个月的天数
* 入口参数:month
* 出口参数:无
*******************************************************************/
uchar mon(uchar month) //计算并返回每个月的天数
{
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:return 31;break; //1,3,5,7,8,10,12月每月31天
case 4:
case 6:
case 9:
case 11:return 30;break; //4,6,9,11月每月30天
case 2: return leap(year);break;//返回二月份的天数
default:break;
}
}
/*******************************************************************
* 函数名称:music()
* 功 能:音乐节拍控制
* 入口参数:无
* 出口参数:无
*******************************************************************/
void music(void) //铃声音乐
{
counter++; //节拍次数计数
if(counter>=array[count+1]) //节拍次数判断
{
count+=2; //音符变换
counter=0; //清0节拍数
if(count>=192) //判断是否唱完一曲
count=0; //返回第一个音符
}
}
/*******************************************************************
* 函数名称:timer1()
* 功 能:音乐频率设置
* 入口参数:无
* 出口参数:无
*******************************************************************/
void timer1(void)interrupt 1 using 1 //音调设置
{
sound=~sound; //铃声输出
TH0=(0xffff-30*array[count])>>8; //音频设置
TL0=(0xffff-30*array[count])&0xff;
}
/*******************************************************************
* 函数名称:timer3()
* 功 能:中断计时
* 入口参数:无
* 出口参数:无
*******************************************************************/
void timer3(void) interrupt 3 using 3 //计时中断
{
TH1=0xd8; //计数器初�