嵌入式系統(tǒng)常用外設(shè)驅(qū)動編程實(shí)例_第1頁
嵌入式系統(tǒng)常用外設(shè)驅(qū)動編程實(shí)例_第2頁
嵌入式系統(tǒng)常用外設(shè)驅(qū)動編程實(shí)例_第3頁
嵌入式系統(tǒng)常用外設(shè)驅(qū)動編程實(shí)例_第4頁
嵌入式系統(tǒng)常用外設(shè)驅(qū)動編程實(shí)例_第5頁
已閱讀5頁,還剩152頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1嵌入式系統(tǒng)原理及應(yīng)用嵌入式系統(tǒng)原理及應(yīng)用第五講嵌入第五講嵌入式系統(tǒng)常用外設(shè)驅(qū)動編程實(shí)例式系統(tǒng)常用外設(shè)驅(qū)動編程實(shí)例2l嵌入式系統(tǒng)常用外設(shè)除了存儲設(shè)備以外還包括:通信嵌入式系統(tǒng)常用外設(shè)除了存儲設(shè)備以外還包括:通信總線及接口(如總線及接口(如UART、USB、I2C、SPI等)、人機(jī)等)、人機(jī)交互設(shè)備(如交互設(shè)備(如LCD、鍵盤、觸摸屏等)、其他輸入輸、鍵盤、觸摸屏等)、其他輸入輸出設(shè)備(如出設(shè)備(如A/D、D/A、PWM等)。等)。 3本章提要本章提要觸摸屏模塊設(shè)計實(shí)例觸摸屏模塊設(shè)計實(shí)例UART異步串口模塊實(shí)例異步串口模塊實(shí)例A/D轉(zhuǎn)換器應(yīng)用實(shí)例轉(zhuǎn)換器應(yīng)用實(shí)例LCD模塊設(shè)計模塊設(shè)計 LPC176

2、8 簡介簡介 PWM控制實(shí)例控制實(shí)例GPIO與鍵盤實(shí)例與鍵盤實(shí)例45.1.1 LPC1768概述概述lLPC1768是是NXP公司推出的基于公司推出的基于ARM Cortex-M3內(nèi)核的微控內(nèi)核的微控制器制器LPC17XX系列中的一員。系列中的一員。LPC17XX系列系列Cortex-M3微處微處理器用于處理要求高度集成和低功耗的嵌入式應(yīng)用。理器用于處理要求高度集成和低功耗的嵌入式應(yīng)用。LPC1700系列微控制器的操作頻率可達(dá)系列微控制器的操作頻率可達(dá)100MHz(新推出的(新推出的LPC1769和和LPC1759可達(dá)可達(dá)120MHz)。)。lARM Cortex-M3 CPU具有具有3級流水

3、線和哈佛結(jié)構(gòu)。級流水線和哈佛結(jié)構(gòu)。LPC17XX系列微控制器的外設(shè)組件包含高達(dá)系列微控制器的外設(shè)組件包含高達(dá)512KB的的 flash存儲器、存儲器、64KB的數(shù)據(jù)存儲器、以太網(wǎng)的數(shù)據(jù)存儲器、以太網(wǎng)MAC、USB主機(jī)主機(jī)/從機(jī)從機(jī)/OTG 接口接口、8 通道通道 DMA 控制器、控制器、4 個個 UART、2 條條 CAN 通道、通道、2個個SSP控制器、控制器、SPI 接口、接口、3個個IIC接口、接口、2輸入和輸入和2輸出的輸出的IIS接口接口、8通道的通道的12位位ADC、10位位DAC、電機(jī)控制、電機(jī)控制 PWM、正交編碼、正交編碼器接口、器接口、4個通用定時器、個通用定時器、6輸出的

4、通用輸出的通用 PWM、帶有獨(dú)立電池、帶有獨(dú)立電池供電的超低功耗供電的超低功耗 RTC 和多達(dá)和多達(dá)70個的通用個的通用IO管腳。管腳。 5引腳連接模塊寄存器映射引腳連接模塊寄存器映射l引腳功能選擇寄存器引腳功能選擇寄存器0(PINSEL0) PINSEL0寄存器控制端口寄存器控制端口0低半部分的位功能。僅當(dāng)引腳選低半部分的位功能。僅當(dāng)引腳選擇使用擇使用GPIO功能時,功能時,F(xiàn)IO0DIR寄存器中的方向控制位才有效寄存器中的方向控制位才有效。l引腳功能選擇寄存器引腳功能選擇寄存器1(PINSEL1) PINSEL1寄存器控制端口寄存器控制端口0高半部分的位功能。僅當(dāng)引腳選高半部分的位功能。僅

5、當(dāng)引腳選擇使用擇使用GPIO功能時,功能時,F(xiàn)IO0DIR寄存器中的方向控制位才有效寄存器中的方向控制位才有效。LPC1768的引腳功能選擇寄存器的引腳功能選擇寄存器1的位功能描述如表的位功能描述如表3-7所所列。列。l引腳功能選擇寄存器引腳功能選擇寄存器2(PINSEL2) PINSEL2寄存器控制端口寄存器控制端口1低半部分的位功能,包含以太網(wǎng)低半部分的位功能,包含以太網(wǎng)相關(guān)功能引腳。僅當(dāng)引腳選擇使用相關(guān)功能引腳。僅當(dāng)引腳選擇使用GPIO功能時,功能時,F(xiàn)IO1DIR寄寄存器中的方向控制位才有效。存器中的方向控制位才有效。l引腳功能選擇寄存器引腳功能選擇寄存器3(PINSEL3) PINS

6、EL3寄存器控制端口寄存器控制端口1高半部分的位功能。僅當(dāng)引腳選高半部分的位功能。僅當(dāng)引腳選擇使用擇使用GPIO功能時,功能時,F(xiàn)IO1DIR寄存器中的方向控制位才有效寄存器中的方向控制位才有效。6引腳連接模塊寄存器映射引腳連接模塊寄存器映射l引腳功能選擇寄存器引腳功能選擇寄存器4(PINSEL4) PINSEL4寄存器控制端口寄存器控制端口2低半部分的位功能。僅當(dāng)引腳選低半部分的位功能。僅當(dāng)引腳選擇使用擇使用GPIO功能時,功能時,F(xiàn)IO2DIR寄存器中的方向控制位才有效寄存器中的方向控制位才有效。l引腳功能選擇寄存器引腳功能選擇寄存器7(PINSEL7) PINSEL7寄存器控制端口寄存器

7、控制端口3高半部分的位功能。僅當(dāng)引腳選擇高半部分的位功能。僅當(dāng)引腳選擇使用使用GPIO功能時,功能時,F(xiàn)IO3DIR寄存器中的方向控制位才有效。寄存器中的方向控制位才有效。l引腳功能選擇寄存器引腳功能選擇寄存器9(PINSEL9) PINSEL9寄存器控制端口寄存器控制端口4高半部分的位功能。僅當(dāng)引腳選擇高半部分的位功能。僅當(dāng)引腳選擇使用使用GPIO功能時,功能時,F(xiàn)IO4DIR寄存器中的方向控制位才有效。寄存器中的方向控制位才有效。l引腳功能選擇寄存器引腳功能選擇寄存器(PINSEL10) PINSEL10寄存器用于控制寄存器用于控制P2.2P2.6的跟蹤功能。的跟蹤功能。7本章提要本章提要

