第5章 MCS-51單片機輸入輸出口_第1頁
第5章 MCS-51單片機輸入輸出口_第2頁
第5章 MCS-51單片機輸入輸出口_第3頁
第5章 MCS-51單片機輸入輸出口_第4頁
第5章 MCS-51單片機輸入輸出口_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、外外界界CPU內(nèi)核內(nèi)核SFR(21)外圍應用模塊外圍應用模塊(功能部件)(功能部件)軟件軟件讀讀/寫寫硬件硬件映射映射用戶編程用戶編程自動對應自動對應I/O引腳引腳人機交互手段人機交互手段第五章第五章 MCS-51單片機輸入單片機輸入/輸出口輸出口(并行(并行I/O口)口) 本講內(nèi)容提要本講內(nèi)容提要:5.0、并行、并行I/O口概述口概述5.1、并行、并行I/O口的功能和內(nèi)部結(jié)構(gòu)口的功能和內(nèi)部結(jié)構(gòu)5.2、并行、并行I/O口編程方法口編程方法5.3、并行、并行I/O口基本應用口基本應用 I/O端口,即端口,即輸入輸入/輸出輸出端口,是端口,是微控制器(微控制器(MCU)同外界進行交互的重要通道。同

2、外界進行交互的重要通道。5.0 并行并行I/O口概述口概述 輸入端口:輸入端口:負責從外界接收檢測信號、鍵盤信負責從外界接收檢測信號、鍵盤信號等各種開關信號。號等各種開關信號。 輸出端口:輸出端口:負責向外界輸送內(nèi)部電路產(chǎn)生的處負責向外界輸送內(nèi)部電路產(chǎn)生的處理結(jié)果、顯示信息、控制命令、驅(qū)動信號等。理結(jié)果、顯示信息、控制命令、驅(qū)動信號等。 作用作用DIP40P0P0口口P2P2口口P1P1口口P3P3口口書書P24D QCLK Q讀讀鎖存器鎖存器內(nèi)部總線內(nèi)部總線寫寫鎖存器鎖存器讀讀引腳引腳vccN-FET引腳引腳內(nèi)部上內(nèi)部上拉電阻拉電阻輸出電路:一個輸出電路:一個D觸發(fā)器、一個場效應管觸發(fā)器、一

3、個場效應管輸入電路:兩個三態(tài)門輸入電路:兩個三態(tài)門5.1 I/O端口內(nèi)部結(jié)構(gòu)端口內(nèi)部結(jié)構(gòu)基本模型基本模型D QCLK Q讀讀鎖存器鎖存器內(nèi)部總線內(nèi)部總線寫寫鎖存器鎖存器讀讀引腳引腳vccN-FET引腳引腳內(nèi)部上內(nèi)部上拉電阻拉電阻D QCLK Q讀讀鎖存器鎖存器內(nèi)部總線內(nèi)部總線寫寫鎖存器鎖存器讀讀引腳引腳vccN-FET引腳引腳內(nèi)部上內(nèi)部上拉電阻拉電阻D QCLK Q讀讀鎖存器鎖存器內(nèi)部總線內(nèi)部總線寫寫鎖存器鎖存器讀讀引腳引腳vccN-FET引腳引腳內(nèi)部上內(nèi)部上拉電阻拉電阻內(nèi)部總線內(nèi)部總線特點:特點: PX口口可以單根輸入輸出,也可以并行輸入輸出??梢詥胃斎胼敵?,也可以并行輸入輸出??刂瓶刂瓶?/p>

4、線總線數(shù)據(jù)數(shù)據(jù)總線總線5.1 I/O端口內(nèi)部結(jié)構(gòu)端口內(nèi)部結(jié)構(gòu)基本模型基本模型5.1 I/O端口內(nèi)部結(jié)構(gòu)端口內(nèi)部結(jié)構(gòu)工作原理工作原理011001導通導通D QCLK Q讀讀鎖存器鎖存器內(nèi)部總線內(nèi)部總線寫寫鎖存器鎖存器讀讀引腳引腳vccN-FET引腳引腳內(nèi)部上內(nèi)部上拉電阻拉電阻NPN特點:特點:(1)PX口口做數(shù)字輸出時做數(shù)字輸出時,輸出數(shù)據(jù)是通過寫輸出數(shù)據(jù)是通過寫SFR區(qū)區(qū)PX寄存器實現(xiàn)。寄存器實現(xiàn)。(2)PX口具有輸出鎖存功能??诰哂休敵鲦i存功能。P0P0口口SFR0FFH0B0H0A0H90H80H(P0)(P1)(P2)(P3)P2P2口口P3P3口口P1P1口口截至截至書書P21基本的數(shù)

5、字輸出原理基本的數(shù)字輸出原理010導通導通截止截止011D QCLK Q讀讀鎖存器鎖存器內(nèi)部總線內(nèi)部總線寫寫鎖存器鎖存器讀讀引腳引腳vccN-FET引腳引腳內(nèi)部上內(nèi)部上拉電阻拉電阻NPN特點:特點:(1)PX口口做數(shù)字輸入時,輸入數(shù)據(jù)是通過讀做數(shù)字輸入時,輸入數(shù)據(jù)是通過讀PX寄存器采集寄存器采集。(2)PX口具有輸入緩沖功能。口具有輸入緩沖功能。 (3)PX口口做數(shù)字輸入時,需先輸出做數(shù)字輸入時,需先輸出“1”使場效應管截止,保證輸入信號能被正常采集。使場效應管截止,保證輸入信號能被正常采集。P0P0口口SFR0FFH0B0H0A0H90H80H(P0)(P1)(P2)(P3)P2P2口口P3

6、P3口口P1P1口口5.1 I/O端口內(nèi)部結(jié)構(gòu)端口內(nèi)部結(jié)構(gòu)工作原理工作原理基本的數(shù)字輸入原理基本的數(shù)字輸入原理D QCLK Q讀讀鎖存器鎖存器內(nèi)部總線內(nèi)部總線寫寫鎖存器鎖存器讀讀引腳引腳vcc(1)P0口口(P0.0P0.7,39腳腳32腳腳)引腳引腳N-FETP-FET地址地址/ /數(shù)據(jù)數(shù)據(jù)控制控制MUXP0.xPNPNPN10截止截止截止截止封鎖封鎖10截至截至輸出極輸出極開路開路0101解封解封011導通導通100特點:特點:(1)P0口引腳作基本的口引腳作基本的I/O用時,因輸出用時,因輸出“1”時漏極開路,需外接上拉電阻以保證輸出時漏極開路,需外接上拉電阻以保證輸出“1” 。(2)P

7、0口引腳作總線地址口引腳作總線地址/數(shù)據(jù)的數(shù)據(jù)的I/0用時,采用推挽式輸出電路,驅(qū)動能力更強。用時,采用推挽式輸出電路,驅(qū)動能力更強。推挽式輸出電路vcc外接上外接上拉電阻拉電阻導通導通5.1 I/O端口內(nèi)部結(jié)構(gòu)端口內(nèi)部結(jié)構(gòu) 一條一條P0端口引腳內(nèi)部邏輯電路圖端口引腳內(nèi)部邏輯電路圖P1.x(2) P1口口(P1.0P1.7,1腳腳8腳腳)D QCLK Q讀讀鎖存器鎖存器內(nèi)部總線內(nèi)部總線寫寫鎖存器鎖存器讀讀引腳引腳vccN-FET引腳引腳內(nèi)部上內(nèi)部上拉電阻拉電阻5.1 I/O端口內(nèi)部結(jié)構(gòu)端口內(nèi)部結(jié)構(gòu) 一條一條P1端口引腳內(nèi)部邏輯電路圖端口引腳內(nèi)部邏輯電路圖地址地址D QCLK QMUX讀讀鎖存器

8、鎖存器內(nèi)部總線內(nèi)部總線寫寫鎖存器鎖存器讀讀引腳引腳控制控制 一條一條P2端口引腳內(nèi)部邏輯電路圖端口引腳內(nèi)部邏輯電路圖引腳引腳P2.x(3)P2口口(P2.0P2.7,21腳腳28腳腳)vccN-FET00導通導通010110截止截止11015.1 I/O端口內(nèi)部結(jié)構(gòu)端口內(nèi)部結(jié)構(gòu)D QCLK Q讀讀鎖存器鎖存器內(nèi)部總線內(nèi)部總線寫寫鎖存器鎖存器讀讀引腳引腳引腳引腳P3.xvcc(4)P3口口(P3.0P3.7,10腳腳17腳腳)第第2功能功能輸出輸出第第2功能功能輸入輸入N-FET1開放開放0001導通導通截止截止11001開放開放5.1 I/O端口內(nèi)部結(jié)構(gòu)端口內(nèi)部結(jié)構(gòu) 一條一條P3端口引腳內(nèi)部邏

9、輯電路圖端口引腳內(nèi)部邏輯電路圖pPX口的輸入輸出操作是通過對口的輸入輸出操作是通過對SFR區(qū)對應的特殊功能寄存區(qū)對應的特殊功能寄存器器PX進行讀寫操作來實現(xiàn)。即給進行讀寫操作來實現(xiàn)。即給PX寄存器寫數(shù)據(jù)完成寄存器寫數(shù)據(jù)完成PX口信號的輸出,讀取口信號的輸出,讀取PX寄存器的數(shù)據(jù)就完成寄存器的數(shù)據(jù)就完成PX口信號的輸口信號的輸入。入。pPX口既可以并行輸入口既可以并行輸入/輸出,也可以單獨一根輸出,也可以單獨一根I/O引腳輸入引腳輸入/輸出。即讀寫輸出。即讀寫PX寄存器完成寄存器完成PX口的并行輸入口的并行輸入/輸出,讀輸出,讀寫寫PX寄存器的某位寄存器的某位PX.X完成完成PX.X引腳的輸入引

10、腳的輸入/輸出。輸出。pPX口做輸入口時需要做一次性初始化操作,先做偽輸出??谧鲚斎肟跁r需要做一次性初始化操作,先做偽輸出。實現(xiàn)方法為先把實現(xiàn)方法為先把PX口做輸出口且輸出高電平,即先給口做輸出口且輸出高電平,即先給PX寄寄存器寫存器寫0XFF。pPX口有輸出數(shù)據(jù)鎖存、輸入數(shù)據(jù)緩沖的功能。口有輸出數(shù)據(jù)鎖存、輸入數(shù)據(jù)緩沖的功能。P0口內(nèi)部電口內(nèi)部電路無上拉電阻,因此使用該口做輸出時必須外接上拉電阻。路無上拉電阻,因此使用該口做輸出時必須外接上拉電阻。5.1 I/O端口內(nèi)部結(jié)構(gòu)端口內(nèi)部結(jié)構(gòu)基本特性總結(jié)基本特性總結(jié)P0P0口口SFR0FFH0B0H0A0H90H80H(P0)(P1)(P2)(P3)

11、P2P2口口P3P3口口P1P1口口書書P215.2 I/O并行端口編程方法并行端口編程方法書書P21P0P0口口SFR0FFH0B0H0A0H90H80H(P0)(P1)(P2)(P3)P2P2口口P3P3口口P1P1口口5.2 I/O并行端口編程方法并行端口編程方法51單片機最小系統(tǒng)電路原型+5V123J1DC/AC_9V+C4470uF+C6220uFC70.1uF+5VD2POWER+312-4D1DQ123VVGNDINOUTU2LM7805C50.1uFR310K+5VC110uF+5VRSTR1200R210KC220PC320PY112MHzAT89S51RST9XTAL218

12、XTAL119GND20P2.0(A8)21P2.1(A9)22P2.2(A10)23P2.3(A11)24P2.4(A12)25P2.5(A13)26P2.6(A14)27P2.7(A15)28PSEN29ALE(PROG)30EA(VPP)31P0.7(AD7)32P0.6(AD6)33P0.5(AD5)34P0.4(AD4)35P0.3(AD3)36P0.2(AD2)37P0.1(AD1)38P0.0(AD0)39VCC40P1.01P1.12P1.23P1.34P1.45P1.5(MOSI)6P1.6(MISO)7P1.7(SCK)8P3.0(RXD)10P3.1(TXD)11P3.2

13、(INT0)12P3.3(INT1)13P3.4(T0)14P3.5(T1)15P3.6(WR)16P3.7(RO)17U1復復位位電電路路電電源源電電路路時時鐘鐘電電路路5.3 I/O端口應用端口應用(參考材料參考材料)參考資料部分參考資料部分無源晶振(無源晶振(Crystal )瓷片電容瓷片電容電解電容電解電容常開按鈕常開按鈕發(fā)光二極管發(fā)光二極管方形整流橋方形整流橋圓形整流橋圓形整流橋直流電源插座直流電源插座穩(wěn)壓器穩(wěn)壓器78055151單片機實驗板單片機實驗板5.3 I/O端口基本應用端口基本應用發(fā)光二極管發(fā)光二極管LED數(shù)碼管數(shù)碼管LED點陣點陣按鍵開關按鍵開關鍵盤鍵盤蜂鳴器蜂鳴器LCD

14、液晶顯示器液晶顯示器生活中的應用實例生活中的應用實例LEDLED夜景夜景裝飾裝飾LEDLED燈飾燈飾LEDLED廣告燈廣告燈LEDLED燈花燈花LEDLED發(fā)光二極管相關知識發(fā)光二極管相關知識1、元件外形、元件外形2、元件電路符號、元件電路符號3、應用電路、應用電路I/O引腳vccGNDI/O引腳(1) 高電平驅(qū)動高電平驅(qū)動(2) 低電平驅(qū)動低電平驅(qū)動拉電流拉電流灌電流灌電流正極正極負極負極10亮亮亮亮內(nèi)部結(jié)構(gòu)機械式觸點式按鍵開關相關知識機械式觸點式按鍵開關相關知識1、元件外形、元件外形2、元件電路符號、元件電路符號3、應用電路、應用電路1按下按下松開松開0按下按下松開松開10VCCI/O引腳

15、方法一VCCI/O引腳方法二去抖動措施:去抖動措施:鍵數(shù)較少時,鍵數(shù)較少時,采用硬件去抖采用硬件去抖;鍵數(shù)較多時,鍵數(shù)較多時,采用軟件去抖采用軟件去抖。 觸點式按鍵的機械抖動波形機械式觸點式按鍵開關相關知識機械式觸點式按鍵開關相關知識4、抖動問題及去抖動措施、抖動問題及去抖動措施VCCI/O引腳X 位位X 段數(shù)碼管段數(shù)碼管LEDLED數(shù)碼管相關知識數(shù)碼管相關知識1、LED數(shù)碼管外形數(shù)碼管外形8段段LED顯示的數(shù)字和字母顯示的數(shù)字和字母LEDLED數(shù)碼管相關知識數(shù)碼管相關知識1、8段段LED外形外形2、8段段LED管腳分布管腳分布內(nèi)部結(jié)構(gòu)圖COM引腳接低電平引腳接低電平高電平驅(qū)動筆段亮高電平驅(qū)動

16、筆段亮共陰LED共陽LEDCOM引腳接低電平引腳接低電平低電平驅(qū)動筆段亮低電平驅(qū)動筆段亮LEDLED數(shù)碼管相關知識數(shù)碼管相關知識3、8段段LED內(nèi)部結(jié)構(gòu)內(nèi)部結(jié)構(gòu)靜態(tài)顯示電路3、應用電路、應用電路LEDLED數(shù)碼管相關知識數(shù)碼管相關知識優(yōu)點:顯示程序十分簡單,顯示亮度大,節(jié)約優(yōu)點:顯示程序十分簡單,顯示亮度大,節(jié)約CPU的工作時間的工作時間缺點:占用的缺點:占用的I/O口線較多,硬件成本較高??诰€較多,硬件成本較高。I/O(1)I/O(2)dpabcdefgdpabcdefgcomdpdpabcdefgdpabcdefgcomdp筆段筆段控制控制筆段筆段控制控制共陽極共陽極LED靜態(tài)顯示電路4、

17、應用電路、應用電路LEDLED數(shù)碼管相關知識數(shù)碼管相關知識I/O(1)I/O(2)dpabcdefgdpabcdefgcomdpdpabcdefgdpabcdefgcomdp筆段筆段控制控制筆段筆段控制控制共陰極共陰極LED送顯示數(shù)據(jù)送顯示數(shù)據(jù)1筆段碼筆段碼送顯示數(shù)據(jù)送顯示數(shù)據(jù)2筆段碼筆段碼動態(tài)掃描顯示電路3、應用電路、應用電路LEDLED數(shù)碼管相關知識數(shù)碼管相關知識優(yōu)點:顯示程序較復雜,顯示亮度小,浪費優(yōu)點:顯示程序較復雜,顯示亮度小,浪費CPU的工作時間的工作時間缺點:占用的缺點:占用的I/O口線較少,硬件成本較低。口線較少,硬件成本較低。dpabcdefgdpabcdefgcomdpI/

18、O(1)I/O(2)dpabcdefgdpabcdefgcomdpdpabcdefgdpabcdefgcomdp筆段筆段控制控制位選位選控制控制送位選通碼送位選通碼選通一位選通一位LED送顯示數(shù)據(jù)送顯示數(shù)據(jù)筆段碼筆段碼延時延時5.3 I/O口應用鍵控燈 如圖如圖P0口是口是8個獨立個獨立鍵鍵的的輸入口,輸入口,P1口口是是8 8個個LED發(fā)光管發(fā)光管驅(qū)驅(qū)動動口。任務要求,按下鍵,對應的口。任務要求,按下鍵,對應的led燈亮,未按下鍵,對應的燈亮,未按下鍵,對應的led燈熄滅。燈熄滅。#include void main() unsigned char i;P0=0 xff;for( ; ; )

19、 i=P0; P1=i;5.3 I/O口應用獨立鍵控單獨立鍵控單LED發(fā)光管流水燈發(fā)光管流水燈 任務要求:有鍵按下左流水,無鍵則右流水。5.3 I/O口應用獨立鍵控單獨立鍵控單LED發(fā)光管流水燈發(fā)光管流水燈顯示筆段顯示筆段0 xC00 x3F筆段位筆段位共陽共陽1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1共陰共陰dp g f e d c b aD7 D6 D5 D4 D3 D2 D1 D0LEDLED數(shù)碼管相關知識數(shù)碼管相關知識4、顯示原理、顯示原理顯示筆段顯示筆段筆段位筆段位dp g f e d c b aD7 D6 D5 D4 D3 D2 D1 D0LEDLED數(shù)碼管相關

20、知識數(shù)碼管相關知識4、顯示原理、顯示原理0 xF90 x06共陽共陽1 1 1 1 1 0 0 1 0 0 0 0 0 1 1 0共陰共陰八段共陽八段共陽LED數(shù)碼管數(shù)碼管字形編碼字形編碼(筆段碼筆段碼)表表八段共陰八段共陰LED數(shù)碼管數(shù)碼管字形編碼字形編碼(筆段碼筆段碼)表表3FH3FH06H06H5BH5BH4FH4FH66H66H6DH6DH7DH7DH07H07H7FH7FH6FH6FH77H77H7CH7CH39H39H5EH5EH79H79H71H71H十位十位個位個位例例1:LED顯示控制顯示控制電路原理圖設計電路原理圖設計有興趣了解一下點陣顯示器有興趣了解一下點陣顯示器做廣告用

21、做廣告用5.3 I/O5.3 I/O口應用口應用33點陣(自學)點陣(自學)5.3 I/O5.3 I/O口應用口應用33鍵盤鍵盤VCCI/O引腳引腳K1K2K3K410K10K10K10KVCCI/O引腳引腳K1K2K3K4獨立式鍵盤獨立式鍵盤(線性鍵盤)(線性鍵盤)矩陣矩陣式鍵盤式鍵盤(行列行列式鍵盤)式鍵盤)鍵盤相關知識鍵盤相關知識1、鍵盤電路鍵盤電路行線行線列線列線2.1 行(列)掃描法行(列)掃描法2.2 線反轉(zhuǎn)法線反轉(zhuǎn)法行行線線列列線線鍵盤相關知識鍵盤相關知識2、矩陣、矩陣鍵盤識鍵原理鍵盤識鍵原理及編程方法及編程方法鍵盤相關知識鍵盤相關知識VCCK1K2K3K4011001按下按下按

22、下按下01矩陣矩陣式鍵盤式鍵盤(行列行列式鍵盤)式鍵盤)行行0行行1列列0列列12.1 行掃描法原理行掃描法原理第第0行行(10)第第1行行(01)I/O引腳引腳01101100K1K2無鍵無鍵多鍵多鍵01101100K3K4無鍵無鍵多鍵多鍵0110100110100101K2K1K4K3閉合鍵所在行、列的狀態(tài)均為閉合鍵所在行、列的狀態(tài)均為0,其余皆為,其余皆為1。VCC行行0行行1列列0列列1行行2行行3列列2列列3I/O(1)低四位低四位I/O(1)高四位高四位 0X7E 0X7D 0X7B 0X77 0XBE 0XBD 0XBB 0XB7 0XDE 0XDD 0XDB 0XD7 0XEE

