欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 用按鍵控制兩位數碼管顯示 不正常求解 [打印本頁]

作者: 第一政委    時間: 2015-6-10 15:17
標題: 用按鍵控制兩位數碼管顯示 不正常求解
本人剛學單片機不久。
程序如下,一些I0口定義沒有給出。
程序運行沒錯,燒入單片機可以運行,按下key32也能計數。
唯一的問題是:當我按下key32時,按理說應該兩個數碼管都亮,但是僅有顯示個位數的數碼管亮。當松手時,兩個數碼管又都亮了。
想請教下各位,這是為什么?

void keyscan()//key32為獨立按鍵。每按key32一次,num加1。達到60時,置0。
{
        if (key32==0)
        {
                delay(10);
                if (key32==0)
                {
                        num++;
                        if(num==60)
                                num=0;
                        while(!key32);   
                }        
        }

}

void display(num)//用兩個數碼管顯示num的值。
{
        P0=0xff;//關閉所有顯示,防止混亂
        wela=1;
        P0=0xfe;
        wela=0;
        dula=1;
        P0=smg[num%100/10];//十位數
        dula=0;
        delay(5);

        P0=0xff;//關閉所有顯示,防止混亂
        wela=1;
        P0=0xfd;
        wela=0;
        dula=1;
        P0=smg[num%10];//個位數
        dula=0;
        delay(5);
}

void main()//主程序
{
        while(1)
        {        
                keyscan();
                display(num);
        }

}
這是我在論壇搜到的 和我遇到的問題一樣 我直接復制過來了 不當之處請作者諒解,我也是著急尋求解決答案!!



作者: Jarvis    時間: 2015-6-12 14:50
因為你的按下按鍵以后,while循環就卡在按鍵掃描那里了,而你的數碼管應該是用動態掃描的吧?所以就不再刷新了。一種比較好的方法,就是用原子STM32那種按鍵掃描,可以解決很多問題。
作者: 第一政委    時間: 2015-6-13 09:57
用定時器 中斷也可以解決這個問題,但是除了用這種方法還有沒有其他更好的方法啊  ???請大神們指點指點啊   我這個菜鳥!
作者: yesonjob    時間: 2015-6-13 11:06
,當你長按不松手時停在while那里了,在while(!key32)后面加上數碼管顯示程序,這樣當你長按按鍵時也會兩個數碼管一起顯示。
作者: 歡騰智能科技    時間: 2015-6-13 21:27
第一政委 發表于 2015-6-13 09:57
用定時器 中斷也可以解決這個問題,但是除了用這種方法還有沒有其他更好的方法啊  ???請大神們指點指點 ...

不用while(!key32)咯
作者: 1860774xxxx    時間: 2019-12-3 11:14
隨然這帖很久 但我也是這問題  新學的  不知怎改啊  




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