8、觸摸屏模塊設(shè)計實(shí)例觸摸屏模塊設(shè)計實(shí)例UART異步串口模塊實(shí)例異步串口模塊實(shí)例A/D轉(zhuǎn)換器應(yīng)用實(shí)例轉(zhuǎn)換器應(yīng)用實(shí)例LCD模塊設(shè)計模塊設(shè)計 LPC1768 簡介簡介 PWM控制實(shí)例控制實(shí)例GPIO與鍵盤實(shí)例與鍵盤實(shí)例85.2.1 LPC1768的的GPIO概述概述lLPC1768 GPIO簡介簡介LPC1768其引腳數(shù)為其引腳數(shù)為100,其中用做,其中用做GPIO功能的引腳達(dá)功能的引腳達(dá)70個。個。具體分配如下:具體分配如下:lP0端口端口28個:個:P0.0P0.11,P0.15P0.30。lP1端口端口24個:個:P1.0P1.1,P1.4,P1.8P1.10,P1.14P1.31。lP2端口端

9、口14個:個:P2.0P2.13。lP3端口端口2個:個:P3.25,P3.26。lP4端口端口2個:個:P4.27,P4.28。95.2.1 LPC1768的的GPIO概述概述LPC1768的的GPIO特性如下:特性如下:l加速加速GPIO功能:功能:GPIO寄存器被轉(zhuǎn)移到外設(shè)寄存器被轉(zhuǎn)移到外設(shè)AHB總線上,以實(shí)總線上,以實(shí)現(xiàn)高速的現(xiàn)高速的I/O時序;屏蔽寄存器允許將某些端口位作為一組進(jìn)行時序;屏蔽寄存器允許將某些端口位作為一組進(jìn)行操作,而其他位不變;所以操作,而其他位不變;所以GPIO寄存器可以以字節(jié)、半字和字寄存器可以以字節(jié)、半字和字的方式進(jìn)行讀的方式進(jìn)行讀/寫操作;寫操作;GPIO寄存

10、器可由寄存器可由GPDMA進(jìn)行訪問。進(jìn)行訪問。l置位和清零寄存器允許用一條指令置位和清零操作一個端口的置位和清零寄存器允許用一條指令置位和清零操作一個端口的任意位。任意位。l所有所有GPIO寄存器支持位帶操作功能。寄存器支持位帶操作功能。l單個端口的方向可控制。單個端口的方向可控制。l所有所有I/O端口在復(fù)位后默認(rèn)為上拉輸入端。端口在復(fù)位后默認(rèn)為上拉輸入端。lP0和和P2端口的每個引腳提供了中斷功能。端口的每個引腳提供了中斷功能。l每個端口的中斷可被編程為上升沿、下降沿或邊沿產(chǎn)生中斷。每個端口的中斷可被編程為上升沿、下降沿或邊沿產(chǎn)生中斷。l邊沿檢測支持異步操作。邊沿檢測支持異步操作。lP0和和

11、P2端口的每個引腳支持掉電喚醒功能。端口的每個引腳支持掉電喚醒功能。105.2.1 LPC1768的的GPIO概述概述2. GPIO寄存器描述寄存器描述通用名稱通用名稱描述描述訪問訪問復(fù)位值復(fù)位值PORTn寄存器名稱和地址寄存器名稱和地址FIODIR高速高速GPIO端口方向控制寄端口方向控制寄存器。該寄存器可單獨(dú)控存器。該寄存器可單獨(dú)控制每個端口引腳的方向制每個端口引腳的方向R/W0FIO0DIR:0 x2009000FIO1DIR:0 x2009020FIO2DIR:0 x2009040FIO3DIR:0 x2009060FIO4DIR:0 x2009080FIOPIN高速高速GPIO端口引

12、腳狀態(tài)寄端口引腳狀態(tài)寄存器。該寄存器真實(shí)反映存器。該寄存器真實(shí)反映數(shù)字端口引腳的當(dāng)前狀態(tài)數(shù)字端口引腳的當(dāng)前狀態(tài)R/W0FIO0PIN:0 x2009014FIO1PIN:0 x2009034FIO2PIN:0 x2009054FIO3PIN:0 x2009074FIO4PIN:0 x2009094FIOSET高速高速GPIO端口輸出置位寄端口輸出置位寄存器。寫存器。寫1使相應(yīng)的端口引使相應(yīng)的端口引腳輸出高電平;寫腳輸出高電平;寫0沒有影沒有影響響R/W0FIO0SET:0 x2009018FIO1SET:0 x2009038FIO2SET:0 x2009058FIO3SET:0 x200907

13、8FIO4SET:0 x2009098FIOCLR高速高速GPIO端口輸出清零寄端口輸出清零寄存器。寫存器。寫1使相應(yīng)的端口引使相應(yīng)的端口引腳輸出低電平;寫腳輸出低電平;寫0沒有影沒有影響響R/W0FIO0CLR:0 x200901CFIO1CLR:0 x200903CFIO2CLR:0 x200905CFIO3CLR:0 x200907CFIO4CLR:0 x200909CFIOMASK高速高速GPIO端口屏蔽寄存器端口屏蔽寄存器 R/W0FIO0MASK:0 x2009010FIO1MASK:0 x2009030FIO2MASK:0 x2009050FIO3MASK:0 x2009070F

14、IO4MASK:0 x2009090115.2.2 基于基于GPIO的矩陣鍵盤設(shè)計的矩陣鍵盤設(shè)計l常用鍵盤工作原理常用鍵盤工作原理(1)獨(dú)立式按鍵接口)獨(dú)立式按鍵接口l優(yōu)點(diǎn):電路配置靈活,優(yōu)點(diǎn):電路配置靈活,軟件實(shí)現(xiàn)簡單。軟件實(shí)現(xiàn)簡單。 l缺點(diǎn):每個按鍵需要占缺點(diǎn):每個按鍵需要占用一根口線,若按鍵數(shù)用一根口線,若按鍵數(shù)量較多資源浪費(fèi)將比量較多資源浪費(fèi)將比較嚴(yán)重較嚴(yán)重l應(yīng)用:主要用于按鍵較應(yīng)用:主要用于按鍵較少或?qū)Σ僮魉俣纫筝^少或?qū)Σ僮魉俣纫筝^高的場合,軟件實(shí)現(xiàn)時高的場合,軟件實(shí)現(xiàn)時,可以采用中斷方式,可以采用中斷方式,也可采用查詢方式也可采用查詢方式12(2)行列式按鍵接口)行列式按鍵接口

15、優(yōu)點(diǎn):相對于獨(dú)立接口方式可優(yōu)點(diǎn):相對于獨(dú)立接口方式可以節(jié)省很多以節(jié)省很多I/O資源,資源,相對于專用芯片鍵盤相對于專用芯片鍵盤可以節(jié)省成本,且更可以節(jié)省成本,且更為靈活;為靈活;缺點(diǎn):需要用軟件處理消抖、缺點(diǎn):需要用軟件處理消抖、重鍵等重鍵等應(yīng)用:行列式按鍵接口適應(yīng)于應(yīng)用:行列式按鍵接口適應(yīng)于按鍵數(shù)量較多,又不按鍵數(shù)量較多,又不想使用專用鍵盤芯片想使用專用鍵盤芯片的場合。的場合。13鍵盤掃描陣列:鍵盤掃描陣列:一個瞬時接觸開關(guān)(按鈕)放一個瞬時接觸開關(guān)(按鈕)放置在每一行與線一列的交叉點(diǎn)置在每一行與線一列的交叉點(diǎn)。矩陣所需的鍵的數(shù)目顯然根。矩陣所需的鍵的數(shù)目顯然根據(jù)應(yīng)用程序而不同。每一行由據(jù)應(yīng)