23、 0XED 0XEB 0XE748c/37=*260- 159+faHMLmixiriladoso閉合鍵所在行、列的狀態(tài)均為閉合鍵所在行、列的狀態(tài)均為0,其余皆為,其余皆為1。鍵盤相關知識鍵盤相關知識鍵盤相關知識鍵盤相關知識編程識別步驟編程識別步驟 首先判斷有無按鍵首先判斷有無按鍵n行線輸出全行線輸出全0,列線輸入初始化,列線輸入初始化n讀列線判斷有無按鍵讀列線判斷有無按鍵 逐行掃描按鍵(逐行輸出逐行掃描按鍵(逐行輸出0)n 輸出行掃描值輸出行掃描值n 讀列線判斷有無按鍵,如有則把讀列線判斷有無按鍵,如有則把剛輸出的行掃描值和讀入的列值組剛輸出的行掃描值和讀入的列值組合返回,否則繼續(xù)掃描下一行

24、合返回,否則繼續(xù)掃描下一行開始開始輸出全行掃描值輸出全行掃描值掃到最后一行?掃到最后一行?NYN該行該行有鍵按下有鍵按下?有鍵按下有鍵按下?有鍵按下有鍵按下?延時去抖動延時去抖動準備行掃描初值準備行掃描初值YNNY輸出行掃描值輸出行掃描值產(chǎn)生下一行掃描值產(chǎn)生下一行掃描值返回按鍵位返回按鍵位置編碼置編碼返回無鍵返回無鍵標識標識組合當前行組合當前行掃描值和讀掃描值和讀入的列值入的列值YN鍵盤掃描流程圖鍵盤掃描流程圖開始開始輸出全行掃描值輸出全行掃描值掃到最后一行?掃到最后一行?NYN該行該行有鍵按下有鍵按下?有鍵按下有鍵按下?有鍵按下有鍵按下?延時去抖動延時去抖動準備行掃描初值準備行掃描初值YNN

25、Y輸出行掃描值輸出行掃描值產(chǎn)生下一行掃描值產(chǎn)生下一行掃描值返回按鍵位返回按鍵位置編碼置編碼返回無鍵返回無鍵標識標識組合當前行組合當前行掃描值和讀掃描值和讀入的列值入的列值uchar key_scan() key=0XF0; if( ) delay(10); if(key&0 xf0)!=0 xf0) scan_buf=0 xfe; for(i=0;i4;i+) key=scan_buf; if (key&0 xf0)!=0 xf0) key_h=scan_buf&0 x0f; key_l=key&0 xf0; return(key_h+key_l); else

