⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scankey.h

📁 数字钟的单片机实现
💻 H
字号:
//*******************************
void delay6ms()//延时消抖函数6ms
{
    uchar i,j;
    for(i=100;i>0;i--)
        for(j=60;j>0;j--);
}
//********************************
void disp_adj(uchar i,uchar temp)
{
    uchar shi,ge;
    shi=temp/10;
    ge=temp%10;

    P2=wei[i*2];
    P0=tab1[shi];
    delay10ms(50);

    P2=wei[i*2+1];
    if((i*2+1)==1||(i*2+1)==3){P0=tab2[ge];}
    else {P0=tab1[ge];}
    delay10ms(50);
}
//********************************
void scankey()//键盘扫描函数
{
    if(key_1on==0&&beep==1)
    {
        if(key1==0)
        { 
            delay6ms();
            if(key1==0)       
            {
               delay6ms();
               while(!key1);
               delay6ms();
               TR0=0;adj_on=1;key_2on=1;
               step++;
               if(step==4)
               {adj=1;s_mod=0;TR0=1;};
               if(step==5)
               {    
                    step=0;TR0=1;adj_on=0;P1=0xfb;
                    key_2on=0;s_mod=1;adj=0;TR1=0;
                    swec=0;swws=0;
               }
            }           
        }
    }
    if(key_2on==0&&beep==1)
    {
        if(key4==0)
        { 
            delay6ms();
            if(key4==0)       
            {
               delay6ms();
               while(!key4);
               delay6ms();
               adj=1;P2=0x20;P1=0xfe;key_1on=1;
               if(ring_on==0){P0=0x71;}
               else {P0=0x3f;}
               stem++;
               if(stem==5)
               {stem=0;adj=0;adj_ring=1;key_1on=0;P1=0xfb;}
            }           
        }
    }
    if(key3==0&&beep==0)
    {
        delay6ms();
        if(key3==0)
       {
            delay6ms();
            while(!key3);
            delay6ms();
            ring_off=0;
       }
    }
    if(step==1)
    {
        P1=0xfd;
        if(key2==0)
        {
            delay6ms();
            if(key2==0)
            {
                delay6ms();
                while(!key2);
                delay6ms();
                sec++;
                if(sec==60){sec=0;}
            }
        }
        if(key3==0)
        {
            delay6ms();
            if(key3==0)
            {
                delay6ms();
                while(!key3);
                delay6ms();
                sec--;
                if(sec==-1){sec=59;}
            }
        }
        disp_adj(2,sec);
     }
     if(step==2)
    {
        if(key2==0)
        {
            delay6ms();
            if(key2==0)
            {
                delay6ms();
                while(!key2);
                delay6ms();
                min++;
                if(min==60){min=0;}
            }
        }
        if(key3==0)
        {
            delay6ms();
            if(key3==0)
            {
                delay6ms();
                while(!key3);
                delay6ms();
                min--;
                if(min==-1){min=59;}
            }
        }
        disp_adj(1,min);
     }
     if(step==3)
    {
        if(key2==0)
        {
            delay6ms();
            if(key2==0)
            {
                delay6ms();
                while(!key2);
                delay6ms();
                hour++;
                if(hour==24){hour=0;}
            }
        }
        if(key3==0)
        {
            delay6ms();
            if(key3==0)
            {
                delay6ms();
                while(!key3);
                delay6ms();
                hour--;
                if(hour==-1){hour=23;}
            }
        }
        disp_adj(0,hour);
     }
     if(step==4)
    {
        if(key2==0)
        {
            delay6ms();
            if(key2==0)
            {
                delay6ms();
                while(!key2);
                delay6ms();
                TR1=0;s_on=0;
            }
        }
        if(key3==0)
        {
            delay6ms();
            if(key3==0)
            {
                delay6ms();
                while(!key3);
                delay6ms();
                TR1=1;s_on=1;
            }
        }
        if(key4==0)
        {
            delay6ms();
            if(key4==0)
            {
                delay6ms();
                while(!key4);
                delay6ms();
                TR1=0;s_on=0;
                swec=0;swws=0;
            }
        }
     }
    if(stem==1)
    {
        if(key2==0)
        {
            delay6ms();
            if(key2==0)
            {
                delay6ms();
                while(!key2);
                delay6ms();
                ring_on=0;
                P0=0x71;
            }
        }
        if(key3==0)
        {
            delay6ms();
            if(key3==0)
            {
                delay6ms();
                while(!key3);
                delay6ms();
                ring_on=1;
                P0=0x3f;
            }
        }
     }
     if(stem==2)
    {
        adj_ring=0;
        if(key2==0)
        {
            delay6ms();
            if(key2==0)
            {
                delay6ms();
                while(!key2);
                delay6ms();
                rec++;
                if(rec==60){rec=0;}
            }
        }
        if(key3==0)
        {
            delay6ms();
            if(key3==0)
            {
                delay6ms();
                while(!key3);
                delay6ms();
                rec--;
                if(rec==-1){rec=59;}
            }
        }
        disp_adj(2,rec);
     }
     if(stem==3)
    {
        if(key2==0)
        {
            delay6ms();
            if(key2==0)
            {
                delay6ms();
                while(!key2);
                delay6ms();
                rin++;
                if(rin==60){rin=0;}
            }
        }
        if(key3==0)
        {
            delay6ms();
            if(key3==0)
            {
                delay6ms();
                while(!key3);
                delay6ms();
                rin--;
                if(rin==-1){rin=59;}
            }
        }
        disp_adj(1,rin);
     }
     if(stem==4)
    {
        if(key2==0)
        {
            delay6ms();
            if(key2==0)
            {
                delay6ms();
                while(!key2);
                delay6ms();
                rour++;
                if(rour==24){rour=0;}
            }
        }
        if(key3==0)
        {
            delay6ms();
            if(key3==0)
            {
                delay6ms();
                while(!key3);
                delay6ms();
                rour--;
                if(rour==-1){rour=23;}
            }
        }
        disp_adj(0,rour);
     }     
}
//********************************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -