資料介紹
本連載共分6期,將介紹有效使用單片機(jī)外設(shè)功能的結(jié)構(gòu)及使用方法。通過(guò)本連載的學(xué)習(xí),我們將能學(xué)到各種單片機(jī)共通的基本外設(shè)功能,并可廣泛應(yīng)用到各個(gè)方面。
單片機(jī)僅靠CPU和內(nèi)存是無(wú)法運(yùn)行的!
有效使用單片機(jī)不可或缺的“外設(shè)功能”是什么呢?
正如過(guò)去連載的“單片機(jī)入門(mén)”系列中所介紹的那樣,對(duì)電子產(chǎn)品進(jìn)行控制的單片機(jī)是由CPU、內(nèi)存及外設(shè)功能等部分組成的(圖1)。CPU根據(jù)指令(程序),執(zhí)行運(yùn)算、數(shù)據(jù)的讀寫(xiě)以及進(jìn)行條件判斷等,而內(nèi)存則用來(lái)保存該程序(記憶)。
圖1:?jiǎn)纹瑱C(jī)內(nèi)部結(jié)構(gòu)示意圖
外設(shè)功能是指為了使單片機(jī)便于使用的各種功能。例如,CPU為了與外部的傳感器及開(kāi)關(guān)等進(jìn)行信號(hào)交換,就需要“輸入/輸出端口(I/O端口)”這種外設(shè)功能。
而且,將模擬輸入信號(hào)轉(zhuǎn)換為數(shù)字值的“A/D轉(zhuǎn)換器”以及反過(guò)來(lái)將數(shù)字值轉(zhuǎn)換為模擬輸出信號(hào)的“D/A轉(zhuǎn)換器”則是單片機(jī)對(duì)各種信號(hào)進(jìn)行處理時(shí)不可或缺的外設(shè)功能。
另外,還有為了正確測(cè)量時(shí)間所用的“定時(shí)器”以及提供日期和時(shí)計(jì)的“實(shí)時(shí)時(shí)鐘(RTC)”,用于進(jìn)行與時(shí)間相關(guān)的處理,此外還有將并行信號(hào)(parallel signal)和串行信號(hào)(serial signal)進(jìn)行互相交換的“UART(Universal Asynchronous Receiver Transmitter,通用異步收發(fā)器)”等,以便進(jìn)行通信。
本連載中,將以瑞薩電子單片機(jī)--RX63N為例,介紹令單片機(jī)更便于使用的外設(shè)功能的基礎(chǔ)知識(shí)。我們將使用搭載了“RX63N”程序的電子板“GR-SAKURA”進(jìn)行說(shuō)明,請(qǐng)你也實(shí)際操作試試看吧!
了解數(shù)字信號(hào)的輸入/輸出端口---“GPIO”
在“輸入/輸出端口(I/O端口)”中,數(shù)字信號(hào)的輸入/輸出端口即“GPIO(General Purpose Input/Output)”也被稱(chēng)為“通用I/O端口”,是一種用于數(shù)字信號(hào)輸入/輸出的非常方便的端口。用于將數(shù)字輸出的傳感器值和開(kāi)關(guān)的ON/OFF值傳送到單片機(jī)的輸入端及通過(guò)LED來(lái)顯示單片機(jī)的運(yùn)算結(jié)果,以及輸出用于驅(qū)動(dòng)電機(jī)運(yùn)行的信號(hào)等等。
GPIO被稱(chēng)為通用端口是其引腳既可以用于輸入也可以用于輸出。在早期的單片機(jī)中,引腳都被固定用于輸入或輸出,但是現(xiàn)在很多單片機(jī)中都可以自由地將其設(shè)定為輸入或輸出端口。假設(shè)GPIO端子有8個(gè)引腳,則可以將4個(gè)引腳用于輸入,另4個(gè)引腳用于輸出,也可以將1個(gè)引腳用于輸入,剩下的7個(gè)引腳用于輸出。
在GPIO中,為了使CPU和外部設(shè)備之間進(jìn)行數(shù)據(jù)交換,要相互執(zhí)行通過(guò)程序處理的數(shù)字值(0或1)與信號(hào)(電壓的LOW電平或HIGH電平)的轉(zhuǎn)換。下面是作為RX63N單片機(jī)的GPIO端口基礎(chǔ)的寄存器(※1)的作用(圖2)。
(※1)寄存器(Register):存在于單片機(jī)的CPU和外設(shè)功能內(nèi)部中的記憶回路。用于運(yùn)算和保持CPU的執(zhí)行狀態(tài)。由于是作為CPU及外設(shè)功能的內(nèi)部回路,所以在對(duì)內(nèi)存進(jìn)行寫(xiě)入和讀取時(shí)速度很快,但容量卻非常小,既有可以用于各種用途的寄存器(通用寄存器),又有用于某些限定的功能和用途的特殊寄存器。
圖2:GPIO的基本結(jié)構(gòu)示意圖
● 端口方向寄存器(PDR)
決定引腳方向的寄存器,也稱(chēng)為“方向寄存器”。
● 端口輸入數(shù)據(jù)寄存器(PIDR)
輸入時(shí)反映所使用的引腳狀態(tài)的寄存器。從引腳輸入LOW電平或者HIGH電平時(shí)會(huì)將之轉(zhuǎn)換為0或1的值并讀取該轉(zhuǎn)換結(jié)果。隨著引腳的變化數(shù)值也將發(fā)生變化。所以不會(huì)保持讀取時(shí)的值。
● 端口輸出數(shù)據(jù)寄存器(PODR)
此寄存器保存用作輸出引腳的輸出數(shù)據(jù)。將0或1的值轉(zhuǎn)換為L(zhǎng)OW電平或HIGH電平信號(hào)并從引腳輸出。由于可以與內(nèi)存一樣保持改寫(xiě)前的值,所以在改寫(xiě)前來(lái)自引腳的輸出電壓也將保持不變。
通過(guò)GR-SAKURA來(lái)體驗(yàn)活用了GPIO的程序!
本期我們將通過(guò)“按下開(kāi)關(guān)時(shí)LED會(huì)發(fā)光”這個(gè)程序來(lái)學(xué)習(xí)GPIO的運(yùn)行。我們將利用GR-SAKURA專(zhuān)用的程序庫(kù)進(jìn)行編程。(櫻花程序庫(kù)的“數(shù)字I/O”)(僅英文版)
在櫻花程序庫(kù)(SAKURA Library)的“數(shù)字I/O”中,電路板上的I/O專(zhuān)用引腳究竟是用作輸入還是用作輸出最初由pinMode(引腳號(hào)、模式)函數(shù)來(lái)指定。一旦指定后,只要引腳的用法沒(méi)發(fā)生變化就無(wú)需執(zhí)行pinMode函數(shù)。
用作輸入時(shí),通過(guò)digitalRead函數(shù)來(lái)指定引腳號(hào),結(jié)果將被作為HIGH電平或LOW電平信號(hào)被返送回。用作輸出時(shí)通過(guò)digitalWrite函數(shù)來(lái)指定引腳號(hào)。值還是HIGH電平或LOW電平,HIGH電平相當(dāng)于1,LOW電平相當(dāng)于0,所以也可將之記述為0或1。
由于這次使用的是GR-SAKURA電路板上的開(kāi)關(guān)和LED,所以即使不知道與其相連的引腳號(hào)和端口號(hào),如為開(kāi)關(guān),只需在程序中寫(xiě)入“PIN_SW”,如為L(zhǎng)ED,只需在程序中寫(xiě)入“PIN_LED0”?“PIN_LED3”,櫻花程序庫(kù)(SAKURA Library)就會(huì)進(jìn)行處理。
(僅英文版)
(僅英文版)
圖3所示的是使用GPIO時(shí),通過(guò)LED的閃爍來(lái)反映開(kāi)關(guān)的值的程序例。首先通過(guò)pinMode函數(shù)來(lái)指定與開(kāi)關(guān)相連的引腳作為輸入引腳,將與LED連接的引腳作為輸出引腳(1)。只需在開(kāi)始時(shí)定義一次就夠了,之后將在setup函數(shù)中進(jìn)行處理。
接下來(lái),“只要按下開(kāi)關(guān)LED就點(diǎn)亮,不按開(kāi)關(guān)LED就熄滅”的部分在loop函數(shù)中進(jìn)行處理。開(kāi)關(guān)是否被按下要根據(jù)digitalRead(PIN_SW)返回的值來(lái)判斷。所以GR-SAKURA的開(kāi)關(guān)在什么都不做(松開(kāi))的狀態(tài)下為HIGH電平(通過(guò)上拉電阻連接電源),被按下時(shí)為L(zhǎng)OW電平(連接GND)。
如果digitalRead(PIN_SW)返回的值為L(zhǎng)OW電平時(shí)=開(kāi)關(guān)被按下(2)、LED將被點(diǎn)亮。D1的LED為digitalWrite(PIN_LED0, HIGH)時(shí)將被點(diǎn)亮(3)。
如果判斷為開(kāi)關(guān)沒(méi)被按下時(shí),當(dāng)是digitalWrite(PIN_LED0, LOW)時(shí)(4),GPIO的輸出為L(zhǎng)OW電平,LED熄滅。
請(qǐng)?jiān)囍褂肎R-SAKURA的Web編譯器來(lái)執(zhí)行圖4所示的程序。
圖3:程序例
圖4:振蕩體驗(yàn)程序
程序的提示 通過(guò)"振蕩"來(lái)防止誤操作
開(kāi)關(guān)是用來(lái)接通(開(kāi)關(guān)有時(shí)顯示為"關(guān)")和切斷(開(kāi)關(guān)有時(shí)顯示為"開(kāi)")電路的,即開(kāi)和關(guān)。在開(kāi)關(guān)等裝置機(jī)械地進(jìn)行開(kāi)和關(guān)的操作時(shí),任何一種狀態(tài)都不可能在一瞬間完成。裝置會(huì)發(fā)生非??焖俚恼駝?dòng),并非常精細(xì)地在開(kāi)和關(guān)之間反復(fù)動(dòng)作后才會(huì)轉(zhuǎn)變?yōu)樾碌臓顟B(tài)。這種現(xiàn)象被稱(chēng)為"振蕩"。為了讓大家更容易理解"振蕩"的現(xiàn)象,我們制作了一個(gè)簡(jiǎn)單易懂的體驗(yàn)程序(圖4)。請(qǐng)大家也試著體驗(yàn)一下吧。
試著通過(guò)控制開(kāi)關(guān)反復(fù)點(diǎn)亮、熄滅LED來(lái)執(zhí)行所期望的動(dòng)作,怎么樣?是不是有時(shí)如你所愿,有時(shí)又適得其反?產(chǎn)生這種現(xiàn)象的原因就是因?yàn)檎袷?。如果將振?dòng)過(guò)程中的狀態(tài)作為開(kāi)關(guān)的信號(hào)讀取出來(lái),將得不到正確的結(jié)果。因此,需用防振蕩程序來(lái)解決。
在圖3的程序中,檢測(cè)到開(kāi)關(guān)最初被按下后先停止50微妙(0.05秒)后再進(jìn)行處理(圖3中的⑤)。如果不停止,在檢測(cè)到開(kāi)關(guān)被按下時(shí)雖然LED也會(huì)亮燈,但接下來(lái)確認(rèn)開(kāi)關(guān)的狀態(tài)時(shí),由于振蕩的原因,有可能會(huì)認(rèn)為是"開(kāi)關(guān)處于松開(kāi)的狀態(tài)"(因?yàn)檩斎霑簳r(shí)還沒(méi)返回到HIGH)而導(dǎo)致LED熄滅。因此,如上所述,我們通過(guò)在開(kāi)關(guān)的狀態(tài)穩(wěn)定之前停止處理(50微妙)的方式來(lái)解決這個(gè)問(wèn)題。
本期我們一起學(xué)習(xí)了GPIO的結(jié)構(gòu)和使用方法。如果將程序中的PIN_LED0的部分換成別的LED號(hào)(僅在選0?3時(shí)有效),將可以變換閃爍的LED。另外,如果改寫(xiě)判斷部分的程序,也可以進(jìn)行諸如"按兩次則LED亮燈,接下來(lái)再按1次時(shí)熄滅"等復(fù)雜的處理。這次的體驗(yàn)程序只使用了GR-SAKURA上的輸入/輸出設(shè)備,但也可將帶有數(shù)字輸出功能的外部傳感器連接到GR-SAKURA的I/O端子上,也可以連接LED以外的設(shè)備(如電子蜂鳴器)。?
(mbbeetchina)
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 單片機(jī)內(nèi)存及運(yùn)行原理
- 單片機(jī)基礎(chǔ)及應(yīng)用:單片機(jī)并行存儲(chǔ)器擴(kuò)展資料下載
- 簡(jiǎn)析獲取單片機(jī)代碼運(yùn)行時(shí)間的方法資料下載
- 8位、16位、32位單片機(jī)各有啥區(qū)別?主要是CPU?資料下載
- 小白學(xué)單片機(jī)(15) 單片機(jī)程序下載失敗總結(jié)資料下載
- 什么是單片機(jī)?51單片機(jī)學(xué)前預(yù)備知識(shí)資料下載
- 單片機(jī)基礎(chǔ)及應(yīng)用|80C51單片機(jī)的結(jié)構(gòu)及信號(hào)引腳資料下載
- 解析單片機(jī)與CPU的區(qū)別資料下載
- 單片機(jī)程序到底是如何運(yùn)行的?資料下載
- 51單片機(jī)一般如何進(jìn)行內(nèi)存優(yōu)化?實(shí)例+要點(diǎn)資料下載
- 單片機(jī)CPU與外部設(shè)備交換信息的幾種方式資料下載
- 單片機(jī)=CPU、內(nèi)存、外圍功能...如何理解資料下載
- STM32單片機(jī)與linux系統(tǒng)單片機(jī)串行通信資料下載
- 51單片機(jī)如何使用動(dòng)態(tài)內(nèi)存
- 單片機(jī)如果無(wú)法燒錄程序應(yīng)該如何解決
- 你知道嗎? 51單片機(jī)也有動(dòng)態(tài)內(nèi)存分配 1612次閱讀
- 單片機(jī)的內(nèi)存映射圖解析 1274次閱讀
- 單片機(jī)的內(nèi)存映射圖解析 1799次閱讀
- ECC內(nèi)存為什么比普通內(nèi)存更穩(wěn)定? 995次閱讀
- 單片機(jī)里的程序是如何運(yùn)行? 4548次閱讀
- 單片機(jī)的中斷程序如何運(yùn)行 1.1w次閱讀
- 什么是單片機(jī)_單片機(jī)的概念 3.6w次閱讀
- 單片機(jī)開(kāi)發(fā)時(shí)為什么需要仿真機(jī) 3717次閱讀
- 單片機(jī)應(yīng)用系統(tǒng)的結(jié)構(gòu)及工作原理 9346次閱讀
- 單片機(jī)程序設(shè)計(jì)時(shí)如何進(jìn)行優(yōu)化詳細(xì)資料概述 4836次閱讀
- 解讀單片機(jī)和CPU的區(qū)別及意義 3w次閱讀
- 單片機(jī)的簡(jiǎn)介51單片機(jī)和STM32單片機(jī)的區(qū)別及DSP、AVR 和單片機(jī)的對(duì)比 1.6w次閱讀
- 詳談單片機(jī)的由來(lái)(組成,歷史,種類(lèi),作用) 5904次閱讀
- stm32單片機(jī)休眠模式后無(wú)法下載程序怎么辦 9601次閱讀
- 單片機(jī)必須了解的外設(shè)功能——GPIO/串行通信 1.8w次閱讀
下載排行
本周
- 1TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開(kāi)關(guān)電源基礎(chǔ)知識(shí)
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計(jì)
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 6基于FPGA的C8051F單片機(jī)開(kāi)發(fā)板設(shè)計(jì)
- 0.70 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21548次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183278次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論