26、else return(nokey); else #define key P1#define uchar unsigned char#define nokey 0 x00(key&0 xF0) !=0 xF0 return(nokey);uchar scan_buf,key_h,key_l;scan_buf=(scan_buf 1)&0 x01;鍵盤相關知識鍵盤相關知識輸輸出出列列線線VCC輸輸入入行行線線編程識別步驟編程識別步驟 首先判斷有無按鍵首先判斷有無按鍵n列線輸出全列線輸出全0,行線輸入初始化,行線輸入初始化n讀行線判斷有無按鍵讀行線判斷有無按鍵 逐行掃描按鍵(逐行輸

27、出逐行掃描按鍵(逐行輸出0)n 輸出列掃描值輸出列掃描值n 讀行線判斷有無按鍵,如有則把讀行線判斷有無按鍵,如有則把剛輸出的列掃描值和讀入的行值組剛輸出的列掃描值和讀入的行值組合返回,否則繼續(xù)掃描下一列合返回,否則繼續(xù)掃描下一列開始開始輸出全列掃描值輸出全列掃描值掃到最后一列?掃到最后一列?NYN該列該列有鍵按下有鍵按下?有鍵按下有鍵按下?有鍵按下有鍵按下?延時去抖動延時去抖動準備列掃描初值準備列掃描初值YNNY輸出列掃描值輸出列掃描值產(chǎn)生下一列掃描值產(chǎn)生下一列掃描值返回按鍵位返回按鍵位置編碼置編碼返回無鍵返回無鍵標識標識組合當前列組合當前列掃描值和讀掃描值和讀入的行值入的行值鍵盤掃描流程圖鍵

