用51单片机做的电子时钟
程序如下:
#include
unsigned char code table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x76};//字码表0-9,最后一个是一横"-"
unsigned int i,a,b,c,d,flag,flag1;
unsigned int sec,min,h,nm,nh,nz;
unsigned int w,day,mon,year;
int miao1,miao2,miao3;
sbit keyled=P1^0;
sbit key2=P1^1;
sbit keyinc=P1^2;
sbit keymood=P1^3;
sbit BEEP=P1^4;
void second();
void minute();
void hour();
void time();
void riqi();
void xianshi();
void delay10ms();
void delay20ms();
void tiaoshi();
void miaobiao();
void miaotime();
void week();
void naozhong();
void shengyin();
//前几天刚用了下定时器,想起来之前用汇编写的时钟程序基本没有什么功能,所以这几天就用C再写了下
//这个时钟的功能是模仿我自己的手表写的,功能完全一样,有秒表,闹钟,可以显示年月日及星期
/
}
if(keymood==0)
{
miao2=0;
miao3=0;
}
while(b==1)//保证按键只按一次,没有重复按键
{tiaoshi();
}
}
/
{ i=0;
B2:if(nz==0)
}
while(b==2)
{ tiaoshi();
}
}
/
{ i=1;
B3:if(nz==0)
}
xianshi(); //显示程序,用i的大小来分配,相当于调时、分、秒就显示时间,调年月日就显示日期
while(b==3)
{tiaoshi();
}
}
/
{
}
second();
minute();
hour();
}
if(keyinc==0)
{ delay10ms();
if(keyinc==0)
{
B: riqi();
}
if(keymood==0)
{
N:
}
tiaoshi();
/
}
//*******************************分显示程序***************************
{
}
//*****************************年、月、日显示程序************************
void riqi()
{
}
//*****************************星期显示程序****************************
void week()
{
}
//*****************************秒表显示程序************************
void miaobiao()
{
}
//****************************闹钟显示程序************************
void naozhong()
{
int nmge,nmshi;
int nhge,nhshi;
nmge=nm%10;
nmshi=nm/10;
if(i==1||i==3||i==5||i==7)
if(flag>10)
P3=0xff;
else
{
P3=0xef;
}
}
else
{
P3=0xef;
}
P2=table1[nmge];
for(a=0;a<100;a++);
if(i==1||i==3||i==5||i==7)
{
if(flag>10)
P3=0xff;
else
{
P3=0xf7;
}
}
else
{
P3=0xf7;
}
P2=table1[nmshi];
for(a=0;a<100;a++);
P3=0xfb;
P2=table1[10];
for(a=0;a<100;a++);
nhge=nh%10;
nhshi=nh/10;
if(i==2||i==4||i==6)
{
if(flag>10)
P3=0xff;
else
{
P3=0xfd;
}
}
else
{
P3=0xfd;
}
P2=table1[nhge];
for(a=0;a<100;a++);
if(i==2||i==4||i==6)
{
if(flag>10)
P3=0xff;
else
{
P3=0xfe;
}
}
else
{
P3=0xfe;
}
P2=table1[nhshi];
for(a=0;a<100;a++);
P3=0xdf;
P2=table1[11];
for(a=0;a<100;a++);
}
//*******************************调时显示***********************
void xianshi()
{
else if(i==7)
{
}
else
{
second();
minute();
hour();
}
//***********************************闹钟声音程序****************
void shengyin()
{
BEEP=~BEEP;
for(a=0;a<10;a++);
}
//***************************时钟加1程序*******************************
void time()
{
if(flag==90)
{
}
//****************************秒表加1程序****************
// flag1标志位主要是为秒表而设的
{
}
//************************调时程序*******************************
void tiaoshi()
{
if(keyinc==0&&keymood==0)
{
}
//********************
if(keymood==0)
{
}
//******************************
if(key2==0)
{
for(a=0;a<2000;a++);
if(key2==0)
{
}
//***
}
//****************************************
//**********
if(b==2&&(i==1||i==3||i==5||i==7)) //调闹钟的分
{
}
//
if(b==2&&(i==2||i==4||i==6))
{
}
//**********************
if(b==1)
{
if(keyinc==0)
{
delay10ms();
}
//*******************************************************
if(i==1)
{
}
}
if(i==2&&keyinc==0)
{
}
//***************
{
}
//******************
if(i==4&&keyinc==0)
{
}
//
if(i==5&&keyinc==0)
for(a=0;a<5000;a++);
if(keyinc==0)
{
}
}
while(keyinc==0);
}
//
if(i==6&&keyinc==0)
{
}
//
if(i==7&&keyinc==0)
{
delay10ms();
if(keyinc==0)
{
}
while(keyinc==0);
}
}
//*****************************延时程序******************************
void delay10ms()
51单片机电子时 相关文章:
- 51单片机电子时钟程序(12-01)
- 51单片机电子时钟(11-29)
- 通过51单片机实现电子时钟功能并通过LCD1602显示(11-26)
- 关于51单片机电子时钟精度的问题(11-19)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)