蔡正科2014行列是鍵盤第六次課等_第1頁
蔡正科2014行列是鍵盤第六次課等_第2頁
蔡正科2014行列是鍵盤第六次課等_第3頁
蔡正科2014行列是鍵盤第六次課等_第4頁
蔡正科2014行列是鍵盤第六次課等_第5頁
已閱讀5頁,還剩60頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 鍵盤由一組規則排列的按鍵組成,一個按鍵實際上是一個開關元件,也就是說鍵盤是一組規則排列的開關。單片機使用的按鍵是一種常開型的開關,平時按鍵的兩個觸點處于斷開狀態,按下鍵時它們才閉合。按 鍵 鍵盤輸入信息的主要過程如下:1)CPU判斷是否與鍵按下。2)確定按下的是哪一個鍵。3)把此鍵代表的信息翻譯成計算機所能識別的代碼,如ASCII或其他特征碼。 以上2)、 3)步主要由硬件完成,稱為編碼鍵盤;如果主要由軟件完成,則稱為非編碼鍵盤。 1 1、鍵盤的分類、鍵盤的分類 鍵盤分編碼鍵盤和非編碼鍵盤。 編碼鍵盤:鍵盤上閉合鍵的識別由專用的硬件編碼器實現,并產生鍵編碼號或鍵值的稱為編碼鍵盤,如BCD碼鍵

2、盤、ASCLL碼鍵盤等。 非編碼鍵盤:靠軟件來識別的稱為非編碼鍵盤。在單片機組成的測控系統及智能化儀器中,用的最多的是非編碼鍵盤。 非編碼鍵盤有分為:獨立式非編碼鍵盤和行列式非編碼鍵盤。獨立鍵盤檢測 如果系統只需幾個按鍵,可直接采用I/O線構成單個按鍵電路,各個按鍵之間相互獨立,一根線上的按鍵狀態不會影響其他輸入線上的工作狀態,又稱獨立式鍵盤接口電路。這種電路每個按鍵需要占用一根I/O線,在按鍵數量較多時,輸入口浪費大且電路結構很煩瑣,因此這種鍵盤接口電路只適用于按鍵較少或要求較高操作速度的場合。 檢測是否有鍵閉合,如有鍵閉合,則去除鍵抖動,判斷鍵號并轉入相應的按鍵處理。編寫單片機的鍵盤檢測程

3、序時,一般在檢測按下時加入去抖延時,檢測松手時就不用加了。按鍵在閉合和斷開時,觸點會存在抖動現象: 駕駛員操作命令 無操作右轉向操作左轉向操作故障緊急操作轉向燈狀態左轉燈滅滅閃爍閃爍右轉燈滅閃爍滅閃爍工作任務采用單片機制作一個模擬汽車左右轉向燈的控采用單片機制作一個模擬汽車左右轉向燈的控制任務!制任務!任務導入任務導入 汽車在不同位置都安裝有信號燈,它們是汽車駕駛員之間及駕駛員向行人傳遞汽車行駛狀況的表達工具,一般包括轉向燈、剎車燈、倒車燈、霧燈等,其中轉向燈包括左轉燈和右轉燈。本次任務是利用單片機設計一個模擬汽車左右轉向燈的控制系統。任務二任務二 汽車轉向燈控制汽車轉向燈控制表2-10 汽車

4、轉向燈顯示狀態 駕駛員命令駕駛員命令轉向燈顯示狀態轉向燈顯示狀態左轉向燈左轉向燈右轉向燈右轉向燈駕駛員未發出命令滅滅駕駛員發出左轉顯示命令閃爍滅駕駛員發出右轉顯示命令滅閃爍駕駛員發出汽車故障顯示命令閃爍閃爍任務分析駕駛員操作命令 無操作右轉向操作左轉向操作故障緊急操作轉向燈狀態左轉燈滅滅閃爍閃爍右轉燈滅閃爍滅閃爍任務分析:控制電路任務分析任務分析任務二任務二 汽車轉向燈控制汽車轉向燈控制表2-11 用開關模擬汽車運行狀態或顯示命令 駕駛員命令駕駛員命令開關狀態開關狀態S0(P3.0)S1(P3.1)駕駛員未發出命令00駕駛員發出左轉顯示命令10駕駛員發出右轉顯示命令01駕駛員發出汽車故障顯示命

