導航:首頁 > 操作系統 > 單片機掃描

單片機掃描

發布時間:2022-04-27 07:41:44

❶ 誰能詳細說下單片機按鍵掃描呀

#include"regx52.h"
sbit KeyOne = P1^0 ;
sbit KeyTwo = P1^1 ;
sbit KeyThree = P1^2 ;
sbit KeyFour = P1^3 ;
#define uint16 unsigned int
#define uint8 unsigned char
#define NOKEY 0xff
#define KEY_WOBBLE_TIME 500 //去抖動時間(待定)
#define KEY_OVER_TIME 15000
//等待進入連擊時間(待定),該常數要比正常
//按鍵時間要長,防止非目的性進入連擊模式
#define KEY_QUICK_TIME 1000 //等待按鍵抬起的連擊時間(待定)
void v_KeyInit_f( void )
{ KeyOne = 1 ; //按鍵初始化(相應埠寫1)
KeyTwo = 1 ;
KeyThree = 1 ;
KeyFour = 1 ;
}
uint8 u8_ReadKey_f(void)
{ static uint8 LastKey = NOKEY ; //保存上一次的鍵值
static uint16 KeyCount = 0 ; //按鍵延時計數器
static uint16 KeyOverTime = KEY_OVER_TIME ; //按鍵抬起時間
uint8 KeyTemp = NOKEY ; //臨時保存讀到的鍵值
KeyTemp = P1 & 0x0f ; //讀鍵值
if ( KeyTemp == 0x0f )
{ KeyCount = 0 ;
KeyOverTime = KEY_OVER_TIME ;
return NOKEY ; //無鍵按下返回NOKEY
}
else
{
If ( KeyTemp == LastKey ) //是否第一次按下
{
if( ++KeyCount == Y_WOBBLE_TIME )
//不是第一次按下則判斷//抖動是否結束
{
return KeyTemp ;
//去抖動結束,返回鍵值
}
else
{
if( KeyCount > KeyOverTime )
{
KeyCount = 0 ;
KeyOverTime = KEY_QUICK_TIME ;
}
return NOKEY ;
}
}
else
//是第一次按下則保存鍵值,以便下次執行此函數時與讀到的鍵值作比較
{
LastKey = KeyTemp ; //保存第一次讀到的鍵值
KeyCount = 0 ; //延時計數器清零
KeyOverTime = KEY_OVER_TIME ;
return NOKEY ;
}
}
}

❷ C51單片機按鍵掃描

1.設置一個狀態變數,如flag,定義flag=0為開狀態,flag=1為關狀態。
2.因為是按鍵(不是開關),所以實際上單片機讀取的應該是脈沖形式的輸入。設按鍵接單片機P01引腳,故可採用以下程序實現按鍵掃描
if(P01==0)//按下按鍵,進入下降沿
{
delay2();//20ms延時去按鍵前抖動
while(P01==0);//等待上升沿到
來,即按鍵彈起
flag=~flag;//flag取反,實現狀態切換
}
void
delay2()//20ms延時子程序
{
unsigned
char
i,k;
for(i=0;i<100;i++)
for(k=0;k<100;k++);
}
註:根據按鍵的具體接法,若按下按鍵向單片機輸入低電平,則採用以上程序;若按下按鍵向單片機輸入高電平,則將兩處P01==0均改為P01==1。

❸ 單片機控制的LED動態掃描顯示原理

現已DS8為個位來討論,十、百、千為分別為DS7、DS6、DS5。 1、首先要了解的是此數碼管為共陰極數碼管,即三極體Q16、Q15、Q14、Q13導通時數碼管才能點亮,亦即相應的單片機P23、P22、P21、P20為低電平。 2、動態掃描顯示原理如下: (1)P23、P22、P21、P20輸出高電平,關閉所有數碼管; (2)顯示個位——把要顯示的數據送到P10~P17,P23送低電平,延時5豪秒(時間不能太長,否則數碼管會閃爍),P23送高電平; (3)顯示十位——把要顯示的數據送到P10~P17,P22送低電平,延時5豪秒(時間不能太長,否則數碼管會閃爍),P22送高電平; (4)顯示百位——把要顯示的數據送到P10~P17,P21送低電平,延時5豪秒(時間不能太長,否則數碼管會閃爍),P21送高電平; (5)顯示千位——把要顯示的數據送到P10~P17,P20送低電平,延時5豪秒(時間不能太長,否則數碼管會閃爍),P20送高電平。 (6)以此順序循環,把它做成子程序,在主循環中調用。

