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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1594|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

數(shù)碼時(shí)鐘調(diào)節(jié)時(shí)分秒的時(shí)候怎么讓調(diào)節(jié)位閃爍?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
本帖最后由 啊giao 于 2019-7-4 10:29 編輯

#include<reg51.h>
sbit key_1=P1^0        ;  //秒、分、時(shí)間的切換鍵
sbit key_2=P1^1        ;  //加1
sbit key_3=P1^2        ;  //減1
sbit key_4=P1^3        ;  //ok
sbit speaker_= P3^1;
unsigned char code table1[ ]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};  //筆段碼
unsigned char code table2[ ]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};                  //位選碼
unsigned char count1=0 ;
/****************************************************/
        
unsigned char hour = 12, min = 0,sec = 0;         //時(shí)鐘賦初值

/******************T0__50mS中斷程序*******************/

void  T0_1s(void) interrupt 1                  // 50mS中斷程序
{
    static unsigned char count = 0;
    TR0 = 0;
    TH0 = (65536 - 50000 ) / 256;         //設(shè)置T0初始值為:15536
         TL0 = (65536 - 50000 ) % 256;         //記數(shù)為50000次//50000*1us=50ms*20=1s
    TR0 = 1;
        count++;
        
        if(count == 20)                   //中斷服務(wù)程序
                {                                        //定時(shí)1s時(shí)間到(需要中斷20次)
                          count = 0;
                        sec++;
                          if(sec==60)          //1分鐘時(shí)間到
                              {
                            sec=0;
                                   min++;
                                   if(min==60)                 //1小時(shí)時(shí)間到
                                   {
                                     min=0;
                                    hour++;   
                                    if(hour==24)        //24小時(shí)時(shí)間到
                                      {
                                       sec =0;
                                        min =0;
                                        hour=0;
                                     }
                                   }
                            }
                }
}

/**************************************************************/

void delay_5ms()   //動(dòng)態(tài)掃描顯示--軟件延時(shí)
{
        unsigned char i,j;
        for(i=0;i<20;i++)
                 for(j=0;j<50;j++)             //50
                ;

}
  void delay_500ms()   //500ms延時(shí)
{
  unsigned char a,b;
  for(a=500;a>0;a--)
     for(b=110;b>0;b--)            //500
           ;
  }
