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

QQ登錄

只需一步,快速開(kāi)始

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

at89c52單片機(jī)用獨(dú)立按鍵控制數(shù)碼管加減

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:245302 發(fā)表于 2017-11-2 13:58 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
用獨(dú)立按鍵控制數(shù)碼管加減,s2一直按著數(shù)碼管就一直加,怎么做?

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

使用道具 舉報(bào)

沙發(fā)
ID:245339 發(fā)表于 2017-11-2 15:22 | 只看該作者
單片機(jī)反應(yīng)速度很快要想做到一直按著一直加,應(yīng)該加上適當(dāng)?shù)难訒r(shí)。s2一按下觸發(fā)延時(shí)函數(shù)延時(shí)0.5秒就加一這樣就可以了
回復(fù)

使用道具 舉報(bào)

板凳
ID:245340 發(fā)表于 2017-11-2 15:26 | 只看該作者
去掉松手檢測(cè)程序,加上延時(shí)程序,就可以實(shí)現(xiàn)一直加了
回復(fù)

使用道具 舉報(bào)

地板
ID:245302 發(fā)表于 2017-11-2 17:07 來(lái)自手機(jī) | 只看該作者
1377231861 發(fā)表于 2017-11-2 15:26
去掉松手檢測(cè)程序,加上延時(shí)程序,就可以實(shí)現(xiàn)一直加了

能發(fā)程序給我看一下嗎
回復(fù)

使用道具 舉報(bào)

5#
ID:245302 發(fā)表于 2017-11-2 17:09 來(lái)自手機(jī) | 只看該作者
1377231861 發(fā)表于 2017-11-2 15:26
去掉松手檢測(cè)程序,加上延時(shí)程序,就可以實(shí)現(xiàn)一直加了

有具體程序給我借鑒一下嗎
回復(fù)

使用道具 舉報(bào)

6#
ID:213173 發(fā)表于 2017-11-2 17:53 | 只看該作者
//短按+/-,長(zhǎng)按連續(xù)+/-示例,按鍵和LED端口按你的實(shí)際電路定義。變量num按實(shí)際需要設(shè)限。宏定義延時(shí)計(jì)數(shù)按實(shí)際需要修改。
#include <REG51.H>
#define uint unsigned int                         //宏定義數(shù)據(jù)類型uint
#define uchar unsigned char                 //宏定義數(shù)據(jù)類型uchar
#define key_S 1000                                        //宏定義短按(約20ms)
#define key_L 30000                                        //宏定義長(zhǎng)按(約2/3s)
#define key_M 20000                                        //宏定義長(zhǎng)按(約1/3s)
sbit key1=P3^6;                                                //加鍵
sbit key2=P3^7;                                                //減鍵
uchar num=1;

void keyscan()                                                        //按鍵掃描
{
        static uint count1=0,count2=0;//計(jì)數(shù)變量
        if(!key1)   
        {  
                count1++;  
                if(count1>=key_L)                                //長(zhǎng)按
                {
                        if(num<255)
                                num++;        
                        count1=key_M;
                }
        }  
        else                                                                        //按鍵抬起
        {  
                if(count1>key_S && count1<key_L)//短按
                {
                        if(num<255)
                                num++;
                }
                count1=0;                                                        //count清0
        }   
        if(!key2)   
        {  
                count2++;  
                if(count2>=key_L)                                //長(zhǎng)按
                {
                        if(num>0)
                                num--;        
                        count2=key_M;
                }
        }  
        else                                                                        //按鍵抬起
        {  
                if(count2>key_S && count2<key_L)//短按
                {
                        if(num>0)
                                num--;
                }
                count2=0;                                                        //count清0
        }
}

void main()
{
        while(1)
        {
                keyscan();                                //按鍵掃描
                P1=~num;                                        //LED顯示低電平顯示
        }
}
回復(fù)

使用道具 舉報(bào)

7#
ID:245403 發(fā)表于 2017-11-2 18:24 | 只看該作者
可能程序錯(cuò)了
回復(fù)

使用道具 舉報(bào)

8#
ID:245473 發(fā)表于 2017-11-2 20:48 | 只看該作者
去掉松手檢測(cè)程序,加上延時(shí)程序,就可以實(shí)現(xiàn)一直加了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表