導航:首頁 > 操作系統 > 單片機中的按鍵

單片機中的按鍵

發布時間:2023-07-22 12:48:58

A. 單片機button是什麼

單片機button是按鍵開關。buttonn對話框中的一種圖形元素。當激活它時,能執行指定的功能。用戶可以採用以下方法來激活按鈕,用滑鼠在其上單擊,或者當按鈕獲得聚焦時按下Return或Enter鍵。

滑鼠上的一個活動片,用於激活一些功能。舊式的滑鼠模型只有一個按鈕,新式一般有兩個或更多個按鈕。

單片機功能

單片機SingleChipMicrocomputer是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種IO口和中斷系統、定時器。

計數器等功能可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、AD轉換器等電路集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到現在的300M的高速單片機。

B. 單片機按鍵功能

按鍵按照結構原理可分為兩類,一類是觸點式開關按鍵,如機械式開關、導電橡膠式開關等;另一類是無觸點式開關按鍵,如電氣式按鍵,磁感應按鍵等。前者造價低,後者壽命長。目前,微機系統中最常見的是觸點式開關按鍵。


2.輸入原理



在單片機應用系統中,除了復位按鍵有專門的復位電路及專一的復位功能外,其它按鍵都是以開關狀態來設置控制功能或輸入數據的。當所設置的功能鍵或數字鍵按下時,計算機應用系統應完成該按鍵所設定的功能,鍵信息輸入是與軟體結構密切相關的過程。

對於一組鍵或一個鍵盤,總有一個介面電路與CPU相連。CPU可以採用查詢或中斷方式了解有無將鍵輸入,並檢查是哪一個鍵按下,將該鍵號送入累加器ACC,然後通過跳轉指令轉入執行該鍵的功能程序,執行完後再返回主程序

C. 單片機的獨立按鍵

#include<reg51.h> // 4*4 按鍵+數碼管模擬,可以參考。

#define uchar unsigned char

uchar temp;

int key1,key,disbuf;// 此表為 LED 的字模 0 1 2 3 4 5 6 7 8 9 a b c d e f

unsigned char code LED7Code[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};

unsigned char ledx[8];

bit s0,s1;

void delay(uchar z)

{

uchar i,j;

for(i=0;i<120;i++)

for(j=0;j<z;j++);

}

void scan() //要是按鍵了,掃描鍵盤編碼值

{

P1=0xF0;

delay(1);

temp=P1;

switch(temp)

{

case 0xe0: key1=0;

break;

case 0xd0: key1=1;

break;

case 0xb0: key1=2;

break;

case 0x70: key1=3;

break;

}

P1=0x0f;

delay(1);

temp=P1;

switch(temp)

{

case 0x0E: key=key1+0;

break;

case 0x0D: key=key1+4;

break;

case 0x0B: key=key1+8;

break;

case 0x07: key=key1+12;

break;

default : key=-1;

}

if((key1+1)&&(key+1)) disbuf=key;

}

void ejjc() //判斷是否按鍵

{

P1=0xF0;

if(P1!=0xF0) { scan();s0=1;}

else { s0=0; s1=1;}

}

void main()

{

uchar i;

while(1)

{

ejjc();

if(s0==1 && s1==1)

{

s0=0;s1=0;

for(i=0;i<8;i++)

{ ledx[i]=ledx[i+1]; ledx[8]=disbuf; }

}

P0=0xff;

P2=LED7Code[ledx[0]];

P0=0xfe;

delay(5);

P0=0xff;

P2=LED7Code[ledx[1]];

P0=0xfd;

delay(5);

P0=0xff;

P2=LED7Code[ledx[2]];

P0=0xfb;

delay(5);

P0=0xff;

P2=LED7Code[ledx[3]];

P0=0xf7;

delay(5);

P0=0xff;

P2=LED7Code[ledx[4]];

P0=0xef;

delay(5);

P0=0xff;

P2=LED7Code[ledx[5]];

P0=0xdf;

delay(5);

P0=0xff;

P2=LED7Code[ledx[6]];

P0=0xbf;

delay(5);

P0=0xff;

P2=LED7Code[ledx[7]];

P0=0x7f;

delay(5);

}

}

