1. 程式人生 > >矩陣鍵盤掃描原理詳解——微控制器

矩陣鍵盤掃描原理詳解——微控制器

矩陣鍵盤掃描原理詳解

這裡寫圖片描述

根據原理圖
鍵盤掃描方法是:行線P10~P13為輸出線,列線P14~P17為輸入線。一開始微控制器將行線(P10~P13)全部輸出低電平,此時讀入列線資料,若列線全為高電平則沒有鍵按下,當列線有出現低電平時呼叫延時程式以此來去除按鍵抖動。延時完成後再判斷是否有低電平,如果此時讀入列線資料還是有低電平,則說明確實有鍵按下。最後一步確定鍵值。現在我們以第二行的S5鍵為例,若按下S5後我們應該怎麼得到這個鍵值呢?當判斷確實有鍵按下之後,行線輪流輸出低電平,根據讀入列線的資料可以確定鍵值。首先,微控制器將P10輸出為低電平,其它P11~P13輸出高電平,此時讀取列線的資料全為高電平,說明沒有在第一行有鍵按下;其次,微控制器將P11輸出低電平,其它P10、P12、P13仍為高電平,此時再來讀取列線資料,發現列線讀到的資料有低電平,數值為1011(0x0B),如果我們的鍵盤佈局已經確定,那麼0x0B就代表S5的值了。轉到S5鍵功能處理子程式就可以達到目的。

/*  
    功能:矩陣鍵盤掃面,按鍵顯示鍵值程式 
    作者:siriuszxn
                                  */
#include "reg51.h"                                                                                                                
#define KEYPORT = P1                                                                                                   
unsigned char i; unsigned char Keynum; unsigned char Line; //行
unsigned char Mask; unsigned char Col; //列 unsigned char ScanCode; unsigned char code psegs_table[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //共陽極數碼管0-F void delay_ms(unsigned int t) //ms延時程式 { unsigned char i; unsigned int x; x=t; while(x--) { for(i=0;i<113;i++); } } /* 鍵盤掃描程式 */ void keyscan() { while (1) //迴圈掃描鍵盤 { P1 = 0xff; //開始 Line = 1; Mask = 0x01; for(i = 0; i < 4; i++) { P1 = ~Mask; ScanCode = P1 & 0xf0; if (ScanCode != 0xf0) { delay_ms(5); } ScanCode = P1 & 0xf0; switch(ScanCode) { case 0xe0:Col=1;break; case 0xd0:Col=2;break; case 0xb0:Col=3;break; case 0x70:Col=4;break; default :Col=0;break; } if (Col > 0) { //根據行列計算鍵值 Keynum = (Line - 1) * 4 + Col; //通過P0口接數碼管顯示 P0 = psegs_table[Keynum-1]; while(1) { ScanCode = P1 & 0xf0; if(ScanCode == 0xf0) { break; } } Mask <<= 1; Line++; } } } } void main() { while(1) { keyscan(); } }

相關推薦

矩陣鍵盤掃描原理——微控制器

矩陣鍵盤掃描原理詳解 根據原理圖 鍵盤掃描方法是:行線P10~P13為輸出線,列線P14~P17為輸入線。一開始微控制器將行線(P10~P13)全部輸出低電平,此時讀入列線資料,若列線全為高電平則沒有鍵按下,當列線有出現低電平時呼叫

編碼原理(四)---之字形掃描

便是 集中 img 詳解 工作 -- 漢字 如何 編碼原理 上一篇我們講到,經過量化後得到了諸多零值和整數值,本篇接下來講講編碼過程中過對這些值如何組織和處理,那就是ZigZag掃描嘍。 一、簡介 ZigZag掃描也稱作之字形掃描,何以得此稱謂,是因為其掃描的路徑特

基於概率的矩陣分解原理(PMF)

上一篇部落格講到了推薦系統中常用的矩陣分解方法,RegularizedMF是對BasicMF的優化,而PMF是在RegularizedMF的基礎上,引入概率模型進一步優化。假設使用者U和專案V的特徵矩陣均服從高斯分佈,通過評分矩陣已知值得到U和V的特徵矩陣,然後

Android矩陣原理(Matrix,ColorMatrix)

在程式設計中有時候需要對圖片做特殊的處理,比如將圖片做出黑白的,或者老照片的效果,有時候還要對圖片進行變換,以拉伸,扭曲等等。 這些效果在android中有很好的支援,通過顏色矩陣(ColorMatrix)和座標變換矩陣(Matrix)可以完美的做出上面的所說的

磁盤陣列 RAID 技術原理

十分 單獨 很好 不同的 raid1 miss 和數 會同 帶寬 RAID一頁通整理所有RAID技術、原理並配合相應RAID圖解,給所有存儲新人提供一個迅速學習、理解RAID技術的網上資源庫,本文將持續更新,歡迎大家補充及投稿。中國存儲網一如既往為廣大存儲界朋友提供免費、精

解決ajax跨域的方法原理之Cors方法

