• 沒有找到結果。

基本輸入介紹:

N/A
N/A
Protected

Academic year: 2022

Share "基本輸入介紹: "

Copied!
4
0
0

加載中.... (立即查看全文)

全文

(1)

微處理機實習補充教材_按鍵輸入介紹 講義製作:吳進誠

日期:2005/10/19 第 1 頁

PIC16F877 課程內容:微處理器輸入介紹

基本輸入介紹:

單晶片的輸入的有很多形式,任何外部的信號源皆可成為單晶片輸入的依據。最普遍就 屬於按鍵(BUTTON)輸入。在單晶片的應用中,像光感測元件 Cds、溫度感測元件等類比元件,

則需進行 A/D 轉換後,才可給微處理機當做輸入信號使用。所以,若要成為單晶使用的輸入 信號一定要為數位信號,包含邏輯 0(又稱 0 伏)或邏輯 1(2.5 伏以上)才可。至於輸出電路方面,

最常見的為 LED 或七段顯示器。

按鍵輸入電路與提昇電阻介紹:

一般而言,按鍵的兩端常接於輸入端與接地間(如圖所示)。平時按鍵是處於開路狀態,

微處理會偵測到高電位(例如 RESET 按鍵,平時為 VDD,5V),當使用者按下,就成為短路 狀態,則微處理器的輸入端就偵測到低電位信號(0V)。由此可知,按鍵在按下與沒有按下之 間剛好為高低電位的改變,也就是 1 與 0 的狀態變化。如何去偵測這個改變,就需使用者寫 程式去偵測。

PIC 16F877 PORTD,0

SW

<程式範例>有二個按鍵分別接 PORTD,0 及 PORTD,1 5V 以下程式即利用輪詢的方法,偵測按鍵情況。

R=10KΩ

EX:

BTFSS PORTD,0

GOTO ADD ;;執行加法副程式 BTFSS PORTD,1

GOTO SUB ;;執行減法副程式

GOTO EX ;;繼續偵測按鍵狀況

何謂提昇電阻(Pull up resistor):

為避免雜訊的干擾,一般在按鍵輸入時,會接一個電阻來將輸入端的電壓提高到高電位 (VDD),這個電阻就稱為提昇電阻。如圖中的 R(10KΩ)。常用的提昇電阻大約為 1K~100K Ω之間。在 PIC16F877 中 PORTB 就內建提昇電阻。

以上的方法適用於較少的輸入端,若有較多的輸入時,這種每個按鍵就佔一個 I/O 接點

的方式,可能就不適合(由於單晶的 I/O 接點是有限的)。如何改善需要大量輸入,而又可節省

輸入 I/O 接點呢?那就需將按鍵採陣列排列的方式,利用掃描方法依序去檢查每個開關。例

如電腦的鍵盤即採用這樣的方式。

(2)

微處理機實習補充教材_按鍵輸入介紹 講義製作:吳進誠

日期:2005/10/19 第 2 頁

陣列鍵盤介紹:

常見的陣列鍵盤有 4X4 如下圖所示的鍵盤。

0 1 2 3

4 5 6 7

0 4 8 C

1 5 9 D

2 6 A E

3 7 B F

0 1 2 3 4 5 6 7

0 4 8 C

1 5 9 D

2 6 A E

3 7 B F

2 .2 K

2 .2 K

2 .2 K

2 .2 K V c c

如何來控制陣列鍵盤呢?在微電腦控制系統中,鍵盤信號的處理,可分為軟體編碼及鍵盤 解碼IC。軟體編碼是採用寫程式去偵測鍵盤那一列,那一行信號變化。再轉換成該行該列 所對應的按鍵值。而利用解碼IC則採用74922/74923,來進行按鍵解碼。

使用方法:4x4矩陣鍵盤有4行4列,因此共需8條I/O線。比採用線性編碼減少I/O線數。電路中 0~3為行,接至微處理器的輸出埠,接受掃瞄信號。4~7為列,接至微處理機輸入埠。2.2K 電阻為提昇電阻,使4~7平時即保持在Hi電位。若所採用的微電腦輸入埠內部己具有提昇電 腦,則可省略。

以下即利用2x2的陣列鍵盤方式(如下圖所示),寫一程式來控制2X2鍵盤。

VDD

R1

R2

SW1 SW2

SW3 SW4

RD,0 RD,1 RD,2 RD,3

PIC16F877

;;程式說明:將四個按鍵開關排成陣列方式,當按SW0時,程式執行ADD加法副程式,

;;按SW1時程式執行減法SUB副程式,按SW2時執行乘法MUL副程式

;;按SW3則執行除法DIV副程式

;;鍵盤I/O規劃為RD,0及RD,1為輸出端,而RD,2及RD,3為輸入端

;;所以TRISD規劃要先完成以下設定 BSF STATUS,RP0 ;;選擇BANK1 BCF TRISD,0 ;;設RD,0為輸出 BCF TRISD,1 ;;設RD,1為輸出 BSF TRISD,2 ;;設RD,2為輸入

(3)

微處理機實習補充教材_按鍵輸入介紹 講義製作:吳進誠

日期:2005/10/19 第 3 頁

BSF TRISD,3 ;;設RD,3為輸入 BCF STATUS,RP0 ;;選擇回到BANK0

;;利用掃描方式,進行鍵盤掃描,利用輪詢的方式,去偵測所有開關

;;;先掃描縱的第一行 KEY_CHECK:

BCF PORTD,0 ;;將RD,0設為低電位輸出

BSF PORTD,1 ;;將RD,1設為高電位輸出,以免干擾造成錯誤 BTFSS PORTD,2 ;;檢查SW2有沒有被按下