28、盤掃描流程圖鍵盤相關知識鍵盤相關知識VCCK1K2K3K40001按下按下按下按下001001111110010011100第0列無鍵無鍵多鍵多鍵第1列0010011100第0行無鍵無鍵多鍵多鍵第1行0110100110100101K2K1K4K30按下按下2.2 線反轉(zhuǎn)法原理線反轉(zhuǎn)法原理閉合鍵所在行、列的狀態(tài)均為閉合鍵所在行、列的狀態(tài)均為0,其余皆為,其余皆為1。行行0行行1列列0列列1VCC行行0行行1列列0列列1行行2行行3列列2列列3I/O(1)低四位低四位I/O(1)高四位高四位 0X7E 0X7D 0X7B 0X77 0XBE 0XBD 0XBB 0XB7 0XDE 0XDD 0X

29、DB 0XD7 0XEE 0XED 0XEB 0XE7閉合鍵所在行、列的狀態(tài)均為閉合鍵所在行、列的狀態(tài)均為0,其余皆為,其余皆為1。鍵盤相關知識鍵盤相關知識faHMLmixiriladoso48c/37=*260- 159+判斷按鍵所在行判斷按鍵所在行n行線輸入初始化,列線輸出全行線輸入初始化,列線輸出全0。n讀端口得行碼讀端口得行碼 得按鍵編碼得按鍵編碼合并第合并第 步所得按鍵行列碼返回。步所得按鍵行列碼返回。編程識別步驟編程識別步驟判斷按鍵所在列判斷按鍵所在列n列線輸入初始化,行線輸出全列線輸入初始化,行線輸出全0。n讀端口得列碼讀端口得列碼鍵盤相關知識鍵盤相關知識開始開始按鍵閉合?按鍵閉