5、令11控制要求:開關P3.0接+5V電壓時, 左轉向燈點亮, 開關P3.1接+5V電壓時, 右轉向燈點亮, P3.0 、P3.1同時接+5V電壓時,左、右轉向燈同時點亮,P3.0 、P3.1同時接地時,左、右轉向燈同時熄滅。 P1.0控制左轉向燈P1.1控制右轉向燈任務二任務二 汽車轉向燈控制汽車轉向燈控制表2-12 顯示狀態P1.0P1.1顯示方式顯示方式00全亮(故障)01左轉向燈亮右轉向燈滅10左轉向燈亮右轉向燈滅11左右轉向燈滅任務分析:程序流程模擬汽車轉向控制程序#include sbit P1_0=P10; /定義P1.0引腳位名稱為P1_0sbit P1_1=P11; /定義P1

6、.1引腳位名稱為P1_1sbit P3_0=P30; /定義P3.0引腳位名稱為P3_0sbit P3_1=P31; /定義P3.1引腳位名稱為P3_1void delay(unsigned char i); 模擬汽車轉向控制程序void main() bit left,right;/定義位變量left、right表示左、右狀態 while(1) left=P3_0;/讀取P3.0引腳的狀態并賦值給left right=P3_1;/讀取P3.1引腳的狀態并賦值給right P1_0=left;/將left的值送至P1.0引腳 P1_1=right;/將right的值送至P1.1引腳 delay

7、(200); P1_0=1;/將P1.0引腳置1輸出(熄滅LED) P1_1=1;/將P1.1引腳置1輸出(熄滅LED) delay(200); 任務實施任務實施圖2-25 汽車轉向燈控制流程圖 任務二任務二 汽車轉向燈控制汽車轉向燈控制選擇語句 基本if語句的格式如下:if (表達式) 語句組; if語句執行過程:當“表達式”的結果為“真”時,執行其后的“語句組”,否則跳過該語句組,繼續執行下面的語句。 選擇語句 pif語句中的“表達式”通常為邏輯表達式或關系表達式,也可以是任何其他的表達式或類型數據,只要表達式的值非0即為“真”。以下語句都是合法的: if(3) if(x=8) if(P3

8、_0)p在if語句中,“表達式”必須用括號括起來。p在if語句中,花括號“ ”里面的語句組如果只有一條語句,可以省略花括號。如“if (P3_0=0) P1_0=0;”語句,但是為了提高程序的可讀性和防止程序書寫錯誤,建議讀者在任何情況下,都加上花括號。選擇語句 if-else語句的一般格式如下:if (表達式) 語句組1; else 語句組2; if-else語句執行過程:當“表達式”的結果為“真”時,執行其后的“語句組1”,否則執行“語句組2” 選擇語句 if-else-if語句是由 if else 語句組成的嵌套,用來實現多個條件分支的選擇,其一般格式如下:if (表達式1) 語句組1;

9、 else if (表達式2) 語句組2; else if (表達式n) 語句組n; else 語句組n+1; 選擇語句 選擇語句 多分支選擇的switch語句, 其一般形式如下: switch(表達式) case常量表達式1: 語句組1;break; case常量表達式2: 語句組2;break; case常量表達式n: 語句組n;break; default : 語句組n+1; 該語句的執行過程是:首先計算表達式的值,并逐個與case后的常量表達式的值相比較,當表達式的值與某個常量表達式的值相等時,則執行對應該常量表達式后的語句組,再執行break語句,跳出switch語句的執行,繼續執行

10、下一條語句。如果表達式的值與所有case后的常量表達式均不相同,則執行default后的語句組。 獨立按鍵識別和控制獨立按鍵識別和控制LED點亮程序設計點亮程序設計要求開始時要求開始時LED均熄滅,隨后根據按鍵動作點亮相應均熄滅,隨后根據按鍵動作點亮相應LED,按鍵釋放后繼續保持直至新的按鍵按下為止。,按鍵釋放后繼續保持直至新的按鍵按下為止。電路如電路如下圖下圖由電路可知,接由電路可知,接于于P0.0-P0.3的任的任意一個按鍵按下意一個按鍵按下時,相應端口的時,相應端口的電平將由電平將由“1”狀狀態變為態變為“0”狀態;狀態;而接于而接于P2.0-P2.3的任意一個的任意一個LED在端口輸出

