• 大小: 39KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-13
  • 语言: 其他
  • 标签: 单片机  闹钟  

资源简介

基于51单片机的闹钟

资源截图

代码片段和文件信息

#include
#include
#define uint  unsigned int
#define uchar unsigned char
#define du    P0
sbit bell=P1^0;
sbit K1=P1^1;//模式设置
sbit K2=P1^2;//位选择
sbit K3=P1^3;//加
sbit K4=P1^4;//减
sbit K5=P1^5;//确定

uchar num0;
uint  secfenhoursec0fen0hour0sec1fen1hour1num2sec2fen2hour2daymonyear;
uint  mk1=0k2=0k34=0be=0xz;
uchar code mo[]={0312831303130313130313031};  
uchar code table[]={
0x3f0x060x5b0x4f
0x660x6d0x7d0x07
0x7f0x6f0x400xff};

void timeqidong()
{
 TH0=(65536-4996)/256;
   TL0=(65536-4996)%256;
   EA=1;
   ET0=1;  
   TR0=1;
   TMOD=0x01;

}
void delay(uint a)
{
    uint b;
for(a;a>0;a--)
  for(b=10000;b>0;b--);
}
void anjian()//按键子程序
{
uint i;
 k34=0;
if(K1==0)
{
delay(2);
if(K1==0)
{
k1++;
if(k1>2) {k1=0;}
while((i<5)&&(K1==0))
{
delay(3);
i++;
}
i=0;
}
}
if(K2==0)
{
delay(1);
if(K2==0)
{
  k2++;
if(k2>6) {k2=0;}
while((i<5)&&(K2==0))
{
delay(6);
i++;
}
i=0;
}
}
if(K3==0)
{
delay(4);
if(K3==0)
{
k34=1;
while((i<3)&&(K3==0))
{
delay(1);
i++;
}
i=0;
}
}
if(K4==0)
{
delay(4);
if(K4==0)
{
k34=-1;
while((i<3)&&(K4==0))
{
delay(1);
i++;
}
i=0;
}
}
if(K5==0)
{
delay(1);
if(K5==0)
{
k2=0;
while((i<4)&&(K5==0))
{
delay(2);
i++;
}
i=0;
}
}
}
void shezhi(uint *auint *buint *c)
{
if(k2>0)
{
switch(k2)
  {
   case 1:*a=(*a/10+k34)*10+*a%10;break;
 case 2:*a=*a+k34;break;
 case 3:*b=(*b/10+k34)*10+*b%10;break;
 case 4:*b=*b+k34;break;
 case 5:*c=(*c/10+k34)*10+*c%10;break;
 case 6:*c=*c+k34;break;
  }
k34=0;
if(k1==0)
{hour2=hour0fen2=fen0sec2=sec0num2=num0;xz=0;}
}
}
void xianshi(uint houruint fenuint sec)//数码管显示子函数
{
uchar itflag;
uint  jx;
for(i=0;i<8;i++)
         { switch(i)
            {
              case (0):P2=~0x01;flag=1;t=hour/10;break;
          case (1):P2=~0x02;flag=2;t=hour%10;break;
          case (2):P2=~0x00;       t=11;break;
            case (3):P2=~0x08;flag=3;t=fen/10;break; 
          case (4):P2=~0x10;flag=4;t=fen%10;break;
            case (5):P2=~0x00;       t=11;break;
            case (6):P2=~0x40;flag=5;t=sec/10;break;
            case (7):P2=~0x80;flag=6;t=sec%10;break;
            }
if(k2==flag&&num0>140)
{ du=0xff;}
         else du=~table[t];
     for(x=300;x>0;x--);
      for(j=10;j>0;j--);
du=0xff;
    }
}
void main()
{ year=15;mon=6;day=6;
hour0=12;fen0=0;sec0=0;
hour1=30;fen1=0;sec1=0;
hour2=hour0fen2=fen0sec2=sec0;
timeqidong();
while(1)
{
    anjian();

switch(k1)//设定
  {
 case 0:shezhi(&hour0&fen0&sec0);break;
   c

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      16264  2015-06-25 22:33  shizhong2.OBJ

    .......     70495  2015-07-02 18:01  shizhong2.uvgui.Administrator

    .......     70495  2015-06-25 22:45  shizhong2.uvgui_Administrator.bak

    .......      5334  2015-06-20 16:04  shizhong2.uvopt

    .......     14023  2015-06-20 16:04  shizhong2.uvproj

    .......      5334  2015-06-20 11:56  shizhong2_uvopt.bak

    .......     14019  2015-06-20 11:56  shizhong2_uvproj.bak

     文件      13424  2015-06-25 22:33  shizhong2

     文件        622  2015-07-03 19:42  shizhong2.build_log.htm

     文件       4309  2015-07-02 16:34  shizhong2.c

     文件       5902  2015-06-25 22:33  shizhong2.hex

     文件         66  2015-06-25 22:33  shizhong2.lnp

     文件       9235  2015-06-25 22:33  shizhong2.LST

     文件      17397  2015-06-25 22:33  shizhong2.M51

----------- ---------  ---------- -----  ----

               246919                    14


评论

共有 条评论