久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1377|回復: 0
收起左側

51單片機用按鍵和定時器做簡易時鐘程序 不能顯示啊 求幫助

[復制鏈接]
ID:671108 發表于 2019-12-23 11:28 | 顯示全部樓層 |閱讀模式
這個程序數碼管為啥不能顯示啊  有沒有大神救救我


#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
//#define key_S 300                                       
//#define key_L 6000                                       
//#define key_M 3000                                       
#define key_S 100                                       
#define key_L 2000                                       
#define key_M 1000                                       
sbit K1 = P3^2;                                               
sbit K2 = P3^3;                                                
sbit K3 = P3^4;                                                
sbit K4 = P3^5;                                               
sbit wela1=P1^0;                                       
sbit wela2=P1^1;                                       
sbit wela3=P1^2;                                       
sbit wela4=P1^3;                                       
sbit Buzzer=P3^7;                                       
uchar code table[]={
                0xc0,0xf9,0xa4,0xb0,
                0x99,0x92,0x82,0xf8,
                0x80,0x90,0x88,0x83,
                0xc6,0xa1,0x86,0x8e,0xbf,0x7f};
uint Cnt200us;                                               
uchar hour=12,min=0,sec=0;                       
uchar hour4=0,min4=0;                                
uchar  Choice=0,Choice4=0;                        
bit Buzzer_sign;                                 
bit Twinkle,second=1;                             

void Timer_Init(void)
{
        TMOD= 0x02;                        
        TL0 = 0x38;                        
        TH0 = 0x38;                        
        TR0 = 1;                        
        EA=1;                              
        ET0=1;                                
}


void Timer_Init()
{
        TMOD = 0x02;               
        TL0 = 0x48;                       
        TH0 = 0x48;                        
        TR0 = 1;                        
        EA=1;                                
        ET0=1;                                
}

void key_scan()
{
        static bit key1_sign,key4_sign;      
        static uint count1,count2,count3=0,count4=0;              

        if(!K1)                                                      
        {
                count1++;                                       
                if((count1>=key_S)&&(key1_sign==0))
                {                       
                        key1_sign=1;                       
                        Choice++;                                
                        if(Choice>=3)                        
                        {
                                Choice=0;                        
                                Cnt200us=0;                       
                                sec=0;
                        }
                }
        }
        else
        {
                key1_sign=0;                                
                count1=0;                                       
        }
                              
        if(!K2)   
        {  
                count2++;  
                if(count2>=key_L)                        
                {
                        if(Choice==1)                       
                        {
                                hour++;
                                if(hour>=24)
                                        hour=0;
                        }
                        if(Choice==2)                       
                        {
                                min++;
                                if(min>=60)
                                        min=0;
                        }
                        if(Choice4==1)                        
                        {
                                hour4++;
                                if(hour4>=24)
                                        hour4=0;
                        }
                        if(Choice4==2)                       
                        {
                                min4++;
                                if(min4>=60)
                                        min4=0;
                        }
                        count2=key_M;
                }
        }  
        else                                                        
        {  
                if(count2>key_S && count2<key_L)//??
                {
                        if(Choice==1)                        
                        {
                                hour++;
                                if(hour>=24)
                                        hour=0;
                        }
                        if(Choice==2)                        
                        {
                                min++;
                                if(min>=60)
                                        min=0;
                        }
                        if(Choice4==1)                        
                        {
                                hour4++;
                                if(hour4>=24)
                                        hour4=0;
                        }
                        if(Choice4==2)                        
                        {
                                min4++;
                                if(min4>=60)
                                        min4=0;
                        }
                }
                count2=0;                                       
        }   
        if(!K3)   
        {  
                count3++;  
                if(count3>=key_L)                        
                {
                        if(Choice==1)                        
                        {
                                hour--;
                                if(hour>=24)
                                        hour=23;
                        }
                        if(Choice==2)                        
                        {
                                min--;
                                if(min>=60)
                                        min=59;
                        }
                        if(Choice4==1)                        
                        {
                                hour4--;
                                if(hour4>=24)
                                        hour4=23;
                        }
                        if(Choice4==2)                        
                        {
                                min4--;
                                if(min4>=60)
                                        min4=59;
                        }
                        count3=key_M;
                }
        }  
        else                                                        
        {  
                if(count3>key_S && count3<key_L)//??
                {
                        if(Choice==1)                        
                        {
                                hour--;
                                if(hour>=24)
                                        hour=23;
                        }
                        if(Choice==2)                        
                        {
                                min--;
                                if(min>=60)
                                        min=59;
                        }
                        if(Choice4==1)                       
                        {
                                hour4--;
                                if(hour4>=24)
                                        hour4=23;
                        }
                        if(Choice4==2)                        
                        {
                                min4--;
                                if(min4>=60)
                                        min4=59;
                        }
                }
                count3=0;                                       
        }   
        if(!K4)                                                        
        {
                count4++;                                       
                if((count4>=key_S)&&(key4_sign==0))
                {                       
                        key4_sign=1;                        
                        Choice4++;                                
                        if(Choice4>=4)                        
                        {
                                Choice4=0;                       
                        }
                }
        }
        else
        {
                key4_sign=0;                                
                count4=0;                                       
        }
}

