80C51按鍵的應(yīng)用_第1頁
80C51按鍵的應(yīng)用_第2頁
80C51按鍵的應(yīng)用_第3頁
免費(fèi)預(yù)覽已結(jié)束,剩余10頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第六節(jié)按鍵的應(yīng)用6.1按鍵簡介同學(xué)們!現(xiàn)在你們已經(jīng)能熟練的使用數(shù)碼管了,那么,我們就可以用數(shù)碼管干些事情了,先設(shè)計(jì)個(gè)表吧。調(diào)表需要用按鍵,0K,讓我們來練習(xí)使用按鍵/。按鍵分為編碼按鍵和非編碼按鍵。如果按鍵的識(shí)別由專門的按鍵編碼器識(shí)別并輸出特定的鍵值或編碼,這種按鍵稱為編碼按鍵,比如我們計(jì)算機(jī)的鍵盤,它內(nèi)部有一個(gè)單片機(jī)專門識(shí)別按鍵并輸出對(duì)應(yīng)的編碼。如果按鍵的識(shí)別依靠單片機(jī)本身來識(shí)別,則稱為非編碼按鍵。比如下面這些按鍵。AA?圖6-1圖6-1是單片機(jī)常用的幾種按鍵。其中彈性小按鍵一按下,開關(guān)就閉臺(tái),一松手,開關(guān)就會(huì)自動(dòng)斷開。自鎖式按鍵按下時(shí)就會(huì)閉臺(tái)并且自動(dòng)鎖定在閉臺(tái)狀態(tài),再次按下時(shí)才會(huì)彈起斷開,

2、這種按鍵通常當(dāng)做電源開關(guān)。6.2獨(dú)立按鍵檢測(cè)的原理般情況下,按鍵與單片機(jī)的連接如下面這圖6-2所示FOTAJPCrs-iR:i2-TJJD2iRj寸I0.5?I-A踞PUDPtiHJpiaIs!:PrH?Pi-7p;w.p:11*1K!n.wiiF3.JA11P3-Wk1PlowTrfjMATCIPITfij-1ECT-圖6-2圖中上拉電阻R1、R2值一般在4.7k10k之間(對(duì)于內(nèi)部端口有上拉電阻的單片機(jī)則可省略此電阻,比如51的P1、P2、P3口),單片機(jī)對(duì)于按鍵的按下與否的檢測(cè),則是通過檢測(cè)相應(yīng)引腳上的電平來實(shí)現(xiàn)的。對(duì)于圖6-2而言,當(dāng)單片機(jī)檢測(cè)(讀?。┲罺P1.2和P1.3引腳上面的電

3、平為低時(shí),則表示按鍵已經(jīng)按下,反之,則表明按鍵沒有按下。我們?cè)诔绦蛑蠵1.2只要反復(fù)的檢測(cè)P1.2和P1.3引腳上面的電平,一旦檢測(cè)到為低了,就可以判斷按鍵按下。呵呵,簡單吧。等會(huì),您先別樂呵,話還沒說完呢。下面我們來看看,當(dāng)按鍵按下時(shí),引腳上面的波形是怎么變化的。建出Mr:圖6-3圖6-3上圖是一個(gè)理想波形圖,當(dāng)按鍵按下時(shí),P1.2引腳的電平馬上被拉低到0V了。但是實(shí)際上,當(dāng)按鍵閉臺(tái)時(shí),由于按鍵的機(jī)械特性并不能馬上保持良好的接觸,而是來回彈跳。因此,實(shí)際的P1.2引腳的波形圖是圖6-3的下圖所示。盡管抖動(dòng)的時(shí)間很短,我們的手根本感覺不出來。但是對(duì)于一秒鐘執(zhí)行百萬條指令的單片機(jī)而言,這個(gè)時(shí)間是