30、合?按鍵閉合?按鍵閉合?行線輸入初始化行線輸入初始化列線輸出列線輸出0 0讀取行線保存行碼讀取行線保存行碼延時延時10ms10ms去抖動去抖動列線輸入初始化列線輸入初始化行線輸出行線輸出0 0讀取列線保存列碼讀取列線保存列碼行列碼組合行列碼組合按鍵松開?按鍵松開?返回返回YYYNNN鍵盤掃描流程圖鍵盤掃描流程圖VCC返回無返回無鍵標識鍵標識uchar key_scan() uchar scan_buf,key_h,key_l; key=0XF0; if(key&0 xf0)!=0 xf0 ) delay(10); if( (key&0 xf0)!=0 xf0 ) scan_bu

31、f= 0 x01; for(i=0;i4;i+) key=scan_buf; if (key&0 xf0)!=0 xf0) key_h=scan_buf&0 x0f; key_l=key&0 xf0; return(key_h+key_l); else scan_buf=1; else return(nokey); else return(nokey); 鍵盤掃描程序鍵盤掃描程序行掃描法行掃描法開始開始輸出全行掃描值輸出全行掃描值掃到最后一行?掃到最后一行?NYN該行該行有鍵按下有鍵按下?有鍵按下有鍵按下?有鍵按下有鍵按下?延時去抖動延時去抖動準備行掃描初值準備行掃描初