void display()
{
        static uchar num=0;                                
        if((Choice4>0)&&(Choice4<3))      
        {
                P0=0xff;        //??
                switch(num)
                {
                        case 0:
                              P2=0x01;                       
                                P2=0xfe;                       
                                P0=table[hour4/10];        
                                num++;
                         break;      
      
                        case 1:
                              P2=0x02;                       
                                P2=0xfd;                        
                                if((Twinkle==1)&&(Choice4==1))
                                        P0=table[hour4%10];
                                else
                                        P0=table[hour4%10]&0x7f;
                                num++;
                         break;      
      
                        case 2:
                            P2=0x04;                        
                                P2=0xfb;                        
                                P0=table[min4/10];        
                                num++;
                         break;      
      
                        case 3:
                              P2=0x08;                        
                                P2=0xf7;                        
                                if((Twinkle==1)&&(Choice4==2))
                                        P0=table[min4%10];
                                else
                                        P0=table[min4%10]&0x7f;
                                num=0;
                         break;      
                }
        }
        else      
        {
                P0=0xff;        
                switch(num)
                {
                        case 0:
                               P2=0x01;                        
                                P2=0xfe;                        
                                P0=table[hour/10];      
                                num++;
                         break;      
      
                        case 1:
                               P2=0x02;                        
                                P2=0xfd;                        
                                if((Twinkle==1)&&(Choice==1))
                                        P0=table[hour%10];
                                else
                                        P0=table[hour%10]&0x7f;
                                num++;
                         break;      
      
                        case 2:
                               P2=0x04;                     
                                P2=0xfb;                       
                                P0=table[min/10];      
                                num++;
                         break;      
      
                        case 3:
                                P2=0x08;                        
                                P2=0xf7;                        
                                if(Choice4==3)
                                        P0=table[min%10]&0x7f;
                                else if((Twinkle==1)&&(Choice==2))
                                        P0=table[min%10]&0x7f;
                                else if(Choice==1)      
                                        P0=table[min%10]&0x7f;
                                else
                                        P0=table[min%10];
                                num=0;
                         break;      
                }
        }
}

void Buzzer_nz()
{
        if((Choice4==3)&&(hour4==hour)&&(min4==min)&&(sec<30))
                Buzzer_sign=1;
        else Buzzer_sign=0;

        if((second==1)&&(Buzzer_sign==1))//????1s      
                Buzzer=0;                                       
        else Buzzer=1;
}

void main(void)
{
        Timer_Init();                                    
        while(1)
        {
                key_scan();                                       
                display();                                       
                Buzzer_nz();                                
        }
}

void timer0() interrupt        1
{
        Cnt200us++;                                                
        if((Cnt200us>1250 && Cnt200us<2500)||(Cnt200us>3750 && Cnt200us<5000))               
                Twinkle=1;                                      
        else Twinkle=0;
        if(Cnt200us>=5000)                           
        {
                Cnt200us=0;                                   
                second=~second;                             
                if(Choice==0)                             
                {
                        sec++;                                    
                        if(sec>=60)                                
                        {
                                sec=0;                                
                                min++;                              
                                if(min>=60)                       
                                {
                                        min=0;                     
                                        hour++;                  
                                        if(hour>=24)        
                                                hour=0;               
                                }
                        }
                }
        }
}


原理圖

原理圖
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一级片av | 久久久久久国产 | 国产精品区二区三区日本 | 射久久| 久久久久久久久久久久久9999 | 久久久久亚洲精品中文字幕 | 国产精品久久久久久久久久久免费看 | 日本成人午夜影院 | 国产精品久久久久久av公交车 | 亚洲午夜精品一区二区三区他趣 | 国产亚洲精品美女久久久久久久久久 | 日韩在线看片 | 电影在线| 99免费| 伊人99| 三级av在线 | 久久与欧美 | 亚洲精品 在线播放 | 91精品国产乱码久久久久久久久 | 不卡在线视频 | 国产欧美综合在线 | 亚洲成av人片在线观看 | 欧美激情视频一区二区三区在线播放 | 欧美一区二区在线播放 | 国产一级片免费在线观看 | 国产视频导航 | 久久人体视频 | 青草青草久热精品视频在线观看 | 日韩精品一二三 | 色婷婷激情 | 免费在线观看av网站 | 日日夜夜免费精品视频 | 日韩国产在线观看 | 可以免费观看的av | 91n成人| 99精品视频一区二区三区 | 国产激情免费视频 | 国产高清在线 | 日本超碰 | 九九成人| 国产婷婷色综合av蜜臀av |