單片機c語言之矩陣按鍵

2020-12-12 電子產品世界

程序為當按下第一個矩陣按鍵,數碼管顯示1,按第2個矩陣按鍵,數碼管顯示2,以此類推,直到第十五個按鍵顯示F。第十六個按鍵顯示o為止

#include#define uint unsigned int#define uchar unsigned charsbit dula=P2^6;sbit wela=P2^7;uchar code table[]={0x00,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0};uchar num,temp,num1; void delay(uint z) {uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--); }uchar keyscan(); void main(){ num1=17;dula=1;P0=0;dula=0;wela=1;P0=0x00;wela=0;while(1){num1=keyscan(); dula=1;P0=table[num1];dula=0; }}uchar keyscan(){ P3=0xfe;temp=P3;temp=temp&0xf0;while(temp!=0xf0){ delay(5);temp=P3;temp=temp&0xf0;while(temp!=0xf0){ temp=P3;// 退出循環switch(temp){case 0x7e:num=1;break;case 0xbe:num=2;break;case 0xde:num=3;break;case 0xee:num=4;break; }while(temp!=0xf0){temp=P3;temp=temp&0xf0;} // 鬆手檢測}}P3=0xfd;temp=P3;temp=temp&0xf0;while(temp!=0xf0){ delay(5);temp=P3;temp=temp&0xf0;while(temp!=0xf0){ temp=P3;switch(temp){case 0x7d:num=5;break;case 0xbd:num=6;break;case 0xdd:num=7;break;case 0xed:num=8;break; }while(temp!=0xf0){temp=P3;temp=temp&0xf0;} // 鬆手檢測}}P3=0xfb;temp=P3;temp=temp&0xf0;while(temp!=0xf0){ delay(5);temp=P3;temp=temp&0xf0;while(temp!=0xf0){ temp=P3;switch(temp){case 0x7b:num=9;break;case 0xbb:num=10;break;case 0xdb:num=11;break;case 0xeb:num=12;break; }while(temp!=0xf0){temp=P3;temp=temp&0xf0;} // 鬆手檢測}} P3=0xf7;temp=P3;temp=temp&0xf0;while(temp!=0xf0){ delay(5);temp=P3;temp=temp&0xf0;while(temp!=0xf0){ temp=P3;switch(temp){case 0x77:num=13;break;case 0xb7:num=14;break;case 0xd7:num=15;break;case 0xe7:num=16;break; }while(temp!=0xf0){temp=P3;temp=temp&0xf0;} // 鬆手檢測}}return num;}


