3.1 任務(wù)3.1 按鍵控制LED亮滅-查詢方式_第1頁
3.1 任務(wù)3.1 按鍵控制LED亮滅-查詢方式_第2頁
3.1 任務(wù)3.1 按鍵控制LED亮滅-查詢方式_第3頁
3.1 任務(wù)3.1 按鍵控制LED亮滅-查詢方式_第4頁
3.1 任務(wù)3.1 按鍵控制LED亮滅-查詢方式_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機應(yīng)用技術(shù)項目三按鍵控制LED亮滅任務(wù)3.1按鍵控制LED亮滅—查詢方式任務(wù)要求

選擇SW1為目標(biāo)按鍵,CC2530開發(fā)板上電后D3熄滅,在程序中判斷按鍵是否按下,每次按下,將D3的亮滅狀態(tài)切換一次,即由亮到滅,或者由滅到亮。12相關(guān)寄存器基礎(chǔ)知識3任務(wù)分析4電路圖分析5任務(wù)實現(xiàn)一、基礎(chǔ)知識

查詢方式一般來說,按鍵會連接外接電源(或接地)、電阻,以及單片機的I/O引腳。按下按鍵后,會導(dǎo)致CC2530單片機I/O引腳上的電平發(fā)生高低轉(zhuǎn)換。在程序中,通過不斷查詢I/O引腳上的高低電平的變化,來判斷按鍵是否按下的方式。一、基礎(chǔ)知識

按鍵抖動通常所用的按鍵都是機械彈性開關(guān),由于機械觸點的彈性作用,一個按鍵在閉合時不會馬上穩(wěn)定地接通,在斷開時也不會馬上穩(wěn)定地斷開,而是在閉合或斷開的瞬間伴隨一連串的抖動。按下抬起按下抬起一、基礎(chǔ)知識

按鍵抖動抖動時間的長短由按鍵的機械特性決定,一般為5ms~10ms,人按一下按鍵的時間一般為零點幾秒至數(shù)秒。由于單片機運行速度快,按鍵的抖動會導(dǎo)致在一次按下過程中,單片機識別出多次按下和抬起。為避免這種情況,需要消除按鍵抖動帶來的影響。問題按下抬起按下抬起一、基礎(chǔ)知識

通過電路硬件設(shè)計的方法來過濾按鍵輸出信號,將抖動信號過濾成理想信號后傳輸給單片機。消除抖動的方式通過程序過濾的方法,在程序中檢測到按鍵動作后,延時一段時間后再次檢測按鍵狀態(tài),如果延時前后按鍵的狀態(tài)一致,則說明按鍵是正常執(zhí)行動作,否則認(rèn)為是按鍵抖動。硬件去抖軟件去抖二、相關(guān)寄存器輸入模式寄存器:P0INP,P1INP,P2INPP0INP位名稱復(fù)位讀寫描述7:00x00R/WP0_0~P0_7輸入選擇位:0為上拉/下拉,1為三態(tài)P1INP位名稱復(fù)位讀寫描述7:2000000R/WP1_7~P1_2輸入選擇位:0為上拉/下拉,1為三態(tài)1:000R0沒有使用二、相關(guān)寄存器P2INP位名稱復(fù)位讀寫描述70R/W對所有P2端口設(shè)置上拉/下拉輸入:0為上拉,1為下拉60R/W對所有P1端口設(shè)置上拉/下拉輸入:0為上拉,1為下拉50R/W對所有P0端口設(shè)置上拉/下拉輸入:0為上拉,1為下拉4:000000R/WP2_4~P2_0輸入選擇位:0為上拉/下拉,1為三態(tài)引腳是上拉、下拉,還是三態(tài),需要P0INP、P1INP和P2INP配合設(shè)置。二、相關(guān)寄存器設(shè)置P1_2為上拉

P1INP&=~0x04;P2INP|=0x20;設(shè)置P1_2為上拉/下拉設(shè)置P1端口全為上拉,故P1_2也為上拉三、任務(wù)分析

CC2530單片機上電,配置SW1、D3對應(yīng)的I/O引腳,并熄滅D3。使用軟件去抖方式,判斷按鍵是否按下。如果SW1按下,切換D3亮滅狀態(tài),等待SW1抬起后,返回步驟2,繼續(xù)執(zhí)行;如果SW1沒按下,返回步驟2,繼續(xù)執(zhí)行。四、電路圖分析

當(dāng)SW1沒有被按下時,P1_2引腳相當(dāng)于外接了一個上拉電阻,并連接到3.3V電源上,呈現(xiàn)高電平狀態(tài)。當(dāng)SW1被按下時,SW1的4個引腳導(dǎo)通,P1_2引腳相當(dāng)于直接連接到地,呈現(xiàn)低電平狀態(tài)。根據(jù)電路連接圖可知,當(dāng)SW1按鍵被按下時,從P1_2引腳讀取的邏輯值是0,按鍵沒被按下時,從P1_2讀取的值是1。五、任務(wù)實現(xiàn)

引腳設(shè)置設(shè)置P1_0為通用I/O引腳,輸出方向P1SEL

&=~

0x01;

//設(shè)置P1_0引腳為通用I/O引腳P1DIR

|=

0x01;//設(shè)置P1_0引腳為輸出方向設(shè)置P1_2為通用I/O引腳,輸入方向P1SEL

&=~

0x04;

//設(shè)置P1_2引腳為通用I/O引腳P1DIR

&=~

0x04;

//設(shè)置P1_2引腳為輸入方向設(shè)置P1_2為上拉輸入模式P1INP

&=~

0x04;

//設(shè)置P1_2引腳為上拉/下拉模式P2INP

&=~

0x40;

//設(shè)置P1_2引腳為上拉模式五、任務(wù)實現(xiàn)

按鍵事件處理while(1)//程序主循環(huán)

{

if(SW1

==

0)

//如果按鍵被按下

{

delay(100);

//軟件消抖進行延時

if(SW1

==

0)

//經(jīng)過延時后按鍵仍舊處在按下狀態(tài)

{

D3

=

!D3;

//切換D3的亮滅狀態(tài)

while(!SW1);

//等待按鍵松開

}

}

}軟件去抖的實現(xiàn)方式當(dāng)按鍵處在按下狀態(tài)的時候,SW1值是0,!SW1值為1,這樣while(!SW1)是死循環(huán),會導(dǎo)致CC2530單片機的CPU一直循環(huán)執(zhí)行該行代碼,即導(dǎo)致單片機“卡”在這里。當(dāng)按鍵抬起的時候,SW1值為1,!SW1值為0,該循環(huán)會結(jié)束,然后繼續(xù)執(zhí)行主循環(huán)。#defineSW1(P1_2)#defineD3(P1_0)五、任務(wù)實現(xiàn)編譯程序,并生成.hex文件,將.hex文件燒寫到CC2530

溫馨提示

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

評論

0/150

提交評論