❹ 單片機中 掃描周期是什麼啊

單片機的掃描周期就是單片機開機後進入運行狀態後,單片機運行主程序所需的時間,因為主程序是一個「死循環」,循環完成一次所需要的時間就是該單片機系統的掃描周期。一般在ms級別。

❺ 單片機實現一個鍵盤掃描的過程中要注意哪些事項

摘要 鍵盤由行線列線交叉而成。列線接有上拉電阻。對第一行的行線置0,然後讀取列線碼,如果所有列線都是1說明買有被按下的鍵,繼續掃描下一行。直到能讀到0為止,讀到0時所掃描的行就是該鍵的行碼,而0所在的位是列碼。一般的鍵盤掃描都做成中斷形式,把列線所有線相與,只要有一個0就輸出0,將這個信號送給中斷,就可以實現在有鍵被按下時開啟掃描了。

❻ 單片機 按鍵掃描,下面完成什麼功能求注釋一下,一定採納

getk: clr p2.4 ;將P2.4口 清0(置0)
mov p0,#0ffh;給P0口傳遞數據FFH,1111 1111 即把P0口全部置1,用於掃描按鍵因為51 單片機的IO只能檢測低電平,所以要先將IO置為1,才能檢測按鍵按下後對0導通
nop ;這個不用解釋了吧,空操作佔用1個機器周期,用於簡單的延時一下,以便讓P0口電平
nop ;穩定
mov a,p0 ;將P0口的狀態傳遞給A寄存器。這期間如果P0口有按鍵按下他的狀態會變成0比
如P0.0的按鍵按下,那傳給A的狀態就是1111 1110,16進制的#0FEH
cpl a ;將A寄存器取反原來為1的現在為0 如上行所示就變成了0000 0001,16進制的#01H
anl a,#1fh;與操作,用於保留A寄存器的低5位數據,防止別的信號影響到結果(同時也說 明按鍵接在P0口的低5位。另外結果實際保存在了A寄存器中)
setb p2.4 ;在將P2.4置位,即讓P2.4口輸出1高電平
ret ;子程序返回
這段程序用於掃描P0的低5位的按鍵,哪個按下,最後變為那個位為1輸出。結果保存在A寄存器中,另外A寄存器的高3位即位7,6,5這3位恆為0.因為 這句anl a,#1fh;已經把高位清零了。
至於P2.4口應該如樓上所說的用於控制244,373等鎖存器用途。因為P0口的低5位應該同時還接又別的器件。用鎖存器防止干擾

❼ 單片機掃描電路原理

單片機行列式鍵盤掃描原理如下:

1、行線P10~P13為輸出線,列線P14~P17為輸入線。一開始單片機將行線(P10~P13)全部輸出低電平,此時讀入列線數據,若列線全為高電平則沒有鍵按下,當列線有出現低電平時調用延時程序以此來去除按鍵抖動。

2、延時完成後再判斷是否有低電平,如果此時讀入列線數據還是有低電平,則說明確實有鍵按下。最後一步確定鍵值。當判斷確實有鍵按下之後,行線輪流輸出低電平,根據讀入列線的數據可以確定鍵值。

3、單片機將P10輸出為低電平,其它P11~P13輸出高電平,此時讀取列線的數據全為高電平,說明沒有在第一行有鍵按下;其次,單片機將P11輸出低電平,其它P10、P12、P13仍為高電平。

4、此時再來讀取列線數據,發現列線讀到的數據有低電平,數值為1011(0x0B),如果我們的鍵盤布局已經確定,那麼0x0B就代表S5的值了。轉到S5鍵功能處理子程序就可以達到目的。

(7)單片機掃描擴展閱讀

單片機學習方法

1、基礎理論知識學習