相關焦點

  • 單片機驅動矩陣按鍵與獨立按鍵原始碼
    本程序所用的原理圖下載:點這裡,單片機晶片使用的stc89c52;找到相應部分即可.這是一整個單片機開發板的電路圖其他的忽略.hex文件及其工程文件下載:http://www.51hei.com/f/pingfc.rar 下面是程序源碼:本文引用地址:http://www.eepw.com.cn/article/201612/324622.htm/**功能:使用矩陣按鍵使得按鍵按下時數碼管上顯示各自對應的數字的立方數* 優化顯示,只顯示有效位;* 且使用獨立按鍵實現key1清零,
  • 51單片機學習之5-獨立按鍵和矩陣鍵盤
    非編碼鍵盤分:獨立式非編碼鍵盤(獨立按鍵)、行列式非編碼鍵盤(4*4陣列鍵盤)獨立鍵盤的電路圖。因為51單片機的IO口不是雙向口而是準雙向口,要讓IO口具備輸入功能,必須將IO口置1,置1之後當按鍵按下時IO口的電平會被拉低,即被置0。當檢測到IO口為0時即可判斷該按鍵已經按下。
  • 基於C語言51單片機電子密碼鎖的設計與仿真
    電子密碼鎖通常使用ARM和單片機控制,單片機相對ARM實現較為簡單,功能較為完善,因此使用單片機控制較多。用單片機控制的窖碼鎖常使用彙編語言編寫程序,顯示器多數用。而本文所介紹的電子密獁鎖使用移植性及可讀性強的高級語言C語言編寫,便於修改和增減功能蚤同時採用顯示清楚數碼管,功率消耗小而且壽命長的 液晶顯示器,顯示更加直觀,使用更加方便。
  • 基於C語言STC89C52單片機電子密碼鎖的設計與仿真
    它採用高可靠性的STC89C52單片機來實現開鎖和密碼的識別,採用具備I2C總線接口的E2PROM晶片來完成密碼的存儲,通過1602液晶顯示器提示程序運行狀態和使用步驟,利用蜂鳴器模擬報警,發光二極體模擬鎖的開關。該系統用C語言編寫程序,與彙編語言相比具備更好的移植性和可讀性,便於修改和增減功能。
  • 單片機 4*4 矩陣鍵盤應用
    在單片機按鍵使用過程中,當鍵盤中按鍵數量較多時 為了減少埠的佔用通常將按鍵排列成矩陣 形式如下圖所示,在矩陣式鍵盤中 每條水平線和垂直線在交叉處不直接連通而是通過一個按鍵加以連接,到底這樣做是出意何種目的呢?
  • 單片機視頻教程
    :http://www.eepw.com.cn/article/274018.htm一、單片機視頻教程- -銳志51單片機開發板  銳志51單片機開發板視頻教程網址為:http://v.eepw.com.cn/video/playlist/id/4269  是廣大電子愛好者自學51單片機的好去處
  • PIC單片機C語言程序設計(4)
    b) c=b ;  ∥滿足a>b,將b 賦值給c  else c=a ;  ∥ 不滿足a>b 時, 將a 賦值給c  例2:若比較兩個整量a、b,要求其大者送x,即可用if 語句實現;讀者在閱讀一些書籍上的單片機C 語言程序時,會遇到條件語句的一種簡化形式,其格式如下:  表達式1 ?表達式2 ;表達式3  如以上if 語句的形式⑵中的例2,即可簡化為條件表達式的賦值語句;
  • 【愛找茬】都是C語言,單片機C語言和普通的C語言究竟有什麼差異呢?
    許多小夥伴在學完C語言後想入門單片機,但學著學著發現明明都是C語言,為什麼單片機C語言和我當初學的C語言有差異呢?今天小編就來梳理我們平時所學的C語言與單片機C語言的有什麼樣的不同。
  • 單片機4×4矩陣鍵盤設計方案
    連接4×4矩陣鍵盤,並以單片機的P3.0-P3.3各管腳作輸入線,以單片機的P3.4-P3.7各管腳作輸出線,在數碼管上顯示每個按鍵 「0-F」的序號。  圖14.2 4×4矩陣式鍵盤識別電路原理圖  3、電路硬體說明  (1)在「單片機系統」區域中,把單片機的P3.0-P3.7埠通過8聯撥動撥碼開關JP3
  • 單片機小製作,DIY表情矩陣
    本製作的目的是做一個8×8的顯示矩陣,可以用來顯示錶情或者字符。DIY出來後裝在工作的座位旁邊,不同心情的時候按下按鍵能夠顯示不同的表情。在這個實驗裡,我沒有使用外圍的晶片,直接用89C51單片機來控制LED矩陣(89C51有32個數據引腳)。顯示的原理也是行掃描,由於這個掃描時間很快,眼睛分辨不出來,所以陣列還是靜止地顯示著某個圖形。硬體準備進行單片機應用實驗,首先需要有一臺單片機開發板和麵包板。
  • 51單片機教程(四):獨立-矩陣鍵盤應用與設計
    上講介紹並應用了單片機的串口通信,並給出了實例。從這一講開始將介紹單片機的外圍電路。這講向大家介紹單片機外接鍵盤電路,通過該講,讀者可以掌握單片機外接鍵盤的工作原理從而實現電路與程序設計。非編碼鍵盤按連接方式可分為獨立式和矩陣式兩種,其它工作都主要由軟體完成。由於其經濟實用,較多地應用於單片機系統中(本學習板也採用非編碼鍵盤)。  2. 按鍵的輸入原理  在單片機應用系統中,通常使用機械觸點式按鍵開關,其主要功能是把機械上的通斷轉換成為電氣上的邏輯關係。
  • 單片機C語言編程心得
    寫這個8*8按鍵程序的過程中,不管是在自己寫還是參考別人程序的過程中,發現自己對C語言有些基本知識點和編程規範有很多不懂的地方,有些是自己以前的編程習慣不好,有些就是基礎知識不紮實的表現,所以總結出來。
  • 單片機按鍵連接方法總結
    單片機在各種領域運用相當廣泛,而作為人機交流的按鍵設計也有很多種。不同的設計方法,有著不同的優缺點。而又由於單片機I/O資源有限,如何用最少的I/O口擴展更多的按鍵是我所研究的問題。
  • 數碼管顯示數字 5 C語言程序設計
    ,在高刷新頻率下,單片機的資源耗費很厲害,這樣單片機就不可以再進行大量的計算工作,實際上,單片機在刷新時,只需要周期性的改變GPIO口的狀態就可以了,剩下的時間其實都是在空轉的狀態下,我們能不能將這個空轉的狀態拿來用呢?
  • 單片機的C語言中數組的用法
    數組在C51語言的地位舉足輕重,因此深入地了解數組是很有必要的。下面就對數組進行詳細的介紹。(1)一維數組本文引用地址:http://www.eepw.com.cn/article/201611/320327.htm一維數組是最簡單的數組,用來存放類型相同的數據。數據的存放是線性連續的。
  • 單片機C語言如何產生隨機數
    ,當然產生隨機數的方法有很多,當中有一個就是利用單片機定時器,取出未知的定時器THX和TLX的值,再加以運算得到一個規定範圍內的隨機數值。C語言提供了一些庫函數來實現隨機數的產生。 C語言中有三個通用的隨機數發生器
  • 51單片機系列連載8—獨立鍵盤與矩陣鍵盤
    在前面我們講的都是向單片機中向外輸出數據,今天我們開始介紹一下如何向單片機裡面輸入數據,也就是鍵盤。本文引用地址:http://www.eepw.com.cn/article/201611/322440.htm鍵盤有兩種,獨立式鍵盤與行列式矩陣鍵盤。
  • 單片機C語言如何產生隨機數?
    隨機數在單片機的應用中也是很多的,當然產生隨機數的方法有很多,當中有一個就是利用單片機定時器,取出未知的定時器C語言提供了一些庫函數來實現隨機數的產生。C語言中有三個通用的隨機數發生器,分別為rand函數、random函數、randomize
  • 單片機遊戲設計之貪吃蛇用C語言也是有可能的
    在單片機中,以往我看到前輩們學長們做貪吃蛇的時候不是用彙編就是用FPGA語言編寫。那我就在想,C語言可是最簡單的語言。怎麼不用C語言寫呢。首先我們必須要知道。在設計單片機遊戲時。我們要知道設計遊戲的概念,對於大部分單片機+LCD的遊戲設計,基本採用前後臺方式,就是一個臺中斷,一個臺循環 ,LCD部分基本是以固定點陣形式設計,什麼叫固定點陣??
  • PIC單片機C語言程序設計(5)
    在《電子製作》2009年第10期,《PIC單片機C語言程序(1)》的延時函數中,我們已用過後綴運算符i++,大家可以從中體會其用法。  (2)邏輯運算符。  邏輯運算符是基本運算符中的一種。邏輯運算符有:與「&&」、或「||" 、非「!」等3三種。  邏輯運算符&&、||為雙目(兩個量)運算符,!為單目運算符。