導航:首頁 > 操作系統 > 單片機按鍵次數

單片機按鍵次數

發布時間:2023-05-12 17:29:23

① 在單片機中怎樣檢測一個按鍵的擊鍵次數

樓上講得很對,就是先設一個變數,比如a,然後檢測是否有按鍵按下,當有鍵按下時,就跳到相應的程序,執行a++,但是要注意一點,就是在按鍵按下的時候要加個延時函數去抖,在加一個語敬頌句判斷按鍵是否按或稿團下(比如C語言的while語句)衫橘,只有這樣,才能正確判斷按鍵按下的次數。

② 單片機用p1口接8個發光二極體記錄按鍵次數匯編程

假設按鍵用P2.0,有上拉電阻,低電平吵頃有效;LED用高電平點亮
1、埠初始化
SETB P2.0
MOV P1,#0
2、檢測按鍵變化,每按過一豎滾次,按鍵計數器KEYCOUNT就加1,
;查詢按鍵是否按下

;若已按下,則等待按鍵彈起升纖陸,若未按下則等待按下

;按鍵未彈起就一直等待,否則執行
inc keycount

3、將按鍵計數器的值送往P1口

mov a,keycount
mov P1,a

③ 用單片機控制數碼管顯示按鍵次數

因為你這是在主函數裡面實現的動態顯示啊,當沒有按鍵按下時,不用執行按鍵去抖的20ms時間,所以程序很快就執行完。這時數碼管掃描並不會出現問題。

但是,當有按鍵按下後,要執行20ms的去抖,完成後才往下執行,這20ms的延時,對數碼管動態顯示來說,是很危險的,會出現顯示不正常。

你這個程序,最好改成用定時器中斷掃描,這樣就不會產生類似的問題了。

你這個程序非要這樣寫,那你在按鍵掃描裡面,也應該放上數碼管顯示程序,讓數碼管掃描間隔減小,至少要小於20ms才行。

④ 單片機按鍵計數

就是89C52單片機按鍵次數計數 在LCD1602上顯示 ,每按一次計數一次,這個容易。而顯示每分鍾按多少謹燃好次,是每分鍾統計一次呢?然後按每一分鍾都顯示出來?還是求平均每分鍾按幾次?只顯示一個平均數?統計這個有什段正么用呢?還是為祥鉛了編程故意找點事。

⑤ c51 單片機種統計按鍵次數

1.設置一個狀態變數,如flag,定義flag=0為開狀態,flag=1為關狀態。
2.因為是按鍵(不是開關),所以實際上單片機讀取的應該是脈沖形式的輸入。設按鍵接單片機p01引腳,故慎乎帆可採用以下程序實現按鍵掃描
if(p01==0)//按下按鍵,進入下降沿
{
delay2();//20ms延時去按鍵前抖動
while(p01==0);//等待上升沿到
來,即按鍵彈起
flag=~flag;//flag取反,實現狀態切換
}
void
delay2()//20ms延時子程序
{
unsigned
char
i,k;
for(i=0;i<100;i++)
for(k=0;k<100;k++);
}
註:根據按鍵的具體接法,若按下按鍵向頃早單片機輸入低寬雹電平,則採用以上程序;若按下按鍵向單片機輸入高電平,則將兩處p01==0均改為p01==1。

⑥ 51單片機 獨立按鍵按下去 再放開才算按鍵一次 計算按鍵次數 程序應該怎麼寫

你好!

因為按鍵操作涉及寄存器配置和按鍵防抖,因此寫了你也不一定用得上。而且你這個的邏輯比較簡單,建議自己寫。主要注意幾個地方就可以了:

  1. 按鍵I/O口電平的配置:要結合硬體電路確認按鍵是低電平觸發還是高電平觸發。在程序中設置正確的I/O口電平。

  2. I/O口的輸入輸出狀態的配置:I/O口作為按鍵輸入必須是准雙向模式或輸入模式,這個不同單片機配置寄存器方正型式不同但大同小異。

  3. 按鍵防抖:在按鍵按下時有時會有短暫的接觸不良,因此會多次判斷按鍵按下和斷開,因此一般在按鍵按下或斷開時增加幾十毫秒的防抖處理虛清鍵,具體就是連續多個循環判斷按鍵是否是一個狀態,如果狀態不變,再進行下一步差巧處理。

⑦ 單片機中怎樣精確判斷鍵被按下的次數

設置一個變數i,當按下一次按鍵就加1,旁梁寬這樣就可以了。
你說的精確,其實是要准確判渣頃斷按鍵是否按下,兩個方法
,一個硬體消抖,另一個軟體消抖,運亮一般用軟體消抖,即延時+等待按鍵釋放。

