標(biāo)題: 設(shè)置鍵程序有問題么,按了很多下才能調(diào)時間 [打印本頁]

作者: 吾樂生世    時間: 2018-4-18 09:55
標(biāo)題: 設(shè)置鍵程序有問題么,按了很多下才能調(diào)時間
if(key1n==9)                key1n=1;//éèÖð′¼ü12óDÃë¡¢·Ö¡¢걡¢DÇÆú¡¢èÕ¡¢Ô¡¢Äê¡¢·μ»Ø£¬8¸ö1|ÄüÑ-»·

        switch(key1n)
        {
       
        case 1: TR0=0;//1رն¨ê±Æ÷
                        //TR1=0;
                        write_1602com(er+0x06);//éèÖð′¼ü°′¶ˉò»′Σ¬ÃëλÖÃÏÔê¾1a±ê
                           write_1602com(0x0f);//éèÖÃ1a±êÎaéá˸
                           temp=(miao)/10*16+(miao)%10;//Ãëêy¾YD′èëDS1302
                           write_1302(0x8e,0x00);
                           write_1302(0x80,0x80|temp);//miao
                      write_1302(0x8e,0x80);
                           break;
        case 2:  write_1602com(er+3);//°′2′ÎfenλÖÃÏÔê¾1a±ê
                       
                     //write_1602com(0x0f);
                        break;
        case 3: write_1602com(er+0);//°′¶ˉ3′Σ¬shi
                     //write_1602com(0x0f);
                        break;
        case 4: write_1602com(yh+0x0e);//°′¶ˉ4′Σ¬week
                     //write_1602com(0x0f);
                        break;
        case 5: write_1602com(yh+0x08);//°′¶ˉ5′Σ¬ri
                     //write_1602com(0x0f);
                        break;
        case 6: write_1602com(yh+0x05);//°′¶ˉ6′Σ¬yue
                     //write_1602com(0x0f);
                        break;
        case 7: write_1602com(yh+0x02);//°′¶ˉ7′Σ¬nian
                     //write_1602com(0x0f);
                        break;
        case 8:
                   write_1602com(0x0c);//°′¶ˉμ½μú8′Σ¬éèÖÃ1a±ê2»éá˸
                   TR0=1;//′ò¿a¶¨ê±Æ÷
           temp=(miao)/10*16+(miao)%10;
                   write_1302(0x8e,0x00);
                   write_1302(0x80,0x00|temp);//miaoêy¾YD′èëDS1302
                   write_1302(0x8e,0x80);
            break;                                                                                                                       
                       
        }            
       
       
        }          




//key4Ö±½ó íË3ö¼ü£¬íË3ö¼ü°′Ï£¬Ö±½óíË3öμ÷Õû×′쬣¬½øèë×ß걡£
        }

if(key1n!=0)
{
        if(key4==0)         //íË3ö¼ü°′Ï£¬Ö±½óíË3öμ÷Õû×′쬣¬½øèë×ß걡£
        {
                delay(10);
                if(key4==0)
                {
                        buzzer=0;//·äÃùÆ÷¶ìÏìò»′Î
                        delay(20);
                        buzzer=1;

                        key1n=0,
                        write_1602com(0x0c);//éèÖÃ1a±ê2»éá˸
                        TR0=1;//′ò¿a¶¨ê±Æ÷
                        temp=(miao)/10*16+(miao)%10;
                    write_1302(0x8e,0x00);
                    write_1302(0x80,0x00|temp);//miaoêy¾YD′èëDS1302
                    write_1302(0x8e,0x80);          

       
                }
        }
}          


作者: HC6800-ES-V2.0    時間: 2018-4-18 14:45
進(jìn)入修改狀態(tài),要用外部中斷才行。
你這個鍵盤掃描辦法,就是不容易進(jìn)入修改狀態(tài)。因?yàn)槌绦蛞恢痹谂馨�,還是以一個很快的速度在跑,什么時間“恰好”掃描到你的按鍵,才進(jìn)入修改,是要很多次的,不然沒法“恰好”啊。
只是從你給出的程序中,看到修改的部分,所以有這樣的猜測。
我做這個的思路(已經(jīng)做成功的):
用外部中斷進(jìn)入、退出修改狀態(tài)、鍵盤逐項(xiàng)選擇要修改的內(nèi)容、一個鍵修改,一共要三個鍵就可以了。如果你覺得一個鍵讓數(shù)字只加不減,不方便,那么就用矩陣鍵盤,可以直接輸入目標(biāo)數(shù)值。
作者: zl2168    時間: 2018-4-18 17:08
本帖最后由 zl2168 于 2018-4-18 17:09 編輯

給你介紹一個按鍵校正時鐘的實(shí)例,自己比對吧!
實(shí)例91  具有校正功能的時鐘1302(LCD1602顯示)
先Proteus仿真,確認(rèn)有效。
實(shí)例91 帶校正時鐘1302(LCD1602顯示).rar (52.68 KB, 下載次數(shù): 6)

以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1,書中電路和程序設(shè)計(jì)有詳細(xì)說明,程序語句條條有注解。

作者: 吾樂生世    時間: 2018-4-25 09:25
HC6800-ES-V2.0 發(fā)表于 2018-4-18 14:45
進(jìn)入修改狀態(tài),要用外部中斷才行。
你這個鍵盤掃描辦法,就是不容易進(jìn)入修改狀態(tài)。因?yàn)槌绦蛞恢痹谂馨。€ ...

好的謝謝,那怎么用外部中斷呢
作者: zl2168    時間: 2018-4-25 12:41
上例中有�。。�!而且能操作感受,為什么不去看???
作者: xbd2048@qq.com    時間: 2018-4-25 13:12
是不是按鍵的掃描時間太長了
作者: 20180426    時間: 2018-4-27 13:50
修改延時參數(shù) 和 設(shè)定的按鍵參數(shù)
作者: 你在我的    時間: 2018-4-27 20:46
參數(shù)設(shè)置應(yīng)該有問題吧




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1