GOTO SUB ;;如被按,會得到一個低電位,則執行減法SUB BTFSS PORTD,3 ;;由於SW2沒有被按,故可繼續檢查SW3有沒有被按下 GOTO MUL ;;如SW3被按,會得到一個低電位,則執行乘法MUL

;;;若縱的第一行,沒有偵測任何開關被按下,則繼續檢查縱的第二行 BSF PORTD,0 ;;將RD,0設為高電位輸出,不要忘記

BCF PORTD,1 ;;;將RD,1設為0(低電位),以便檢查縱第二行的開關 BTFSS PORTD,2 ;;;檢查SW1有沒有被按下

GOTO ADD ;;;如SW1被按,會得到一個低電位,則執行加法ADD BTFSS PORTD,3 ;;;檢查SW4有沒有被按下

GOTO DIV ;;;如SW4被按,會得到一個低電位,則執行除法DIV GOTO KEY_CHECK ;;;若所有開關都沒有被按,則回到KEY_CHECK繼續偵測

;;

以上的方法,即可解決 2x2 陣列鍵盤輸入的問題。由於一般按鍵都屬於机械式的按鍵開 關,所以當使用按下按鍵時,免不了會因為機械的簧片來回振盪,而產生所謂彈跳的問題。

以下即針對彈跳問題有做個說明及改善方法。

彈跳的問題:

H i H i

L o

按 鍵 彈 跳 約

5 ~ 1 0 m s 按 鍵 彈 跳

一般而言,機械按鍵彈跳的產生是無法避免的,只是長短的問題而己。無論如何,彈跳 都會在 20mS 內結束而趨於穩定。要不要消除彈跳現象,就必須與應用的對象來做判斷。通 常,若按鍵是和〞計數〞有關的應用時,為怕彈跳造成計數的錯誤,就必須對消除彈跳對電 路的影響。

改善彈跳的方法:

消除彈跳的方法有很多種,但可分為硬體及軟體消除彈跳二大類。硬體方面可採用正反

(4)

微處理機實習補充教材_按鍵輸入介紹 講義製作:吳進誠

日期:2005/10/19 第 4 頁

器、鎖相迴路等數位邏輯電路來消除。而軟體消除的方式,則需利用程式設計來想方法。由 於按鍵時所產生的彈跳時間不超過 20mS,因此,當單晶片偵測到按鍵電路邏輯改變時(1->0) 時,立刻延遲 20mS 後再執行按鍵所要執行的工作即可。當然,不是每按鍵彈跳時間都要 20mS 時間,可根據自己使用的情形來做判斷。

;;程式範例:加入消除彈跳的程式方法

;;方法(一),一段式檢查法

5V PORTD,0

EX1:

PIC 16F877 R=10KΩ

BTFSC PORTD,0 ;;;利用 BTFSC 偵測按鍵狀態 GOTO EX1 ;;;高電位繼續偵測

CALL DELAY_20MS ;;;低電路則執行 20mS 延遲程式

…… SW

;;方法(二),採用 DOUBLE CHECK 二段式檢查法 EX2:

BTFSC PORTD,0 ;;;偵測 PORTD,0 的電位狀態 GOTO EX2 ;;;若仍高電位,則繼續偵測

EX_CHECK: ;;;若偵測到低電位,代表按鍵被按下 CALL DELAY_20MS ;;;延長 20MS 時間來消除彈跳

BTFSS PORTD,0 ;;;檢查按鍵是否己經穩定,回到高電位

GOTO EX_CHECK ;;;若沒有,代表按鍵仍處於彈跳狀態,回到 EX_CHECK 繼續延長等待 ……… ;;;.程式繼續執行按鍵所要的工作

結論:

學會如何應用及處理輸入信號,對整個單晶使用者而言,是相當重要的一環。舉例來說,

去逛夜市時,相信大家都會看到有一種遊戲機台,是丟乒乓球進入不同的洞內,有的洞得 5 分,有些洞進入則得 10 分..等等,分數再由前方的矩陣式 LED 顯示出來。像這種遊戲機 就是單晶的輸入及輸出的應用而己。看到這裡,大家也應明白,要設計像夜市這樣功能的遊 戲機本身並不是太困難的事,端看各位用心程度而己。

歡迎光臨

顯示畫面

乒乓丟入孔

夜市遊戲機台

參考文獻

相關文件

若使用一個內電阻為 200kΩ的伏特計去 量測 a-b

2.可變電阻器:可透過手動旋轉控制,以調整不同電阻 值值之電阻器,稱為可變電阻器 (Variable Resistor), 如果使用碳膜可變電阻器,瓦特數較差,因此它適合小

[r]

可變電阻(Variable Resistance)是 一個標準的類比元件,它可以依照我 們旋轉旋鈕的變化產生不同的電阻值.

在使用光敏電阻前,我們先要簡單的測試一下他的電阻對光的反應。光源就利用一個紅 光LED,串聯一個精密1kΩ電阻,如圖1.5之光源部分,測量V sense

在使用光敏電阻前,我們先要簡單的測試一下他的電阻對光的反應。光源就利用一個紅 光LED,串聯一個精密1kΩ電阻,如圖1.2之光源部分,測量V sense

由於輸出之霍爾電壓較小,請同學自行設計一放大電路(利用運算放大器 uA741 與適當電阻),將輸出之霍爾電壓放大 10~100 倍後輸入數位電表讀 得訊號,..

由於輸出之霍爾電壓較小,請同學自行設計一放大電路(利用運算放 大器 uA741 與適當電阻),將輸出之霍爾電壓放大 10~100 倍後輸入數位電表 讀得訊號,並記錄當輸入電壓為