11、在端口輸出“1” 時將被點亮。時將被點亮。 參考程序如下參考程序如下 #include / 定義定義 51寄存器頭文件包含到程序中寄存器頭文件包含到程序中void main(void) char key =0; /定義一個變量,初值為定義一個變量,初值為0 P2 = 0; /熄滅所有熄滅所有LEDP0 = 0 xff; / 向向P0寫寫“1”,使,使P0口可正確讀入按鍵狀態口可正確讀入按鍵狀態 while(1) /循環循環 key =P0 & 0 x0f ; /將將P0口讀入的按鍵狀態取反并口讀入的按鍵狀態取反并 /與與0f H按位與,清高按位與,清高4位留低位留低4位位if (key !=

12、0) P2 = key ; / key不為0有鍵按下則將有鍵按下則將key / 送送P2口控制相應的口控制相應的LED點亮點亮 /否則,再循環讀按鍵狀態否則,再循環讀按鍵狀態 例例2 :鍵控流水燈:鍵控流水燈 在上例電路圖的基礎上,編寫可鍵控的流水燈程在上例電路圖的基礎上,編寫可鍵控的流水燈程序。要求實現功能為,當序。要求實現功能為,當K1 按下時,要求流水燈流按下時,要求流水燈流動;動;K2 按下時停止流動,且全部燈滅;按下時停止流動,且全部燈滅;K3按下時使按下時使燈由上往下流動,燈由上往下流動,K4 則使燈由下往上流動。則使燈由下往上流動。 程序說明程序說明 判斷按鍵動作,并根據按鍵的組

