飛思卡爾智能車開發(fā)教程Chap06_第1頁
飛思卡爾智能車開發(fā)教程Chap06_第2頁
飛思卡爾智能車開發(fā)教程Chap06_第3頁
飛思卡爾智能車開發(fā)教程Chap06_第4頁
飛思卡爾智能車開發(fā)教程Chap06_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第6章 GPIO的應(yīng)用實(shí)例鍵盤、LED與LCDV2.0 20112本章目錄本章目錄6.1 6.1 鍵盤鍵盤6.2 6.2 數(shù)碼管數(shù)碼管LEDLED6.3 6.3 液晶液晶LCDLCD2021-11-233本章目錄本章目錄6.1 6.1 鍵盤鍵盤6.2 6.2 數(shù)碼管數(shù)碼管LEDLED6.3 6.3 液晶液晶LCDLCD2021-11-2346.1 6.1 鍵盤鍵盤v 鍵盤接口方式鍵盤接口方式1.1.獨(dú)立方式獨(dú)立方式獨(dú)立方式是指將每個(gè)獨(dú)立按鍵按一對一的方式直接接到獨(dú)立方式是指將每個(gè)獨(dú)立按鍵按一對一的方式直接接到I/OI/O輸入線上。讀鍵值時(shí)直接讀輸入線上。讀鍵值時(shí)直接讀I/OI/O口,每個(gè)鍵的狀

2、態(tài)通過讀入口,每個(gè)鍵的狀態(tài)通過讀入鍵值來反映。鍵值來反映。2.2.矩陣方式矩陣方式 矩陣方式是用矩陣方式是用n n條條I/OI/O線組成行輸入口,線組成行輸入口,m m條條I/OI/O線組成列輸線組成列輸出口,在行列線的每一個(gè)交點(diǎn)上設(shè)置一個(gè)按鍵。讀鍵值方出口,在行列線的每一個(gè)交點(diǎn)上設(shè)置一個(gè)按鍵。讀鍵值方法一般采用掃描方式,即輸出口按位輪換輸出低電平,再法一般采用掃描方式,即輸出口按位輪換輸出低電平,再從輸入口讀入鍵信息,最后獲得鍵碼。從輸入口讀入鍵信息,最后獲得鍵碼。2021-11-2356.1 6.1 鍵盤鍵盤v 鍵盤編程的基本問題鍵盤編程的基本問題 1. 1.鍵的識別鍵的識別 如何知道鍵盤

3、上哪個(gè)鍵被按下就是鍵的識別問題。識別是如何知道鍵盤上哪個(gè)鍵被按下就是鍵的識別問題。識別是否有鍵被按下,主要有查詢法、定時(shí)掃描法與中斷法等。而要否有鍵被按下,主要有查詢法、定時(shí)掃描法與中斷法等。而要識別鍵盤上哪個(gè)鍵被按下主要有行掃描法與行反轉(zhuǎn)法。識別鍵盤上哪個(gè)鍵被按下主要有行掃描法與行反轉(zhuǎn)法。 2.2.抖動(dòng)問題抖動(dòng)問題 當(dāng)鍵被按下時(shí),會出現(xiàn)所按的鍵在閉合位置和斷開位置之當(dāng)鍵被按下時(shí),會出現(xiàn)所按的鍵在閉合位置和斷開位置之間跳幾下才穩(wěn)定到閉合狀態(tài)的情況,當(dāng)釋放一個(gè)按鍵時(shí)也會出間跳幾下才穩(wěn)定到閉合狀態(tài)的情況,當(dāng)釋放一個(gè)按鍵時(shí)也會出現(xiàn)類似的情況,這就是抖動(dòng)問題。在軟件上,解決抖動(dòng)的方法現(xiàn)類似的情況,這就

