资源简介
基于AT89C51单片机八位数码管显示数字时钟,有时钟、闹钟及日历功能
代码片段和文件信息
#include
#define KEY_Q P11 //切换功能
#define KEY_T P10 //调时
#define KEY_Y P13 //移闪烁
#define KEY_Z P12 //增闪烁位值
#define LED1 P14 //红
#define LED2 P15 //绿
#define LED3 P16 //绿
unsigned char code tab[]={0xC00xF90xA40xB00x990x920x820xF80x800x90};//{0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f};
unsigned char code com_tab[]={0XFE0XFD0XFB0XF70XEF0XDF0XBF0X7F};
unsigned char countsecondminhournj;
unsigned char year=87moon=10day=25jhabcnminnhournaoi4j4;
unsigned char code tab_1[]={0xab0x91}; // //yn
bit k=1;
void Display(unsigned char x);
delay(unsigned char x)
{
unsigned char ij;
for(i=0;i for(j=0;j<80;j++);
}
pd()
{
if(year>99)year=0;
if(moon>12)moon=0;
if(day>31)day=0;
if(hour>23)hour=0;
if(min>59)min=0;
if(second>59)second=0;
if(nhour>23)nhour=0;
if(nmin>59)nmin=0; /**/
}
unsigned char keyy(void)
{
if(KEY_Y==0)
{
delay(50);
if(KEY_Y==0)
n++;
while(KEY_Y==0)
{
Display(8);
}
if(jh==2)
{
if(n==5)n=0;
}
else
if(n==6)n=0;
}
return n;
}
keyz_9(unsigned char x)
{
if(KEY_Z==0)
{
delay(50);
if(KEY_Z==0)
x++;
if((x%10)==0&&x!=0)x-=10;
while(KEY_Z==0)
{
Display(8);
}
}
return x;
}
keyz_6(unsigned char x)
{
if(KEY_Z==0)
{
delay(50);
if(KEY_Z==0)
x+=10;
if((x/10)==6)x-=60;
while(KEY_Z==0)
{
Display(8);
}
}
return x;
}
keyz_2(unsigned char x)
{
if(KEY_Z==0)
{
delay(50);
if(KEY_Z==0)
x+=10;
if((x/10)==3)x-=30;
while(KEY_Z==0)
{
Display(8);
}
}
return x;
}
keyz_n()
{
if(KEY_Z==0)
{
delay(50);
if(KEY_Z==0)
{
nao=!nao;
while(KEY_Z==0)Display(8);
}
}
}
void keyq(void)
{
if(KEY_Q==0)
{
delay(10);
if(KEY_Q==0)
{
jh++;n=0;
if(jh==3)jh=0;
while(KEY_Q==0)Display(8);
}
}
if(KEY_T==0) //设置与确认
{
k=!k;
while(KEY_T==0)
{
Display(8);
}
}
}
JHQ()
{
if(jh==0)
{
a=second;
b=min;
c=hour;
LED1=0;LED2=1;LED3=1;
}
if(jh==1)
{
a=day;
b=moon;
c=year;
LED1=1;LED2=0;LED3=1;
}
if(jh==2)
{
b=nmin;
c=nhour;
LED1=1;LED2=1;LED3=0;
}
}
JHH()
{
if(jh==0)
{
second=a;
min=b;
hour=c;
}
if(jh==1)
{
day=a;
moon=b;
year=c;
}
if(jh==2)
{
nmin=b;
nhour=c;
}
}
di()
{
P2=0;
i4++;
if(i4==130)i4=0j4++;
if(j4==150)j4=0;
if(j4<=16||j4>20&&j4<=36||j4>40&&j4<=56||j4>60&&j4<=76)
P0=0x40;
else
P0=0xc0;
}
main()
{
TMOD=0X01;
TH0=(65536-49985)/256;
TL0=(65536-49984)%256;
TR0=1;ET0=1;EA=1;
P0=P2=0XFF;
while(1)
{
pd();
if(nao&&min==nmin&&hour==nhour)
{
while(KEY_Q&&KEY_Y&&KEY_Z&&second<30)di();
nao=0;
}
keyq(); //切换键判断
JHQ(); //交换前
if(k)
{
Display(8);
}
else //进入设置状态
{
n=keyy(); //移动闪烁
if(jh!=2)
if(n==5) //调second%10
{
count=0;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 91 2009-04-23 17:13 数字时钟(八位数码管显示)\00000.txt
文件 14082 2009-06-14 18:26 数字时钟(八位数码管显示)\JZ_SZ
文件 27750 2009-06-14 18:51 数字时钟(八位数码管显示)\JZ_SZ.plg
文件 3901 2009-06-14 18:26 数字时钟(八位数码管显示)\JZ_SZ.hex
文件 30 2009-06-14 18:26 数字时钟(八位数码管显示)\JZ_SZ.lnp
文件 21012 2009-06-14 18:26 数字时钟(八位数码管显示)\JZ_SZ.M51
文件 1161 2009-06-14 18:51 数字时钟(八位数码管显示)\JZ_SZ.Opt
文件 2145 2009-04-23 17:13 数字时钟(八位数码管显示)\JZ_SZ.Uv2
文件 1220 2009-06-14 00:47 数字时钟(八位数码管显示)\JZ_SZ_Opt.Bak
文件 0 2009-04-23 15:48 数字时钟(八位数码管显示)\JZ_SZ_Uv2.Bak
文件 5063 2009-06-14 18:17 数字时钟(八位数码管显示)\KEY_7SEG.c
文件 17275 2009-06-14 18:26 数字时钟(八位数码管显示)\KEY_7SEG.OBJ
文件 16967 2009-06-16 22:05 数字时钟(八位数码管显示)\KEY_7SEG.LST
文件 123364 2009-06-09 21:53 数字时钟(八位数码管显示)\Last Loaded sz.DBK
文件 123364 2009-06-13 11:19 数字时钟(八位数码管显示)\sz.DSN
文件 742 2009-10-17 12:24 数字时钟(八位数码管显示)\sz.PWI
目录 0 2009-10-17 12:25 数字时钟(八位数码管显示)
----------- --------- ---------- ----- ----
358167 17
评论
共有 条评论