/*****************************************************************/
void disp_led()
{
/****************顯示時(shí)鐘 ******************************/
                           P0=table1[hour/10];                //顯示小時(shí)十位數(shù)
                        P2=table2[0];                          
                        delay_5ms();        
                        P0=0xff;     //共陽空字形
                        

                        P0=table1[hour%10];                   //顯示小時(shí)個(gè)位數(shù)
                         P2=table2[1];                           
                        delay_5ms();         
                        P0=0xff;
                        
                         P0=0xbf;                                  //顯示分隔符'-'   
                         P2=table2[2];                           
                        delay_5ms();         
                        P0=0xff;
                 

                           P0=table1[min/10];                  //顯示分鐘十位數(shù)  
                        P2=table2[3];                           
                        delay_5ms();         
                        P0=0xff;
                          
                        P0=table1[min%10];                  //顯示分鐘個(gè)位數(shù)      
                         P2=table2[4];                           
                        delay_5ms();         
                        P0=0xff;
                                                                          
                          P0=0xbf;                               //顯示分隔符'-'
                         P2=table2[5];                           
                        delay_5ms();         
                        P0=0xff;
                        

                        P0=table1[sec/10];                   //顯示秒十位數(shù)   
                        P2=table2[6];                        
                        delay_5ms();            
                        P0=0xff;
                          
                        P0=table1[sec%10];                  //顯示秒個(gè)位數(shù)      
                        P2=table2[7];                        
                        delay_5ms();         
                        P0=0xff;
}
/*******************鬧鐘程序****************************/
void clock()
{        unsigned int i;
        if(hour==12 && min==0 && sec==30)           
        {        speaker_=0;
                for(i=0;i<500;i++)                        //15秒蜂鳴器
                        {
                                disp_led();
                        }
                speaker_=1;
        }
}
/*********************蜂鳴器按鍵聲*****************************/
void speak()
{        unsigned char m;
        speaker_=0;
        for(m=0;m<3;m++)               
                {
                        disp_led();
                }
        speaker_=1;
}
/********************按鍵掃描程序***************************/
void delay_10ms()                   //鍵盤去抖動(dòng)--軟件延時(shí)                       
{
        unsigned char i,j;
        for(i=0;i<20;i++)
                 for(j=0;j<40;j++)  
                ;
}  
/*******************調(diào)時(shí)鐘按鍵掃描*******************************/
void key_scan()                                           //鍵盤掃描子程序
{
if(key_1==0)                                //檢測是否有鍵按下
        {           
                 delay_10ms();               //去抖動(dòng)延時(shí)
                 if(key_1==0)                //再次確認(rèn)否有鍵按下
                 {        {        speak();
                                 count1++;                //切換次數(shù)
                                TR0=0;                        //關(guān)計(jì)時(shí)
                        //        ET0=0;
                        }
                        if(count1==4)
                        {        count1=0;                 //到4次后重新記
                                TR0=1;                         //開計(jì)時(shí)
                                ET0=1;
                        }
                 }        
                while(key_1==0)                 disp_led(); //等待按鍵釋放,并且調(diào)用顯示程序                                
        }  
        if(count1==1)
        {        if(key_2==0)                //調(diào)整秒鐘加//檢測是否有鍵按下
                  {  
                                  delay_10ms();        //去抖動(dòng)延時(shí)
                                   if(key_2==0)                     //再次確認(rèn)否有鍵按下
                                {        speak();                  //按鍵聲
                                        sec++;
                                        if(sec==60)        sec=0;
                                }
                                while(key_2==0) disp_led();  //等待按鍵釋放,并且調(diào)用顯示程序                                
                   }
                   if(key_3==0)                        //調(diào)整秒鐘減//檢測是否有鍵按下
                  {            
                                   delay_10ms();               //去抖動(dòng)延時(shí)
                                    if(key_3==0)                    //再次確認(rèn)否有鍵按下
                                 {        speak();
                                         sec--;
                                        if(sec==-1) sec=59;
                                       
                                 }        
                                 while(key_3==0) disp_led(); //等待按鍵釋放,并且調(diào)用顯示程序
                   }
                   if(key_4==0)// ok鍵//
                                {
                                         delay_10ms();
                                  if(key_4==0)
                                     {count1= 0;TR0=1;}
                                }
                          

        }
        if(count1==2)
        {
                if(key_2==0)                         //調(diào)整分鐘加//檢測是否有鍵按下
                  {           
                                  delay_10ms();            //去抖動(dòng)延時(shí)
                                   if(key_2==0)                        //再次確認(rèn)否有鍵按下
                                {        speak();
                                        min++;
                                        if(min==60)         min=0;
                                       
                                }        
                                while(key_2==0) disp_led();  //等待按鍵釋放,并且調(diào)用顯示程序                                
                   }
                   if(key_3==0)                         //調(diào)整分鐘減//檢測是否有鍵按下
                  {           
                                  delay_10ms();            //去抖動(dòng)延時(shí)
                                   if(key_3==0)                        //再次確認(rèn)否有鍵按下
                                {        speak();
                                        min--;
                                        if(min==-1)        min=59;
                                       
                                }        
                                while(key_3==0) disp_led();  //等待按鍵釋放,并且調(diào)用顯示程序                                
                  }
                 if(key_4==0)//調(diào)時(shí)結(jié)束鍵//
                                {
                                        delay_10ms();
                                  if(key_4==0)
                                   {
                                     count1 = 0; TR0=1; }
                                }
                          

        }
        if(count1==3)
        {         if(key_2==0)                         //調(diào)整小時(shí)加//檢測是否有鍵按下
                  {            
                                  delay_10ms();            //去抖動(dòng)延時(shí)
                                   if(key_2==0)                        //再次確認(rèn)否有鍵按下
                                {        speak();
                                        hour++;
                                        if(hour==24)
                                                {        hour=0;
                                                        min=0;
                                                        sec=0;
                                                }
                                }        
                                while(key_2==0) disp_led();  //等待按鍵釋放,并且調(diào)用顯示程序                                
                   }
                   if(key_3==0)                         //調(diào)整小時(shí)減//檢測是否有鍵按下
                   {           
                                  delay_10ms();            //去抖動(dòng)延時(shí)
                                   if(key_3==0)                        //再次確認(rèn)否有鍵按下
                                {        speak();
                                        hour--;
                                        if(hour==-1)        hour=23;
                                
                                }        
                                while(key_3==0) disp_led();  //等待按鍵釋放,并且調(diào)用顯示程序                                
                    }
                 if(key_4==0)//調(diào)時(shí)結(jié)束鍵//
                                {
                                        delay_10ms();
                                  if(key_4==0)
                                   {
                                     count1 = 0; TR0=1; }
                                }
                          
        }
}
/*********************主函數(shù)***********************/
void main()
{
        TMOD = 0x01;
    TH0 = (65536 - 50000 ) / 256;         //設(shè)置T0初始值
         TL0 = (65536 - 50000 ) % 256;

        ET0 = 1;           //開中斷
        EA  = 1;            //開CPU
        TR0 = 1;           //開定時(shí)

        while(1)
        {
                disp_led();                 //時(shí)鐘顯示
                key_scan();                 //時(shí)鐘掃描
        //        clock();             //鬧鐘
        }
}

1.png (93.04 KB, 下載次數(shù): 33)

1.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:577669 發(fā)表于 2019-7-4 10:29 | 只看該作者
大佬們可以告訴我怎么能讓調(diào)節(jié)位閃爍啊!!!!!!!!
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区二区三区四区五区无卡码 | 午夜免费电影院 | 欧美日韩毛片 | 亚洲国产精品91 | 欧美亚洲视频在线观看 | 美女在线视频一区二区三区 | 综合色站导航 | 国产精品永久 | 国产成人一区二区三区 | 亚洲精品久久久久国产 | 一区二区高清在线观看 | 羞羞视频网站免费看 | 亚洲激情自拍偷拍 | 殴美成人在线视频 | 国产一区二区在线免费视频 | 亚洲 中文 欧美 日韩 在线观看 | 国产一区日韩在线 | 亚洲欧美视频 | 精品久久久久久久久久 | 欧美亚洲国产成人 | 精品国产乱码久久久久久1区2区 | 亚洲精品成人网 | 99久久精品国产麻豆演员表 | 四虎影音 | 91精品国产一区二区三区香蕉 | 福利视频网 | 成人视屏在线观看 | 日韩激情网 | 国产一区二区三区网站 | 在线免费看91 | 黄色在线观看国产 | 影音先锋久久 | 国产目拍亚洲精品99久久精品 | 精品一区二区免费视频 | 在线电影日韩 | 日韩成人在线网站 | 国产一区二区三区欧美 | 国产成人jvid在线播放 | 成人高清在线 | av天天操 | 黄网站免费观看 |