51.如何在微控制器上設定鍵盤掃瞄器程式

發布 科技 2024-08-21
19個回答
  1. 匿名使用者2024-02-01

    設定鍵盤程式?

    這是設計,對吧? 應根據鍵盤電路進行設計。 不同的電路導致不同的程式。

  2. 匿名使用者2024-01-31

    用C的話來說; 這是反轉線法; 轉到**查詢一些資訊; 源程式很簡單,高四低四; 不要自己編造,浪費你的時間。 當你使用它時,你可以使用它;

  3. 匿名使用者2024-01-30

    這與設定無關,但您需要在上面寫乙個鍵盤掃瞄器!

  4. 匿名使用者2024-01-29

    源程式不會發布,所以讓我們談談這個想法。

    按鍵掃瞄:一般按鍵的模式為行列掃瞄模式,假設5*5鍵盤一共25個按鍵,占用51個微控制器和10個IO口。

    掃瞄方式 一般採用定時掃瞄方式,在定時中斷中進行按鍵掃瞄操作。

    可以先將第一行的io口設定為0,然後掃瞄列中的5個io口,看看哪乙個是0,表示按下了這個位置的按鈕。

    然後將第二行的 io 設定為 0,重複上述判斷。

    依次掃瞄其餘三個。

    當然,要想做好,就得加防抖,重複按鍵判斷,長按鍵操作處理。

  5. 匿名使用者2024-01-28

    #include""

    #define uint unsigned int#define uchar unsigned charuchar key;

    uchar code tab=;

    void delay(uchar z)

    void display(uchar num)void keys():掃瞄金鑰。

    while(temp!=0xf0)等待金鑰釋放}}p3=0xfd;

    temp=p3;

    temp=temp&0xf0;

    if(temp!=0xf0)

    while(temp!=0xf0)等待金鑰被釋放} }p3=0xfb;

    temp=p3;

    temp=temp&0xf0;

    if(temp!=0xf0)

    while(temp!=0xf0)等待金鑰釋放}}p3=0xf7;

    temp=p3;

    temp=temp&0xf0;

    if(temp!=0xf0)

    while(temp!=0xf0)等待金鑰被釋放}}}void main()}

  6. 匿名使用者2024-01-27

    網上有很多,自己找吧。

  7. 匿名使用者2024-01-26

    P2的按鍵掃瞄與實時時鐘模組共享IO,雖然概率很小,但仍有誤觸發和資料讀取錯誤的幾率。

  8. 匿名使用者2024-01-25

    前面的巨集定義 define k p0

    您的金鑰正在使用 P3 埠。

  9. 匿名使用者2024-01-24

    uchar code act[4]=;

    char scan_key(void)}}

    if(find==0)return-1;返回值為-1,返回1為正常返回,返回-1為異常返回程式只是程式編寫的標準,即沒有鍵。

    return(ini*4+inj);i 是上四位數字的判斷,j 是後四位數字的判斷。

    0 1 2 3 為零 0,1,2,3 如果開關 0 開啟,則 p4 為 0,即 1110 1110

    4 5 6 7 向右移動補 1,得到 1111 1110,j 為 0

    8 9 A b 開關 1 開啟 p5 為 0,即 1101 1110,右移 1111 1101

    c d e f 可以判斷 j 為 1,也可以推斷出 1 一樣。

    p4 5 6 7

    按照這個想法,4個埠只能實現4個開關4*4=16,2*2=4必須改變思維方式,如果是因為埠太緊,可以使用P3埠,或者使用分壓讀取AD判斷按鈕(AD鍵盤)。

  10. 匿名使用者2024-01-23

    根據圖中所示的接線方法,此程式中至少有 4 列鍵盤。 如果你想把它改成你為鍵盤圖示的程式,我會寫乙個,不除錯可能會有問題。 嘗試使用示例程式的樣式。

    uchar code act[3]=;

    char scan_key(void)}}if(find==0)return-1;

    return(ini*4+inj);}

  11. 匿名使用者2024-01-22

    這本書上的鍵盤掃瞄器本身並不是很有效。

    鍵盤掃瞄的基本思想是將整個鍵盤視為乙個整體,並使用變數來儲存每個鍵的狀態,乙個鍵對應 1 位。

    例如:如果有 8 個鍵,設定乙個無符號 char 變數來儲存其狀態,該變數需要設定 3,乙個用於當前鍵狀態(命名為 cur)(全域性變數),乙個用於第乙個掃瞄按鈕(命名為 a)(臨時變數)和乙個用於掃瞄後去抖動的鍵(命名為 b)(臨時變數)取乙個, 比較 a,cur 相同,相同表示金鑰沒有變化,退出金鑰掃瞄否則延遲 10ms 借記,取 B,比較 a,b 相同,相同的金鑰更改有效,cur=a;執行金鑰更改處理**。 否則,金鑰將被錯誤觸發,金鑰掃瞄將被退出。

    當然,這是基本思想,**延時也可以優化,涉及計時器,有很多字。

  12. 匿名使用者2024-01-21

    uchar code act[4]=;

    char scan_key(void)}}

    if(find==0)return-1;返回值為-1,返回1為正常返回,返回-1為異常返回程式只是程式編寫的標準,即沒有鍵。

    return(ini*4+inj);i 是上四位數字的判斷,j 是後四位數字的判斷。

    0 1 2 3 為零 0,1,2,3 如果開關 0 開啟,則 p4 為 0,即 1110 1110

    4 5 6 7 向右移動補 1,得到 1111 1110,j 為 0

    8 9 A b 開關 1 開啟 p5 為 0,即 1101 1110,右移 1111 1101

    c d e f 可以判斷 j 為 1,也可以推斷出 1 一樣。

    p4 5 6 7

    按照這個想法,4個埠只能實現4個開關4*4=16,2*2=4必須改變思維方式,如果是因為埠太緊,可以使用P3埠,或者使用分壓讀取AD判斷按鈕(AD鍵盤)。

  13. 匿名使用者2024-01-20

    發一張鍵盤部分的截圖,蚊子描述不容易理解。

    鍵盤程式與硬體鏈結有很大關係。

  14. 匿名使用者2024-01-19

    哪些系列的MCU有P4埠?

  15. 匿名使用者2024-01-18

    只有30分鐘,我想找人教你。

  16. 匿名使用者2024-01-17

    你用低位,你為什麼要放高位,看你的程式有點不清楚! ~

    您的 P3 埠是集合的最低位,您的情況不是這樣的。

    你的這個時間可能是乙個無休止的迴圈。

  17. 匿名使用者2024-01-16

    是不是第乙個函式被呼叫了,然後就進入了乙個無限迴圈,所以第二個函式就呼叫不了了。

  18. 匿名使用者2024-01-15

    首先,微控制器引腳預設輸出高電量。 讓鍵盤控制一行(假設第n行)的引腳為0,然後按該行上的乙個鍵,然後逐個檢查低電平(假設檢測為m列),這樣就按了nm鍵。 這個想法是使行為低並檢查列(反之亦然)。

  19. 匿名使用者2024-01-14

    建議看一下行列式鍵盤的工作原理。

相關回答
11個回答2024-08-21

你用什麼樣的AD晶元---不同的晶元是不同的。

9個回答2024-08-21

計數器,記錄脈衝數。 乘以乙個因子。

10個回答2024-08-21

首先,您必須開啟 Total Break EA

其次,開啟五個小中斷:et0、et1、es、int0、int1,一旦與中斷對應的介面收到重要電平,它就會啟動。 >>>More

15個回答2024-08-21

PIC微控制器與MCS-51系列微控制器的區別應該說有三個主要特點: >>>More

4個回答2024-08-21

AT89C52 C 系列是早期產品。 沒有了程式設計和看門狗,為了區別於早期產品,將新產品改為具有看門狗和ISP功能的AT89S52,ISP就是程式設計的意思。早期是晶格的專利技術,現在被大量使用。 >>>More