4、相當(dāng)?shù)拈L了。那么在這段抖動(dòng)的時(shí)間內(nèi),單片機(jī)可能讀到多次高低電平的變化。如果不加任何處理的話,就會(huì)認(rèn)為已經(jīng)按下,或者松開很多次了。而事實(shí)上,我們的手一直按在按鍵上,并沒有重復(fù)按動(dòng)很多次。要想能夠正確的判斷按鍵是否按下就要避開這段抖動(dòng)的時(shí)間。根據(jù)一般按鍵的機(jī)械特點(diǎn),以及按鍵的新舊程度等而言,這段抖動(dòng)的時(shí)間一般在5ms20ms之間。而一旦按鍵按下,穩(wěn)定閉臺(tái)的時(shí)間一般最短是20ms(手最快的人按下到放開的時(shí)間)。因此,我們通常需要使用如下的防抖措施:1?當(dāng)P1.2檢測(cè)到按鍵按下(即P1.2引腳讀到低電平)。2?延時(shí)1020ms。3?再次檢測(cè)P1.2按鍵是否仍被按下(即P1.2弓I腳依舊讀到低電平),如

5、果此時(shí)P1.2引腳仍然能讀到低電平,說明按鍵確實(shí)已經(jīng)穩(wěn)定的按下了。4?等待按鍵被放開。上述偽代碼寫成C51代碼就應(yīng)該是這個(gè)樣子:sbitBtnAdd=P1A2;/將P1.2引腳重新命名為BtnAddif(BtnAdd=O)/當(dāng)P1.2檢測(cè)到按鍵按下(即P1.2弓I腳讀到低電平)(Delay(20);/延時(shí)20ms。if(BtnAdd=O)再次檢測(cè)P1.2按鍵是否仍被按下,如果此時(shí)P1.2弓I腳仍然能讀到低電平,說明按鍵確實(shí)已經(jīng)穩(wěn)定的按下了while(!BtnAdd);等待按鍵被放開(按鍵沒放開時(shí)BtnAdd為低電平(邏輯0),取反后為高電平(邏輯1),此時(shí)while循環(huán)條件為真,/則繼續(xù)執(zhí)行該

6、句,直到按鍵放開,后面的代碼才能被執(zhí)行6.3獨(dú)立按鍵的使用請(qǐng)實(shí)現(xiàn):一位數(shù)碼管顯示從09的數(shù)字,使用兩個(gè)按鍵“Add”和“Sub”,按一下Add,顯示數(shù)字加一,按一下Sub,顯示數(shù)字減一,如顯示數(shù)字小于0或大于9,顯示字符“E”,即“ERROR的簡寫。6.3.1硬件的選擇與仿真電路的設(shè)計(jì)1.打開Proteus,選擇“File/NewDesign”菜單選項(xiàng),新建一個(gè)“設(shè)計(jì)項(xiàng)目”。并將項(xiàng)目保存為“PushButton_1。ItlluMqfFIhH4-12.選擇“P”按鈕或菜單Library/PickDivice/Symbol-P”菜單,從“元件庫”中選取元件。依次添加其他元件。其名稱和位置見下表。元

7、件名稱CategorySub-CategoryResults單片機(jī)MicroprocessorICs8051FamilyAT89C52一位7段數(shù)碼管Optoelectronics7-SegmentDisplays7SEG-MPX1-CA按鈕Switches&RelaysSwitchesBUTTON電阻ResistorsGenericRES依次從備選元件庫中擺放器件,連線,畫出仿真電路圖,如圖6-4所示。圖6-4電路的說明:在仿真電路中,由于我們使用的是P1口,它內(nèi)部已經(jīng)有上拉電阻了,因此我們可以不再添加上拉電阻了。但是,如果您使用的是P0口(內(nèi)部沒有上拉電阻),大家必須添加上拉電阻,以確保單片

8、機(jī)可以準(zhǔn)確的檢測(cè)到按鍵按下的動(dòng)作。632程序的設(shè)計(jì)新建一個(gè)keil項(xiàng)目,并命名為PushButton_1”并添加一個(gè)名為main.c”的源代碼文件,然后鍵入如下代碼。如代碼6.1所示。/代碼6.1#inelude#ineludefunction.h#includecommon.h#defineSeg7PortP2/數(shù)碼管連接在P2口上用一個(gè)數(shù)組來定義字符09共陽極數(shù)碼管編碼ucharcodeSeg7ca=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;#defineE0x86II用一個(gè)字符E來代替字符E的共陽極數(shù)碼管編碼(0x86是其編碼)s

9、bitBtnAdd=P1A2;II將P1.2引腳重新命名為BtnAdd(加1按鍵)sbitBtnSub=P1A3;將P1.3引腳重新命名為BtnSub(減1按鍵)ucharcount;II定義一個(gè)變量來存儲(chǔ)當(dāng)前數(shù)碼管顯示的值voidmain()count=0;數(shù)碼管將從0開始顯示while(1)BtnAdd=1;BtnSub=1;II在讀I/O口之前,先要將其置為高電平/如果加1按鍵按下,貝Ucount加1if(BtnAdd=0)/當(dāng)P1.2檢測(cè)到按鍵按下(即P1.2引腳讀到低電平)Delay(20);II延時(shí)20msif(BtnAdd=0)再次檢測(cè)P1.2按鍵是否仍被按下,如果此時(shí)P1.2引

10、腳仍然能讀到低電平,說明按鍵確實(shí)已經(jīng)穩(wěn)定的按下了while(舊tnAdd);等待按鍵被放開(按鍵沒放開時(shí)BtnAdd為低電平(邏輯0),取反后為高電平(邏輯1),此時(shí)while循環(huán)條件為真,則繼續(xù)執(zhí)行該句,直到按鍵放開,后面的代碼才能被執(zhí)行)count+;II加1鍵被按下,count加1elseif(BtnSub=0)/如果減1按鍵按下則count減1(過程與加1鍵檢測(cè)相同)Delay(20);if(BtnSub=O)while(舊tnSub);count-;/減1鍵被按下,count減1if(count=0&count=9)/如果count在09之間,則顯示對(duì)應(yīng)的數(shù)字(Seg7Port=se

11、g7cacount;else/否則顯示字符E表示錯(cuò)誤(Seg7Port=E;知識(shí)點(diǎn):I/O口做輸入口當(dāng)我們要用51單片機(jī)的I/O口做輸入口(即檢測(cè)I/O口當(dāng)前的狀態(tài))時(shí),為了正確的讀取I/O口的輸入值,我們一般需要先將I/O口置為高電平,如:BtnAdd=1;BtnSub=1;/在讀I/O口之前,先要將其置為高電平知識(shí)點(diǎn):ifelseifelse結(jié)構(gòu)的語義ifelseifelse判斷語句時(shí)C常用的判斷語句,其語義如下:if()如果(elseif()/或者(再如果)(else否貝U(這三個(gè)分支只有一個(gè)能發(fā)生(即3選1)。如果你使用if()(if()(那么,這兩個(gè)分支有可能同時(shí)發(fā)生(多選)。請(qǐng)大家

12、注意它們?cè)谡Z義上的區(qū)別,在本例中,我們?cè)O(shè)計(jì)時(shí),是不考慮兩個(gè)按鍵同時(shí)被按下的情形的,因此,實(shí)際是二選一的情況,因此,我們使用了ifelseifelse判斷語句。6.4多位數(shù)碼管的顯示請(qǐng)實(shí)現(xiàn):兩位數(shù)碼管顯示從0059的數(shù)字,使用兩個(gè)按鍵Add和Sub,按一下Add,數(shù)字加一,按一下Sub,數(shù)字減一,如此反復(fù)。641硬件的選擇與仿真電路的設(shè)計(jì)1. 打開Proteus,選擇File/NewDesign”菜單選項(xiàng),新建一個(gè)”設(shè)計(jì)項(xiàng)目”。并將項(xiàng)目保存為PushButton_2”。選擇“P”按鈕或菜單Library/PickDivice/SymbolP”菜單,從“元件庫”中選取元件。依次添加其他元件。其名稱

13、和位置見下表。元件名稱CategorySub-CategoryResults51單片機(jī)MicroprocessorICs8051FamilyAT89C52兩位7段共陽數(shù)碼管Optoelectronics7-SegmentDisplays7SEG-MPX2-CA按鈕Switches&RelaysSwitchesBUTTON電阻ResistorsGenericRES依次從備選元件庫中擺放器件,連線,畫出仿真電路圖,如圖6-5所示。BAp_-nBL?,口世m(xù)m二urnraiffii一AFHfcA園0呻mSMi4RtfMKA|7M|iT并(MK血?0man舊也碼KrSAiiR-EAI-I圖6-5電路說

14、明因?yàn)槲覀兪褂昧藘晌还碴枖?shù)碼管,由于51的驅(qū)動(dòng)能力不足以直接驅(qū)動(dòng)數(shù)碼管,因此,我們通過兩個(gè)PNP三極管作為電子開關(guān)來驅(qū)動(dòng)數(shù)碼管位選線,當(dāng)P3.0輸出低電平時(shí),PNP三極管導(dǎo)通,Vcc通過三極管Q1加在數(shù)碼管的個(gè)位,從而使數(shù)碼管的個(gè)位發(fā)光(P3.1控制數(shù)碼管十位發(fā)光的原理相同)。電阻R3和R4為限流電阻,通常取值為1K左右。電阻R5和R6為下拉電阻,保證PNP三極管可靠地截止,通常取值為10K左右。642實(shí)現(xiàn)原理分析我們使用一個(gè)變量count表示當(dāng)前數(shù)值,讓count從0開始,每按Add鍵加1,當(dāng)count增加到59時(shí),讓它回到0,每按Sub鍵減1,當(dāng)count減少到0時(shí),讓它回到59重新開始。

15、這樣,count就在059之間反復(fù)變化。1. 我們讓數(shù)碼管的個(gè)位顯示count的個(gè)位,數(shù)碼管的十位顯示count的十位。6.4.3程序的設(shè)計(jì)新建一個(gè)keil項(xiàng)目,并命名為PushButton_2”并添加一個(gè)名為main.c”的源代碼文件,然后鍵入如下代碼。如代碼6.2所示。代碼6.2#include#includefunction.h#includecommon.h#defineSeg7PortP2/數(shù)碼管連接在P2口上用一個(gè)數(shù)組來定義字符09共陽極數(shù)碼管編碼ucharcodeSeg7ca=(0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;s

16、bitBtnAdd=P1A2;/將P1.2引腳重新命名為BtnAdd(加1按鍵)sbitBtnSub=P3;將P1.3引腳重新命名為BtnSub(減1按鍵)sbitGeWei=P3A0;定義數(shù)碼管個(gè)位的位選線sbitShiWei=P3A1;/定義數(shù)碼管十位的位選線ucharcount;定義一個(gè)變量來存儲(chǔ)當(dāng)前數(shù)碼管顯示的值關(guān)閉所有的數(shù)碼管顯示voidCloseAIISeg()(GeWei=1;/關(guān)閉個(gè)位位選線ShiWei=1;/關(guān)閉十位位選線在數(shù)碼管上顯示count值voidDisplay。(uchartmp;CIoseAIISeg();/關(guān)閉所有的數(shù)碼管顯示先顯示個(gè)位tmp=count%10;

17、提取count的個(gè)位數(shù)GeWei=0;先顯示個(gè)位,將十位關(guān)閉Seg7Port=seg7catmp;/將count個(gè)位的編碼送出Delay(1);CIoseAIISeg();/關(guān)閉所有的數(shù)碼管顯示;消隱,防止閃爍/再顯示十位tmp=count/10;/提取十位數(shù)ShiWei=0;/先顯示十位,將個(gè)位關(guān)閉count=0;while(1)(BtnAdd=1;BtnSub=1;/在讀I/O口之前,先要將其置為高電平if(BtnAdd=0)(Delay(20);if(BtnAdd=0)再次檢測(cè)P1.2按鍵是否仍被按下,如果此時(shí)P1.2引腳仍然能讀到低電平,說明按鍵確實(shí)已經(jīng)穩(wěn)定的按下了(while(!Bt

18、nAdd);/等待按鍵被放開(按鍵沒放開時(shí)BtnAdd為低電平(邏輯0),取反后為高電平(邏輯1),此時(shí)while循環(huán)條件為真,則繼續(xù)執(zhí)行該句,直到按鍵放開,后面的代碼才能被執(zhí)行)if(count0)/如果count0,每按Sub鍵count減1,否則count回59count-;elsecount=59;Display。;/在數(shù)碼管上顯示count值程序代碼說明1?程序結(jié)構(gòu)說明在本例中,我們的程序設(shè)計(jì)思路是這樣的在main函數(shù)的大循環(huán)中,不斷的檢測(cè)BtnAdd和BtnSub是否被按下,如果被按下,則根據(jù)按下的按鍵修改count值,然后再將count的個(gè)位和十位分另U顯示在數(shù)碼管上即可。2?個(gè)

19、數(shù)循環(huán)變化的技巧if(count0)/如果count0,每按Sub鍵count減1,否則count回59count-;elsecount=59;在讓一個(gè)數(shù)循環(huán)變化時(shí),這是一種常用的技巧,后面時(shí)鐘項(xiàng)目中,我們會(huì)使用到這種技巧(調(diào)整時(shí)分秒,年月日等等)。Display。函數(shù)的使用因?yàn)樵趍ain函數(shù)的大循環(huán)中,我們要不斷的將count的個(gè)位和十位顯示在數(shù)碼管上,這個(gè)顯示操作可以寫為一個(gè)函數(shù),即Display()函數(shù),這是一種常用的代碼復(fù)用的技巧。6.54X4鍵盤的使用當(dāng)我們的應(yīng)用中要使用比較多的按鍵時(shí),如果使用獨(dú)立按鍵的話,將會(huì)占用很多I/O口,那么,為了節(jié)約I/O口線,我們需要使用另一類按鍵,其中

20、比較常用的是4X4鍵盤。讓我們實(shí)現(xiàn)如下功能:讓1位數(shù)碼管依次顯示4X4鍵盤的編碼(數(shù)字鍵顯示對(duì)應(yīng)的數(shù)字,功能鍵顯示對(duì)應(yīng)的AF字符)。6.5.14X4鍵盤實(shí)現(xiàn)按鍵檢測(cè)的原理分析一般情況下,4X4鍵盤與單片機(jī)的連接如下面這圖6-6所示。-RBMMImg-nWHWU時(shí)血口FiWWiPSTiUJffEmwfl野沁地噲匹ii二#?4A13WH;悴昨:Kl*f&WlAW.虻tfT常鮮廠皤ti?rrjfA-.S3科SO圖6-64X4鍵盤通常有4行4列共16個(gè)按鈕,分別跨接在4根交叉的行線和列線上,我們通常把4根行線和4根列線連接在單片機(jī)的一個(gè)I/O口上,比如像圖6-6那樣,4根行線連接在P2.0P2.3上,

21、4根列線連接在P2.4P2.7上。當(dāng)我們要檢測(cè)鍵盤上那個(gè)按鍵被按下,我們通常采用如下方法:1彼們先拉低P2.02?依次檢測(cè)P2.4P2.7,如果沒有檢測(cè)到任何低電平,說明沒有按鍵被按下。檢測(cè)到有低電平,比如P2.5為低電平,說明P2.0和P2.5交叉的那個(gè)按鍵被按下了。8. 3彼們?cè)倮蚉2.14依次檢測(cè)P2.4P2.7o(同步驟2)5彼們?cè)倮蚉2.26依次檢測(cè)P2.4P2.7o(同步驟2)7彼們?cè)倮蚉2.3依次檢測(cè)P2.4P2.7o(同步驟2)重復(fù)步驟18。上述偽代碼寫成C51代碼就應(yīng)該是這個(gè)樣子。sbitLine_A=P2P;/#4X4鍵盤的4根行線連接在P2.0P2.3sbitLin

22、e_B=P2A1;sbitLine_C=P2A2;sbitLine_D=P2A3;sbitLine_仁口2人4;/將4X4鍵盤的4根列線連接在P2.4P2.7sbitLine_2=P2A5;sbitLine_3=P2A6;sbitLine_4=P2A7;Line_A=O;/先拉低P2.0if(Line1=0)/檢測(cè)每根列線是否被拉低。如果沒有檢測(cè)到任何低電平,說明沒有按鍵被按下Delay(10);/消抖if(Line_仁=0)(result=7;檢測(cè)到有低電平,說明P2.0和P2.4交叉的那個(gè)按鍵被按下了,則輸出對(duì)應(yīng)的按鍵的編碼(編碼自己定)elseif(Line_2=0)/檢測(cè)每根列線是否被

23、拉低。如果沒有檢測(cè)到任何低電平,說明沒有按鍵被按下(Delay(10);/消抖if(Line_2=0)(elseif(Line_3=0)/檢測(cè)每根列線是否被拉低。如果沒有檢測(cè)到任何低電平,說明沒有按鍵被按下(Delay(10);/消抖if(Line_3=0)(result=9;檢測(cè)到有低電平,說明P2.o和P2.6交叉的那個(gè)按鍵被按下了,則輸出/對(duì)應(yīng)的按鍵的編碼elseif(Line_4=0)/檢測(cè)每根列線是否被拉低。如果沒有檢測(cè)到任何低電平,說明沒有按鍵被按下(Delay(10);/消抖if(Line_4=0)(再依次檢測(cè)P2.1,P2.2,P2.36.5.2硬件電路的設(shè)計(jì)1. 打開Prot

24、eus,選擇File/NewDesign”菜單選項(xiàng),新建一個(gè)”設(shè)計(jì)項(xiàng)目”。并將項(xiàng)目保存為“4X4KeyPad。選擇“P”按鈕或菜單Library/PickDivice/SymbolP”菜單,從“元件庫”中選取元件。依次添加其他元件。其名稱和位置見下表。元件名稱CategorySub-CategoryResults51單片機(jī)MicroprocessorICs8051FamilyAT89C521位7段共陽數(shù)碼管Optoelectronics7-SegmentDisplays7SEG-MPX1-CA4X4鍵盤Switches&RelaysKeyPadsKEYPAD-SMALLCA1電阻Resisto

25、rsGenericRES依次從備選元件庫中擺放器件,連線,畫出仿真電路圖,如圖6-7所示HET坐ri*ri.*WP17OdlFIHOEnn?fll圖6-7電路說明我們使用P2口來驅(qū)動(dòng)一位共陽極數(shù)碼管,同時(shí)使用P3口來檢測(cè)4X4按鍵,其中,P3.0P3.3引腳連接到行線ABCD上,P3.4P3.7連接到列線1234上。6.5.3程序的設(shè)計(jì)1.新建一個(gè)keil項(xiàng)目,并命名為4X4Key”并添加一個(gè)名為main.c”的源代碼文件,然后鍵入如下代碼。如代碼6.3所示。代碼6.3#include#includefunction.h”#includecommon.h#defineSeg7PortP2/數(shù)碼

26、管連接在P2口上#defineKeyPadP3/鍵盤連接在P3口上sbitLine_A=P3P;/將4X4鍵盤的4根行線連接在P3.0P3.3sbitLine_B=P3A1;sbitLine_C=P3A2;sbitLine_D=P3A3;sbitLine_仁口3人4;/將4X4鍵盤的4根列線連接在P3.4P3.7sbitLine_2=P3A5;sbitLine_3=P3A6;sbitLine_4=P3A7;用一個(gè)數(shù)組來定義字符0F共陽極數(shù)碼管編碼ucharcodeseg7ca=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83

27、,0xc6,0xa1,0x86,0x8e;ucharcount;定義一個(gè)變量來存儲(chǔ)當(dāng)前數(shù)碼管顯示的值/鍵盤掃描程序ucharScanKeypad。ucharresult=N:/定義函數(shù)輸出結(jié)果KeyPad=Oxff;全部置高電平,為檢測(cè)輸入做準(zhǔn)備Line_A=0;/先拉低P3.0if(Line_1=0)/檢測(cè)每根列線是否被拉低。如果沒有檢測(cè)到任何低電平,說明沒有按鍵被按下。Delay(10);/消抖if(Line_仁=0)result=7;檢測(cè)到有低電平,說明P3.0和P3.4交叉的那個(gè)按鍵被按下了,則輸出對(duì)應(yīng)的按鍵/的編碼(編碼自己定,本例中P3.0和P3.4交叉為數(shù)字7按鍵,所以我們輸出7

28、)elseif(Line_2=0)檢測(cè)每根列線是否被拉低。如果沒有檢測(cè)到任何低電平,說明沒有按鍵被按下。(Delay(10);if(Line_2=0)(result=8;檢測(cè)到有低電平,說明P3.0和P3.5交叉的那個(gè)按鍵被按下了,則輸出對(duì)應(yīng)的按鍵的編碼elseif(Line_3=0)檢測(cè)每根列線是否被拉低。如果沒有檢測(cè)到任何低電平,說明沒有按鍵被按下。(Delay(10);/消抖if(Line_3=0)(result=9;檢測(cè)到有低電平,說明P3.o和P3.6交叉的那個(gè)按鍵被按下了,則輸出對(duì)應(yīng)的按鍵的編碼elseif(Line_4=0)檢測(cè)每根列線是否被拉低。如果沒有檢測(cè)到任何低電平,說明沒有按鍵被按

溫馨提示

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

評(píng)論

0/150

提交評(píng)論