詳細 不同 htm 渲染 jsonp del 需要 methods href 1、神馬是跨域(Cross Domain) 對於端口和協議的不同,只能通過後臺來解決。 一句話:同一個ip、同一個網絡協議、同一個端口,三者都滿足就是同一個域,否則就是 跨域問題了。而為

Nginx+Php-fpm運行原理

pop 圖片 ron 什麽 地址 pan webserver family tid 一、代理與反向代理 現實生活中的例子 1、正向代理:訪問google.com 如上圖,因為google被墻,我們需要vpnFQ才能訪問google.com。 vpn對於“我們”來說,是可

虛擬化技術基礎原理

虛擬化技術基礎原理詳解DISK : IO調度模式 CFQ deadline anticipatory NOOP/sys/block/<device>/queue/schedulerMemory: MMU TLB vm.swappiness={0..100},使用交換分區的

常用 JavaScript 小技巧及原理

this lin slice pen global 轉化 script lis fun 善於利用JS中的小知識的利用,可以很簡潔的編寫代碼 1. 使用!!模擬Boolean()函數 原理:邏輯非操作一個數據對象時,會先將數據對象轉換為布爾值,然後取反,兩個!!重復取反,就實

Storm概念、原理及其應用(一)BaseStorm

when 結構 tails 並發數 vm 虛擬機 cif 異步 優勢 name 本文借鑒官文,添加了一些解釋和看法,其中有些理解,寫的比較粗糙,有問題的地方希望大家指出。寫這篇文章,是想把一些官文和資料中基礎、重點拿出來,能總結出便於大家理解的話語。與大多數“wordc

主成分分析(PCA)原理(轉載)

增加 信息 什麽 之前 repl 神奇 cto gmail 協方差 一、PCA簡介 1. 相關背景 上完陳恩紅老師的《機器學習與知識發現》和季海波老師的《矩陣代數》兩門課之後,頗有體會。最近在做主成分分析和奇異值分解方面的項目,所以記錄一下心得體會。

lvs和keeplived的工作原理

lvs+keeplived的工作原理一、lvs的工作原理 使用集群的技術和liunx的操作系統實現一個高性能、高可用的服務器。可伸縮性、可靠性、很好的管理性。 特點:可伸縮網絡服務的幾種結構,它們都需要一個前端的負載調度器(或者多個進行主從備份)。我們先分析實現虛擬網絡服務的主要技術,指出IP負載均衡技術

js中幾種實用的跨域方法原理

自身 標簽 cdc 返回 屬性和方法 插入 實用 封裝 判斷 這裏說的js跨域是指通過js在不同的域之間進行數據傳輸或通信,比如用ajax向一個不同的域請求數據,或者通過js獲取頁面中不同域的框架中(iframe)的數據。只要協議、域名、端口有任何一個不同, 都被當作是不同

http原理

tor keep 接受 地址 lru structure 格式 dns 請求方式 1. HTTP簡介 HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是用於從WWW服務器傳輸超文本到本地瀏覽器的傳送協議。它可以使瀏覽器

HTTP2.0 原理

不依賴 href 漸進 pre new 進制 四個步驟 回來 stream 影響一個網絡請求的因素主要有兩個,帶寬和延遲。今天的網絡基礎建設已經使得帶寬得到極大的提升,大部分時候都是延遲在影響響應速度。連接無法復用連接無法復用會導致每次請求都經歷三次握手和慢啟動。三次握手在

css-浮動與清除浮動的原理(清除浮動的原理你知道嗎)

alt col ges mage all strong splay height http float元素A的特點: 脫離文檔流 靠向left或right float元素會和塊盒子重疊 準確來說,是塊盒子和A重疊,但塊盒子內容會浮動在A周圍 不會和inline元素重

VMware VDS原理--20170922

vmware vds原理詳解--20170922本文純屬個人理解,如有錯誤請留言指正。上圖為vSpere中一個簡單的結構拓撲圖,借用這個拓撲圖來解釋一下為什麽VDS能夠邏輯上跨越ESXi。首先說明一下整個架構1. 在底層用三臺ESXi表示一個底層的網絡,另外用Storage代表存儲,在最左邊ESXi中的最左邊

歸並排序原理!

elf 可能 動態空間 文件合並 you col 相同 治法 lte 無論在空間的利用上還是原理的簡介,使用空間換取時間的代價是必須的! 申請一定量的動態空間,double也是有可能!實際會有許多的問題。 時間復雜度,計算方法如下!因為每次比較都為( k*n/2 )+l*n

DPM(Deformable Part Model)原理(匯總)

特征向量 成就 算法思想 filter people tell 梯度 錨點 精度 寫在前面: DPM(Deformable Part Model),正如其名稱所述,可變形的組件模型,是一種基於組件的檢測算法,其所見即其意。該模型由大神Felzenszwalb在2008年提

交換機的原理

交換機的原理詳解實驗名稱:交換機 MAC 表形成 實驗需求: 1、確保 PC-1 與 PC-3 可以互相Ping通; 2、查看交換機的 MAC 地址表 ; 實驗步驟: 1、互聯交換機與 PC-1/2/3 ; 分別對應交換機的 Fas0/1/2/3口 2、配置PC-1/2/3的I