13、合狀態控制流水燈判斷按鍵動作,并根據按鍵的組合狀態控制流水燈狀態。流水燈控制碼事先存放在數組中。狀態。流水燈控制碼事先存放在數組中。 本例電路中本例電路中LED為低電平驅動,故控制碼中輸為低電平驅動,故控制碼中輸出出0電平對應著燈亮,反之,電平對應著燈亮,反之,1電平對應著燈滅。流電平對應著燈滅。流水速度可以根據需要調整延時數值了。水速度可以根據需要調整延時數值了。 參考程序如下參考程序如下 /定義數組,并將控制各位燈亮的碼作為定義數組,并將控制各位燈亮的碼作為/初值放入其中初值放入其中/定義定義delay延時函數(帶參數延時函數(帶參數time)/定義內循環控制變量定義內循環控制變量j/定義

14、按鍵掃描函數定義按鍵掃描函數/若無按鍵返回若無按鍵返回0,否則返回,否則返回/從從P0口讀入的按鍵狀態(高口讀入的按鍵狀態(高/ 4位被清位被清0。/定義兩個位變量定義兩個位變量dir,run,并賦初值,并賦初值/定義定義int型變量型變量i/根據根據key函數返回值決定如何控制函數返回值決定如何控制LED/若若K1按下按下run=1,跳出,跳出switch/若若K2按下按下run=0,跳出,跳出switch/若若K3按下按下dir=1,跳出,跳出switch/若若K4按下按下dir=0,跳出,跳出switch/若若ren=1 (K1按下按下),去判斷,去判斷dir的值的值/否則(否則(ren

15、=0,K2按下按下),向向P2口輸出口輸出0,熄滅所有,熄滅所有LED/由由i控制順序取出控制碼控制順序取出控制碼/若若dir=1,控制,控制LED/調用延時函數調用延時函數/否則(否則(dir=0),控制),控制LED/由由i控制反序取出控制碼控制反序取出控制碼/送送P2/送送P2/調用延時函數調用延時函數第4章單片機的單片機的C51語言語言Keil項目和程序界面如下圖所示項目和程序界面如下圖所示 行列式鍵盤原理與編程行列式鍵盤原理與編程 前面例題中的按鍵都是每鍵分別接在一根前面例題中的按鍵都是每鍵分別接在一根IO口口線上,這稱為線上,這稱為獨立式鍵盤獨立式鍵盤。它的。它的電路簡單電路簡單,

16、易于編易于編程程,但,但占用的占用的IO口線較多口線較多,當需要較多按鍵時可能,當需要較多按鍵時可能產生產生IO資源緊張問題,這時應采用資源緊張問題,這時應采用行列式鍵盤行列式鍵盤。行列式鍵盤行列式鍵盤方案的一般做法是,將方案的一般做法是,將IO口分為行線和口分為行線和列線,列線,按鍵置于行線和列線交叉位置的上方按鍵置于行線和列線交叉位置的上方,行線行線則通過上拉電阻接正電源。則通過上拉電阻接正電源。按鍵壓下時,行線和列按鍵壓下時,行線和列線將發生短接,線將發生短接,利用軟件掃描技術可以判斷出閉合利用軟件掃描技術可以判斷出閉合狀態。狀態。44行列式鍵盤硬件電路圖行列式鍵盤硬件電路圖 行列式(矩

17、陣)鍵盤識別的常用方法有兩種行列式(矩陣)鍵盤識別的常用方法有兩種: 列掃描法列掃描法 線反轉法線反轉法1) 列掃描法(逐列進行)列掃描法(逐列進行) 向某列線發出低電平向某列線發出低電平信號信號, 如該如該列線上所設置的列線上所設置的鍵沒有任何一個按下鍵沒有任何一個按下的話的話, 則則行線端口讀回的是全行線端口讀回的是全“1”信號信號, 否則,得到非全否則,得到非全“1”信號,且為信號,且為“0”位的位的位置對應按鍵所在行的位置。位置對應按鍵所在行的位置。 找到閉合鍵后找到閉合鍵后, 獲取其鍵值獲取其鍵值, 據此轉至該鍵對應的功能程據此轉至該鍵對應的功能程序。序。 為防止多鍵同時按下為防止多

18、鍵同時按下, 往往從第往往從第 0 列一直掃描列一直掃描到最后到最后 1 列列, 若只發現若只發現 1 個閉合鍵個閉合鍵, 則為有效按鍵則為有效按鍵, 否則,全部作廢。否則,全部作廢。 行和列是人為認定的,為此認定:通過上拉電阻接電源的口線對應的是行線。 按鍵在閉合和斷開瞬間會因彈簧開關的變形而產生電壓按鍵在閉合和斷開瞬間會因彈簧開關的變形而產生電壓波動現象,其按鍵抖動波形如圖波動現象,其按鍵抖動波形如圖 按鍵抖動會造成一次按鍵對應多次響應的問題,需要采按鍵抖動會造成一次按鍵對應多次響應的問題,需要采用措施消除抖動影響。單片機常用用措施消除抖動影響。單片機常用軟件延時軟件延時10ms的辦法來的

19、辦法來消除抖動的影響。當檢測到有鍵按下時,先延時消除抖動的影響。當檢測到有鍵按下時,先延時10ms,然,然后再檢測按鍵的狀態,若仍是閉合狀態,則認為真正有鍵按后再檢測按鍵的狀態,若仍是閉合狀態,則認為真正有鍵按下。當需要檢測到按鍵釋放時,也需做同樣的處理。下。當需要檢測到按鍵釋放時,也需做同樣的處理。 a.a.先檢查是否鍵按下先檢查是否鍵按下。向列線端口送全列掃描碼(列線全送向列線端口送全列掃描碼(列線全送“0”0”), ,行線端口行線端口做輸入(行線全送做輸入(行線全送“1”1”), ,然后然后, ,讀入行線端口的狀態,讀入行線端口的狀態,若行線中有為若行線中有為0 0位(即非全位(即非全“

20、1”1”),則有鍵按下。),則有鍵按下。c.c.判斷按鍵位置判斷按鍵位置。 進行逐列掃描,被掃描列送進行逐列掃描,被掃描列送0 0,其余列送,其余列送“1”1”,每次,每次均讀入行線端口狀態,看哪條行線為均讀入行線端口狀態,看哪條行線為“0 0” 。由行、列。由行、列線的狀態可判斷是哪個鍵被按下線的狀態可判斷是哪個鍵被按下( (為為“0 0”的的行、列交叉行、列交叉處處) ) d.d.計算確定按鍵的鍵號計算確定按鍵的鍵號 N N N=N=為為0 0行的行首鍵號行的行首鍵號+ +(發現按鍵時正掃描的)列號(發現按鍵時正掃描的)列號 具體實現步驟具體實現步驟b.有鍵按下則延時除抖動有鍵按下則延時除

21、抖動。即延時即延時20mS20mS左右,再次讀行線端口看是否仍為有鍵按左右,再次讀行線端口看是否仍為有鍵按下下, ,若有若有, ,則確認為一次有效按鍵。則確認為一次有效按鍵。4行行X4列矩陣鍵盤控制如圖列矩陣鍵盤控制如圖P1.4 - P1.7控制控制行線行線P1.0 - P1.3控制控制列線列線列掃描法匯編程序設計列掃描法匯編程序設計行置行置1MOV 30H,#0 ; 存鍵值單元清存鍵值單元清0MOV P1,#0F0H ;列全列全“0”行全行全“1”MOV A, P1 ;讀讀P1口口ANL A,#0F0H ;保留高保留高4位位CJNE A,#0F0H, JIN ;判是否有按鍵判是否有按鍵,RE

22、TJIN:ACALL DELAY20msJIN0: MOV R2, #4 ;循環循環列掃描列掃描次次(R2記錄掃到第幾列記錄掃到第幾列)MOV R3,#01H ;起始列掃描碼;起始列掃描碼 R3,R3,初始掃初始掃3 3號列號列JIN1: MOV A, R3 ; 當前掃描碼當前掃描碼A ACPL A ;獲得本次列掃描信號獲得本次列掃描信號MOV P1, A ;列掃描輸出;列掃描輸出MOV A, P1 ;讀鍵盤;讀鍵盤ANL A, #0F0H ;保留讀回的行信息;保留讀回的行信息CJNE A,#0F0H, JIN2 ;判斷有無按鍵;判斷有無按鍵,有則轉有則轉JIN2MOV A, R3;無按鍵,列

23、掃描碼;無按鍵,列掃描碼A,A,準備掃下一列準備掃下一列0123456789 10 1112 13 14 15+5vP1.7P1.6P1.5P1.4P1.3P1.2P1.1P.103號列號列0號列號列RL A ;A右移右移1位位, 修改列掃描碼修改列掃描碼MOV R3, A ;保存當前列掃描保存當前列掃描碼碼DJNZ R2, JIN1 ;4列未掃完繼續循環列未掃完繼續循環RET ;無鍵按下返回無鍵按下返回JIN2: DEC R2 ;獲得按鍵所在列的列號獲得按鍵所在列的列號MOV R1,#0; 0行行首鍵號行行首鍵號 R1JNB ACC.7, JIN3 ;是是0行有鍵按下則轉行有鍵按下則轉JIN

24、3MOV R1, #4 ;否則否則,1行行首鍵號行行首鍵號 R1JNB ACC.6, JIN3 ;是是1行有鍵按下則轉行有鍵按下則轉JIN3MOV R1, #8 ;否則否則, 2行行首鍵號行行首鍵號 R1JNB ACC.5, JIN3 ;是是2行有鍵按下則轉行有鍵按下則轉JIN3MOV R1, #12 否則否則, 3行行首鍵號行行首鍵號 R1JIN3: MOV A, R1 ;按鍵所在行的行首鍵號按鍵所在行的行首鍵號 AADD A,R2;計算計算鍵值鍵值=行首鍵號行首鍵號+列號列號MOV 30H,A ;存鍵值到;存鍵值到30H單元單元JN4:MOV A,P1 ;讀鍵盤;讀鍵盤,等待鍵釋放等待鍵釋

25、放ANL A, #0F0H ;保留行狀態值;保留行狀態值 CJNE A,#0F0H, JN4 ;若行狀態值不為全若行狀態值不為全”1”則轉則轉RET 2) 線反轉法線反轉法 線反轉法比列掃描法速度快線反轉法比列掃描法速度快, 但但在硬件上要求行在硬件上要求行線與列線外接上拉電阻。方法如下線與列線外接上拉電阻。方法如下: 先將行線作為輸出先將行線作為輸出, 列線作為輸入列線作為輸入,行線輸出全行線輸出全“0”、列線全、列線全“1”, 接著讀入列線的值接著讀入列線的值; 然后然后,再將行線作為輸入再將行線作為輸入,列線作為輸出列線作為輸出, 并將剛才并將剛才讀到的列線值從列線所接的端口輸出讀到的列

26、線值從列線所接的端口輸出, 再讀取行線的再讀取行線的輸入值。輸入值。那么在閉合鍵所在的行線上值必為那么在閉合鍵所在的行線上值必為 0。 這樣這樣, 當一個鍵被按下時當一個鍵被按下時, 必定可讀到一對唯一必定可讀到一對唯一的只有的只有1位為位為0的行、列值。的行、列值。 根據上兩步的結果根據上兩步的結果,可確可確定按鍵所在行和列。定按鍵所在行和列。 a. 先將先將行線編程為輸入行線編程為輸入,列線輸出列線輸出全全0列信號列信號,讀入行線狀讀入行線狀態態,若非全若非全1則有鍵按下則有鍵按下,此時此時,為為0位對應行為按鍵所在行位對應行為按鍵所在行線反轉法具體實現步驟線反轉法具體實現步驟 b. 再再

27、將將行線編程為輸出行線編程為輸出,列線做輸入列線做輸入,行線行線輸出全輸出全0行信行信號,讀入列線狀態號,讀入列線狀態,此時此時為為0位對應列為按鍵所在列。位對應列為按鍵所在列。 c .計算該按鍵的鍵號計算該按鍵的鍵號 N=行首鍵號行首鍵號+列號列號線反轉法鍵盤掃描流程線反轉法鍵盤掃描流程與寫入的相等否與寫入的相等否與寫入的相等否與寫入的相等否例例6 行列式鍵盤應用行列式鍵盤應用 44行列式鍵盤電路原理圖如下,要求按任意按鍵后,行列式鍵盤電路原理圖如下,要求按任意按鍵后,顯示出該按鍵對應的數(顯示出該按鍵對應的數(0-F)。 第一行第一行第一列第一列若用若用8位位2進制數用以下方式來表示鍵編碼

28、:進制數用以下方式來表示鍵編碼:高高4位對應行、低位對應行、低4位對應列,每個鍵的編碼是,除其所在位對應列,每個鍵的編碼是,除其所在行、列對應位為行、列對應位為1外,其余位為外,其余位為0,則有:,則有:1行行1列鍵編碼列鍵編碼11H2行行1列鍵編碼列鍵編碼21H3行行1列鍵編碼列鍵編碼41H4行行1列鍵編碼列鍵編碼81H1行行2列鍵編碼列鍵編碼12H2行行2列鍵編碼列鍵編碼22H.3行行3列鍵編碼列鍵編碼44H4行行3列鍵編碼列鍵編碼84H.4行行4列鍵編碼列鍵編碼88H0124EFDC589BP2P3.7P3.0參考程序參考程序 0-F16個數符的共陰七段碼依次放入個數符的共陰七段碼依次放

29、入led_mod數組數組0-F16個鍵對應的編碼依次放入個鍵對應的編碼依次放入key_buf數組數組/ 說明掃描鍵盤返回鍵值函數說明掃描鍵盤返回鍵值函數 本程序有鍵盤掃描和軟件延本程序有鍵盤掃描和軟件延時兩個子程序函數,主函數調時兩個子程序函數,主函數調用鍵盤掃描子程序用鍵盤掃描子程序,獲取用戶按獲取用戶按鍵對應值年,完成靜態顯示。鍵對應值年,完成靜態顯示。/ 帶參延時函數帶參延時函數線反轉法線反轉法掃描鍵盤返回鍵值掃描鍵盤返回鍵值(該數對應段碼在該數對應段碼在led_mod中的位置中的位置)k1存首次發現有鍵按下時的鍵盤狀態,存首次發現有鍵按下時的鍵盤狀態,k2存按鍵碼存按鍵碼送全列掃描碼:

30、行線高電平、列線低電平送全列掃描碼:行線高電平、列線低電平/調用調用鍵盤掃描函數,返回鍵值送鍵盤掃描函數,返回鍵值送key保存保存/key用來存放按鍵對應值用來存放按鍵對應值/00H送送P2口,滅數碼管口,滅數碼管/有鍵按下則據鍵值從有鍵按下則據鍵值從led_mod中中/取對應段碼送取對應段碼送P2口顯示口顯示/延時一段時間延時一段時間/讀回讀回P3的值不等于的值不等于f0H則則有鍵按下,否則無按鍵有鍵按下,否則無按鍵/有鍵按下則讀回有鍵按下則讀回P3的狀態存的狀態存k1,/若鍵盤狀態與前鍵盤狀態若鍵盤狀態與前鍵盤狀態k1相同則確有鍵按下相同則確有鍵按下/送全行掃描碼,行線全送全行掃描碼,行線

31、全0,列線全,列線全1/全行、列掃描讀回值相或后取反,得鍵編碼全行、列掃描讀回值相或后取反,得鍵編碼/據據鍵編碼在鍵編碼在key_buf 中搜索,中搜索,k2=(P3k1);/無鍵按下則返回無鍵按下則返回 -1/延時延時(4) (4) 并行并行I/OI/O口綜合應用:步進電機的控制與編程口綜合應用:步進電機的控制與編程 步進電機是一個數字角度轉換器,也是一個串步進電機是一個數字角度轉換器,也是一個串行的數模轉換器,它是用電脈沖控制轉動速度和轉行的數模轉換器,它是用電脈沖控制轉動速度和轉角的電磁機械裝置。角的電磁機械裝置。 步進電機最大的應用是在數控機床的制造中,因步進電機最大的應用是在數控機床

32、的制造中,因為其不需要為其不需要A/D轉換,能直接將數字脈沖信號轉化成轉換,能直接將數字脈沖信號轉化成角位移,所以角位移,所以,是理想的數控機床的執行元件。如是理想的數控機床的執行元件。如:步步進電機用作數控銑床進給伺服機構的驅動電動機進電機用作數控銑床進給伺服機構的驅動電動機 。 步進電機還可用在其他機械上,如:作為自動送步進電機還可用在其他機械上,如:作為自動送料機和軟盤驅動器的馬達,也可應用在打印機和繪圖料機和軟盤驅動器的馬達,也可應用在打印機和繪圖儀中。儀中。 步進電機是過程控制及儀表中的主要控制元件,步進電機是過程控制及儀表中的主要控制元件,廣泛用于定位系統。廣泛用于定位系統。步進電

33、機的工作、控制原理步進電機的工作、控制原理 磁極上有磁極上有5個均勻分個均勻分布的矩形小齒,轉子上布的矩形小齒,轉子上沒有繞組,而有沒有繞組,而有40個小個小齒均勻分布在其圓周上,齒均勻分布在其圓周上,且相鄰兩個齒之間的夾且相鄰兩個齒之間的夾角為角為9。 步進電機上的定子有步進電機上的定子有6個等間距的磁極,兩個相鄰個等間距的磁極,兩個相鄰磁極之間的夾角為磁極之間的夾角為60,線圈繞過相對的兩個磁極,線圈繞過相對的兩個磁極,構成一相(構成一相(A-A,B-B,C-C)。)。 這使定子上相鄰兩磁極這使定子上相鄰兩磁極間對應轉子上的小齒數為間對應轉子上的小齒數為 6 個,出現了錯齒現象。個,出現了

34、錯齒現象。23 給某組繞組通電時,相應的兩個磁極就形成給某組繞組通電時,相應的兩個磁極就形成N-SN-S極,極,產生磁場,并與轉子形成磁路。若這時定子的小齒與產生磁場,并與轉子形成磁路。若這時定子的小齒與轉子沒有對齊,則在磁場的作用下轉子將轉動一定的轉子沒有對齊,則在磁場的作用下轉子將轉動一定的角度,使轉子齒與定子齒對齊,從而使步進電機向前角度,使轉子齒與定子齒對齊,從而使步進電機向前“走走”一步,轉動一個固定的步距(進)角度一步,轉動一個固定的步距(進)角度。 通電一周,轉子轉過一個齒距通電一周,轉子轉過一個齒距角,一個齒距角分角,一個齒距角分N N步(拍)走完。步(拍)走完。若以若以A-B

35、-CA-B-C次序對三相通電,次序對三相通電,每相通電轉子轉動每相通電轉子轉動 個齒個齒, ,即步進角為即步進角為3 3,這樣,轉子,這樣,轉子就以每相就以每相3 3的速度正轉,反的速度正轉,反次序通電則次序通電則反轉。反轉。此此通電方式通電方式稱為三相三拍方式。稱為三相三拍方式。13 若以若以A-AB-B-BC-C-CA-AA-AB-B-BC-C-CA-A的順序對磁極的順序對磁極繞組繞組通電,通電,完成完成一個循環一個循環為為6 6拍,拍,稱為稱為三相三相六六拍拍方式方式, ,每拍每拍轉子轉子轉轉1.51.5, ,可使電機定位精度提高一倍,同時可使電機定位精度提高一倍,同時, ,轉動轉動變得

36、更平穩。變得更平穩。 用單片機控制脈沖發生器產生脈沖信號用單片機控制脈沖發生器產生脈沖信號, ,按一按一定規律輸出給驅動器定規律輸出給驅動器, ,即可控制步進電機按要求轉即可控制步進電機按要求轉動。轉動的角度大小與施加的脈沖個數成正比,轉動。轉動的角度大小與施加的脈沖個數成正比,轉動的速度與脈沖頻率成正比。動的速度與脈沖頻率成正比。 三相三拍三相三拍方式方式下,轉子轉下,轉子轉1 1周(周(360360)需需120120步步, ,三相三相六六拍拍方式方式轉轉1 1周則需周則需240240步。因此步。因此, ,在同樣的運行在同樣的運行角度與速度下,角度與速度下,三相三相六六拍拍方式方式的驅動脈沖

37、的頻率要的驅動脈沖的頻率要提高一倍,對驅動開關管的開關特性要求較高。提高一倍,對驅動開關管的開關特性要求較高。步進電機控制系統的組成步進電機控制系統的組成 步進控制器步進控制器 現在,一般用計算機控制系統,由軟件代替步進控制現在,一般用計算機控制系統,由軟件代替步進控制器。器。 優點:線路簡化,成本降低,可靠性提高。優點:線路簡化,成本降低,可靠性提高。 可靈活改變步進電機的控制方案,使用起來很方便。可靈活改變步進電機的控制方案,使用起來很方便。 功率放大器功率放大器 脈沖放大,以驅動步進電機轉動。脈沖放大,以驅動步進電機轉動。用單片機控制步進電機原理系統圖用單片機控制步進電機原理系統圖 用單

38、片機代替步進控制器,把并行二進制碼轉換用單片機代替步進控制器,把并行二進制碼轉換成串行脈沖序列,并實現方向控制。成串行脈沖序列,并實現方向控制。 只要負載是在步進電機允許的范圍之內,每個脈只要負載是在步進電機允許的范圍之內,每個脈沖均使電機轉動一個固定的步距角度。沖均使電機轉動一個固定的步距角度。 根據步距角的大小及實際走的步數,只要知道初根據步距角的大小及實際走的步數,只要知道初始位置,便可知道步進電機的最終位置。始位置,便可知道步進電機的最終位置。步進電機設計主要解決如下幾個問題:步進電機設計主要解決如下幾個問題: 用軟件的方法實現脈沖序列;用軟件的方法實現脈沖序列; 步進電機的方向控制;

39、步進電機的方向控制; 步進電機控制電路及程序的設計。步進電機控制電路及程序的設計。1)脈沖序列的生成)脈沖序列的生成脈沖幅值脈沖幅值 由數字元件電平由數字元件電平決定。決定。 TTL 0 5V CMOS 0 10V 接通和斷開時間可用延時的接通和斷開時間可用延時的辦法控制。辦法控制。要求:確保步進到位要求:確保步進到位。2)方向控制)方向控制 步進電機旋轉方向與內部繞組的通電順序相關。步進電機旋轉方向與內部繞組的通電順序相關。 三相步進電機共有三種電流脈沖施加方式:三相步進電機共有三種電流脈沖施加方式: (1)三相單三拍三相單三拍 (2)三相雙三拍三相雙三拍 (3)三相六拍三相六拍 改變通電順

40、序可以改變步進電機的轉向改變通電順序可以改變步進電機的轉向 3)單片機控制步進電機系統的接口電路和程序設計)單片機控制步進電機系統的接口電路和程序設計 接口電路接口電路(1)步進電機的驅動電流較大,故單片機與)步進電機的驅動電流較大,故單片機與 步進電機的連接需要專門的接口及驅動電路。步進電機的連接需要專門的接口及驅動電路。 接口電路可以是鎖存器,也可以是可編程接口芯接口電路可以是鎖存器,也可以是可編程接口芯片,片,如如 8255、8155等。等。 驅動器可用大功率復合管,也可以是專門的驅驅動器可用大功率復合管,也可以是專門的驅動器。動器。 步進電機運行時功率較大,為防強功率的干擾步進電機運行

