找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1729|回复: 0
收起左侧

基于开发板的可调时间的闹钟程序

[复制链接]
ID:128093 发表于 2016-6-25 16:32 | 显示全部楼层 |阅读模式
  #include<reg52.h>
  #define uint unsigned int
  sbit wei=P2^7;
  sbit duan=P2^6;
  sbit s2=P3^0;
  sbit s3=P3^1;
  sbit s4=P3^2;
  sbit s5=P3^3;
  sbit beep=P2^3;
  uint i,count,shi1,shi2,fen1,fen2,miao1,miao2,nao_shi1,nao_shi2=1,nao_fen1,nao_fen2,nao_miao1,nao_miao2;
  unsigned char code leddata[]={

                0x3F,  //"0"
                0x06,  //"1"
                0x5B,  //"2"
                0x4F,  //"3"
                0x66,  //"4"
                0x6D,  //"5"
                0x7D,  //"6"
                0x07,  //"7"
                0x7F,  //"8"
                0x6F,  //"9"
                                0x40,  //"-"
                                };
void delay(uint y)
{       
        uint i,j;
        for(i=y;i>0;i--)       
                for(j=120;j>0;j--);

}
void time()                                 //时间
{
        duan=1;
        P0=leddata[shi1];
        duan=0;
    wei=1;
        P0=0xfe;
        wei=0;
        delay(1);

        duan=1;
        P0=leddata[shi2];
        duan=0;
    wei=1;
        P0=0xfd;
        wei=0;
        delay(1);

        duan=1;
        P0=leddata[10];
        duan=0;
    wei=1;
        P0=0xfb;
        wei=0;
        delay(1);

        duan=1;
        P0=leddata[fen1];
        duan=0;
    wei=1;
        P0=0xf7;
        wei=0;
        delay(1);

        duan=1;
        P0=leddata[fen2];
        duan=0;
    wei=1;
        P0=0xef;
        wei=0;
        delay(1);

        duan=1;
        P0=leddata[10];
        duan=0;
    wei=1;
        P0=0xdf;
        wei=0;
        delay(1);

        duan=1;
        P0=leddata[miao1];
        duan=0;
    wei=1;
        P0=0xbf;
        wei=0;
        delay(1);

        duan=1;
        P0=leddata[miao2];
        duan=0;
    wei=1;
        P0=0x7f;
        wei=0;
        delay(1);
}
void nao_time()                        //闹钟时间
{
        duan=1;
        P0=leddata[nao_shi1];
        duan=0;
    wei=1;
        P0=0xfe;
        wei=0;
        delay(1);

        duan=1;
        P0=leddata[nao_shi2];
        duan=0;
    wei=1;
        P0=0xfd;
        wei=0;
        delay(1);

        duan=1;
        P0=leddata[10];
        duan=0;
    wei=1;
        P0=0xfb;
        wei=0;
        delay(1);

        duan=1;
        P0=leddata[nao_fen1];
        duan=0;
    wei=1;
        P0=0xf7;
        wei=0;
        delay(1);

        duan=1;
        P0=leddata[nao_fen2];
        duan=0;
    wei=1;
        P0=0xef;
        wei=0;
        delay(1);

        duan=1;
        P0=leddata[10];
        duan=0;
    wei=1;
        P0=0xdf;
        wei=0;
        delay(1);

        duan=1;
        P0=leddata[nao_miao1];
        duan=0;
    wei=1;
        P0=0xbf;
        wei=0;
        delay(1);

        duan=1;
        P0=leddata[nao_miao2];
        duan=0;
    wei=1;
        P0=0x7f;
        wei=0;
        delay(1);
}
void nao_ding()         //按键控制闹钟时间
{        while(!s2)
        { TR0=1;
         nao_time();
        if(s3==0)
        {
                delay(5);
                if(s3==0)
                {nao_shi2++;while(!s3);}
        }
        if(s4==0)
        {
                delay(5);
                if(s4==0)
                {nao_fen2++;while(!s4);}
        }
        if(s5==0)
        {
                delay(5);
                if(s5==0)
                {nao_miao2++;while(!s5);}
        }
          

        if(nao_miao2==10)
        {nao_miao2=0;nao_miao1++;}
        if(nao_miao1==6)
        {nao_miao1=0;nao_fen2++;}
    if(nao_fen2==10)
        {nao_fen2=0;nao_fen1++;}
        if(nao_fen1==6)
        {nao_fen1=0;nao_shi2++;}
    if(nao_shi2==10)
        {nao_shi2=0;nao_shi1++;}
        if(nao_shi1==2&&nao_shi2==4)
        {nao_shi1=0;nao_shi2=0;}
                }        }
void jian_kong()      // 按键控制
{
        if(s2==0)
         {       
                delay(5);               
                 if(s2==0)
                {TR0=~TR0;delay(300);nao_ding();}
         }
        if(s3==0)
        {
                delay(5);
                if(s3==0)
                {shi2++;while(!s3);}
        }
        if(s4==0)
        {
                delay(5);
                if(s4==0)
                {fen2++;while(!s4);}
        }
        if(s5==0)
        {
                delay(5);
                if(s5==0)
                {miao2++;while(!s5);}
        }
        if(miao2==10)
        {miao2=0;miao1++;}
        if(miao1==6)
        {miao1=0;fen2++;}
    if(fen2==10)
        {fen2=0;fen1++;}
        if(fen1==6)
        {fen1=0;shi2++;}
    if(shi2==10)
        {shi2=0;shi1++;}
        if(shi1==2&&shi2==4)
        {shi1=0;shi2=0;}
}

void nao()
{       
        if(nao_shi1==shi1&&nao_shi2==shi2&&nao_fen1==fen1&&nao_fen2==fen2&&nao_miao1==miao1&&nao_miao2==miao2)
        {for(i=8;i>0;i--)
         {beep=~beep;delay(500);}
         }
}

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

}
void main()
{
        ding();
        while(1)
        {time();
        jian_kong();
        nao();

        }
       

}

void time0()interrupt 1
{
        TH0=(65536-43080)/256;
        TL0=(65536-43080)%256;
        count++;
        if(count==20)
        {count=0;miao2++;}
        if(miao2==10)
        {miao2=0;miao1++;}
        if(miao1==6)
        {miao1=0;fen2++;}
    if(fen2==10)
        {fen2=0;fen1++;}
        if(fen1==6)
        {fen1=0;shi2++;}
    if(shi2==10)
        {shi2=0;shi1++;}
        if(shi1==2&&shi2==4)
        {shi1=0;shi2=0;}


       

}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表