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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

求助,當(dāng)我按下k1時(shí),hour加4,這是為什么?怎么樣將它修改為加一??

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:268578 發(fā)表于 2017-12-31 10:42 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include<reg51.h>    //  包含51單片機(jī)寄存器定義的頭文件  
unsigned char Tab[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};   
unsigned char port[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
unsigned char int_time ; //中斷次數(shù)計(jì)數(shù)變量
unsigned char second;    //秒計(jì)數(shù)變量
unsigned char minute;    //分鐘計(jì)數(shù)變量
unsigned char hour=12;     //小時(shí)計(jì)數(shù)變量
unsigned char funtion_flag=0;
sbit KEY1=P3^0;  
sbit KEY2=P3^1;
sbit KEY3=P3^2;
sbit KEY4=P3^3;      
void delay(void)      //延時(shí)函數(shù),延時(shí)約0.6ms  
{     unsigned char j;  
                for(j=0;j<180;j++);   
}  
/*延時(shí)程序*/  
void delay_ms(unsigned int z)   
{                unsigned int i,j;  
                for(i=0; i<z; i++)  
                for(j = 0; j < 110; j++);
}
/***********************************
函數(shù)功能:顯示秒的子程序 入口參數(shù):s  
************************************/  
void DisplaySecond(unsigned char s)
{     P2=port[6];        //P2.6引腳輸出低電平, DS6點(diǎn)亮     
                P0=Tab[s/10];          //顯示十位   
                delay();   delay();    delay();        
                P2=port[7];       //P2.7引腳輸出低電平, DS7點(diǎn)亮     
                P0=Tab[s%10];         //顯示個(gè)位  
                delay();   delay();    delay();     
                P2=0xff;     //關(guān)閉所有數(shù)碼管     
                P0=0xff;   
                delay();   delay();    delay();   
}   
/**************************************
函數(shù)功能:顯示分鐘的子程序 入口參數(shù):m  
***************************************/
void DisplayMinute(unsigned char m)
{       P2=port[3];   // P2.3引腳輸出低電平, DS3點(diǎn)亮      
                P0=Tab[m/10];//顯示個(gè)位      
                delay();        delay();    delay();      
                P2=port[4];   // P2.4引腳輸出低電平, DS4點(diǎn)亮     
                P0=Tab[m%10];   
                  delay();    delay();    delay();      
                  P2=port[5];   //P2.5引腳輸出低電平, DS5點(diǎn)亮     
                  P0=0x40;   //分隔符“-”的段碼     
                delay();    delay();    delay();      
                  P2=0xff;   //關(guān)閉所有數(shù)碼管   
                  P0=0xff;      
                  delay();    delay();    delay();      
}  
/**************************************
函數(shù)功能:顯示小時(shí)的子程序 入口參數(shù):h  
***************************************/
void DisplayHour(unsigned char h)
{       P2=port[0];        //P2.0引腳輸出低電平, DS0點(diǎn)亮   
            P0=Tab[h/10];          //顯示十位     
                delay();   delay();    delay();
                P2=port[1];       //P2.1引腳輸出低電平, DS1點(diǎn)亮     
                P0=Tab[h%10];    //顯示個(gè)位  
                delay();   delay();     delay();      
                P2=port[2];     //P2.2引腳輸出低電平, DS2點(diǎn)亮   
                P0=0x40;     //分隔符“-”的段碼   
                delay();   delay();    delay();        
                P2=0xff;     //關(guān)閉所有數(shù)碼管   
                P0=0xff;     
                delay();   delay();    delay();      
}   
void Key_Scanf(void)
{     
        if(KEY1==0)   
                {       delay_ms(10);      
                if(funtion_flag==0)        
                         {      funtion_flag=1;      
                                         while(KEY1==0);            
                          }   
            }      
        if(KEY1==0)     
                {                delay_ms(10);     
                                if(KEY1==0)        
                        {      if(funtion_flag==1)        
                         {      funtion_flag=2;      
                                         while(KEY1==0);              
                         }        
                         }            
                }        
         if(KEY1==0)   
          {        delay_ms(10);     
                  if(KEY1==0)      
                  {      
                        if(funtion_flag==2)        
                          {      funtion_flag=3;      
                                          while(KEY1==0);           
                           }      
                   }            
          }        
          if(KEY1==0)   
           {        delay_ms(10);     
                           if(KEY1==0)        
                           {   if(funtion_flag==3)      
                            {         
                                funtion_flag=0;
                              while(KEY1==0);            
                                  }      
                        }           
                }      
        if(funtion_flag==1)   //小時(shí)調(diào)整     
        {      if(KEY2==0)        
                        {  delay_ms(10);            
                           hour++;                                                                         
                         }      
                        if(KEY3==0)        
                         {  delay_ms(10);      
                           if(KEY3==0)      
                           {  hour--;         
                           }      
                         }            
        }
        if(funtion_flag==2)      //分鐘調(diào)整
        {     if(KEY2==0)        
                  {  delay_ms(10);      
                           if(KEY2==0)      
                           { minute++;               
                           }      
                  }      
                  if(KEY3==0)        
                  {  delay_ms(10);      
                           if(KEY3==0)      
                           { minute--;            
                           }      
                  }            
        }        
        if(funtion_flag==3)     //秒調(diào)整
        {     if(KEY2==0)        
                   {  delay_ms(10);      
                                if(KEY2==0)      
                                { second++;              
                                }     
                   }      
                  if(KEY3==0)        
                   {  delay_ms(10);      
                                 if(KEY3==0)      
                                 { second--;               
                                 }      
                   }            
        }  
}   
/*********  主函數(shù) ***************/   
void main(void)  
{      
                unsigned int i;   
                while(KEY4!=0);     
                TMOD=0x01;             //使用定時(shí)器T0      
                EA=1;                  //開中斷總允許   
                ET0=1;                 //允許T0中斷   
                TH0=(65536-46083)/256;  //定時(shí)器高八位賦初值   
                TL0=(65536-46083)%256;  //定時(shí)器低八位賦初值   
                TR0=1;        
                int_time=0;    //中斷計(jì)數(shù)變量初始化
                second=0;      //秒計(jì)數(shù)變量初始化   
                minute=0;     //分鐘計(jì)數(shù)變量初始化   
                hour=12;       //小時(shí)計(jì)數(shù)變量初始化         
while(1)     
{      while(funtion_flag==0)    //無按鍵按下時(shí)顯示        
                {    DisplaySecond(second);    //調(diào)用秒顯示子程序      
                         delay();        
                                DisplayMinute(minute);   //調(diào)用分鐘顯示子程序      
                                delay();         
                                        DisplayHour(hour);            
                                        delay();         
                                        Key_Scanf();        
                }         
                while(funtion_flag==1)   //小時(shí)閃爍      
                 {    DisplayHour(hour);       //調(diào)用時(shí)顯示子程序      
                           delay();         
                          for(i=0;i<3;i++)      
                          { DisplaySecond(second);    //調(diào)用秒顯示子程序      
                            delay();        
                                  DisplayMinute(minute);   //調(diào)用分鐘顯示子程序      
                                   delay();      
                    }        
                        Key_Scanf();        
                }         
           while(funtion_flag==2)    //分閃爍      
                 {    DisplayMinute(minute);   //調(diào)用分顯示子程序      
                           delay();      
                           for(i=0;i<3;i++)     
                    {  DisplaySecond(second);   //調(diào)用秒鐘顯示子程序
                   delay();      
                                 DisplayHour(hour);            
                                delay();        
                    }        
                                 Key_Scanf();        
                }         
                while(funtion_flag==3)     //秒閃爍      
                 {    DisplaySecond(second);    //調(diào)用秒顯示子程序      
                      delay();      
                   for(i=0;i<3;i++)      
                   {   DisplayMinute(minute);   //調(diào)用分鐘顯示子程序      
                              delay();        
                            DisplayHour(hour);            
                                   delay();        
                   }        
                                   Key_Scanf();           
                 }                              
                                   Key_Scanf();
}   
}        
/***** 函數(shù)功能:定時(shí)器T0的中斷服務(wù)子程序 *****/   
void interserve(void ) interrupt 1 using 1  //調(diào)用定時(shí)器0   
{     int_time++;   
        if(int_time==20)     
         {   int_time=0;    //中斷計(jì)數(shù)變量清0            
                 second++;      //秒計(jì)數(shù)變量加1      
         }
    if(second==60)      
         {   second=0;    //如果秒計(jì)滿60,將秒計(jì)數(shù)變量清0        
             minute++;    //分鐘計(jì)數(shù)變量加1      
         }      
        if(minute==60)         
         {   minute=0;    //如果分鐘計(jì)滿60,將分鐘計(jì)數(shù)變量清0         
             hour++;      //小時(shí)計(jì)數(shù)變量加1      
         }         
         if(hour==24)           
          {   hour=0;    //如果小時(shí)計(jì)滿24,將小時(shí)計(jì)數(shù)變量清0              
          }        
          TH0=(65536-46083)/256;   //定時(shí)器重新賦初值      
          TL0=(65536-46083)%256;                  
}


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

使用道具 舉報(bào)

沙發(fā)
ID:258566 發(fā)表于 2017-12-31 12:28 | 只看該作者
按鍵程序沒寫好。
以下是你的代碼,未修改,看看小時(shí)調(diào)整和分鐘調(diào)整有什么區(qū)別。
  1. if(funtion_flag==1)   //小時(shí)調(diào)整     
  2.         {      if(KEY2==0)        
  3.                         {  delay_ms(10);            
  4.                            hour++;                                                                        
  5.                          }      
  6.                         if(KEY3==0)        
  7.                          {  delay_ms(10);      
  8.                            if(KEY3==0)      
  9.                            {  hour--;         
  10.                            }      
  11.                          }            
  12.         }
  13.         if(funtion_flag==2)      //分鐘調(diào)整
  14.         {     if(KEY2==0)        
  15.                   {  delay_ms(10);      
  16.                            if(KEY2==0)      
  17.                            { minute++;               
  18.                            }      
  19.                   }      
  20.                   if(KEY3==0)        
  21.                   {  delay_ms(10);      
  22.                            if(KEY3==0)      
  23.                            { minute--;            
  24.                            }      
  25.                   }            
  26.         }        
復(fù)制代碼
就是沒消抖。

評(píng)分

參與人數(shù) 1黑幣 +90 收起 理由
admin + 90 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:268578 發(fā)表于 2017-12-31 14:14 | 只看該作者
cccc888 發(fā)表于 2017-12-31 12:28
按鍵程序沒寫好。
以下是你的代碼,未修改,看看小時(shí)調(diào)整和分鐘調(diào)整有什么區(qū)別。就是沒消抖。

我不知道怎么消除這個(gè)
回復(fù)

使用道具 舉報(bào)

地板
ID:213173 發(fā)表于 2017-12-31 17:16 | 只看該作者
11225 發(fā)表于 2017-12-31 14:14
我不知道怎么消除這個(gè)

你把按鍵掃描程序改這樣試試
void Key_Scanf(void)
{     
        if(!KEY1)   
        {      
                delay_ms(10);      
                if(!KEY1)      
                {      
                        funtion_flag++;      
                        if(funtion_flag>=4)
                                funtion_flag=0;
                        while(!KEY1);            
                }   
        }      
        if(!KEY2)   //+
        {        
                delay_ms(10);            
                if(!KEY2)
                {
                        if(funtion_flag==1)
                        {
                                hour++;                                                                        
                                if(hour>=24)
                                        hour=0;
                        }
                        if(funtion_flag==2)
                        {
                                minute++;
                                if(minute>=60)
                                        minute=0;
                        }
                        if(funtion_flag==3)
                        {
                                second++;
                                if(second>=60)
                                        second=0;
                        }
                        while(!KEY2);
                }      
        }
        if(!KEY3)      //-
        {     
                delay_ms(10);        
                if(!KEY3)  
                {             
                        if(funtion_flag==1)
                        {
                                hour--;                                                                        
                                if(hour>=24)
                                        hour=23;
                        }
                        if(funtion_flag==2)
                        {
                                minute--;
                                if(minute>=60)
                                        minute=59;
                        }
                        if(funtion_flag==3)
                        {
                                second--;
                                if(second>=60)
                                        second=59;
                        }
                        while(!KEY3);
                }      
        }  
}
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中国一级大黄大片 | 国产精品无码久久久久 | 综合自拍| 免费成人av网站 | 亚洲欧美在线观看视频 | 久久久久综合 | 国产精品明星裸体写真集 | 亚洲一区导航 | 国产午夜精品一区二区三区嫩草 | 日本在线看片 | 亚洲欧美日韩电影 | 亚洲一区二区三区在线播放 | 一区二区不卡高清 | 韩国av电影网 | 伊人免费观看视频 | 99精品视频免费观看 | 免费精品 | 三级视频在线观看 | 色综合久久天天综合网 | 国产在线区 | 欧美日韩视频在线播放 | 成人欧美一区二区三区色青冈 | 国产精品成人一区二区三区吃奶 | 国产一区二区中文字幕 | 国产欧美精品一区二区色综合朱莉 | 中文字幕亚洲视频 | 亚洲综合五月天婷婷 | 久久精品亚洲精品国产欧美 | 999久久久久久久久6666 | 亚洲天堂av网 | 日韩欧美精品一区 | 日韩免费毛片视频 | 久久久久久综合 | 亚洲日韩视频 | 精产国产伦理一二三区 | 亚洲精品影院 | 日韩欧美在线观看一区 | 久久成人国产精品 | 国产中的精品av涩差av | 日韩不卡在线 | 久国久产久精永久网页 |