国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

單片機——矩陣按鍵模塊

這篇具有很好參考價值的文章主要介紹了單片機——矩陣按鍵模塊。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

主要目的
學(xué)會按鍵掃描
1.延時函數(shù)
延時函數(shù)部分詳見鏈接: 單片機控制一盞燈的亮與滅程序解釋

 void delay (uint k)		   //定義延時函數(shù)
 {
 uint i,j;
 for(i<0;i<k;i++)
    {
	for(j=0;j<113;j++)
	  {
	   ;
	  }
    }
 }

這個程序里面的延時函數(shù)的目的是按鍵消抖。
2.按鍵掃描模塊
這是本次實驗的重點,將詳細(xì)介紹。
先來觀察矩陣按鍵模塊的連接
單片機——矩陣按鍵模塊
總共8個口。
先實現(xiàn)關(guān)于列的掃描,設(shè)置初始值(0xf0),從高到低為

端口 Value
P3.7 1
P3.6 1
P3.5 1
P3.4 1
P3.3 0
P3.2 0
P3.1 0
P3.0 0

那么當(dāng)按下按鍵0,4,8,c時,P3.4變成了0,于是P3就變成了0xe0

端口 Value
P3.7 1
P3.6 1
P3.5 1
P3.4 0
P3.3 0
P3.2 0
P3.1 0
P3.0 0

從而由0xe0我們可以判斷是那一列按鍵按下,但還是不知道具體是哪一個按鍵按下,于是我們需要繼續(xù)進(jìn)行行掃描。
此時初始化P3

端口 Value
P3.7 0
P3.6 0
P3.5 0
P3.4 0
P3.3 1
P3.2 1
P3.1 1
P3.0 1

單片機——矩陣按鍵模塊
同時現(xiàn)在當(dāng)按鍵0按下后

端口 Value
P3.7 0
P3.6 0
P3.5 0
P3.4 0
P3.3 1
P3.2 1
P3.1 1
P3.0 0

經(jīng)過行列掃描之后就可以確定具體是哪個按鍵按下,有了上面的基礎(chǔ)之后,我們來學(xué)習(xí)按鍵掃描的程序。

void keyscan()   //這個實驗的重點
 { uchar a; 
   P3=0xf0;
   if(P3!=0xf0)
     {
	  delay(10);
	  if(P3!=0xf0)
	  {
	   P3=0xf0;		  //進(jìn)行列掃描
	   switch(P3)
	   {
	   case(0xe0):keynumber=0;break;	//11100000
	   case(0xd0):keynumber=1;break;//11010000
	   case(0xb0):keynumber=2;break;//10110000
	   case(0x70):keynumber=3;break;//01110000
	   }
	    P3=0x0f;
	   switch(P3)
	   {
	   case(0x0e):keynumber=keynumber;break;   //switch case后面是冒號
	   case(0x0d):keynumber=keynumber+4;break;
	   case(0x0b):keynumber=keynumber+8;break;
	   case(0x07):keynumber=keynumber+12;break;
	   }
	   
	  while ((a<50)&&(P3!=0x0f))
	  {
	  delay(10);
	  a++ ;
	  }	
	  }

	 }
   
  
 }

程序的邏輯是
讓P3的高四位為0,進(jìn)行列檢測,為什么是列檢測呢,很簡單,因為區(qū)分不出行。
如果按鍵按下,延時10ms,判斷是不是按鍵抖動,延時之后繼續(xù)判斷,發(fā)現(xiàn)仍然不為0xf0,說明按鍵確實按下了,然后還是給P3幅初始值0xf0,接下來進(jìn)行switch,case,不同P3情況下,對設(shè)置的keynumber進(jìn)行賦值,記得每一個case結(jié)束要加break。
只有列掃描,無法判斷是哪個按鍵按下,接下來進(jìn)行行掃描。
基本原理和上面一樣,但是注意按鍵值的變化。
最后當(dāng)兩個情況同時不成立后跳出循環(huán)。這兩個情況就是a>50和P3=0xf0,具體解釋就是a>50,按鍵還沒有松開,就認(rèn)為松開了,P3=0xf0按鍵按下之后松開了。
3.數(shù)碼管顯示模塊
這一部分也相對簡單,我的博客里面也有相應(yīng)的博文。在這里主要就是P0口接的是數(shù)碼管。這里進(jìn)行段選和位選。段選是根據(jù)keynumber的值,位選這里選了六個數(shù)碼管,則對應(yīng)11000000,再轉(zhuǎn)換為16進(jìn)制。
單片機——矩陣按鍵模塊

 void display(uchar num)
 {
   P0=table[num];
   duan=1;
   duan=0;
   P0=0xc0;//11000000
   wei=1;
   wei=0;
 }