4、是抖動(dòng)問題。在軟件上,解決抖動(dòng)的方法通常是延遲等待抖動(dòng)的消失或多次識別判定。通常是延遲等待抖動(dòng)的消失或多次識別判定。 2021-11-2366.1 6.1 鍵盤鍵盤v 鍵盤編程的基本問題鍵盤編程的基本問題 3. 3.重鍵問題重鍵問題所謂重鍵問題就是有兩個(gè)及兩個(gè)以上按鍵同時(shí)處于閉所謂重鍵問題就是有兩個(gè)及兩個(gè)以上按鍵同時(shí)處于閉合狀態(tài)的處理問題。在軟件上,處理重鍵問題通常有連鎖合狀態(tài)的處理問題。在軟件上,處理重鍵問題通常有連鎖法與巡回法。法與巡回法。2021-11-237 給出一個(gè)實(shí)際的44鍵盤編程實(shí)例,講述如何掃描鍵盤取得鍵值和鍵盤編碼等問題。6.1 6.1 鍵盤鍵盤鍵盤編程實(shí)例鍵盤編程實(shí)例202

5、1-11-2386.1 6.1 鍵盤鍵盤 4*4鍵盤與 MCU接法示例2021-11-23列線n1n4分別接PTIP0、PTIP1、PTIP2、PTIP3,且編程時(shí)將這四個(gè)引腳定義為輸入并進(jìn)行上拉,行線m1m4分別PORTA0PORTA3,且編程時(shí)將PORTA0PORTA3定義為輸出。96.1 6.1 鍵盤鍵盤 鍵盤定義 1 EE 2 DE 3 BE A 7E 4 ED 5 DD 6 BD B 7D 7 EB 8 DB 9 BB C 7B * E7 0 D7 # B7 D 77 定義值 鍵值 2021-11-23106.1 6.1 鍵盤鍵盤 鍵值計(jì)算方法以上兩張圖給出了鍵盤與MCU接線以及鍵的

6、定義符號“0”“9”、“A”“D”、“*”、“#”等。如何識別“1”鍵呢?采用逐行逐列地檢查鍵盤狀態(tài)的方法對鍵盤掃描。在MCU的控制下,使行線m1為低電平(0),其余三根行線m2、m3、m4都為高電平(1),并讀列線n1n4狀態(tài)。當(dāng)“1”鍵被按下時(shí),圖中n1狀態(tài)值為0。則“1”鍵對應(yīng)于:AN7AN0=11101110,即$EE;同理“2”鍵對應(yīng)于:AN7AN0=11011110,即$DE;“D”鍵對應(yīng)于:AN7AN0=01110111,即$77。前者“1”、“2”、“D”就是我們的定義值,后者$EE、$DE、$77就是“鍵值”,這種情況“鍵值”是一個(gè)字節(jié)。這樣即可以得出對應(yīng)于相應(yīng)接線圖的鍵值表

7、。鍵值可以通過掃描法獲得,由鍵值通過查表法編程得到定義值。2021-11-23116.1 6.1 鍵盤鍵盤 鍵盤構(gòu)件程序n 包含頭文件KB.h和程序文件KB.c,包括對以下函數(shù)的聲明和定義(需調(diào)用GPIO構(gòu)件): Void KBInit( void ):初始化鍵盤口方向和數(shù)據(jù)寄存器 INT8U KBScan1(void):掃描一次4*4鍵盤上的按鍵,讀取鍵值 INT8U KBScanN(INT8U KB_count):多次掃描鍵盤,消除抖動(dòng)“ INT8U KBDef(INT8U KB_valve):鍵值轉(zhuǎn)為定義值2021-11-236.1 6.1 鍵盤鍵盤v鍵盤測試工程鍵盤測試工程v硬件連接硬

8、件連接: :接線接線PTP03PTP03分別接分別接D D形板鍵盤接形板鍵盤接線處的線處的14,PTA0314,PTA03分別接分別接5858。 程序功能:程序功能: 在main.c中調(diào)用上一節(jié)介紹的4個(gè)函數(shù)實(shí)現(xiàn)鍵盤的測試。運(yùn)行程序后,UART0模塊向PC機(jī)發(fā)送“Test KeyBoard!”,若PC機(jī)收到則表明串行通信正常。然后,按下4*4鍵盤上的任一按鍵后,UART0模塊向PC機(jī)發(fā)送對應(yīng)的鍵值和定義值。12注意,這兩個(gè)值需用十六進(jìn)制顯示。2021-11-2313本章目錄本章目錄6.1 6.1 鍵盤鍵盤6.2 6.2 數(shù)碼管數(shù)碼管LEDLED6.3 6.3 液晶液晶LCDLCD2021-11