16、用程序而不同。每一行由一個輸出端口的一位驅(qū)動,而一個輸出端口的一位驅(qū)動,而每一列由一個電阻器上拉且供每一列由一個電阻器上拉且供給輸入端口一位。給輸入端口一位。掃描次數(shù)掃描次數(shù)輸出輸出( (行行) )輸入輸入( (列列) )鍵剛按下時鍵剛按下時000000110110第一次掃描第一次掃描011011111111第二次掃描第二次掃描101101111111第三次掃描第三次掃描110110110110鍵鍵9按下時掃描過程按下時掃描過程143專用芯片式設(shè)計專用芯片式設(shè)計l專用鍵盤處理芯片一般功能比較完善芯片本身能完成對按鍵專用鍵盤處理芯片一般功能比較完善芯片本身能完成對按鍵的編碼、掃描、消抖和重鍵等問

17、題的處理,甚至還集成了顯示的編碼、掃描、消抖和重鍵等問題的處理,甚至還集成了顯示接口功能。接口功能。l專用鍵盤處理芯片的優(yōu)點(diǎn)很明顯,可靠性高,接口簡單,使用專用鍵盤處理芯片的優(yōu)點(diǎn)很明顯,可靠性高,接口簡單,使用方便,適合處理按鍵較多的情況。但在很多應(yīng)用場合,考慮成方便,適合處理按鍵較多的情況。但在很多應(yīng)用場合,考慮成本因素可能并不是最佳選擇。本因素可能并不是最佳選擇。152. 33矩陣鍵盤電路設(shè)計矩陣鍵盤電路設(shè)計(1)功能要求)功能要求l利用利用LPC1768的的P1.24P1.29引腳外接引腳外接33矩陣鍵盤,矩陣鍵盤,將鍵盤的值通過連接在將鍵盤的值通過連接在P2.0P2.5引腳上的引腳上的

18、LED按照鍵盤按照鍵盤按鍵的編號順序點(diǎn)亮顯示。按鍵的編號順序點(diǎn)亮顯示。(2)硬件電路)硬件電路l33矩陣鍵盤識別實(shí)例的硬件電路如圖矩陣鍵盤識別實(shí)例的硬件電路如圖5-5所示。所示。K1K9的的9個輕觸式按鍵以個輕觸式按鍵以3行行3列的形式分別連接到列的形式分別連接到P1.24P1.29引腳上,其中引腳上,其中P1.24P1.26引腳用于連接矩陣鍵盤引腳用于連接矩陣鍵盤的行,的行,P1.27P1.29引腳用于連接矩陣鍵盤的列。引腳用于連接矩陣鍵盤的列。8個個LED發(fā)光二極管連接到發(fā)光二極管連接到LPC1768的的P2.0P2.7引腳上顯引腳上顯示按鍵編號。示按鍵編號。162. 33矩陣鍵盤電路設(shè)計

19、矩陣鍵盤電路設(shè)計175.2.3鍵盤驅(qū)動程序設(shè)計鍵盤驅(qū)動程序設(shè)計 在圖在圖5-3中,中,KR0KR2連接到連接到P1.24P1.26作為輸出,作為輸出,KL3KL5連接連接到到P1.27P1.29作為輸入。作為輸入。如果采用了中斷,還要初始化中斷寄存器。如果采用了中斷,還要初始化中斷寄存器。 33矩陣鍵盤的識別過程是由以下幾個步驟構(gòu)成:矩陣鍵盤的識別過程是由以下幾個步驟構(gòu)成:l判斷按鍵是否按下。判斷按鍵是否按下。l若有鍵按下,則延時若有鍵按下,則延時510ms,消除按鍵抖動。,消除按鍵抖動。l再判斷按鍵是否真的按下。再判斷按鍵是否真的按下。l若確實(shí)有鍵按下,則執(zhí)行該按鍵的功能事件。若確實(shí)有鍵按下

20、,則執(zhí)行該按鍵的功能事件。l判斷按鍵是否釋放,若沒有釋放則等待按鍵釋放。判斷按鍵是否釋放,若沒有釋放則等待按鍵釋放。鍵號鍵號二進(jìn)制代碼二進(jìn)制代碼十六進(jìn)制代碼十六進(jìn)制代碼鍵號鍵號二進(jìn)制代碼二進(jìn)制代碼十六進(jìn)制代碼十六進(jìn)制代碼K1XX11 01100 x36K6XX01 11010 x1DK2XX10 11100 x2EK7XX11 00110 x33K3XX01 11100 x1EK8XX11 10110 x3BK4XX11 01010 x35K9XX01 10110 x1BK5XX10 11010 x2D 33矩陣鍵盤鍵值代碼表185.2.3鍵盤驅(qū)動程序設(shè)計鍵盤驅(qū)動程序設(shè)計1. 寄存器宏定義寄存

21、器宏定義將將32位位GPIO寄存器分成寄存器分成4個個8位的子寄存器進(jìn)行訪問,其他例子則采用開發(fā)位的子寄存器進(jìn)行訪問,其他例子則采用開發(fā)板自帶寄存器定義方式來訪問。板自帶寄存器定義方式來訪問。#define rFIO1DIR3 (*(volatile unsigned char *)0 x2009C023) / P1.24P1.31口方向控制寄存器口方向控制寄存器#define rFIO1PIN3 (*(volatile unsigned char *)0 x2009C037) / P1.24P1.31口狀態(tài)寄存器口狀態(tài)寄存器#define rFIO1SET3 (*(volatile unsi

22、gned char *)0 x2009C03B) / P1.24 P1.31口輸出置位寄存口輸出置位寄存器器#define rFIO1CLR3 (*(volatile unsigned char *)0 x2009C03F) / P1.24 P1.31口輸出清零寄存器口輸出清零寄存器#define rFIO2DIR0 (*(volatile unsigned char *)0 x2009C020) / P2.0 P2.7口方向控制寄存器口方向控制寄存器#define rFIO2SET0 (*(volatile unsigned char *)0 x2009C058) / P2.0 P2.7口輸

23、出置位寄存器口輸出置位寄存器#define rFIO2CLR0 (*(volatile unsigned char *)0 x2009C058) / P2.0 P2.7口輸出清零寄存器口輸出清零寄存器195.2.3鍵盤驅(qū)動程序設(shè)計鍵盤驅(qū)動程序設(shè)計2鍵盤初始化函數(shù)鍵盤初始化函數(shù) 鍵盤初始化函數(shù)主要針對鍵盤所用的端口屬性進(jìn)行初始化。在鍵盤工作鍵盤初始化函數(shù)主要針對鍵盤所用的端口屬性進(jìn)行初始化。在鍵盤工作之前,根據(jù)行列鍵盤電路設(shè)計原理將之前,根據(jù)行列鍵盤電路設(shè)計原理將P1.24P1.26配置為輸出,配置為輸出,P1.27P1.29配置為輸入。如果采用了中斷,還要初始化中斷寄存器。配置為輸入。如果采用