D. 單片機怎樣識別按鍵值

一般的源值表如下,按鍵也對應如下
uchar
code
KeyCode[4][4]
=
{
//矩陣按鍵編號到標准鍵盤鍵碼的映射表
{
0x31,
0x32,
0x33,
0x26
},
//數字鍵1、數字鍵2、數字鍵3、向上鍵
{
0x34,
0x35,
0x36,
0x25
},
//數字鍵4、數字鍵5、數字鍵6、向左鍵
{
0x37,
0x38,
0x39,
0x28
},
//數字鍵7、數字鍵8、數字鍵9、向下鍵
{
0x30,
0x1B,
0x0D,
0x27
}};
//數字鍵0、ESC鍵、
回車鍵、
向右鍵

E. 簡述單片機獨立按鍵的任務分為幾步,分別是什麼

5步。分別是判斷按鍵是否按下,延時消抖,再次判斷按鍵是否按下,等待按鍵抬起,執行預定語句。
一種是普通io口,一種是中彈的形式,普通io口是按下按鍵觸發按鍵子程序案件,指程序經過一段時間的,比如20~50毫秒的延時再次毒案件,如果按鍵值還是會按下,那麼就延時等待按鍵抬起按鍵,抬起後執行按鍵程序,然後返回中彈也是一樣的,按下按鍵之後進入中段讀按鍵狀態,是否還是為按一下是按一下等待延時再讀等待,然後等待案件採取後執行相應的代碼,然後退出總代。

F. 單片機控制系統中,按鍵應如何連接不同連接方式,配置gpio工作模式時應如何

在單片機控制系統中,按鍵通常使用GPIO引腳連接,以便單片機能夠讀取按鍵的狀態並作出相應的響應。按鍵連接的方式通常有兩種:短接方式和上拉/下拉電阻方式。

G. 單片機的按鍵功能是什麼

你們知道單片機的每個按鍵的具體功能嗎?下面是我收集整理關於單片機的每個按鍵的具體功能的資料以供大家參考學習,希望大家喜歡。·

單片機的每個按鍵的具體功能介紹

鍵盤的分類:

鍵盤分編碼鍵盤和非編碼鍵盤。

鍵盤上閉合鍵的識別由專用的硬體編碼器實現,並產生鍵編碼號或鍵值的稱為編碼鍵盤,如計算機鍵盤;

而靠軟體編程來識別的稱為非編碼鍵盤。

在單片機組成的各種系統中,用的最多的是非編碼鍵盤。也有用到編碼鍵盤的。

非編碼鍵盤有分為:獨立鍵盤和行列式(又稱為矩陣式)鍵盤。

本文主要討論矩陣鍵盤(獨立鍵盤比較簡單可以與此類比),下面是矩陣鍵盤的電路連接圖。

如果單片機檢測到的是抖動部分,則無法按鍵判斷是否有效,所以我們需要加入防抖程序。

註:也可以通過硬體防抖,如上圖(b)。

功能:矩陣鍵盤

(按相應的按鍵,數碼管從0~F的顯示)

單片機:AT89S52

#include <reg52.h>

#define uint unsigned int

#define uchar unsigned char

sbit DAT=P0^3;

sbit CLK=P0^2;

uchar temp,h;

void delay(uint); //延遲程序

void sendbyte(uchar); //數碼管顯示

void keyscan(); //按鍵掃描

uchar code tab[]={

0xed,0x09,0xbc,0x9d,0x59,0xd5,

0xf5,0x0d,0xfd,0xdd,0x7d,0xf1,

0xe4,0xb9,0xf4,0x74,0x00} ; //0-F, 全滅

void main (void)

{

sendbyte(16); //初始時數碼管無顯示

while(1)

{

keyscan(); //按鍵掃描

}

}

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=100;y>0;y--);

}

void sendbyte(uchar byte)

{

uchar num,c;

num=tab[byte];

for(c=0;c<8;c++)

{

CLK=0;

DAT=num&0x01;

CLK=1;

num>>=1; //右移位賦值

}

}

void keyscan()