9、-23146.2 6.2 數(shù)碼管數(shù)碼管LEDLED對數(shù)碼管編程需要了解的兩個(gè)問題對數(shù)碼管編程需要了解的兩個(gè)問題所用LED是幾段,是共陰還是共陽? 二、所選LED的電氣參數(shù)怎樣?如額定功率、額定電流是多少? a b c d e f g dp 15 SPH 8 7 SPL 0 (a)共陰極 Gnd (b) 共陽極 Vcc a b c d e f g dp 2021-11-23156.2 6.2 數(shù)碼管數(shù)碼管LEDLEDLED的選擇需要根據(jù)實(shí)際應(yīng)用需求來決定,若只需要顯示數(shù)字“0”“9”,則只需七段LED就夠了,若同時(shí)又要顯示小數(shù)點(diǎn),則需使用八段LED。 8段數(shù)碼管由8個(gè)發(fā)光二極管組成。MCU是通過

10、I/O腳來控制LED某段發(fā)光二極管的亮滅從而達(dá)到顯示某個(gè)數(shù)字的目的。8段數(shù)碼管分別由a、b、c、d、e、f、g位段和小數(shù)點(diǎn)位段h(或記為dp)組成。共陰極8段數(shù)碼管的信號端高電平有效,只要在各位段加上高電平信號即可使相應(yīng)的位段發(fā)光,比如要使a段發(fā)光,則在a段加上高電平即可。共陽極的8段數(shù)碼管則相反,在相應(yīng)的位段加上低電平即可使該位段發(fā)光。比如對共陽極8段數(shù)碼管,AN07分別接ag、dp,即MCF_GPIO_PORTAN=0b01111111時(shí)dp段亮;當(dāng)MCF_GPIO_PORTAN=0b10000000時(shí)除dp位段外,其他位段均亮。2021-11-23166.2 6.2 數(shù)碼管數(shù)碼管LEDL

11、ED如何對多個(gè)如何對多個(gè)LEDLED編程(以編程(以8 8段數(shù)碼管為例)段數(shù)碼管為例)2021-11-23176.2 6.2 數(shù)碼管數(shù)碼管LEDLED 數(shù)碼管構(gòu)件程序 包含頭文件LED.h和程序文件LED.c,包括對以下函數(shù)的聲明和定義(需調(diào)用GPIO構(gòu)件): void LEDInit(void)定義LED控制引腳的數(shù)據(jù)口和位選口為輸出 void LEDShow1(uint8 i, uint8 c)在第i個(gè)LED上顯示數(shù)字c(要查表轉(zhuǎn)碼)void LEDShow(uint8 *Buf) 在4連排LED上顯示4個(gè)十進(jìn)制數(shù)2021-11-236.2 6.2 數(shù)碼管數(shù)碼管LEDLEDvLEDLED測

12、試工程測試工程 硬件連接硬件連接: : MCU的PTB口控制8個(gè)位段(數(shù)據(jù))。PORTB70分別接ha位段,PORTE口6、5、3、2腳作為片選端. 程序功能:在程序功能:在main.cmain.c中調(diào)用上一節(jié)介紹的中調(diào)用上一節(jié)介紹的2 2個(gè)個(gè)函數(shù)實(shí)現(xiàn)函數(shù)實(shí)現(xiàn)LEDLED的測試。運(yùn)行程序后,先向的測試。運(yùn)行程序后,先向PCPC機(jī)機(jī)串口發(fā)送串口發(fā)送Test LED!Test LED!,然后,然后LEDLED數(shù)碼管顯示數(shù)碼管顯示0123 .0123 .182021-11-2319本章目錄本章目錄6.1 6.1 鍵盤鍵盤6.2 6.2 數(shù)碼管數(shù)碼管LEDLED6.3 6.3 液晶液晶LCDLCD20