24、了中斷,還要初始化中斷寄存器。void KeyInit () /該函數(shù)對鍵盤使用的端口進(jìn)行初始化該函數(shù)對鍵盤使用的端口進(jìn)行初始化rFIO1DIR3 |=0 x07; /設(shè)置設(shè)置P1.24P1.26配置為輸出,配置為輸出,P1.27P1.29/配置為輸入;其中配置為輸入;其中1為輸出。為輸出。rFIO1CLR3| =0 x07; /設(shè)置設(shè)置P1.24P1.26輸出為輸出為0。203鍵盤掃描程序鍵盤掃描程序 根據(jù)掃描原理,設(shè)置的根據(jù)掃描原理,設(shè)置的P1.24P1.26按如表按如表5-5所示的順序所示的順序輸出,比較每次掃描輸出,比較每次掃描P1.27P1.29的輸入值是否等于鍵剛被的輸入值是否等于

25、鍵剛被按下的輸入值,如果相等,找出輸出為零的行,則該行即為被按下的輸入值,如果相等,找出輸出為零的行,則該行即為被按下的行。按下的行。掃描次數(shù)掃描次數(shù)輸出輸出(行行)第一次掃描第一次掃描110第二次掃描第二次掃描101第三次掃描第三次掃描011是否等于第一次列是否等于第一次列輸入值輸入值將行值放入臨時變量低將行值放入臨時變量低4位,返回讀位,返回讀取結(jié)果取結(jié)果是是否否獲取鍵盤列輸入值,放入臨時變量獲取鍵盤列輸入值,放入臨時變量高高4位位按表按表5-5依次改變依次改變行輸出值行輸出值讀取鍵盤列輸入值讀取鍵盤列輸入值21BYTE GetKey() /鍵盤掃描子程序鍵盤掃描子程序 BYTE i, k

26、eytemp;keytemp= rFIO0PIN0 &0 x38; /將列的值存入將列的值存入keytemp的的36位位for(i = 1; i=4; i=1)rFIO1CLR3 |=0 x3F;rFIO1SET3 =i&0 x3F;if(rFIO0PIN0 &0 x38)= keytemp) /比較是否有低電平輸入比較是否有低電平輸入 keytemp=(keytemp&0 x38)|i; /將行的值存入將行的值存入keytemp的的02位位break; return keytemp;224.按鍵判斷函數(shù)按鍵判斷函數(shù) 該函數(shù)主要通過對輸入端口是否有低電平產(chǎn)生來判

27、斷是否該函數(shù)主要通過對輸入端口是否有低電平產(chǎn)生來判斷是否有鍵被按下。用于在輪詢方式查詢鍵盤時檢測是否有鍵按下。有鍵被按下。用于在輪詢方式查詢鍵盤時檢測是否有鍵按下。采用中斷方式時不需要該函數(shù)。采用中斷方式時不需要該函數(shù)。BYTE IsKeyPressed() /是否處于按下狀態(tài)是否處于按下狀態(tài) if(rFIO1PIN3 &0 x38=0 x38) /輸入端口是否出現(xiàn)輸入端口是否出現(xiàn) 0return FALSE;elsereturn TRUE;235. 鍵盤去抖函數(shù)鍵盤去抖函數(shù) 由于在鍵盤掃描過程中有可能出現(xiàn)外界因素引起的鍵盤抖動造成按鍵瞬由于在鍵盤掃描過程中有可能出現(xiàn)外界因素引起的鍵盤

28、抖動造成按鍵瞬間接觸的情況,如果不進(jìn)行去抖可能造成按鍵的誤輸入。通常是采用程序延間接觸的情況,如果不進(jìn)行去抖可能造成按鍵的誤輸入。通常是采用程序延時來消抖時來消抖BYTE ScanKey() BYTE key; key=GetScanKey(); OSTimeDly(50); /延時延時50毫秒毫秒 if(key!=GetScanKey() /延時延時50毫秒毫秒 return 0; /返回錯誤代碼返回錯誤代碼246. 鍵盤掃描與鍵盤掃描與LED燈顯示控制主程序燈顯示控制主程序?qū)⒃阪I盤按鍵編號顯示到對應(yīng)的將在鍵盤按鍵編號顯示到對應(yīng)的LED燈上,燈上,其他燈熄滅。其他燈熄滅。LED燈顯示值送到燈

29、顯示值送到P2.0P2.7引腳上即可驅(qū)動點(diǎn)亮相應(yīng)引腳上即可驅(qū)動點(diǎn)亮相應(yīng)LED燈。燈。按鍵編號按鍵編號二進(jìn)制代碼二進(jìn)制代碼十六進(jìn)制代碼十六進(jìn)制代碼00000 00010110000 00100220000 01000430000 10000840001 00001050010 00002060100 00004071000 00008081111 1111FF25int main(void) int i;unsigned char temp;rFIO2DIR0=0 xFF;/配置配置P2.0P2.7為輸出方向?yàn)檩敵龇较?rFIO2CLR0=0 xFF;/使使P2.0P2.7輸出全為低電平輸出全為

30、低電平KeyInit () while(1) if(IsKeyPressed()/檢測是否有鍵按下檢測是否有鍵按下 temp=ScanKey()for(i=0;isizeof(KEYTAB);i+)/查查KEYTAB表表if( temp=KEYTABi ) rFIO2CLR0=0 xFF; /先清零先清零rFIO2SET0=LEDi; /若找到顯示鍵值若找到顯示鍵值 26本章提要本章提要觸摸屏模塊設(shè)計實(shí)例觸摸屏模塊設(shè)計實(shí)例UART異步串口模塊實(shí)例異步串口模塊實(shí)例A/D轉(zhuǎn)換器應(yīng)用實(shí)例轉(zhuǎn)換器應(yīng)用實(shí)例LCD模塊設(shè)計模塊設(shè)計 LPC1768 簡介簡介 PWM控制實(shí)例控制實(shí)例GPIO與鍵盤實(shí)例與鍵盤實(shí)例

31、275.3.1異步串行通信概述異步串行通信概述lUART(Universal Asynchronous Receiver and Transmitter,通用異步收發(fā)器)接口。,通用異步收發(fā)器)接口。l而而RS232、RS499、RS423、RS422和和RS485等,等,是物理接口標(biāo)準(zhǔn)規(guī)范和總線標(biāo)準(zhǔn)規(guī)范,對應(yīng)各種異步是物理接口標(biāo)準(zhǔn)規(guī)范和總線標(biāo)準(zhǔn)規(guī)范,對應(yīng)各種異步串行通信口的接口標(biāo)準(zhǔn)和總線標(biāo)準(zhǔn),它規(guī)定了通信口串行通信口的接口標(biāo)準(zhǔn)和總線標(biāo)準(zhǔn),它規(guī)定了通信口的電氣特性、傳輸速率、連接特性和接口的機(jī)械特性的電氣特性、傳輸速率、連接特性和接口的機(jī)械特性等內(nèi)容。等內(nèi)容。 281異步串行通信協(xié)議異步串行通

