單片機4x4矩陣鍵盤掃描程序

2021-01-08 電子工程世界

    採用反轉法判斷按鍵坐標,即行號與列號獲得按鍵碼。

    寫完後發現Proteus一個問題:直接使用這樣的if(P10xf0!=0xf0)語句時,調不出來,當用了一個中間變量過渡時,就調出來了,害我花了一個上午的時間,現在暫時不知道Proteus為什麼要這樣,實際中是不需要的。

    程序如下:

    #include

    #define uchar unsigned char

    #define uint unsigned int

    void delayMS(unsigned int z);

    uchar keyscan(void);

    void main(void)

    {

    uchar key;

    while(1)

    {

    key=keyscan();

    delayMS(50);

    }

    }

    void delayMS(unsigned int z)

    {

    unsigned i,j;

    for(i=z;i0;i--)

    for(j=122;j0;j--);

    }

    uchar keyscan(void)

    {

    uchar scode,scode1,scode2,k;

    P1=0xf0;

    scode1=P10xf0;

    if(scode1!=0xf0)

    {

    delayMS(10);

    scode1=P10xf0;

    if(scode1!=0xf0)

    {

    scode1=P1^0xf0; /行號

    P1=0x0f;

    scode2=P1^0x0f; /列號

    scode=scode1 scode2;

    switch(scode)

    {

    case 0x11: k=1;break;

    case 0x12: k=2;break;

    case 0x14: k=3;break;

    case 0x18: k=4;break;

    case 0x21: k=5;break;

    case 0x22: k=6;break;

    case 0x24: k=7;break;

    case 0x28: k=8;break;

    case 0x41: k=9;break;

    case 0x42: k=10;break;

    case 0x44: k=11;break;

    case 0x48: k=12;break;

    case 0x81: k=13;break;

    case 0x82: k=14;break;

    case 0x84: k=15;break;

    case 0x88: k=16;break;

    default: k=0;break;

    }

    }

    }

    return k;

    }

關鍵字:單片機  4x4  矩陣鍵盤  掃描程序 編輯:什麼魚 引用地址:http://news.eeworld.com.cn/mcu/article_2017111335900.html

推薦閱讀

51單片機學習實踐:用NTC電阻測溫並顯示在TM1637數碼管

STC15單片機實驗名稱:使用NTC電阻測量溫度實驗內容:        使用NTC電阻測量溫度並顯示在數碼管上        讀取DS18B20模塊測量溫度作為參考實驗器材:        STC15W408AS_DIP16 x1        DS18B20  x1        TM1637數碼管 x1

發表於 2020-12-17

一款51單片機電子鐘製作(C語言)

/*一款電子鐘程序,此電子鐘是四位電子鐘數碼管組成的,功能分別有走時、響鬧、走時間調整、鬧鐘時間調整等功能!調整部分分別由三個按鍵實現,一個功能鍵,一個+(加)鍵,另一個為-(減)鍵,其它功能鍵是復用功能!*/硬鍵介紹:數碼管個位.十位.百位.千位.小數點分別接P0.0 P0.1 P0.2 P0.3 P0.4。蜂鳴器接P3.5腳,功能按鍵接P3.2 加按鍵接P3.3 減按鍵接P3.4以下是兩張圖片!!!#include <reg52.h>//頭文件#define uchar unsigned char//宏定義#define uint unsigned int//宏定義uchar shi,fen,nshi,nfen,ma

發表於 2020-12-17

51單片機+1602+DS18B20的溫度報警程序