⑧ 《單片機應用技術》期末考試 數碼管顯示按鍵次數

數碼管顯示按鍵次數

通過按下按蘆源鍵在數碼管上顯示按下陪讓態的次數,進行1-10次的計數,當按下第十次的時候,歸零。

一滑凳,結構圖

二,程序

#include "reg52.h"

sbit C1 = P2^7;

sbit C2 = P2^6;

sbit C3 = P2^5;

sbit C4 = P2^4;

sbit SW1 = P3^4;

sbit SW2 = P3^3;

unsigned char SMGNoDot_CA[10] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};

unsigned char s1=0, s2=0;

void DelaySMG(unsigned char t)

{

while(t--);

}

void DisPlaySMG_Bit(unsigned char pos, unsigned char dat)

{

P0 = 0xff;

switch(pos) 

{

case 1:

C1 = 1; C2 = 0; C3 = 0; C4 = 0;

break;

case 2:

C1 = 0; C2 = 1; C3 = 0; C4 = 0;

break;

case 3:

C1 = 0; C2 = 0; C3 = 1; C4 = 0;

break;

case 4:

C1 = 0; C2 = 0; C3 = 0; C4 = 1;

break;

}

P0 = dat; 

}

void DisPlaySMG()

{

DisPlaySMG_Bit(1, SMGNoDot_CA[s1]);

DelaySMG(100);

DisPlaySMG_Bit(2, 0xbf);

DelaySMG(100);

DisPlaySMG_Bit(3, 0xbf);

DelaySMG(100);

DisPlaySMG_Bit(4, SMGNoDot_CA[s2]);

DelaySMG(100);

}

void Scan_Keys()

{

if(SW1 == 0)

{

DelaySMG(200);

if(SW1 == 0)

{

while(SW1 == 0)

{

DisPlaySMG();

}

s1++;

if(s1 == 10)

{

s1 = 0;

}

}

}

if(SW2 == 0)

{

DelaySMG(200);

if(SW2 == 0)

{

while(SW2 == 0)

{

DisPlaySMG();

}

s2++;

if(s2 == 10)

{

s2 = 0;

}

}

}

}

void main()

{

while(1)

{

DisPlaySMG();

Scan_Keys();

}

}

三,流程圖

⑨ 單片機中怎麼樣實現按鍵按下計數

主函數
void main (void)
{
unsigned char num=0;
KEY_ADD=1; //按鍵輸入埠電平置高
KEY_DEC=1;
while (1) //主循環
{
if(!KEY_ADD) //如果檢測到低電平,說明按鍵按下
{
DelayMs(10); //延時去抖,一般10-20ms
if(!KEY_ADD) //再次確認按鍵是否按下,沒有按下則退出
{
while(!KEY_ADD);//如果確認按下按鍵等待按鍵釋放,沒有釋放則一直等待
{
if(num<9) //加操作
num++;
}
}
}
if(!KEY_DEC) //如果檢測到低電平,說明按鍵按下
{
DelayMs(10); //延時去抖,一般10-20ms
if(!KEY_DEC) //再次確認按鍵是否按下,沒有按下則退出
{
while(!KEY_DEC);//如果確認按下按鍵等待按鍵釋放,沒有釋放則一直等待
{
if(num>0) //減操作
num--;
}
}
}
//主循環中添加其他需要一直工作的程序
}
}

閱讀全文

與單片機按鍵次數相關的資料

熱點內容
編譯器地址8位元組對齊 瀏覽:464
三菱plc編程win1064 瀏覽:258
高中英語單詞pdf 瀏覽:425
編譯原理詞法分析常見問題 瀏覽:197
車小藝app怎麼更新 瀏覽:77
手機app被管控如何移除 瀏覽:753
51單片機溫濕度檢測 瀏覽:575
安卓抖音顯示沒網路是怎麼回事 瀏覽:817
2d我的世界源碼 瀏覽:618
怎樣製作貼天花板的解壓球 瀏覽:337
伺服器如何打開蘋果 瀏覽:96
高響應比演算法的實現 瀏覽:848
windows寫命令行 瀏覽:61
騰訊天津數據中心伺服器雲空間 瀏覽:974
單片機掃描按鍵 瀏覽:386
如何設置google伺服器 瀏覽:697
linuxtrace工具源碼 瀏覽:179
源碼第二次開發 瀏覽:786
如何獲取網頁php源碼 瀏覽:729
還用飛那麼源碼 瀏覽:206