基礎理論知識包括模擬電路、數字電路和C語言知識。。在學習單片機之前,覺得模擬電路和數字電路基礎不好的話,不要急著學習單片機,應該先回顧所學過的模擬電路和數字電路知識,為學習單片機加強基礎。

2、單片機實踐

准備一台電腦、一塊單片機開發板、一套視頻教程、一本單片機教材和一本C語言教材。電腦是用來編寫和編譯程序,並將程序代碼下載到單片機上;開發板來運行單片機程序,驗證實際效果。

❽ 單片機在掃描是否有鍵按下時,為什麼要做這么多次的判斷有什麼作用,尋找大俠~我是菜鳥~

是為了防止鍵盤抖動,鍵盤抖動的時間是很短的,通過延時一段時間後,如果再判斷鍵盤是按下的,這是才真正能說明鍵盤按下了,相反,則是抖動,不能說明鍵盤按下!
所以,軟體中一般都需要兩次判斷鍵盤按下!
第一次之後,加段延時,之後再判斷

❾ 單片機掃描程序

你把key的初始化(第一行 unsigned char key=0)不要放在循環裡面,因為每次都要執行這條語句,所以key的值始終未0,所以只能顯示第一位
你把 unsigned char key=0;這條語句放到 while(1)循環外邊就可以了

❿ 單片機行列式鍵盤掃描原理

單片機行列式鍵盤掃描原理如下:

1、行線P10~P13為輸出線,列線P14~P17為輸入線。一開始單片機將行線(P10~P13)全部輸出低電平,此時讀入列線數據,若列線全為高電平則沒有鍵按下,當列線有出現低電平時調用延時程序以此來去除按鍵抖動。

2、延時完成後再判斷是否有低電平,如果此時讀入列線數據還是有低電平,則說明確實有鍵按下。最後一步確定鍵值。當判斷確實有鍵按下之後,行線輪流輸出低電平,根據讀入列線的數據可以確定鍵值。

3、單片機將P10輸出為低電平,其它P11~P13輸出高電平,此時讀取列線的數據全為高電平,說明沒有在第一行有鍵按下;其次,單片機將P11輸出低電平,其它P10、P12、P13仍為高電平。

4、此時再來讀取列線數據,發現列線讀到的數據有低電平,數值為1011(0x0B),如果我們的鍵盤布局已經確定,那麼0x0B就代表S5的值了。轉到S5鍵功能處理子程序就可以達到目的。

(10)單片機掃描擴展閱讀

單片機學習方法

1、基礎理論知識學習

基礎理論知識包括模擬電路、數字電路和C語言知識。。在學習單片機之前,覺得模擬電路和數字電路基礎不好的話,不要急著學習單片機,應該先回顧所學過的模擬電路和數字電路知識,為學習單片機加強基礎。

2、單片機實踐

准備一台電腦、一塊單片機開發板、一套視頻教程、一本單片機教材和一本C語言教材。電腦是用來編寫和編譯程序,並將程序代碼下載到單片機上;開發板來運行單片機程序,驗證實際效果。

閱讀全文

與單片機掃描相關的資料

熱點內容
反詐騙app怎麼找回密碼 瀏覽:631
java方法和函數 瀏覽:420
程序員衣服穿反 瀏覽:959
java多類繼承 瀏覽:159
怎麼用多玩我的世界連接伺服器地址 瀏覽:483
為什麼華為手機比安卓流暢 瀏覽:177
javamap多線程 瀏覽:228
卡西歐app怎麼改時間 瀏覽:843
jquery壓縮圖片 瀏覽:970
用紙筒做解壓東西 瀏覽:238
神奇寶貝伺服器如何tp 瀏覽:244
雲伺服器支持退貨嗎 瀏覽:277
貸款等額本息演算法 瀏覽:190
根伺服器地址配置 瀏覽:501
單片機是軟體還是硬體 瀏覽:624
vivo手機怎麼看編譯編號 瀏覽:320
塑鋼扣條演算法 瀏覽:301
linux應用程序安裝 瀏覽:414
linux怎麼查找命令 瀏覽:431
安卓12原生和非原生是什麼意思 瀏覽:277