4.主函數(shù)
主要是設(shè)置段和位初始狀態(tài),之后調(diào)用前面的按鍵掃描和數(shù)碼管顯示模塊。

 void main()
 {
 duan=0;
 wei=0;
 while(1)
 {
  keyscan();
  display(keynumber);
 }
 }

完整代碼

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int	   //注意宏定義不能加分號


sbit duan = P2^6; 
sbit wei = P2^7;

uchar keynumber; 
uchar code table[]=	{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
                        0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
 
 void delay (uint k)		   //定義延時函數(shù)
 {
 uint i,j;
 for(i<0;i<k;i++)
    {
	for(j=0;j<113;j++)
	  {
	   ;
	  }
    }
 }

  void keyscan()   //這個實驗的重點
 { uchar a; 
   P3=0xf0;
   if(P3!=0xf0)
     {
	  delay(10);
	  if(P3!=0xf0)
	  {
	   P3=0xf0;		  //進(jìn)行列掃描
	   switch(P3)
	   {
	   case(0xe0):keynumber=0;break;	//11100000
	   case(0xd0):keynumber=1;break;//11010000
	   case(0xb0):keynumber=2;break;//10110000
	   case(0x70):keynumber=3;break;//01110000
	   }
	    P3=0x0f;
	   switch(P3)
	   {
	   case(0x0e):keynumber=keynumber;break;   //switch case后面是冒號
	   case(0x0d):keynumber=keynumber+4;break;
	   case(0x0b):keynumber=keynumber+8;break;
	   case(0x07):keynumber=keynumber+12;break;
	   }
	   
	  while ((a<50)&&(P3!=0x0f))
	  {
	  delay(10);
	  a++ ;
	  }	
	  }

	 }
   
  
 }

  void display(uchar num)
 {
   P0=table[num];
   duan=1;
   duan=0;
   P0=0xc0;//11000000
   wei=1;
   wei=0;
 }

 void main()
 {
 duan=0;
 wei=0;
 while(1)
 {
  keyscan();
  display(keynumber);
 }
 }

運行結(jié)果
無法一一展示,這里只展示一部分。
單片機——矩陣按鍵模塊
好啦,今天矩陣按鍵模塊的學(xué)習(xí)就到這里啦。你學(xué)廢了嗎?有問題的話,歡迎共同交流。最近在準(zhǔn)備研究生復(fù)試,內(nèi)容比較粗糙,但個人比較喜歡有輸出的學(xué)習(xí)。以后有機會的話,會繼續(xù)更新完善的?。?!文章來源地址http://www.zghlxwxcb.cn/news/detail-478046.html

到了這里,關(guān)于單片機——矩陣按鍵模塊的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 藍(lán)橋杯單片機(三)矩陣按鍵

    藍(lán)橋杯單片機(三)矩陣按鍵

    上章說了獨立按鍵 藍(lán)橋杯單片機(二)獨立按鍵 這章說一下矩陣按鍵 所謂矩陣按鍵,就是每一個按鍵的兩端都同時由單片機的IO口進(jìn)行控制,如原理圖所示,上圖要想使用矩陣按鍵,就需要使用跳線帽將排針2引腳和1引腳連接在一起。 連接好了以后,這四排四列就可以看成四列

    2024年02月11日
    瀏覽(26)
  • 五、51單片機控制矩陣按鍵

    五、51單片機控制矩陣按鍵

    1.1、矩陣按鍵原理分析 這里矩陣按鍵為4*4的矩陣按鍵。 (1)矩陣按鍵橫向和縱向分割。 (2)按鍵兩端分別接不同的IO引腳。 (3)按鍵物理作用不變:按下按鍵兩端接通,彈起按鍵兩端斷開。 1.2、矩陣按鍵的工作過程 JP4接P3端口,JP4_8接P3^7...JP4_1接P3^0。 (1)IO端口(P3)先輸出0x0f,按鍵列

    2023年04月20日
    瀏覽(16)
  • 51單片機:數(shù)碼管和矩陣按鍵

    51單片機:數(shù)碼管和矩陣按鍵

    目錄 一:動態(tài)數(shù)碼管模塊 1:介紹 ?2:共陰極和共陽極 A:共陰極 B:共陽極 C:轉(zhuǎn)化表 ?3:74HC138譯碼器 4:74HC138譯碼器控制動態(tài)數(shù)碼管(位選) 5:數(shù)碼管顯示完整代碼 6:74HC573鎖存器 A:基本點 B:原理圖介紹 c:74HC573控制數(shù)碼管代碼 二:矩陣按鍵模塊 1:介紹 2:原理圖 ?3:矩陣按鍵代碼 ??????

    2024年02月15日
    瀏覽(26)
  • 51單片機——數(shù)碼管、按鍵、矩陣按鍵C語言入門編程

    51單片機——數(shù)碼管、按鍵、矩陣按鍵C語言入門編程

    目錄 數(shù)碼管: 1.靜態(tài)數(shù)碼管:第二位數(shù)碼管顯示0 2.動態(tài)數(shù)碼管:每一位數(shù)碼管依次顯示對應(yīng)位數(shù) 按鍵: 1.獨立按鍵:按下按鍵對應(yīng)LED亮滅 矩陣按鍵: 1.矩陣按鍵:按下的每個按鍵,數(shù)碼管顯示對應(yīng)鍵碼 ???????? 數(shù)碼管按段數(shù)可分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管

    2024年01月23日
    瀏覽(23)
  • 嵌入式51單片機04-矩陣按鍵系列

    嵌入式51單片機04-矩陣按鍵系列

    一、矩陣按鍵基礎(chǔ)知識 矩陣按鍵工作原理 : 逐行掃描 :通過高四位輪流輸出低電平來對矩陣鍵盤進(jìn)行掃描,當(dāng)?shù)退奈唤邮盏降臄?shù)據(jù)不全為1的時候,說明有按鍵按下,然后通過判斷低四位數(shù)據(jù)中哪一位為零來判斷哪一個按鍵被按下。 逐列掃描 :通過低四位輪流輸出低電平來

    2024年02月07日
    瀏覽(49)
  • 【51單片機】矩陣按鍵實現(xiàn)數(shù)碼管顯示

    【51單片機】矩陣按鍵實現(xiàn)數(shù)碼管顯示

    閑的沒事看一看玩一玩········· 矩陣按鍵 數(shù)碼管是一種導(dǎo)體發(fā)光器件,其基本單元是發(fā)光二極管。按發(fā)光二極管單元連接方式可分為共陽極數(shù)碼管和共陰極數(shù)碼管 共陰極數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成共陰極的數(shù)碼管,共陰極的數(shù)碼管在應(yīng)用時將公共

    2024年02月02日
    瀏覽(24)
  • 51單片機設(shè)計16個按鍵的矩陣鍵盤

    51單片機設(shè)計16個按鍵的矩陣鍵盤

    首先如圖所示導(dǎo)入各個元器件,并連線。 因為P3口連接著矩陣鍵盤,所以上來要先付個初值,從高位到低位H0,H1,H2,H3,L0,L1,L2,L3的值是11110000,高位全是1,低位全是0,十六進(jìn)制就是0xF0,也就是P3=0xF0。如果有按鍵按下了,肯定就不是這個值了。 比如說: 第一行789+中的任何一個按

    2024年02月05日
    瀏覽(30)
  • 51單片機——矩陣按鍵實驗,小白講解,相互學(xué)習(xí)

    51單片機——矩陣按鍵實驗,小白講解,相互學(xué)習(xí)

    矩陣按鍵介紹: ????????獨立按鍵與單片機連接時,每一個按鍵都需要單片機的一個I/O 口,若某單片機系統(tǒng)需較多按鍵,如果用獨立按鍵便會占用過多的I/O 口資源.單片機系統(tǒng)中I/O 口資源往往比較寶貴,當(dāng)用到多個按鍵時為了減少I/O 口引腳,引入了矩陣按鍵。 ??????

    2024年02月12日
    瀏覽(21)
  • 藍(lán)橋杯單片機比賽學(xué)習(xí):3、獨立按鍵與矩陣按鍵的基本原理

    藍(lán)橋杯單片機比賽學(xué)習(xí):3、獨立按鍵與矩陣按鍵的基本原理

    首先我們看一下按鍵的原理圖,如圖1,當(dāng)J5中的2,3接在一起的時候,紅線標(biāo)注就是一個完整的電路圖,此時只有s4、s5、s6、s7按鍵可以使用,也就是獨立按鍵。例如:當(dāng)我們按下s4時, 電路導(dǎo)通,P33引腳被拉為低電平0 ,此時我們讀取P33引腳電平的高低就能判斷出哪個按鍵被按

    2024年02月06日
    瀏覽(21)
  • 單片機學(xué)習(xí)-使用矩陣按鍵來顯示數(shù)碼管0-F

    單片機學(xué)習(xí)-使用矩陣按鍵來顯示數(shù)碼管0-F

    1、行列掃碼 //數(shù)碼管字摸 u8 gsmg_code[17] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, ?? ??? ??? ??? ??? ??? ?0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};?? ? ?//共陰 顯示0-F 2、線翻轉(zhuǎn)掃描

    2024年02月04日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包