32、值YNNY輸出行掃描值輸出行掃描值產(chǎn)生下一行掃描值產(chǎn)生下一行掃描值返回按鍵位返回按鍵位置編碼置編碼返回無鍵返回無鍵標識標識組合當前行組合當前行掃描值和讀掃描值和讀入的列值入的列值uchar key_scan() uchar w1,w2,w; key = 0 x0f; if(key&0 x0f)!=0 x0f) delay(10); if(key&0 x0f)!=0 x0f) w1= key&0 x0f; key = 0 xf0; w2= key&0 xf0;w=w1|w2; while(key&0 xf0)!=0 xf0) return w ; else return error ;得得行行碼碼組組合合開始開始按鍵閉合?按鍵閉合?按鍵閉合?按鍵閉合?行線輸入初始化行線輸入初始化列線輸出列線輸出0 0讀取行線保存行碼讀取行線保存行碼延時延時10ms10ms去抖動去抖動列線輸入初始化列線輸入初始化行線輸出行線輸出0 0讀取列線保存列碼讀取列線保存列碼行列碼組合行列碼組合按鍵松開?按鍵松開?返回返回YYYNNN得得列列碼碼鍵盤掃描程序鍵盤掃描程序線反轉(zhuǎn)法線反轉(zhuǎn)法鍵盤翻譯程序鍵盤翻譯程序uchar key_tran(uchar ma) ucha

溫馨提示

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

評論

0/150

提交評論