32、信協(xié)議 異步串行方式是將傳輸數(shù)據(jù)的每個字符一位接一位異步串行方式是將傳輸數(shù)據(jù)的每個字符一位接一位(例如先例如先低位、后高位低位、后高位)地傳送。數(shù)據(jù)的各不同位可以分時使用同一傳輸?shù)貍魉?。?shù)據(jù)的各不同位可以分時使用同一傳輸通道,因此串行通道,因此串行I/O可以減少信號連線,最少用一對線即可進(jìn)行可以減少信號連線,最少用一對線即可進(jìn)行。 1111/01/01/01/01/01/01/01/01100D0D0D0D3D4D5D6第第n個字符個字符空空閑閑位位空空閑閑位位空空閑閑位位停停止止位位奇奇偶偶位位起起始始位位數(shù)據(jù)位數(shù)據(jù)位微機(jī)異步串行通信中,常用的波特率為微機(jī)異步串行通信中,常用的波特率為50,

33、95,110,150,300,600,1200,2400,4800,9600 ,115200等等。29接收方按約定的格式接收數(shù)據(jù),并進(jìn)行檢查,一般可以查出接收方按約定的格式接收數(shù)據(jù),并進(jìn)行檢查,一般可以查出以下三種錯誤:以下三種錯誤:1)奇偶錯:在約定奇偶檢查的情況下,接收到的字符奇偶)奇偶錯:在約定奇偶檢查的情況下,接收到的字符奇偶狀態(tài)和約定不符。狀態(tài)和約定不符。2)幀格式錯:一個字符從起始位到停止位的總位數(shù)不對。)幀格式錯:一個字符從起始位到停止位的總位數(shù)不對。3)溢出錯:若先接收的字符尚未被微機(jī)讀取,后面的字符)溢出錯:若先接收的字符尚未被微機(jī)讀取,后面的字符又傳送過來,則產(chǎn)生溢出錯。又

34、傳送過來,則產(chǎn)生溢出錯。 302異步串行通信接口定義異步串行通信接口定義一般一般UART接口定義四根引腳,分別如下:接口定義四根引腳,分別如下:1)RxD(Transmit Data)數(shù)據(jù)接收引數(shù)據(jù)接收引腳,用于串行通信數(shù)據(jù)接收;腳,用于串行通信數(shù)據(jù)接收;2)TxD(Receive Data)數(shù)據(jù)發(fā)送引腳數(shù)據(jù)發(fā)送引腳,用于串行通信數(shù)據(jù)發(fā)送;,用于串行通信數(shù)據(jù)發(fā)送;3)RTS(Request to Send)請求數(shù)據(jù)請求數(shù)據(jù)發(fā)送引腳,用于標(biāo)明接收設(shè)備有沒有準(zhǔn)備發(fā)送引腳,用于標(biāo)明接收設(shè)備有沒有準(zhǔn)備好接收數(shù)據(jù),即當(dāng)終端要發(fā)送數(shù)據(jù)時,使好接收數(shù)據(jù),即當(dāng)終端要發(fā)送數(shù)據(jù)時,使該信號有效;該信號有效;4)C

35、TS(Clear to Send)允許數(shù)據(jù)發(fā)允許數(shù)據(jù)發(fā)送引腳,用于送引腳,用于CTS來起動和暫停來自計算來起動和暫停來自計算機(jī)的數(shù)據(jù)流,用來表示從設(shè)備準(zhǔn)備好接收機(jī)的數(shù)據(jù)流,用來表示從設(shè)備準(zhǔn)備好接收主設(shè)備發(fā)來的數(shù)據(jù),是對請求發(fā)送信號主設(shè)備發(fā)來的數(shù)據(jù),是對請求發(fā)送信號RTS的響應(yīng)信號。的響應(yīng)信號。UART AUART BTxDRxDCTSRTSTxDRxDCTSRTS313、 RS-232-C 目前目前RS-232RS-232是是PCPC機(jī)與通信工業(yè)中應(yīng)用最廣泛的種串行接口機(jī)與通信工業(yè)中應(yīng)用最廣泛的種串行接口。RS-232RS-232被定義為一種在低速率串行通信中增加通信距離的單被定義為一種在低速

36、率串行通信中增加通信距離的單端標(biāo)準(zhǔn)。端標(biāo)準(zhǔn)。RS-232RS-232遵循遵循RS-232-CRS-232-C標(biāo)準(zhǔn),美國電子工業(yè)協(xié)會標(biāo)準(zhǔn),美國電子工業(yè)協(xié)會(Electronic Industries Association(Electronic Industries Association,EIA)EIA)把把RS-232-CRS-232-C定定義為:義為:“在數(shù)據(jù)終端設(shè)備和數(shù)據(jù)通俏設(shè)備之間使用串行二進(jìn)制在數(shù)據(jù)終端設(shè)備和數(shù)據(jù)通俏設(shè)備之間使用串行二進(jìn)制數(shù)據(jù)交換的接口數(shù)據(jù)交換的接口”。 RS-232-CRS-232-C標(biāo)準(zhǔn)是一種硬件協(xié)議,用于連標(biāo)準(zhǔn)是一種硬件協(xié)議,用于連接接DIE(Data Term

37、inal EquipmentDIE(Data Terminal Equipment,數(shù)據(jù)終端設(shè)備,數(shù)據(jù)終端設(shè)備) )和和DCE(Data Communications EquipmentDCE(Data Communications Equipment,數(shù)據(jù)通信設(shè)備,數(shù)據(jù)通信設(shè)備) )兩種兩種設(shè)備。設(shè)備。 RS-232-CRS-232-C定義包括以下幾個方面:定義包括以下幾個方面:l接口的機(jī)械特性;接口的機(jī)械特性;l電氣信號特征;電氣信號特征;l交換功能特性。交換功能特性。32 RS-232-CRS-232-C采用采用2525針連接器,陽極針連接器,陽極( (插頭插頭) )接接DTEDTE,陰

38、極,陰極( (插座插座) )接接DCEDCE。雖然本標(biāo)準(zhǔn)沒有規(guī)定連接器的實(shí)際類型,但工業(yè)上對。雖然本標(biāo)準(zhǔn)沒有規(guī)定連接器的實(shí)際類型,但工業(yè)上對D-25D-25類型類型的連接器實(shí)行了標(biāo)準(zhǔn)化。的連接器實(shí)行了標(biāo)準(zhǔn)化。 在電氣方向,在電氣方向, RS-232-CRS-232-C作了以下規(guī)定:作了以下規(guī)定:l驅(qū)動器上的負(fù)載電容不超過驅(qū)動器上的負(fù)載電容不超過2500pF2500pF。l驅(qū)動器上的負(fù)載電阻在驅(qū)動器上的負(fù)載電阻在30003000歐歐-7000-7000歐之間。歐之間。l在指定負(fù)載下,數(shù)據(jù)信號傳輸率在指定負(fù)載下,數(shù)據(jù)信號傳輸率( (或波特率或波特率) )低于低于2000bps2000bps。l相對

