版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1嵌入式系統(tǒng)原理及應(yīng)用嵌入式系統(tǒng)原理及應(yīng)用第五講嵌入第五講嵌入式系統(tǒng)常用外設(shè)驅(qū)動(dòng)編程實(shí)例式系統(tǒng)常用外設(shè)驅(qū)動(dòng)編程實(shí)例2l嵌入式系統(tǒng)常用外設(shè)除了存儲(chǔ)設(shè)備以外還包括:通信嵌入式系統(tǒng)常用外設(shè)除了存儲(chǔ)設(shè)備以外還包括:通信總線及接口(如總線及接口(如UART、USB、I2C、SPI等)、人機(jī)等)、人機(jī)交互設(shè)備(如交互設(shè)備(如LCD、鍵盤、觸摸屏等)、其他輸入輸、鍵盤、觸摸屏等)、其他輸入輸出設(shè)備(如出設(shè)備(如A/D、D/A、PWM等)。等)。 3本章提要本章提要觸摸屏模塊設(shè)計(jì)實(shí)例觸摸屏模塊設(shè)計(jì)實(shí)例UART異步串口模塊實(shí)例異步串口模塊實(shí)例A/D轉(zhuǎn)換器應(yīng)用實(shí)例轉(zhuǎn)換器應(yīng)用實(shí)例LCD模塊設(shè)計(jì)模塊設(shè)計(jì) LPC176
2、8 簡(jiǎn)介簡(jiǎn)介 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級(jí)流水
3、線和哈佛結(jié)構(gòu)。級(jí)流水線和哈佛結(jié)構(gòu)。LPC17XX系列微控制器的外設(shè)組件包含高達(dá)系列微控制器的外設(shè)組件包含高達(dá)512KB的的 flash存儲(chǔ)器、存儲(chǔ)器、64KB的數(shù)據(jù)存儲(chǔ)器、以太網(wǎng)的數(shù)據(jù)存儲(chǔ)器、以太網(wǎng)MAC、USB主機(jī)主機(jī)/從機(jī)從機(jī)/OTG 接口接口、8 通道通道 DMA 控制器、控制器、4 個(gè)個(gè) UART、2 條條 CAN 通道、通道、2個(gè)個(gè)SSP控制器、控制器、SPI 接口、接口、3個(gè)個(gè)IIC接口、接口、2輸入和輸入和2輸出的輸出的IIS接口接口、8通道的通道的12位位ADC、10位位DAC、電機(jī)控制、電機(jī)控制 PWM、正交編碼、正交編碼器接口、器接口、4個(gè)通用定時(shí)器、個(gè)通用定時(shí)器、6輸出的
4、通用輸出的通用 PWM、帶有獨(dú)立電池、帶有獨(dú)立電池供電的超低功耗供電的超低功耗 RTC 和多達(dá)和多達(dá)70個(gè)的通用個(gè)的通用IO管腳。管腳。 5引腳連接模塊寄存器映射引腳連接模塊寄存器映射l引腳功能選擇寄存器引腳功能選擇寄存器0(PINSEL0) PINSEL0寄存器控制端口寄存器控制端口0低半部分的位功能。僅當(dāng)引腳選低半部分的位功能。僅當(dāng)引腳選擇使用擇使用GPIO功能時(shí),功能時(shí),F(xiàn)IO0DIR寄存器中的方向控制位才有效寄存器中的方向控制位才有效。l引腳功能選擇寄存器引腳功能選擇寄存器1(PINSEL1) PINSEL1寄存器控制端口寄存器控制端口0高半部分的位功能。僅當(dāng)引腳選高半部分的位功能。僅
5、當(dāng)引腳選擇使用擇使用GPIO功能時(shí),功能時(shí),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功能時(shí),功能時(shí),F(xiàn)IO1DIR寄寄存器中的方向控制位才有效。存器中的方向控制位才有效。l引腳功能選擇寄存器引腳功能選擇寄存器3(PINSEL3) PINS
6、EL3寄存器控制端口寄存器控制端口1高半部分的位功能。僅當(dāng)引腳選高半部分的位功能。僅當(dāng)引腳選擇使用擇使用GPIO功能時(shí),功能時(shí),F(xiàn)IO1DIR寄存器中的方向控制位才有效寄存器中的方向控制位才有效。6引腳連接模塊寄存器映射引腳連接模塊寄存器映射l引腳功能選擇寄存器引腳功能選擇寄存器4(PINSEL4) PINSEL4寄存器控制端口寄存器控制端口2低半部分的位功能。僅當(dāng)引腳選低半部分的位功能。僅當(dāng)引腳選擇使用擇使用GPIO功能時(shí),功能時(shí),F(xiàn)IO2DIR寄存器中的方向控制位才有效寄存器中的方向控制位才有效。l引腳功能選擇寄存器引腳功能選擇寄存器7(PINSEL7) PINSEL7寄存器控制端口寄存器
7、控制端口3高半部分的位功能。僅當(dāng)引腳選擇高半部分的位功能。僅當(dāng)引腳選擇使用使用GPIO功能時(shí),功能時(shí),F(xiàn)IO3DIR寄存器中的方向控制位才有效。寄存器中的方向控制位才有效。l引腳功能選擇寄存器引腳功能選擇寄存器9(PINSEL9) PINSEL9寄存器控制端口寄存器控制端口4高半部分的位功能。僅當(dāng)引腳選擇高半部分的位功能。僅當(dāng)引腳選擇使用使用GPIO功能時(shí),功能時(shí),F(xiàn)IO4DIR寄存器中的方向控制位才有效。寄存器中的方向控制位才有效。l引腳功能選擇寄存器引腳功能選擇寄存器(PINSEL10) PINSEL10寄存器用于控制寄存器用于控制P2.2P2.6的跟蹤功能。的跟蹤功能。7本章提要本章提要
8、觸摸屏模塊設(shè)計(jì)實(shí)例觸摸屏模塊設(shè)計(jì)實(shí)例UART異步串口模塊實(shí)例異步串口模塊實(shí)例A/D轉(zhuǎn)換器應(yīng)用實(shí)例轉(zhuǎn)換器應(yīng)用實(shí)例LCD模塊設(shè)計(jì)模塊設(shè)計(jì) LPC1768 簡(jiǎn)介簡(jiǎn)介 PWM控制實(shí)例控制實(shí)例GPIO與鍵盤實(shí)例與鍵盤實(shí)例85.2.1 LPC1768的的GPIO概述概述lLPC1768 GPIO簡(jiǎn)介簡(jiǎn)介L(zhǎng)PC1768其引腳數(shù)為其引腳數(shù)為100,其中用做,其中用做GPIO功能的引腳達(dá)功能的引腳達(dá)70個(gè)。個(gè)。具體分配如下:具體分配如下:lP0端口端口28個(gè):個(gè):P0.0P0.11,P0.15P0.30。lP1端口端口24個(gè):個(gè):P1.0P1.1,P1.4,P1.8P1.10,P1.14P1.31。lP2端口端
9、口14個(gè):個(gè):P2.0P2.13。lP3端口端口2個(gè):個(gè):P3.25,P3.26。lP4端口端口2個(gè):個(gè):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時(shí)序;屏蔽寄存器允許將某些端口位作為一組進(jìn)行時(shí)序;屏蔽寄存器允許將某些端口位作為一組進(jìn)行操作,而其他位不變;所以操作,而其他位不變;所以GPIO寄存器可以以字節(jié)、半字和字寄存器可以以字節(jié)、半字和字的方式進(jìn)行讀的方式進(jìn)行讀/寫操作;寫操作;GPIO寄存
10、器可由寄存器可由GPDMA進(jìn)行訪問(wèn)。進(jìn)行訪問(wèn)。l置位和清零寄存器允許用一條指令置位和清零操作一個(gè)端口的置位和清零寄存器允許用一條指令置位和清零操作一個(gè)端口的任意位。任意位。l所有所有GPIO寄存器支持位帶操作功能。寄存器支持位帶操作功能。l單個(gè)端口的方向可控制。單個(gè)端口的方向可控制。l所有所有I/O端口在復(fù)位后默認(rèn)為上拉輸入端。端口在復(fù)位后默認(rèn)為上拉輸入端。lP0和和P2端口的每個(gè)引腳提供了中斷功能。端口的每個(gè)引腳提供了中斷功能。l每個(gè)端口的中斷可被編程為上升沿、下降沿或邊沿產(chǎn)生中斷。每個(gè)端口的中斷可被編程為上升沿、下降沿或邊沿產(chǎn)生中斷。l邊沿檢測(cè)支持異步操作。邊沿檢測(cè)支持異步操作。lP0和和
11、P2端口的每個(gè)引腳支持掉電喚醒功能。端口的每個(gè)引腳支持掉電喚醒功能。105.2.1 LPC1768的的GPIO概述概述2. GPIO寄存器描述寄存器描述通用名稱通用名稱描述描述訪問(wèn)訪問(wèn)復(fù)位值復(fù)位值PORTn寄存器名稱和地址寄存器名稱和地址FIODIR高速高速GPIO端口方向控制寄端口方向控制寄存器。該寄存器可單獨(dú)控存器。該寄存器可單獨(dú)控制每個(gè)端口引腳的方向制每個(gè)端口引腳的方向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沒(méi)有影沒(méi)有影響響R/W0FIO0SET:0 x2009018FIO1SET:0 x2009038FIO2SET:0 x2009058FIO3SET:0 x200907
13、8FIO4SET:0 x2009098FIOCLR高速高速GPIO端口輸出清零寄端口輸出清零寄存器。寫存器。寫1使相應(yīng)的端口引使相應(yīng)的端口引腳輸出低電平;寫腳輸出低電平;寫0沒(méi)有影沒(méi)有影響響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è)計(jì)的矩陣鍵盤設(shè)計(jì)l常用鍵盤工作原理常用鍵盤工作原理(1)獨(dú)立式按鍵接口)獨(dú)立式按鍵接口l優(yōu)點(diǎn):電路配置靈活,優(yōu)點(diǎn):電路配置靈活,軟件實(shí)現(xiàn)簡(jiǎn)單。軟件實(shí)現(xiàn)簡(jiǎn)單。 l缺點(diǎn):每個(gè)按鍵需要占缺點(diǎn):每個(gè)按鍵需要占用一根口線,若按鍵數(shù)用一根口線,若按鍵數(shù)量較多資源浪費(fèi)將比量較多資源浪費(fèi)將比較嚴(yán)重較嚴(yán)重l應(yīng)用:主要用于按鍵較應(yīng)用:主要用于按鍵較少或?qū)Σ僮魉俣纫筝^少或?qū)Σ僮魉俣纫筝^高的場(chǎng)合,軟件實(shí)現(xiàn)時(shí)高的場(chǎng)合,軟件實(shí)現(xiàn)時(shí),可以采用中斷方式,可以采用中斷方式,也可采用查詢方式也可采用查詢方式12(2)行列式按鍵接口)行列式按鍵接口
15、優(yōu)點(diǎn):相對(duì)于獨(dú)立接口方式可優(yōu)點(diǎn):相對(duì)于獨(dú)立接口方式可以節(jié)省很多以節(jié)省很多I/O資源,資源,相對(duì)于專用芯片鍵盤相對(duì)于專用芯片鍵盤可以節(jié)省成本,且更可以節(jié)省成本,且更為靈活;為靈活;缺點(diǎn):需要用軟件處理消抖、缺點(diǎn):需要用軟件處理消抖、重鍵等重鍵等應(yīng)用:行列式按鍵接口適應(yīng)于應(yīng)用:行列式按鍵接口適應(yīng)于按鍵數(shù)量較多,又不按鍵數(shù)量較多,又不想使用專用鍵盤芯片想使用專用鍵盤芯片的場(chǎng)合。的場(chǎng)合。13鍵盤掃描陣列:鍵盤掃描陣列:一個(gè)瞬時(shí)接觸開關(guān)(按鈕)放一個(gè)瞬時(shí)接觸開關(guān)(按鈕)放置在每一行與線一列的交叉點(diǎn)置在每一行與線一列的交叉點(diǎn)。矩陣所需的鍵的數(shù)目顯然根。矩陣所需的鍵的數(shù)目顯然根據(jù)應(yīng)用程序而不同。每一行由據(jù)應(yīng)
16、用程序而不同。每一行由一個(gè)輸出端口的一位驅(qū)動(dòng),而一個(gè)輸出端口的一位驅(qū)動(dòng),而每一列由一個(gè)電阻器上拉且供每一列由一個(gè)電阻器上拉且供給輸入端口一位。給輸入端口一位。掃描次數(shù)掃描次數(shù)輸出輸出( (行行) )輸入輸入( (列列) )鍵剛按下時(shí)鍵剛按下時(shí)000000110110第一次掃描第一次掃描011011111111第二次掃描第二次掃描101101111111第三次掃描第三次掃描110110110110鍵鍵9按下時(shí)掃描過(guò)程按下時(shí)掃描過(guò)程143專用芯片式設(shè)計(jì)專用芯片式設(shè)計(jì)l專用鍵盤處理芯片一般功能比較完善芯片本身能完成對(duì)按鍵專用鍵盤處理芯片一般功能比較完善芯片本身能完成對(duì)按鍵的編碼、掃描、消抖和重鍵等問(wèn)
17、題的處理,甚至還集成了顯示的編碼、掃描、消抖和重鍵等問(wèn)題的處理,甚至還集成了顯示接口功能。接口功能。l專用鍵盤處理芯片的優(yōu)點(diǎn)很明顯,可靠性高,接口簡(jiǎn)單,使用專用鍵盤處理芯片的優(yōu)點(diǎn)很明顯,可靠性高,接口簡(jiǎn)單,使用方便,適合處理按鍵較多的情況。但在很多應(yīng)用場(chǎng)合,考慮成方便,適合處理按鍵較多的情況。但在很多應(yīng)用場(chǎng)合,考慮成本因素可能并不是最佳選擇。本因素可能并不是最佳選擇。152. 33矩陣鍵盤電路設(shè)計(jì)矩陣鍵盤電路設(shè)計(jì)(1)功能要求)功能要求l利用利用LPC1768的的P1.24P1.29引腳外接引腳外接33矩陣鍵盤,矩陣鍵盤,將鍵盤的值通過(guò)連接在將鍵盤的值通過(guò)連接在P2.0P2.5引腳上的引腳上的
18、LED按照鍵盤按照鍵盤按鍵的編號(hào)順序點(diǎn)亮顯示。按鍵的編號(hào)順序點(diǎn)亮顯示。(2)硬件電路)硬件電路l33矩陣鍵盤識(shí)別實(shí)例的硬件電路如圖矩陣鍵盤識(shí)別實(shí)例的硬件電路如圖5-5所示。所示。K1K9的的9個(gè)輕觸式按鍵以個(gè)輕觸式按鍵以3行行3列的形式分別連接到列的形式分別連接到P1.24P1.29引腳上,其中引腳上,其中P1.24P1.26引腳用于連接矩陣鍵盤引腳用于連接矩陣鍵盤的行,的行,P1.27P1.29引腳用于連接矩陣鍵盤的列。引腳用于連接矩陣鍵盤的列。8個(gè)個(gè)LED發(fā)光二極管連接到發(fā)光二極管連接到LPC1768的的P2.0P2.7引腳上顯引腳上顯示按鍵編號(hào)。示按鍵編號(hào)。162. 33矩陣鍵盤電路設(shè)計(jì)
19、矩陣鍵盤電路設(shè)計(jì)175.2.3鍵盤驅(qū)動(dòng)程序設(shè)計(jì)鍵盤驅(qū)動(dòng)程序設(shè)計(jì) 在圖在圖5-3中,中,KR0KR2連接到連接到P1.24P1.26作為輸出,作為輸出,KL3KL5連接連接到到P1.27P1.29作為輸入。作為輸入。如果采用了中斷,還要初始化中斷寄存器。如果采用了中斷,還要初始化中斷寄存器。 33矩陣鍵盤的識(shí)別過(guò)程是由以下幾個(gè)步驟構(gòu)成:矩陣鍵盤的識(shí)別過(guò)程是由以下幾個(gè)步驟構(gòu)成:l判斷按鍵是否按下。判斷按鍵是否按下。l若有鍵按下,則延時(shí)若有鍵按下,則延時(shí)510ms,消除按鍵抖動(dòng)。,消除按鍵抖動(dòng)。l再判斷按鍵是否真的按下。再判斷按鍵是否真的按下。l若確實(shí)有鍵按下,則執(zhí)行該按鍵的功能事件。若確實(shí)有鍵按下
20、,則執(zhí)行該按鍵的功能事件。l判斷按鍵是否釋放,若沒(méi)有釋放則等待按鍵釋放。判斷按鍵是否釋放,若沒(méi)有釋放則等待按鍵釋放。鍵號(hào)鍵號(hào)二進(jìn)制代碼二進(jìn)制代碼十六進(jìn)制代碼十六進(jìn)制代碼鍵號(hào)鍵號(hào)二進(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ū)動(dòng)程序設(shè)計(jì)鍵盤驅(qū)動(dòng)程序設(shè)計(jì)1. 寄存器宏定義寄存
21、器宏定義將將32位位GPIO寄存器分成寄存器分成4個(gè)個(gè)8位的子寄存器進(jìn)行訪問(wèn),其他例子則采用開發(fā)位的子寄存器進(jìn)行訪問(wèn),其他例子則采用開發(fā)板自帶寄存器定義方式來(lái)訪問(wèn)。板自帶寄存器定義方式來(lái)訪問(wèn)。#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ū)動(dòng)程序設(shè)計(jì)鍵盤驅(qū)動(dòng)程序設(shè)計(jì)2鍵盤初始化函數(shù)鍵盤初始化函數(shù) 鍵盤初始化函數(shù)主要針對(duì)鍵盤所用的端口屬性進(jìn)行初始化。在鍵盤工作鍵盤初始化函數(shù)主要針對(duì)鍵盤所用的端口屬性進(jìn)行初始化。在鍵盤工作之前,根據(jù)行列鍵盤電路設(shè)計(jì)原理將之前,根據(jù)行列鍵盤電路設(shè)計(jì)原理將P1.24P1.26配置為輸出,配置為輸出,P1.27P1.29配置為輸入。如果采用了中斷,還要初始化中斷寄存器。配置為輸入。如果采用
24、了中斷,還要初始化中斷寄存器。void KeyInit () /該函數(shù)對(duì)鍵盤使用的端口進(jìn)行初始化該函數(shù)對(duì)鍵盤使用的端口進(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是否等于第一次列是否等于第一次列輸入值輸入值將行值放入臨時(shí)變量低將行值放入臨時(shí)變量低4位,返回讀位,返回讀取結(jié)果取結(jié)果是是否否獲取鍵盤列輸入值,放入臨時(shí)變量獲取鍵盤列輸入值,放入臨時(shí)變量高高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ù)主要通過(guò)對(duì)輸入端口是否有低電平產(chǎn)生來(lái)判斷是否該函數(shù)主要通過(guò)對(duì)輸入端口是
27、否有低電平產(chǎn)生來(lái)判斷是否有鍵被按下。用于在輪詢方式查詢鍵盤時(shí)檢測(cè)是否有鍵按下。有鍵被按下。用于在輪詢方式查詢鍵盤時(shí)檢測(cè)是否有鍵按下。采用中斷方式時(shí)不需要該函數(shù)。采用中斷方式時(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ù) 由于在鍵盤掃描過(guò)程中有可能出現(xiàn)外界因素引起的鍵盤抖動(dòng)造成按鍵瞬由于在鍵盤掃描過(guò)程中有可能出現(xiàn)外界因素引起的鍵盤抖動(dòng)造成按鍵瞬間接觸的情況,如果不進(jìn)行去
28、抖可能造成按鍵的誤輸入。通常是采用程序延間接觸的情況,如果不進(jìn)行去抖可能造成按鍵的誤輸入。通常是采用程序延時(shí)來(lái)消抖時(shí)來(lái)消抖BYTE ScanKey() BYTE key; key=GetScanKey(); OSTimeDly(50); /延時(shí)延時(shí)50毫秒毫秒 if(key!=GetScanKey() /延時(shí)延時(shí)50毫秒毫秒 return 0; /返回錯(cuò)誤代碼返回錯(cuò)誤代碼246. 鍵盤掃描與鍵盤掃描與LED燈顯示控制主程序燈顯示控制主程序?qū)⒃阪I盤按鍵編號(hào)顯示到對(duì)應(yīng)的將在鍵盤按鍵編號(hào)顯示到對(duì)應(yīng)的LED燈上,燈上,其他燈熄滅。其他燈熄滅。LED燈顯示值送到燈顯示值送到P2.0P2.7引腳上即可驅(qū)動(dòng)
29、點(diǎn)亮相應(yīng)引腳上即可驅(qū)動(dòng)點(diǎn)亮相應(yīng)LED燈。燈。按鍵編號(hào)按鍵編號(hào)二進(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輸出全為低電平輸出全為低電平KeyInit () while(
30、1) if(IsKeyPressed()/檢測(cè)是否有鍵按下檢測(cè)是否有鍵按下 temp=ScanKey()for(i=0;isizeof(KEYTAB);i+)/查查KEYTAB表表if( temp=KEYTABi ) rFIO2CLR0=0 xFF; /先清零先清零rFIO2SET0=LEDi; /若找到顯示鍵值若找到顯示鍵值 26本章提要本章提要觸摸屏模塊設(shè)計(jì)實(shí)例觸摸屏模塊設(shè)計(jì)實(shí)例UART異步串口模塊實(shí)例異步串口模塊實(shí)例A/D轉(zhuǎn)換器應(yīng)用實(shí)例轉(zhuǎn)換器應(yīng)用實(shí)例LCD模塊設(shè)計(jì)模塊設(shè)計(jì) LPC1768 簡(jiǎn)介簡(jiǎn)介 PWM控制實(shí)例控制實(shí)例GPIO與鍵盤實(shí)例與鍵盤實(shí)例275.3.1異步串行通信概述異步串行通
31、信概述lUART(Universal Asynchronous Receiver and Transmitter,通用異步收發(fā)器)接口。,通用異步收發(fā)器)接口。l而而RS232、RS499、RS423、RS422和和RS485等,等,是物理接口標(biāo)準(zhǔn)規(guī)范和總線標(biāo)準(zhǔn)規(guī)范,對(duì)應(yīng)各種異步是物理接口標(biāo)準(zhǔn)規(guī)范和總線標(biāo)準(zhǔn)規(guī)范,對(duì)應(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é)議異步串行通信協(xié)議 異步串行方式是將傳輸數(shù)據(jù)的每個(gè)字
32、符一位接一位異步串行方式是將傳輸數(shù)據(jù)的每個(gè)字符一位接一位(例如先例如先低位、后高位低位、后高位)地傳送。數(shù)據(jù)的各不同位可以分時(shí)使用同一傳輸?shù)貍魉汀?shù)據(jù)的各不同位可以分時(shí)使用同一傳輸通道,因此串行通道,因此串行I/O可以減少信號(hào)連線,最少用一對(duì)線即可進(jìn)行可以減少信號(hào)連線,最少用一對(duì)線即可進(jìn)行。 1111/01/01/01/01/01/01/01/01100D0D0D0D3D4D5D6第第n個(gè)字符個(gè)字符空空閑閑位位空空閑閑位位空空閑閑位位停停止止位位奇奇偶偶位位起起始始位位數(shù)據(jù)位數(shù)據(jù)位微機(jī)異步串行通信中,常用的波特率為微機(jī)異步串行通信中,常用的波特率為50,95,110,150,300,600,1
33、200,2400,4800,9600 ,115200等等。29接收方按約定的格式接收數(shù)據(jù),并進(jìn)行檢查,一般可以查出接收方按約定的格式接收數(shù)據(jù),并進(jìn)行檢查,一般可以查出以下三種錯(cuò)誤:以下三種錯(cuò)誤:1)奇偶錯(cuò):在約定奇偶檢查的情況下,接收到的字符奇偶)奇偶錯(cuò):在約定奇偶檢查的情況下,接收到的字符奇偶狀態(tài)和約定不符。狀態(tài)和約定不符。2)幀格式錯(cuò):一個(gè)字符從起始位到停止位的總位數(shù)不對(duì)。)幀格式錯(cuò):一個(gè)字符從起始位到停止位的總位數(shù)不對(duì)。3)溢出錯(cuò):若先接收的字符尚未被微機(jī)讀取,后面的字符)溢出錯(cuò):若先接收的字符尚未被微機(jī)讀取,后面的字符又傳送過(guò)來(lái),則產(chǎn)生溢出錯(cuò)。又傳送過(guò)來(lái),則產(chǎn)生溢出錯(cuò)。 302異步串行
34、通信接口定義異步串行通信接口定義一般一般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)請(qǐng)求數(shù)據(jù)請(qǐng)求數(shù)據(jù)發(fā)送引腳,用于標(biāo)明接收設(shè)備有沒(méi)有準(zhǔn)備發(fā)送引腳,用于標(biāo)明接收設(shè)備有沒(méi)有準(zhǔn)備好接收數(shù)據(jù),即當(dāng)終端要發(fā)送數(shù)據(jù)時(shí),使好接收數(shù)據(jù),即當(dāng)終端要發(fā)送數(shù)據(jù)時(shí),使該信號(hào)有效;該信號(hào)有效;4)CTS(Clear to Send)允許數(shù)
35、據(jù)發(fā)允許數(shù)據(jù)發(fā)送引腳,用于送引腳,用于CTS來(lái)起動(dòng)和暫停來(lái)自計(jì)算來(lái)起動(dòng)和暫停來(lái)自計(jì)算機(jī)的數(shù)據(jù)流,用來(lái)表示從設(shè)備準(zhǔn)備好接收機(jī)的數(shù)據(jù)流,用來(lái)表示從設(shè)備準(zhǔn)備好接收主設(shè)備發(fā)來(lái)的數(shù)據(jù),是對(duì)請(qǐng)求發(fā)送信號(hào)主設(shè)備發(fā)來(lái)的數(shù)據(jù),是對(duì)請(qǐng)求發(fā)送信號(hào)RTS的響應(yīng)信號(hào)。的響應(yīng)信號(hào)。UART AUART BTxDRxDCTSRTSTxDRxDCTSRTS313、 RS-232-C 目前目前RS-232RS-232是是PCPC機(jī)與通信工業(yè)中應(yīng)用最廣泛的種串行接口機(jī)與通信工業(yè)中應(yīng)用最廣泛的種串行接口。RS-232RS-232被定義為一種在低速率串行通信中增加通信距離的單被定義為一種在低速率串行通信中增加通信距離的單端標(biāo)準(zhǔn)。端標(biāo)
36、準(zhǔn)。RS-232RS-232遵循遵循RS-232-CRS-232-C標(biāo)準(zhǔn),美國(guó)電子工業(yè)協(xié)會(huì)標(biāo)準(zhǔn),美國(guó)電子工業(yè)協(xié)會(huì)(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 Terminal EquipmentDIE(Da
37、ta 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定義包括以下幾個(gè)方面:定義包括以下幾個(gè)方面:l接口的機(jī)械特性;接口的機(jī)械特性;l電氣信號(hào)特征;電氣信號(hào)特征;l交換功能特性。交換功能特性。32 RS-232-CRS-232-C采用采用2525針連接器,陽(yáng)極針連接器,陽(yáng)極( (插頭插頭) )接接DTEDTE,陰極,陰極( (插座插座) )接接DCED
38、CE。雖然本標(biāo)準(zhǔn)沒(méi)有規(guī)定連接器的實(shí)際類型,但工業(yè)上對(duì)。雖然本標(biāo)準(zhǔn)沒(méi)有規(guī)定連接器的實(shí)際類型,但工業(yè)上對(duì)D-25D-25類型類型的連接器實(shí)行了標(biāo)準(zhǔn)化。的連接器實(shí)行了標(biāo)準(zhǔn)化。 在電氣方向,在電氣方向, RS-232-CRS-232-C作了以下規(guī)定:作了以下規(guī)定:l驅(qū)動(dòng)器上的負(fù)載電容不超過(guò)驅(qū)動(dòng)器上的負(fù)載電容不超過(guò)2500pF2500pF。l驅(qū)動(dòng)器上的負(fù)載電阻在驅(qū)動(dòng)器上的負(fù)載電阻在30003000歐歐-7000-7000歐之間。歐之間。l在指定負(fù)載下,數(shù)據(jù)信號(hào)傳輸率在指定負(fù)載下,數(shù)據(jù)信號(hào)傳輸率( (或波特率或波特率) )低于低于2000bps2000bps。l相對(duì)于信號(hào)地線,相對(duì)于信號(hào)地線,RS-232
39、-CRS-232-C線的最高電壓不超過(guò)線的最高電壓不超過(guò)15v15vl驅(qū)動(dòng)器能產(chǎn)生驅(qū)動(dòng)器能產(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)的信號(hào)。的信號(hào)。33 在在RS-232-CRS-232-C標(biāo)準(zhǔn)建議信號(hào)的傳輸速度控制在標(biāo)準(zhǔn)建議信號(hào)的傳輸速度控制在20kbps20kbps內(nèi),在內(nèi),在高速傳輸時(shí),建議電纜長(zhǎng)度不超過(guò)高速傳輸時(shí),建議電纜長(zhǎng)度不超過(guò)5050英尺。簡(jiǎn)單的計(jì)算公式為英尺。簡(jiǎn)
40、單的計(jì)算公式為:2525英尺英尺( (半負(fù)載量半負(fù)載量) )時(shí)數(shù)據(jù)信號(hào)傳輸率增加到時(shí)數(shù)據(jù)信號(hào)傳輸率增加到40kbps40kbps、12.512.5英英尺時(shí)數(shù)據(jù)信號(hào)傳輸率增加到尺時(shí)數(shù)據(jù)信號(hào)傳輸率增加到80kbps80kbps、6 6英尺時(shí)數(shù)據(jù)信號(hào)傳輸率增英尺時(shí)數(shù)據(jù)信號(hào)傳輸率增加到加到160kbps160kbps。事實(shí)上,許多通信包能使兩臺(tái)計(jì)算機(jī)之間的數(shù)據(jù)。事實(shí)上,許多通信包能使兩臺(tái)計(jì)算機(jī)之間的數(shù)據(jù)信號(hào)傳輸率達(dá)到信號(hào)傳輸率達(dá)到115.2kbps115.2kbps。注意,。注意, RS-232-CRS-232-C標(biāo)準(zhǔn)并沒(méi)有定義標(biāo)準(zhǔn)并沒(méi)有定義“標(biāo)推標(biāo)推”波特率。波特率。 RS-232-CRS-232-
41、C標(biāo)準(zhǔn)允許數(shù)據(jù)在同一時(shí)刻收發(fā),也標(biāo)準(zhǔn)允許數(shù)據(jù)在同一時(shí)刻收發(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連接連接 ( (即陽(yáng)性連接器即陽(yáng)性連接器) ) 。 在實(shí)際的應(yīng)用中,利用在實(shí)際的應(yīng)用中,利用RS-232-CRS-232-C的通信通常只使用其中的的通信通常只使用其中的3 3根線,即根線,即RdRd、TxDTxD和和
42、 GNDGND。34說(shuō)明說(shuō)明編寫詞編寫詞DTE DB-25M針腳號(hào)針腳號(hào)DTE DB-9M針腳號(hào)針腳號(hào)方向方向DTE DB-9F針腳號(hào)針腳號(hào)DTE DB-25F針腳號(hào)針腳號(hào)發(fā)送發(fā)送TxD2333接收接收RxD3222發(fā)送請(qǐng)求發(fā)送請(qǐng)求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振鈴檢測(cè)振鈴檢測(cè)IndicatorTL2299信號(hào)地信號(hào)地GroundSG75535 4RS-422 RS-422由由RS-232發(fā)展而來(lái)。為改進(jìn)發(fā)展而來(lái)。為改進(jìn)RS-232通信距離短、通信距離
43、短、速度低的缺點(diǎn),速度低的缺點(diǎn),RS-422定義了一種平衡通信接口,將傳輸定義了一種平衡通信接口,將傳輸速率提高到速率提高到10Mbps,允許在一條平衡總線上連接最多,允許在一條平衡總線上連接最多10個(gè)個(gè)接收器。接收器。RS-422是一種單機(jī)發(fā)送、多機(jī)接收的單向、平衡是一種單機(jī)發(fā)送、多機(jī)接收的單向、平衡傳輸規(guī)范。傳輸規(guī)范。RS-422的數(shù)據(jù)信號(hào)采用差分傳輸方式,也稱做的數(shù)據(jù)信號(hào)采用差分傳輸方式,也稱做平衡傳輸。它使用一對(duì)雙絞線進(jìn)行數(shù)據(jù)傳輸。平衡傳輸。它使用一對(duì)雙絞線進(jìn)行數(shù)據(jù)傳輸。 驅(qū)動(dòng)器能產(chǎn)生驅(qū)動(dòng)器能產(chǎn)生+2- +6v(+2- +6v(邏輯邏輯0)0)和和-2- -6v(-2- -6v(邏輯邏
44、輯1)1)36 RS-422標(biāo)準(zhǔn)全稱是標(biāo)準(zhǔn)全稱是“平衡電壓數(shù)字接口電路的電氣特性平衡電壓數(shù)字接口電路的電氣特性”。由于接收器采用高輸入阻抗并且發(fā)送驅(qū)動(dòng)器具有比由于接收器采用高輸入阻抗并且發(fā)送驅(qū)動(dòng)器具有比RS-232更更強(qiáng)的驅(qū)動(dòng)能力,故允許在相同傳輸線上連接多個(gè)接收節(jié)點(diǎn),強(qiáng)的驅(qū)動(dòng)能力,故允許在相同傳輸線上連接多個(gè)接收節(jié)點(diǎn),最最多可接多可接10個(gè)節(jié)點(diǎn)個(gè)節(jié)點(diǎn),即一個(gè)主設(shè)備,即一個(gè)主設(shè)備(Master),其余為從設(shè)備,其余為從設(shè)備(Slave),從設(shè)備之間不能通信,所以,從設(shè)備之間不能通信,所以RS-422支持點(diǎn)對(duì)多的雙支持點(diǎn)對(duì)多的雙向通信。向通信。RS-422四線接口由于采用單獨(dú)的發(fā)送和接收通道,四
45、線接口由于采用單獨(dú)的發(fā)送和接收通道,因此不必控制數(shù)據(jù)方向,備裝置之間任何必須的信號(hào)交換均可因此不必控制數(shù)據(jù)方向,備裝置之間任何必須的信號(hào)交換均可以按軟件方式以按軟件方式(XON/XOFF握手握手)或硬件方式或硬件方式(一對(duì)單獨(dú)的雙絞一對(duì)單獨(dú)的雙絞線線)實(shí)現(xiàn)。實(shí)現(xiàn)。37 RS-422的最大傳輸距離為的最大傳輸距離為4000英尺英尺(約約1219米米),最大,最大傳輸速率為傳輸速率為1Mbps。其平衡雙絞線的長(zhǎng)度與傳輸速率成反比。其平衡雙絞線的長(zhǎng)度與傳輸速率成反比,在,在100Kbps速率以下,才可能達(dá)到最大傳輸距離。只有在速率以下,才可能達(dá)到最大傳輸距離。只有在很短的距離廠才能獲得最高傳輸速率。
46、一般很短的距離廠才能獲得最高傳輸速率。一般100米長(zhǎng)的雙絞線米長(zhǎng)的雙絞線上所能獲得的最大傳輸速率僅為上所能獲得的最大傳輸速率僅為1Mbps。 RS-422需要一終接電阻,要求其阻值約等于傳輸電纜的特需要一終接電阻,要求其阻值約等于傳輸電纜的特性阻抗。在短距離傳輸時(shí)可不需終接電阻,即一般在性阻抗。在短距離傳輸時(shí)可不需終接電阻,即一般在300米以米以下不需終接電阻。終接電阻接在傳輸電纜的最遠(yuǎn)端。下不需終接電阻。終接電阻接在傳輸電纜的最遠(yuǎn)端。38 5RS-485串行總線接口串行總線接口 為擴(kuò)展應(yīng)用范圍,為擴(kuò)展應(yīng)用范圍,EIA在在RS-422的基礎(chǔ)上制定了的基礎(chǔ)上制定了RS-485標(biāo)標(biāo)準(zhǔn),增加了多點(diǎn)、
47、雙向通信能力,通常在要求通信距離為幾十準(zhǔn),增加了多點(diǎn)、雙向通信能力,通常在要求通信距離為幾十米至上千米時(shí),廣泛采用米至上千米時(shí),廣泛采用R5-485收發(fā)器。收發(fā)器。 RS-485收發(fā)器采用平衡發(fā)送和差分接收,即在發(fā)送端,驅(qū)收發(fā)器采用平衡發(fā)送和差分接收,即在發(fā)送端,驅(qū)動(dòng)器將動(dòng)器將TTL電平信號(hào)轉(zhuǎn)換成差分信號(hào)輸出;在接收端,接收器電平信號(hào)轉(zhuǎn)換成差分信號(hào)輸出;在接收端,接收器將差分信號(hào)變成將差分信號(hào)變成TTL電平,因此具有抑制共模干擾的能力,加電平,因此具有抑制共模干擾的能力,加上接收器具有高的靈敏度,能檢測(cè)低達(dá)上接收器具有高的靈敏度,能檢測(cè)低達(dá)200mV的電壓,故數(shù)的電壓,故數(shù)據(jù)傳輸可達(dá)千米以外。
48、據(jù)傳輸可達(dá)千米以外。39 RS-485許多電氣規(guī)定與許多電氣規(guī)定與RS-422相仿,如都采用平衡傳輸相仿,如都采用平衡傳輸方式、都需要在傳輸線上接終接電阻等。方式、都需要在傳輸線上接終接電阻等。RS-485可以采用二可以采用二線與四線方式,二線制可實(shí)現(xiàn)真正的多點(diǎn)雙向通信。而采用四線與四線方式,二線制可實(shí)現(xiàn)真正的多點(diǎn)雙向通信。而采用四線連接時(shí),與線連接時(shí),與RS-422一樣只能實(shí)現(xiàn)點(diǎn)對(duì)多的通信,即只能有一樣只能實(shí)現(xiàn)點(diǎn)對(duì)多的通信,即只能有一個(gè)主一個(gè)主(Master)設(shè)備,其余為從設(shè)備,但它比設(shè)備,其余為從設(shè)備,但它比RS-422有所改有所改進(jìn)。無(wú)論四線還是二線連接方式總線上都可連接進(jìn)。無(wú)論四線還是
49、二線連接方式總線上都可連接多達(dá)多達(dá)32個(gè)設(shè)個(gè)設(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ū)動(dòng)器可以的驅(qū)動(dòng)器可以在在RS-422網(wǎng)絡(luò)中應(yīng)用,但網(wǎng)絡(luò)中應(yīng)用,但RS-422的驅(qū)動(dòng)器并不完全適用于的驅(qū)動(dòng)器并不完全適用于RS-485網(wǎng)絡(luò)。網(wǎng)絡(luò)。 RS-485與與RS-4
50、22一樣,最大傳輸速率為一樣,最大傳輸速率為10Mb/s。當(dāng)波特。當(dāng)波特率為率為1.2kbps時(shí),最大傳輸距離理論上可達(dá)時(shí),最大傳輸距離理論上可達(dá)15千米。平衡雙絞千米。平衡雙絞線的長(zhǎng)度與傳輸速率成反比,在線的長(zhǎng)度與傳輸速率成反比,在100kbps速率以下,才可能使速率以下,才可能使用規(guī)定最長(zhǎng)的電纜長(zhǎng)度。用規(guī)定最長(zhǎng)的電纜長(zhǎng)度。 RS-485需要需要2個(gè)終接電阻,接在傳輸總線的兩端,其阻值個(gè)終接電阻,接在傳輸總線的兩端,其阻值要求等于傳輸電纜的特性阻抗。在矩距離傳輸時(shí)可不需終接電要求等于傳輸電纜的特性阻抗。在矩距離傳輸時(shí)可不需終接電阻,即一般在阻,即一般在300米以下不需終接電阻。米以下不需終接
51、電阻。415.3.2 LPC1768 UART串口簡(jiǎn)介及接口電路設(shè)計(jì)串口簡(jiǎn)介及接口電路設(shè)計(jì) LRC1768微控制器內(nèi)置為微控制器內(nèi)置為4路異步串口通信收發(fā)器(路異步串口通信收發(fā)器(UART):UART0、UART1、UART2和和UART3。它們的主要特征如下:。它們的主要特征如下:l支持支持5、6、7和和8位的數(shù)據(jù)長(zhǎng)度;位的數(shù)據(jù)長(zhǎng)度;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用于精確控制波特率的小數(shù)分頻器,并擁有實(shí)現(xiàn)軟件流控用
52、于精確控制波特率的小數(shù)分頻器,并擁有實(shí)現(xiàn)軟件流控制的自動(dòng)波特率檢測(cè)能力和機(jī)制;制的自動(dòng)波特率檢測(cè)能力和機(jī)制;l多處理器地址模式;多處理器地址模式;lUART3還包含一種支持紅外通信的還包含一種支持紅外通信的IRDA模式;模式;lUART1還具有還具有Modem接口信號(hào)和接口信號(hào)和RS-485/EIA-485模式。模式。42接收器接收器緩沖寄存器接收器FIFO接收器移位寄存器接收器DMA接口波特率發(fā)送器小數(shù)因子分頻器主分頻器(DLM,DLL)FIFO控制和狀態(tài)線控制和狀態(tài)IrDA和自動(dòng)波特檢測(cè)中斷控制和狀態(tài)發(fā)送器發(fā)送器保持寄存器發(fā)送器FIFO發(fā)送器移位寄存器發(fā)送器DMA接口TX_DMA_REQT
53、X_DMA_CLRPCLKUARTn interruptRX_DMA_REQRX_DMA_CLRUn_RXDUn_OEUn_TXD433.寄存器描述寄存器描述(1)UART接收器緩沖寄存器(接收器緩沖寄存器(UnRBR) 接收器緩沖寄存器(接收器緩沖寄存器(UnRBR)是)是UART接收接收FIFO的最的最高字節(jié),包含了最早接收到的字符,并且可通過(guò)總線接口進(jìn)高字節(jié),包含了最早接收到的字符,并且可通過(guò)總線接口進(jìn)行讀取。行讀取。LSB(位位0)表示最早接收的數(shù)據(jù)位。要正確的成對(duì)讀表示最早接收的數(shù)據(jù)位。要正確的成對(duì)讀出有效的接收字節(jié)及其狀態(tài)位,應(yīng)先讀取線狀態(tài)寄存器出有效的接收字節(jié)及其狀態(tài)位,應(yīng)先讀取
54、線狀態(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單元中的最新字符,可通過(guò)總線接單元中的最新字符,可通過(guò)總線接口進(jìn)行寫入??谶M(jìn)行寫入。LSB代表第一個(gè)要發(fā)送出去的位。代表第一個(gè)要發(fā)送出去的位。 如果要訪問(wèn)發(fā)送保持寄存器(如果要訪問(wèn)發(fā)送保持寄存器(THR),線控制寄存器),線控制寄存器(LCR)中的除數(shù)鎖存器訪問(wèn)位()中的除數(shù)鎖存器訪問(wèn)位(
55、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í)生器的一部分,它與小數(shù)分頻器一同使用,保持產(chǎn)生波特率時(shí)鐘的鐘的APB時(shí)鐘(時(shí)鐘(PCLK)分頻值,波特率時(shí)鐘必須使波特率的)分頻值,波特率時(shí)鐘必須使波特率的16倍。倍。(4)UART中斷使能寄存器(中斷使能寄存器(UnIER) UART中斷使能寄存器(中斷使能寄存器(UnIER)用于使能)
56、用于使能UARTN的中斷的中斷源,包含的源,包含的UART中斷使能有接收數(shù)據(jù)有效中斷使能、發(fā)送中中斷使能有接收數(shù)據(jù)有效中斷使能、發(fā)送中斷使能、線狀態(tài)中斷使能、自動(dòng)波特率的結(jié)束和超時(shí)中斷使能斷使能、線狀態(tài)中斷使能、自動(dòng)波特率的結(jié)束和超時(shí)中斷使能等。等。(5)UART中斷標(biāo)識(shí)寄存器(中斷標(biāo)識(shí)寄存器(UnIIR) UART中斷標(biāo)識(shí)寄存器(中斷標(biāo)識(shí)寄存器(UnIIR)提供狀態(tài)代碼,用于指示)提供狀態(tài)代碼,用于指示一個(gè)掛起處理中斷的優(yōu)先級(jí)別和中斷源。在訪問(wèn)一個(gè)掛起處理中斷的優(yōu)先級(jí)別和中斷源。在訪問(wèn)UART中斷標(biāo)中斷標(biāo)識(shí)寄存器(識(shí)寄存器(UnIIR)過(guò)程中,中斷被凍結(jié)。如果在訪問(wèn))過(guò)程中,中斷被凍結(jié)。如果
57、在訪問(wèn)UART中斷標(biāo)識(shí)寄存器(中斷標(biāo)識(shí)寄存器(UnIIR)過(guò)程中產(chǎn)生了中斷,該中斷會(huì)被記)過(guò)程中產(chǎn)生了中斷,該中斷會(huì)被記錄,下次訪問(wèn)錄,下次訪問(wèn)UnIIR時(shí)可讀出該中斷。時(shí)可讀出該中斷。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ù)字符的格式。線控制寄存器用于設(shè)置發(fā)送或數(shù)據(jù)
58、字符的格式。(8)UART線狀態(tài)寄存器(線狀態(tài)寄存器(UnLSR) UART線狀態(tài)寄存器是一個(gè)只讀寄存器,提供了線狀態(tài)寄存器是一個(gè)只讀寄存器,提供了UARTn的的發(fā)送和接收模塊的狀態(tài)信息。發(fā)送和接收模塊的狀態(tài)信息。(9)UART小數(shù)分頻器寄存器(小數(shù)分頻器寄存器(UnFDR) UART的小數(shù)分頻器寄存器控制產(chǎn)生波特率的時(shí)鐘預(yù)分頻的小數(shù)分頻器寄存器控制產(chǎn)生波特率的時(shí)鐘預(yù)分頻器,并且用戶可自由對(duì)該寄存器進(jìn)行讀器,并且用戶可自由對(duì)該寄存器進(jìn)行讀/寫操作。寫操作。波特率計(jì)算公式如下:波特率計(jì)算公式如下:)1(25616MULVALDIVADDVALUNDLLLUNDLMPCLKUART )(波特率波特
59、率)1(25616MULVALDIVADDVALUNDLLLUNDLMPCLKUART )(波特率波特率465.3.3串口硬件電路設(shè)計(jì)串口硬件電路設(shè)計(jì)475.3.4串口驅(qū)動(dòng)程序設(shè)計(jì)串口驅(qū)動(dòng)程序設(shè)計(jì)與與PC機(jī)通信的軟件編程涉及的內(nèi)容如下:機(jī)通信的軟件編程涉及的內(nèi)容如下:l初始化程序。主要包括系統(tǒng)時(shí)鐘配置初始化和初始化程序。主要包括系統(tǒng)時(shí)鐘配置初始化和UART0初始化初始化。在。在UART0初始化中主要包括引腳的配置、初始化中主要包括引腳的配置、FIFO緩沖器的使緩沖器的使用、波特率的配置和數(shù)據(jù)幀格式的設(shè)置。用、波特率的配置和數(shù)據(jù)幀格式的設(shè)置。l串口的收發(fā)程序。主要包括字節(jié)接收與發(fā)送,字符串發(fā)送函
60、數(shù)串口的收發(fā)程序。主要包括字節(jié)接收與發(fā)送,字符串發(fā)送函數(shù)。lMain()主程序。除了實(shí)現(xiàn)初始化函數(shù)的調(diào)用之外,在主程序。除了實(shí)現(xiàn)初始化函數(shù)的調(diào)用之外,在while(1)無(wú)限循環(huán)程序?qū)崿F(xiàn)字符串的定時(shí)輸出。)無(wú)限循環(huán)程序?qū)崿F(xiàn)字符串的定時(shí)輸出。481. 常量宏聲明常量宏聲明#define FOSC 12000000 /* 振蕩器頻率振蕩器頻率 */#define FCCLK (FOSC* 8) /* 主時(shí)鐘頻率主時(shí)鐘頻率=100Mhz , FOSC的整數(shù)倍的整數(shù)倍 */#define FCCO (FCCLK * 3) /* PLL頻率頻率(275Mhz550Mhz) */ /* 與與FCCLK相同,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年梧州貨運(yùn)從業(yè)資格考試
- 2025年大連貨運(yùn)從業(yè)資格證考試模擬考試題庫(kù)
- 2025年貴陽(yáng)道路貨運(yùn)從業(yè)資格證模擬考試下載什么軟件
- 2025年廣州貨運(yùn)從業(yè)資格證考試題庫(kù)及答案詳解
- 2025年遼源駕??荚嚳拓涍\(yùn)從業(yè)資格證考試題庫(kù)
- 2025年咸陽(yáng)貨運(yùn)上崗證模擬考試0題
- 2025年商洛貨運(yùn)從業(yè)資格證怎么考
- 企業(yè)客戶服務(wù)流程的自動(dòng)化與智能化
- 從生產(chǎn)自動(dòng)化到工業(yè)4.0智能化改造的技術(shù)分析
- 健康生活的綠色選擇家養(yǎng)植物的優(yōu)勢(shì)與挑戰(zhàn)
- 直系親屬股權(quán)無(wú)償轉(zhuǎn)讓合同(2篇)
- 浙江省強(qiáng)基聯(lián)盟2024-2025學(xué)年高一上學(xué)期11月聯(lián)考數(shù)學(xué)試題(原卷版)-A4
- ?一年級(jí)小學(xué)生數(shù)學(xué)題及答案大全
- 2024年成人高考成考(專升本)醫(yī)學(xué)綜合試卷與參考答案
- 童年 高爾基 課件
- 場(chǎng)地鋪裝彩磚勞務(wù)合同范例
- 北師大中學(xué)文科拔尖創(chuàng)新型人才培養(yǎng)特色班方案
- 企業(yè)愿景及三年規(guī)劃目標(biāo)
- 2024統(tǒng)編版初中八年級(jí)語(yǔ)文上冊(cè)第六單元:大單元整體教學(xué)設(shè)計(jì)
- 無(wú)子女離婚協(xié)議書范文百度網(wǎng)盤
- 2024年內(nèi)蒙古包頭市中考英語(yǔ)試題含解析
評(píng)論
0/150
提交評(píng)論