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