39、于信號地線,相對于信號地線,RS-232-CRS-232-C線的最高電壓不超過線的最高電壓不超過15v15vl驅(qū)動器能產(chǎn)生驅(qū)動器能產(chǎn)生+5- +15v(+5- +15v(邏輯邏輯0)0)和和-5- -15v(-5- -15v(邏輯邏輯1)1)的電壓。的電壓。l輸入端能接收輸入端能接收+5- +15v(+5- +15v(邏輯邏輯0)0)和和-5- -15v(-5- -15v(邏輯邏輯1)1)的信號。的信號。33 在在RS-232-CRS-232-C標(biāo)準(zhǔn)建議信號的傳輸速度控制在標(biāo)準(zhǔn)建議信號的傳輸速度控制在20kbps20kbps內(nèi),在內(nèi),在高速傳輸時,建議電纜長度不超過高速傳輸時,建議電纜長度不超

40、過5050英尺。簡單的計算公式為英尺。簡單的計算公式為:2525英尺英尺( (半負(fù)載量半負(fù)載量) )時數(shù)據(jù)信號傳輸率增加到時數(shù)據(jù)信號傳輸率增加到40kbps40kbps、12.512.5英英尺時數(shù)據(jù)信號傳輸率增加到尺時數(shù)據(jù)信號傳輸率增加到80kbps80kbps、6 6英尺時數(shù)據(jù)信號傳輸率增英尺時數(shù)據(jù)信號傳輸率增加到加到160kbps160kbps。事實(shí)上,許多通信包能使兩臺計算機(jī)之間的數(shù)據(jù)。事實(shí)上,許多通信包能使兩臺計算機(jī)之間的數(shù)據(jù)信號傳輸率達(dá)到信號傳輸率達(dá)到115.2kbps115.2kbps。注意,。注意, RS-232-CRS-232-C標(biāo)準(zhǔn)并沒有定義標(biāo)準(zhǔn)并沒有定義“標(biāo)推標(biāo)推”波特率。

41、波特率。 RS-232-CRS-232-C標(biāo)準(zhǔn)允許數(shù)據(jù)在同一時刻收發(fā),也標(biāo)準(zhǔn)允許數(shù)據(jù)在同一時刻收發(fā),也就是全雙工通信方式。就是全雙工通信方式。 RS-232-CRS-232-C標(biāo)準(zhǔn)定義的標(biāo)準(zhǔn)定義的2525針實(shí)際上僅用了其中針實(shí)際上僅用了其中9 9針。針。RS-232-CRS-232-C通信所保留的通信所保留的9 9針見表針見表6-76-7。注意,。注意,PCPC機(jī)上的通信端口一般是作機(jī)上的通信端口一般是作為為DTEDTE連接連接 ( (即陽性連接器即陽性連接器) ) 。 在實(shí)際的應(yīng)用中,利用在實(shí)際的應(yīng)用中,利用RS-232-CRS-232-C的通信通常只使用其中的的通信通常只使用其中的3 3根

42、線,即根線,即RdRd、TxDTxD和和 GNDGND。34說明說明編寫詞編寫詞DTE DB-25M針腳號針腳號DTE DB-9M針腳號針腳號方向方向DTE DB-9F針腳號針腳號DTE DB-25F針腳號針腳號發(fā)送發(fā)送TxD2333接收接收RxD3222發(fā)送請求發(fā)送請求RTS4785清除發(fā)送清除發(fā)送CTS5874數(shù)據(jù)設(shè)置數(shù)據(jù)設(shè)置準(zhǔn)備好準(zhǔn)備好DSR66420數(shù)據(jù)載波數(shù)據(jù)載波準(zhǔn)備好準(zhǔn)備好DCD8118數(shù)據(jù)終端數(shù)據(jù)終端準(zhǔn)備好準(zhǔn)備好DTR20466振鈴檢測振鈴檢測IndicatorTL2299信號地信號地GroundSG75535 4RS-422 RS-422由由RS-232發(fā)展而來。為改進(jìn)發(fā)展而來

43、。為改進(jìn)RS-232通信距離短、通信距離短、速度低的缺點(diǎn),速度低的缺點(diǎn),RS-422定義了一種平衡通信接口,將傳輸定義了一種平衡通信接口,將傳輸速率提高到速率提高到10Mbps,允許在一條平衡總線上連接最多,允許在一條平衡總線上連接最多10個個接收器。接收器。RS-422是一種單機(jī)發(fā)送、多機(jī)接收的單向、平衡是一種單機(jī)發(fā)送、多機(jī)接收的單向、平衡傳輸規(guī)范。傳輸規(guī)范。RS-422的數(shù)據(jù)信號采用差分傳輸方式,也稱做的數(shù)據(jù)信號采用差分傳輸方式,也稱做平衡傳輸。它使用一對雙絞線進(jìn)行數(shù)據(jù)傳輸。平衡傳輸。它使用一對雙絞線進(jìn)行數(shù)據(jù)傳輸。 驅(qū)動器能產(chǎn)生驅(qū)動器能產(chǎn)生+2- +6v(+2- +6v(邏輯邏輯0)0)和

44、和-2- -6v(-2- -6v(邏輯邏輯1)1)36 RS-422標(biāo)準(zhǔn)全稱是標(biāo)準(zhǔn)全稱是“平衡電壓數(shù)字接口電路的電氣特性平衡電壓數(shù)字接口電路的電氣特性”。由于接收器采用高輸入阻抗并且發(fā)送驅(qū)動器具有比由于接收器采用高輸入阻抗并且發(fā)送驅(qū)動器具有比RS-232更更強(qiáng)的驅(qū)動能力,故允許在相同傳輸線上連接多個接收節(jié)點(diǎn),強(qiáng)的驅(qū)動能力,故允許在相同傳輸線上連接多個接收節(jié)點(diǎn),最最多可接多可接10個節(jié)點(diǎn)個節(jié)點(diǎn),即一個主設(shè)備,即一個主設(shè)備(Master),其余為從設(shè)備,其余為從設(shè)備(Slave),從設(shè)備之間不能通信,所以,從設(shè)備之間不能通信,所以RS-422支持點(diǎn)對多的雙支持點(diǎn)對多的雙向通信。向通信。RS-422

45、四線接口由于采用單獨(dú)的發(fā)送和接收通道,四線接口由于采用單獨(dú)的發(fā)送和接收通道,因此不必控制數(shù)據(jù)方向,備裝置之間任何必須的信號交換均可因此不必控制數(shù)據(jù)方向,備裝置之間任何必須的信號交換均可以按軟件方式以按軟件方式(XON/XOFF握手握手)或硬件方式或硬件方式(一對單獨(dú)的雙絞一對單獨(dú)的雙絞線線)實(shí)現(xiàn)。實(shí)現(xiàn)。37 RS-422的最大傳輸距離為的最大傳輸距離為4000英尺英尺(約約1219米米),最大,最大傳輸速率為傳輸速率為1Mbps。其平衡雙絞線的長度與傳輸速率成反比。其平衡雙絞線的長度與傳輸速率成反比,在,在100Kbps速率以下,才可能達(dá)到最大傳輸距離。只有在速率以下,才可能達(dá)到最大傳輸距離。