13、21-11-23206.3 6.3 液晶液晶LCDLCDlHD44780HD44780的編程結(jié)構(gòu)的編程結(jié)構(gòu)相關(guān)寄存器相關(guān)寄存器 1 1指令寄存器(指令寄存器(IRIR)指令寄存器指令寄存器IRIR用于用于MCUMCU向向HD44780HD44780寫入指令碼。寫入指令碼。 2 2數(shù)據(jù)寄存器(數(shù)據(jù)寄存器(DRDR)DRDR用于寄存數(shù)據(jù)。用于寄存數(shù)據(jù)。 3 3忙標(biāo)志(忙標(biāo)志(BFBF)令令RS=0RS=0、R/ =1R/ =1,在,在E E信號高電平的作用下,信號高電平的作用下,BFBF輸出到總線的輸出到總線的DB7DB7上,上,MCUMCU可以讀出判別??梢宰x出判別。 4 4地址計(jì)數(shù)器(地址計(jì)數(shù)

14、器(ACAC)ACAC作為作為DD RAMDD RAM或或CG RAMCG RAM的地址指針。的地址指針。 2021-11-23216.3 6.3 液晶液晶LCDLCDlHD44780HD44780的編程結(jié)構(gòu)的編程結(jié)構(gòu)相關(guān)寄存器相關(guān)寄存器 5 5顯示數(shù)據(jù)寄存器(顯示數(shù)據(jù)寄存器(DD RAMDD RAM)DD RAMDD RAM用于存儲顯示數(shù)據(jù),共有用于存儲顯示數(shù)據(jù),共有8080個(gè)字符碼。個(gè)字符碼。 6 6字符發(fā)生器字符發(fā)生器ROMROM(CG ROMCG ROM)CG ROMCG ROM由由8 8位字符碼生成位字符碼生成5 57 7點(diǎn)陣字符點(diǎn)陣字符160160種和種和5 51010點(diǎn)陣字符點(diǎn)陣

15、字符3232種,種,8 8位字符編碼與字符的對應(yīng)關(guān)系,可以直接使用。位字符編碼與字符的對應(yīng)關(guān)系,可以直接使用。 7 7字符發(fā)生器字符發(fā)生器RAMRAM(CG RAMCG RAM)CG RAMCG RAM是提供給用戶自定義特殊字符用的,它的容量僅為是提供給用戶自定義特殊字符用的,它的容量僅為6464字節(jié),編址為字節(jié),編址為00003FH3FH。 2021-11-2322 本節(jié)給出點(diǎn)陣字符型LCD的一個(gè)編程實(shí)例。在實(shí)驗(yàn)板上,LCD的數(shù)據(jù)線714腳(D0D7)分別與MCU的PT1AD03PT1AD07、PTJ76和PTS3連接,LCD的控制線RS、R/ 、E(4、5、6腳)分別與MCU的PTP4、P

16、TP5和PTP7連接。6.3 6.3 液晶液晶LCDLCD點(diǎn)陣字符型點(diǎn)陣字符型LCDLCD編程實(shí)例編程實(shí)例2021-11-23236.3 6.3 液晶液晶LCDLCD XS128與LCD的連接2021-11-23246.3 6.3 液晶液晶LCDLCD 液晶構(gòu)件程序 包含頭文件LCD.h和程序文件LCD.c,包括對以下函數(shù)的聲明和定義(需調(diào)用GPIO構(gòu)件): void LCDInit(void)初始化Lcd(HD44780),設(shè)置顯示方式,清屏,AC自動(dòng)+1 void LCDShow(uint8 str)在HD44780顯示屏顯示str所指向的數(shù)據(jù)2021-11-236.3 6.3 液晶液晶LCDLCDv void Delay1(uint16 k) void Delay1(uint16 k) 用程序的方法延時(shí)一段時(shí)間用程序的方法延時(shí)一段時(shí)間v void LCD_Command(uint8 cmd) void LCD_Command(uint8 cmd) 用于執(zhí)行給定的用于執(zhí)行給定的commandcommand命令命令2021-11-23256.3 6.3 液晶液晶LCDLCDvLCDLCD測試工程測試工程 硬件連接硬件連接: : 如前述。如前述。 程序功能:在程序功能:在m

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論