{

/*第一行按鍵的掃描*/

P2=0xfe; //確定第一行的按鍵有效

temp=P2; //將其賦給一個變數(處理I/O口時,一般先賦值給一個變數,然後通過處理變數來處理I/O口)

temp=temp&0xf0; //用於檢測第一行的哪個按鍵按下

while(temp!=0xf0) /*這個部分只要是用來消除按下抖動的*/

{

delay(5);

temp=P2;

temp=temp&0xf0;

while(temp!=0xf0) //這個地方,已經消除了按下抖動,P2口的值已經確定

{

temp=P2; //將P2口得值賦給變數

switch(temp) //這個switch語句,用來確定哪一個按鍵按下時,數碼管的顯示值

{

case 0x7e:h=0;

break; //這個break很重要,表示如果有匹配的值,就跳出switch語句,防止程序跳不出來。

case 0xbe:h=1;

break;

case 0xde:h=2;

break;

case 0xee:h=3;

break;

default : h=16;

break;

}

while(temp!=0xf0) /*這個部分只要是用來消除釋放抖動的*/

{

temp=P2;

temp=temp&0xf0;

}

sendbyte(h); //送給數碼管顯示

}

}

/*第二行按鍵的掃描*/

P2=0xfd;

temp=P2;

temp=temp&0xf0;

while(temp!=0xf0)

{

delay(5);

temp=P2;

temp=temp&0xf0;

while(temp!=0xf0)

{

temp=P2;

switch(temp)

{

case 0x7d:h=4;

break;

case 0xbd:h=5;

break;

case 0xdd:h=6;

break;

case 0xed:h=7;

break;

default : h=16;

break;

}

while(temp!=0xf0)

{

temp=P2;

temp=temp&0xf0;

}

sendbyte(h);

}

}

/*第三行按鍵的掃描*/

P2=0xfb;

temp=P2;

temp=temp&0xf0;

while(temp!=0xf0)

{

delay(5);

temp=P2;

temp=temp&0xf0;

while(temp!=0xf0)

{

temp=P2;

switch(temp)

{

case 0x7b:h=8;

break;

case 0xbb:h=9;

break;

case 0xdb:h=10;

break;

case 0xeb:h=11;

break;

default : h=16;

break;

}

while(temp!=0xf0)

{

temp=P2;

temp=temp&0xf0;

}

sendbyte(h);

}

}

/*第四行按鍵的掃描*/

P2=0xf7;

temp=P2;

temp=temp&0xf0;

while(temp!=0xf0)

{

delay(5);

temp=P2;

temp=temp&0xf0;

while(temp!=0xf0)

{

temp=P2;

switch(temp)

{

case 0x77:h=12;

break;

case 0xb7:h=13;

break;

case 0xd7:h=14;

break;

case 0xe7:h=15;

break;

default : h=16;

break;

}

while(temp!=0xf0)

{

temp=P2;

temp=temp&0xf0;

}

sendbyte(h);

}

}

閱讀全文

與單片機中的按鍵相關的資料

熱點內容
阿里雲伺服器網頁怎麼找到 瀏覽:958
數控車床如何進行自動編程 瀏覽:11
app網課視頻怎麼拷貝到電腦上 瀏覽:710
安卓國服光遇小王子季節什麼時候結束 瀏覽:537
恢復的音樂在哪個文件夾 瀏覽:595
qq傳輸文件夾壓縮包 瀏覽:911
sha1加密演算法java 瀏覽:232
單片機ds1302程序 瀏覽:738
杜比壓縮開還是關怎樣判斷 瀏覽:366
對象類型轉換java編譯和運行 瀏覽:284
行政命令是什麼 瀏覽:371
android調用系統郵件 瀏覽:33
測溫軟體app是如何實現的 瀏覽:585
江蘇伺服器機房按需定製雲主機 瀏覽:639
c程序員筆試 瀏覽:694
excel怎麼引用統一文件夾 瀏覽:249
怎麼把微信抖音加密 瀏覽:304
android滑動進度條 瀏覽:836
javagmt轉換 瀏覽:827
linux查看snmp 瀏覽:26