46、只有在很短的距離廠才能獲得最高傳輸速率。一般很短的距離廠才能獲得最高傳輸速率。一般100米長的雙絞線米長的雙絞線上所能獲得的最大傳輸速率僅為上所能獲得的最大傳輸速率僅為1Mbps。 RS-422需要一終接電阻,要求其阻值約等于傳輸電纜的特需要一終接電阻,要求其阻值約等于傳輸電纜的特性阻抗。在短距離傳輸時可不需終接電阻,即一般在性阻抗。在短距離傳輸時可不需終接電阻,即一般在300米以米以下不需終接電阻。終接電阻接在傳輸電纜的最遠(yuǎn)端。下不需終接電阻。終接電阻接在傳輸電纜的最遠(yuǎn)端。38 5RS-485串行總線接口串行總線接口 為擴(kuò)展應(yīng)用范圍,為擴(kuò)展應(yīng)用范圍,EIA在在RS-422的基礎(chǔ)上制定了的基礎(chǔ)

47、上制定了RS-485標(biāo)標(biāo)準(zhǔn),增加了多點(diǎn)、雙向通信能力,通常在要求通信距離為幾十準(zhǔn),增加了多點(diǎn)、雙向通信能力,通常在要求通信距離為幾十米至上千米時,廣泛采用米至上千米時,廣泛采用R5-485收發(fā)器。收發(fā)器。 RS-485收發(fā)器采用平衡發(fā)送和差分接收,即在發(fā)送端,驅(qū)收發(fā)器采用平衡發(fā)送和差分接收,即在發(fā)送端,驅(qū)動器將動器將TTL電平信號轉(zhuǎn)換成差分信號輸出;在接收端,接收器電平信號轉(zhuǎn)換成差分信號輸出;在接收端,接收器將差分信號變成將差分信號變成TTL電平,因此具有抑制共模干擾的能力,加電平,因此具有抑制共模干擾的能力,加上接收器具有高的靈敏度,能檢測低達(dá)上接收器具有高的靈敏度,能檢測低達(dá)200mV的電

48、壓,故數(shù)的電壓,故數(shù)據(jù)傳輸可達(dá)千米以外。據(jù)傳輸可達(dá)千米以外。39 RS-485許多電氣規(guī)定與許多電氣規(guī)定與RS-422相仿,如都采用平衡傳輸相仿,如都采用平衡傳輸方式、都需要在傳輸線上接終接電阻等。方式、都需要在傳輸線上接終接電阻等。RS-485可以采用二可以采用二線與四線方式,二線制可實(shí)現(xiàn)真正的多點(diǎn)雙向通信。而采用四線與四線方式,二線制可實(shí)現(xiàn)真正的多點(diǎn)雙向通信。而采用四線連接時,與線連接時,與RS-422一樣只能實(shí)現(xiàn)點(diǎn)對多的通信,即只能有一樣只能實(shí)現(xiàn)點(diǎn)對多的通信,即只能有一個主一個主(Master)設(shè)備,其余為從設(shè)備,但它比設(shè)備,其余為從設(shè)備,但它比RS-422有所改有所改進(jìn)。無論四線還是二

49、線連接方式總線上都可連接進(jìn)。無論四線還是二線連接方式總線上都可連接多達(dá)多達(dá)32個設(shè)個設(shè)備備。40 RS-485與與RS-422的共模輸出電壓是不同的。的共模輸出電壓是不同的。RS-485共共模輸出電壓在模輸出電壓在-7V至至+12V之間,而之間,而RS-422在在-7V至至+7V之間,之間,RS-485接收器最小輸入阻抗為接收器最小輸入阻抗為12千歐;千歐;RS-422是是4千歐;千歐;RS-485滿足所有滿足所有RS-422的規(guī)范,所以的規(guī)范,所以RS-485的驅(qū)動器可以的驅(qū)動器可以在在RS-422網(wǎng)絡(luò)中應(yīng)用,但網(wǎng)絡(luò)中應(yīng)用,但RS-422的驅(qū)動器并不完全適用于的驅(qū)動器并不完全適用于RS-48

50、5網(wǎng)絡(luò)。網(wǎng)絡(luò)。 RS-485與與RS-422一樣,最大傳輸速率為一樣,最大傳輸速率為10Mb/s。當(dāng)波特。當(dāng)波特率為率為1.2kbps時,最大傳輸距離理論上可達(dá)時,最大傳輸距離理論上可達(dá)15千米。平衡雙絞千米。平衡雙絞線的長度與傳輸速率成反比,在線的長度與傳輸速率成反比,在100kbps速率以下,才可能使速率以下,才可能使用規(guī)定最長的電纜長度。用規(guī)定最長的電纜長度。 RS-485需要需要2個終接電阻,接在傳輸總線的兩端,其阻值個終接電阻,接在傳輸總線的兩端,其阻值要求等于傳輸電纜的特性阻抗。在矩距離傳輸時可不需終接電要求等于傳輸電纜的特性阻抗。在矩距離傳輸時可不需終接電阻,即一般在阻,即一般在

