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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2679|回復: 4
打印 上一主題 下一主題
收起左側

求助 時鐘按鍵問題

[復制鏈接]
跳轉到指定樓層
樓主
//s1加鍵,s2減鍵,s3設置鍵,knum是設置鍵按下的次數
//現在加,減調節都正常;
//現在想在按下設置鍵,對時后過幾秒鐘使時鐘自行啟動走;
//后面寫了一段程序,按下設置鍵不做任何操作過10秒啟動時鐘走時,
//現在問題是按下設置鍵,按加、減鍵調時,如果從1加到59,時間沒對好就啟動時鐘走時了,怎么做才能使時間對好后過幾秒自動啟動走時呢?
void keyscan()                                                                   //按鍵掃描函數
{                                                                                   
        if(s3==0)                                                                   //選擇按鍵按下
        {
                delay(10);                                                        //延時
                if(s3==0)
                {
                        while(!s3)                //松手檢測,這句后面不能加分號,不然按鍵按下所以數碼管會滅,松手后才亮
                                display(shi,fen,miao);        //加上這句,按鍵按下對應的位置就會閃
                        knum++;
                        if(knum==1)                                                  //分閃爍
                        {
                                 write_1302(0x8e,0x00);                //寫保護取消
                                 write_1302(write_miao,0x80); //  寫秒80,時鐘停止走時;
                        
                        }
                        
                        
                        if(knum==3)                                                   //時鐘啟動
                        {
                                knum=0;
                                write_1302(write_miao,0x00);
                                write_1302(0x8e,0x80);                //保護啟動
                        }


                }
        }




        if(knum==1)                                                                //分鐘調節
        {
                if(s1==0)                                                        //加
                {
                        delay(10);
                        if(s1==0)
                        {        
                                while(!s1)
                                        display(shi,fen,miao);        //加上這句,按鍵按下就會閃
                                fen++;
                                fen=fen/10*16+fen%10;                //轉為16進制
                                if(fen==0x60)
                                        fen=0x00;
                                write_1302(write_fen,fen);        //寫入1302
                                read_sf();                                        //讀出時間,然后顯示
                                
                                
                        
                        }
                  
                }
               
                if(s2==0)
                {
                        delay(10);
                        if(s2==0)
                        {        
                                while(!s2)
                                        display(shi,fen,miao);        //加上這句,按鍵按下就會閃
                                fen--;
                                fen=fen/10*16+fen%10;                //轉為16進制
                                if(fen==-1)
                                        fen=0x59;
                                write_1302(write_fen,fen);
                                read_sf();
                        }
                }

                        
        }
        
        
        if(knum==2)
        {
                if(s1==0)
                {
                        delay(10);
                        if(s1==0)
                        {        
                                while(!s1)
                                        display(shi,fen,miao);        //加上這句,按鍵按下就會閃
                                shi++;
                                shi=shi/10*16+shi%10;                //轉為16進制
                                if(shi==0x24)
                                        shi=0x00;
                                write_1302(write_shi,shi);
                                read_sf();
                        }
                }
                if(s2==0)
                {
                        delay(10);
                        if(s2==0)
                        {        
                                while(!s2)
                                          display(shi,fen,miao);        //加上這句,按鍵按下就會閃
                                shi--;
                                shi=shi/10*16+shi%10;                //轉為16進制
                                if(shi==-1)
                                        shi=0x23;
                                write_1302(write_shi,shi);
                                read_sf();


                        }
                }
        }
        

        if(knum!=0 )        //在設置狀態下,x秒鐘不做任何操作,則自動退出設置狀態,時鐘啟動,走時。

        {
           
          if( (s1!=0)&&(s2!=0) )
          {
                TR1=1;                          //啟動定時器
                if(zs==10)                  
                  {
                        zs=0;
                        knum=0;                                           //設置按鍵次數清零
                        TR1=0;                                           //關閉定時器
                        write_1302(write_miao,0x00); //寫秒0,時鐘啟動,走時。
                        write_1302(0x8e,0x80);                //保護啟動
                  }
                }
        }        
}

void temer2() interrupt 3      //50毫秒中斷
{
  TH1=(65536-46080)/256;
  TL1=(65536-46080)%256;
  ss1++;
  if(ss1==20)       //到1秒
  {        
          ss1=0;
          zs++;
  }

}

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

使用道具 舉報

沙發
ID:111634 發表于 2017-4-8 15:40 | 只看該作者
本帖最后由 zl2168 于 2017-4-8 17:24 編輯

先給你2個案例看看,其中有你需要的東東。
先Proteus仿真,確認有效。
實例91 具有校正功能的時鐘1302LCD1602顯示)


實例91 帶校正時鐘1302(LCD1602顯示).rar (52.74 KB, 下載次數: 7)

實例93 具有校正功能的時鐘1302(LED數碼管顯示)
實例93 帶校正時分秒的時鐘1302(6位LED數碼管顯示).rar (732.75 KB, 下載次數: 5)

以上摘自張志良編著《80C51單片機仿真設計實例教程——基于Keil C和Proteus》清華大學出版社ISBN 978-7-302-41682-1,書中電路和程序設計有詳細說明,程序語句條條有注解。
回復

使用道具 舉報

板凳
ID:140489 發表于 2017-4-8 21:08 來自手機 | 只看該作者
zl2168 發表于 2017-4-8 15:40
先給你2個案例看看,其中有你需要的東東。
先Proteus仿真,確認有效。
實例91  具有校正功能的時鐘1302( ...

例子里沒有我想要的哦
回復

使用道具 舉報

地板
ID:111634 發表于 2017-4-8 22:42 | 只看該作者
lids 發表于 2017-4-8 21:08
例子里沒有我想要的哦

你的問題是:“按下設置鍵,按加、減鍵調時,如果從1加到59,時間沒對好就啟動時鐘走時了,怎么做才能使時間對好后過幾秒自動啟動走時呢?”
我推薦的案例是:按加、減鍵調時,時鐘照常運行,根本就不需過幾秒再啟動。
你先Proteus仿真一下,確認有效,再去找程序源代碼。不過,我先告訴你:仿真電路和Hex文件能在清華出版社網站免費下載,程序源代碼只能到書上看了。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

5#
ID:187627 發表于 2017-4-9 10:08 | 只看該作者
不知道哦
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜影视网 | 欧美网址在线观看 | 99精品国产一区二区三区 | 国产激情视频在线免费观看 | 久久久成人精品 | 国产一区二区麻豆 | 99在线资源 | 成人黄色在线 | 国产精品久久久久久久岛一牛影视 | 日韩av在线一区二区三区 | 99精品在线观看 | 国产亚洲一区在线 | 男人天堂免费在线 | 99这里只有精品视频 | 婷婷久 | 亚洲一区二区三区欧美 | 国产成人精品免费视频大全最热 | 色综合桃花网 | 亚洲欧美中文日韩在线v日本 | 范冰冰一级做a爰片久久毛片 | www.青娱乐| 91精品久久久久久久久久入口 | 欧美精品网站 | 亚av在线 | 免费视频一区 | 久在线视频播放免费视频 | 精品一区二区三 | 国产高清在线观看 | 99综合在线| 日韩中文字幕免费 | 日韩有码在线观看 | 亚洲天堂久久新 | 婷婷精品| 欧美成年人 | 国产精品视频久久久 | 日韩三区 | 精品中文字幕一区二区三区 | www日本高清 | 在线午夜 | av在线播放网址 | 超碰97人人人人人蜜桃 |