51單片機做的溫度顯示,溫度顯示在LCD1602液晶屏上。然後按鍵可以調整溫度閾值,溫度高於或低於所設溫度,蜂鳴器就會響……單片機源程序如下:/***************************************************************************************                              基於單片機的實時溫度報警系統設計        &nbsp

發表於 2020-12-17

簡易星三角啟動電機 單片機C51程序

當電機較大時,啟動是個必須注意的問題。比較簡單且用的很多的是星三角啟動,這裡寫出了星三角啟動的核心部分。每一個IO口接上繼電器,再控制交流接觸器,就OK了。但,要注意,星、角交流接觸器一定要互鎖,否則一旦某個交流接觸器粘連,就造成短路了。#include <reg51.h>sbit K1=P3^1;  //按鍵1,控制第1個繼電器啟動sbit K2=P3^2;  //按鍵2,控制第2個繼電器啟動sbit J1=P1^5;  //星接繼電器sbit J2=P1^6;  //星點繼電器sbit J3=P1^7;  //角繼電器void Delay_1ms(unsigned i

發表於 2020-12-16

紅外熱釋電傳感器單片機設計

、技術性能穩定等特點而受到廣大用戶和專業人士的歡迎。而本設計的電路包括硬體和軟體兩個部分。硬體部分包括紅外感應部分與單片機控制部分。整個系統電路可劃分為:電源部分、傳感器模塊部分、單片機控制電路,而單片機控制由最小系統和指示燈電路、報警電路等子模塊組成。主要工作由熱釋電紅外感應器完成信息採集、處理、數據傳送經過單片機功能設定到達報警模塊這一過程。就此設計的核心模塊來說,單片機就是設計的中心單元。單片機應用系統也是由硬體和軟體組成。硬體包括單片機、輸入/輸出設備、以及外圍應用電路等組成的系統,軟體是主要是工作的程序通過編寫程序來控制輸入的信號。二、設計任務分析1.該設計包括硬體和軟體設計兩個部分。模塊劃分為數據採集、按鍵設定、報警

發表於 2020-12-16

STC15F104W單片機四路按鍵循環開關程序

用一個按鍵控制四個繼電器循環導通,程序由51單片機的程序改到STC15F104W上,第一次按鍵,第一個繼電器吸合,第二次按鍵,第二個繼電器吸合,第一個繼電器釋放,以此類推。最初的想法就是實現電風扇,三檔開關,程序裡面可以修改埠。#include<reg52.h>sbit key = P3^4; //定義按鍵void delayms(void);                         //延時void led_refresh(unsigned char

發表於 2020-12-16

相關焦點

  • 基於proteus的51單片機開發實例24-矩陣鍵盤(行列式鍵盤)
    基礎知識最常見的矩陣鍵盤是4*4鍵盤,其實現方法是將16個按鍵按照4x4矩陣方式連接,如下圖所示。從連接方式來看,有4根行線和4根列線。每個行線和列線的交匯處就是一個按鍵位。這樣總共有8根線就可以實現16個按鍵的檢測,比一個按鍵連接一個I/O口節省了一半的I/O埠。
  • 51單片機對矩陣鍵盤實現16個按鍵操作的設計
    矩陣鍵盤是單片機外部設備中所使用的排布類似於矩陣的鍵盤組。矩陣式結構的鍵盤顯然比直接法要複雜一些,識別也要複雜一些,列線通過電阻接正電源,並將行線所接的單片機的I/O口作為輸出端,而列線所接的I/O口則作為輸入。矩陣鍵盤的優點是節約單片機IO口,例如普通鍵盤8個IO口只能用作8個按鍵,而矩陣鍵盤能作16個按鍵。
  • 單片機4×4矩陣鍵盤設計方案
    1、設計原理本文引用地址:http://www.eepw.com.cn/article/172439.htm  (1)如圖14.2所示,用單片機的並行口P3連接4×4矩陣鍵盤,並以單片機的P3.0-P3.3各管腳作輸入線,以單片機的P3.4-
  • 51單片機教程:矩陣式鍵盤接口技術及程序設計
    在單片機系統中鍵盤中按鈕數量較多時,為了減少I/O口的佔用,常常將按鈕排列成矩陣形式,如圖1所示。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鈕加以連接。
  • 單片機 4*4 矩陣鍵盤應用
    在單片機按鍵使用過程中,當鍵盤中按鍵數量較多時 為了減少埠的佔用通常將按鍵排列成矩陣 形式如下圖所示,在矩陣式鍵盤中 每條水平線和垂直線在交叉處不直接連通而是通過一個按鍵加以連接,到底這樣做是出意何種目的呢?
  • 十分好用的單片機4*4矩陣鍵盤掃描代碼,送給初學單片機的你
    花了一段時間整理了一段51的4*4矩陣鍵盤掃描代碼,與一般代碼不同的是這個程序十分的簡短,幾行代碼就解決了4*4 掃描取鍵值,防抖動 ,因為在此程序運用了一個很巧妙的算法!現在供上代碼供大家學習研究,此程序經過一些改進,可以實現長按鍵識別 組合按鍵識別。
  • STC90C51單片機矩陣鍵盤聯動動態數碼管
    實驗準備STC90C51單片機一臺P2 GPIO口短接矩陣鍵盤JP4GPIO P0 短接動態數碼管控制端573短接138解碼器和動態數碼管即J15和J16實驗程序void MatrixKeyTest(){ char a = 0; int v; KEY
  • 51單片機系統與標準PC鍵盤的接口模塊設計
    本設計實現了一個接口模塊,它將標準PC鍵盤發出的位置掃描碼,變換為標準的ASCII碼和OEM掃描碼或Windows虛擬鍵代碼,再以並行或串行方式傳送給上位單片機。接口模塊的特點 該模塊在PC鍵盤與上位單片機之間起轉換作用,它屏蔽了與PC鍵盤進行數據和命令交互的複雜過程,大大簡化了上位單片機系統的輸入設計;它實現了類似DOS作業系統中鍵盤中斷服務程序的功能,使設計人員只需關心接收按鍵的結果,並可使用標準的鍵盤編碼進行編程;它要求上位單片機通過8位並行接口與其相接,對於不能提供並行接口的系統,可使用SPI兼容的同步串行接口與其相接,特別是對於那些希望佔用單片機的系統資源少而需要擴展的鍵數較多
  • 跟我學51單片機(四):獨立-矩陣鍵盤應用與設計
    上講介紹並應用了單片機的串口通信,並給出了實例。從這一講開始將介紹單片機的外圍電路。這講向大家介紹單片機外接鍵盤電路,通過該講,讀者可以掌握單片機外接鍵盤的工作原理從而實現電路與程序設計。
  • 單片機系統鍵盤的設計小結
    非編碼鍵盤:只簡單地提供鍵盤的行列與矩陣,其他操作如鍵的識別,決定按鍵的讀數等僅靠軟體完成,故硬體較為簡單,但佔用CPU較多時間。有:獨立式按鍵結構、矩陣式按鍵結構。 鍵盤的工作方式有:查詢方式(編程掃描,定時掃描方式)、中斷掃描方式。
  • 51單片機矩陣鍵盤與8051連接設計
    眾所周知,51單片機一般的鍵盤檢測原理為非編碼鍵盤檢測,沒有專門用來產生鍵編碼號或鍵值的電路晶片;而我們使用的電腦鍵盤為編碼鍵盤,通過編碼電路晶片為每個按鍵產生一個編碼號,可以通過串行總線把鍵值傳輸給電腦。
  • 看 Sugar 講矩陣鍵盤的使用
    Sugar 因授課需要在網上查了不少講解矩陣鍵盤的資料,覺得可以再努努力讓這個知識更易懂一點。下面就來看看 Sugar 怎麼努力的吧。矩陣鍵盤是什麼矩陣鍵盤就是按一定規律連在一起的一堆開關。Sugar 從深圳優信電子買到的矩陣鍵盤長成這樣的(Sugar 買過不少散電子元件,優信從未出過錯,所以在這裡提個名)。
  • 串行接口鍵盤控制器SK5278在單片機系統中的應用
    該晶片採用4線串行接口,可與任何種類的單片機接口;它具有按鍵有效指示輸出,可用中斷方式管理鍵盤;其行線X0~X3與列線Y0~Y3可構成4×4鍵盤矩陣;SK5278的16鍵鍵盤控制器內含去抖動處理電路,因而可直接輸出鍵值;此外,該器件的工作電源電壓範圍寬達4~6V;SK5278採用18腳雙列直插DIP封裝形式。其管腳排列如圖1所示,管腳說明如表1所列。
  • 如何使用通用單片機製作MIDI鍵盤
    採用51系列單片機最小系統的標準電路,音效卡 MIDI接口的1,4腳為供電輸出,分別為 VCC、GND ; 15腳為MIDI-IN,接單片機串行輸出腳 TXD。單片機的P0,P2口用來掃描鍵盤,可提供8x8的鍵盤掃描能力。絕大多數的電子琴的鍵數小於64,這樣的安排夠用了。其他剩餘的各腳,可用作工作參數預置,用來設置鍵值初值及所佔MIDI通道號等。
  • 基於AT89C51單片機的十進位計算器系統設計
    硬體方面從功能考慮,首先選擇內部存儲資源豐富的AT89C51 單片機,輸入採用4×4 矩陣鍵盤。顯示採用4 位7 段共陽極LED 動態顯示。軟體方面從分析計算器功能、流程圖設計,再到程序的編寫進行系統設計。  引言  本系統採用AT89C51 單片機作為控制器,用來實現實現四位數的「+」,「-」,「*」,「/」運算,運算結果通過數碼管顯示,並具有有清零功能。
  • 【程序】4*4矩陣鍵盤數碼管顯示按鍵值程序
    4×4矩陣鍵盤數碼管顯示按鍵值程序//電路說明如下。
  • AVR單片機驅動無源蜂鳴器C程序
    程序中實現單一頻率的周期性提示音。程序採用單任務方式,軟體延時。 avr單片機秒表Proteus仿真程序 tm1637數碼管顯示 單片機源程序如下:/***版權所有(c)2018,艁ukasz Marcin
  • 單片機矩陣按鍵的設計
    一、矩陣按鍵的原理矩陣鍵盤一般是4*4的按鍵組成,當然也有其他的按鍵組合,這裡我們分析4*4的按鍵,其他組合原理類似。4*4的按鍵採用的行列掃描方式,也就是先預設埠的狀態,然後掃描行的狀態,檢測到掃描行的狀態以後,再次檢測掃描列的狀態。
  • 基於51單片機的兩路溫度控制器的設計方案
    本方案中所設計的溫度控制器,採用AT89C51單片機作為內核,採用DS18B20作為溫度傳感器,通過四位LED顯示,通過循環掃描實現了兩路溫度的採集與顯示。
  • 單片機控制的密碼鎖設計(含電路圖及源程序)
    整體程序設計思想:程序分為主程序和中斷服務程序兩個主要部分,主程序完成變量和單片機特殊功能寄存器的初始化後,進入一個循環結構。在循環中,首先判斷有無按鍵按下,若有按鍵則判斷是否數字鍵還是功能鍵,根據按鍵的情況執行相應的功能。然後根據密碼是否正確的判斷情況,執行相應的操作。循環中最後將需要顯示的內容通過動態掃描在數碼管上顯示。