51、300米以下不需終接電阻。米以下不需終接電阻。415.3.2 LPC1768 UART串口簡介及接口電路設(shè)計串口簡介及接口電路設(shè)計 LRC1768微控制器內(nèi)置為微控制器內(nèi)置為4路異步串口通信收發(fā)器(路異步串口通信收發(fā)器(UART):UART0、UART1、UART2和和UART3。它們的主要特征如下:。它們的主要特征如下:l支持支持5、6、7和和8位的數(shù)據(jù)長度;位的數(shù)據(jù)長度;l支持支持4種類型的奇偶校驗(yàn);種類型的奇偶校驗(yàn);l支持支持1位和位和2位的停止位;位的停止位;l16字節(jié)收發(fā)字節(jié)收發(fā)FIFO;l內(nèi)置波特率發(fā)生器;內(nèi)置波特率發(fā)生器;l支持支持MDA的發(fā)送和接受;的發(fā)送和接受;l用于精確控制

52、波特率的小數(shù)分頻器,并擁有實(shí)現(xiàn)軟件流控用于精確控制波特率的小數(shù)分頻器,并擁有實(shí)現(xiàn)軟件流控制的自動波特率檢測能力和機(jī)制;制的自動波特率檢測能力和機(jī)制;l多處理器地址模式;多處理器地址模式;lUART3還包含一種支持紅外通信的還包含一種支持紅外通信的IRDA模式;模式;lUART1還具有還具有Modem接口信號和接口信號和RS-485/EIA-485模式。模式。42接收器接收器緩沖寄存器接收器FIFO接收器移位寄存器接收器DMA接口波特率發(fā)送器小數(shù)因子分頻器主分頻器(DLM,DLL)FIFO控制和狀態(tài)線控制和狀態(tài)IrDA和自動波特檢測中斷控制和狀態(tài)發(fā)送器發(fā)送器保持寄存器發(fā)送器FIFO發(fā)送器移位寄存

53、器發(fā)送器DMA接口TX_DMA_REQTX_DMA_CLRPCLKUARTn interruptRX_DMA_REQRX_DMA_CLRUn_RXDUn_OEUn_TXD433.寄存器描述寄存器描述(1)UART接收器緩沖寄存器(接收器緩沖寄存器(UnRBR) 接收器緩沖寄存器(接收器緩沖寄存器(UnRBR)是)是UART接收接收FIFO的最的最高字節(jié),包含了最早接收到的字符,并且可通過總線接口進(jìn)高字節(jié),包含了最早接收到的字符,并且可通過總線接口進(jìn)行讀取。行讀取。LSB(位位0)表示最早接收的數(shù)據(jù)位。要正確的成對讀表示最早接收的數(shù)據(jù)位。要正確的成對讀出有效的接收字節(jié)及其狀態(tài)位,應(yīng)先讀取線狀態(tài)寄

54、存器出有效的接收字節(jié)及其狀態(tài)位,應(yīng)先讀取線狀態(tài)寄存器(LSR)的內(nèi)容,然后再讀取接收器緩沖寄存器()的內(nèi)容,然后再讀取接收器緩沖寄存器(RBR)中中的字節(jié)。的字節(jié)。(2)UART發(fā)送保持寄存器(發(fā)送保持寄存器(UnTHR) 發(fā)送保持寄存器(發(fā)送保持寄存器(UnTHR)是)是UART發(fā)送發(fā)送FIFO單元的單元的最高字節(jié),是發(fā)送最高字節(jié),是發(fā)送FIFO單元中的最新字符,可通過總線接單元中的最新字符,可通過總線接口進(jìn)行寫入。口進(jìn)行寫入。LSB代表第一個要發(fā)送出去的位。代表第一個要發(fā)送出去的位。 如果要訪問發(fā)送保持寄存器(如果要訪問發(fā)送保持寄存器(THR),線控制寄存器),線控制寄存器(LCR)中的除

55、數(shù)鎖存器訪問位()中的除數(shù)鎖存器訪問位(DLAB)必須為)必須為0。發(fā)送。發(fā)送保持寄存器(保持寄存器(THR)為只寫寄存器。)為只寫寄存器。44(3)UART除數(shù)鎖存器(除數(shù)鎖存器(UxDLL/UxDLM) UART除數(shù)鎖存器由除數(shù)鎖存器由DLL和和DLM構(gòu)成,是構(gòu)成,是UART波特率發(fā)波特率發(fā)生器的一部分,它與小數(shù)分頻器一同使用,保持產(chǎn)生波特率時生器的一部分,它與小數(shù)分頻器一同使用,保持產(chǎn)生波特率時鐘的鐘的APB時鐘(時鐘(PCLK)分頻值,波特率時鐘必須使波特率的)分頻值,波特率時鐘必須使波特率的16倍。倍。(4)UART中斷使能寄存器(中斷使能寄存器(UnIER) UART中斷使能寄存器

56、(中斷使能寄存器(UnIER)用于使能)用于使能UARTN的中斷的中斷源,包含的源,包含的UART中斷使能有接收數(shù)據(jù)有效中斷使能、發(fā)送中中斷使能有接收數(shù)據(jù)有效中斷使能、發(fā)送中斷使能、線狀態(tài)中斷使能、自動波特率的結(jié)束和超時中斷使能斷使能、線狀態(tài)中斷使能、自動波特率的結(jié)束和超時中斷使能等。等。(5)UART中斷標(biāo)識寄存器(中斷標(biāo)識寄存器(UnIIR) UART中斷標(biāo)識寄存器(中斷標(biāo)識寄存器(UnIIR)提供狀態(tài)代碼,用于指示)提供狀態(tài)代碼,用于指示一個掛起處理中斷的優(yōu)先級別和中斷源。在訪問一個掛起處理中斷的優(yōu)先級別和中斷源。在訪問UART中斷標(biāo)中斷標(biāo)識寄存器(識寄存器(UnIIR)過程中,中斷被凍

57、結(jié)。如果在訪問)過程中,中斷被凍結(jié)。如果在訪問UART中斷標(biāo)識寄存器(中斷標(biāo)識寄存器(UnIIR)過程中產(chǎn)生了中斷,該中斷會被記)過程中產(chǎn)生了中斷,該中斷會被記錄,下次訪問錄,下次訪問UnIIR時可讀出該中斷。時可讀出該中斷。45 (6)UART FIFO 控制寄存器(控制寄存器(UnFCR) UART FIFO 控制寄存器用于配置控制寄存器用于配置FIFO單元的操作,主要單元的操作,主要有有FIFO使能、使能、FIFO復(fù)位、復(fù)位、DMA模式選擇和接收觸發(fā)點(diǎn)選擇。模式選擇和接收觸發(fā)點(diǎn)選擇。(7)UART線控制寄存器(線控制寄存器(U0LCRU3LCR) UART線控制寄存器用于設(shè)置發(fā)送或數(shù)據(jù)字

58、符的格式。線控制寄存器用于設(shè)置發(fā)送或數(shù)據(jù)字符的格式。(8)UART線狀態(tài)寄存器(線狀態(tài)寄存器(UnLSR) UART線狀態(tài)寄存器是一個只讀寄存器,提供了線狀態(tài)寄存器是一個只讀寄存器,提供了UARTn的的發(fā)送和接收模塊的狀態(tài)信息。發(fā)送和接收模塊的狀態(tài)信息。(9)UART小數(shù)分頻器寄存器(小數(shù)分頻器寄存器(UnFDR) UART的小數(shù)分頻器寄存器控制產(chǎn)生波特率的時鐘預(yù)分頻的小數(shù)分頻器寄存器控制產(chǎn)生波特率的時鐘預(yù)分頻器,并且用戶可自由對該寄存器進(jìn)行讀器,并且用戶可自由對該寄存器進(jìn)行讀/寫操作。寫操作。波特率計算公式如下:波特率計算公式如下:)1(25616MULVALDIVADDVALUNDLLLU

59、NDLMPCLKUART )(波特率波特率)1(25616MULVALDIVADDVALUNDLLLUNDLMPCLKUART )(波特率波特率465.3.3串口硬件電路設(shè)計串口硬件電路設(shè)計475.3.4串口驅(qū)動程序設(shè)計串口驅(qū)動程序設(shè)計與與PC機(jī)通信的軟件編程涉及的內(nèi)容如下:機(jī)通信的軟件編程涉及的內(nèi)容如下:l初始化程序。主要包括系統(tǒng)時鐘配置初始化和初始化程序。主要包括系統(tǒng)時鐘配置初始化和UART0初始化初始化。在。在UART0初始化中主要包括引腳的配置、初始化中主要包括引腳的配置、FIFO緩沖器的使緩沖器的使用、波特率的配置和數(shù)據(jù)幀格式的設(shè)置。用、波特率的配置和數(shù)據(jù)幀格式的設(shè)置。l串口的收發(fā)程

60、序。主要包括字節(jié)接收與發(fā)送,字符串發(fā)送函數(shù)串口的收發(fā)程序。主要包括字節(jié)接收與發(fā)送,字符串發(fā)送函數(shù)。lMain()主程序。除了實(shí)現(xiàn)初始化函數(shù)的調(diào)用之外,在主程序。除了實(shí)現(xiàn)初始化函數(shù)的調(diào)用之外,在while(1)無限循環(huán)程序?qū)崿F(xiàn)字符串的定時輸出。)無限循環(huán)程序?qū)崿F(xiàn)字符串的定時輸出。481. 常量宏聲明常量宏聲明#define FOSC 12000000 /* 振蕩器頻率振蕩器頻率 */#define FCCLK (FOSC* 8) /* 主時鐘頻率主時鐘頻率=100Mhz , FOSC的整數(shù)倍的整數(shù)倍 */#define FCCO (FCCLK * 3) /* PLL頻率頻率(275Mhz550Mhz) */ /* 與與FCCLK相同,或是其的偶數(shù)

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論