41、時功率較大,為防強功率的干擾信號反串進主控系統,應在單片機與驅動器之間增信號反串進主控系統,應在單片機與驅動器之間增加一級光電隔離器。加一級光電隔離器。步進電機與單片機接口電路步進電機與單片機接口電路1 10 00 01 10 00 0 1 10 00 0為防止電機過流和改善驅動特性,需加限流電阻。由于步進電機為防止電機過流和改善驅動特性,需加限流電阻。由于步進電機鎖步時,限流電阻要消耗大量的功率,故限流電阻要有較大的功鎖步時,限流電阻要消耗大量的功率,故限流電阻要有較大的功率容量,開關管也要有較高的負載能力。率容量,開關管也要有較高的負載能力。二極管為繞組提供續流回路二極管為繞組提供續流回路,防防止過高的反向電壓擊穿驅動管止過高的反向電壓擊穿驅動管只要按一定的順序只要按一定的順序 改變改變 P1.0P1.2 三位通電的狀況,三位通電的狀況,即可控制步進電機依選定方向即可控制步進電機依選定方向步進步進增加光電隔離的步進電機與單片機接口電路增加光電隔離的步進電機與單片機接口電路0 00 01 10 01 11 11 10 00 0光電隔離器的作用:一是抗干擾,二是電隔離,光電隔離器的作用:一是抗干擾,二是電隔離,步進電機程序設計的主要任務是:步進電機程序設計的主要任務是: (1)判斷旋轉方向)判斷旋轉方向 (2)按相序確定控制字

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論