AVR單片機原理與GCC編程實踐

出版時間:2012-9  出版社:杭和平、邵明剛、 楊芳 中國電力出版社 (2012-09出版)  作者:杭和平,邵明剛,楊芳 著  頁數(shù):334  
Tag標(biāo)簽:無  

前言

單片機技術(shù)是一種應(yīng)用性技術(shù),一般電子產(chǎn)品的設(shè)計過程包括:首先考慮如何應(yīng)用單片機的硬件資源、內(nèi)部功能模塊實現(xiàn)產(chǎn)品的需求,或者設(shè)計外圍電路實現(xiàn)需求;其次要仔細(xì)閱讀單片機的技術(shù)手冊、相關(guān)資料,了解如何實現(xiàn)這些需求,具體涉及單片機的哪些模塊和寄存器、是否滿足需求;然后編寫代碼(軟件)完成這些功能,許多代碼語句是對單片機寄存器的讀寫。正確理解單片機的功能模塊和寄存器是編寫軟件的關(guān)鍵之一。AVR單片機內(nèi)部集成了許多實用的功能模塊,適合C語言編程,價格低廉,性價比高,目前在電子產(chǎn)品市場中占有重要地位,廣泛應(yīng)用于各種電子產(chǎn)品中。    無論是從掌握單片機原理,還是從提高學(xué)習(xí)興趣、提高學(xué)習(xí)效率上,將學(xué)習(xí)的內(nèi)容具體到一個綜合的實際對象上都是十分有益的。為此,我們開發(fā)了基于ATmega16單片機的Sunny2.0智能小車,作為學(xué)習(xí)ATmega16單片機的綜合載體。Sunny2.0智能小車集成了多種檢測和控制器件,幾乎涉及ATmega16單片機的所有內(nèi)部資源,是AVR單片機學(xué)習(xí)和開發(fā)的理想對象。AVR單片機中目前常用的有ATmega系列和ATtiny系列。ATtiny內(nèi)部資源和I/O引腳較少,在家用電器等行業(yè)用途廣泛。ATmega系列單片機內(nèi)部集成了常用的功能模塊,內(nèi)部ROM、RAM、EEPROM選擇空間大,價格低廉,是具有很好性價比的8位單片機產(chǎn)品系列。ATmega8和ATmega16是AVR ATmega系列的早期的產(chǎn)品,也是其經(jīng)典產(chǎn)品。但是,ATmega16有更多的I/O引腳,適用于較多輸入/輸出的系統(tǒng)。另一方面,它具有JTAG調(diào)試接口,并有價格低廉的調(diào)試工具,適合開發(fā)需要。    開發(fā)工具的選擇往往是學(xué)習(xí)AVR單片機面臨的第一個問題。本書介紹了AVR Studio 4.18和WinAVR(AVR GCC編譯器)。AVR Studio是ATMEL公司官方的開發(fā)工具,完全免費,支持眾多的調(diào)試下載工具,對AVR新器件的支持也是最及時的。AVR GCC是AVR單片機的C/C++語言編譯器,GCC(GNU Compiler Collection),即開源的GNU 編譯器集合。在開源免費的軟件中,GCC的編譯器優(yōu)化程度可以說是做得最好的,同時它的bug數(shù)量也是最少的。WinAVR是基于Windows平臺的免費GCC編譯器。它可以與AVR Stdio無縫集成。AVR Studio配合WinAVR,集編輯、下載、仿真調(diào)試于一身,功能強大,沒有代碼量的限制,沒有時間的限制,沒有版權(quán)問題,是節(jié)約開發(fā)成本的首要選擇。    2011年,ATMEL公司推出新型全集成開發(fā)平臺AVR Studio 5,采用Microsoft Visual Studio Shell構(gòu)架,集成AVR Software Framework源代碼庫、GNU C/C++編譯器和功能強大的模擬器,支持所有8位和32位AVR單片機。目前AVR Studio 5還在發(fā)展完善中,考慮到普及性以及開發(fā)者使用習(xí)慣等因素,本書只對AVR Studio 5的使用做了簡要說明。    本書基于Sunny2.0智能小車控制系統(tǒng),對ATmega16單片機各個功能部件的原理和應(yīng)用結(jié)合各種實例進行了敘述,所涉及內(nèi)容涵蓋了ATmega16單片機的所有功能。特別針對ATmega16單片機中的定時/計數(shù)器1、時鐘和低功耗設(shè)計等內(nèi)容作了專門的講解。本書第1章由杭和平、楊芳共同編寫,第2章、第5章、第7章由杭和平編寫,第3章、第4章、第8章、第9章由邵明剛編寫,第6章、第10章、第11章、第12章由楊芳編寫。    在編寫過程中,參考了有關(guān)書籍、資料,在此對有關(guān)作者一并表示感謝。    本書配套光盤包含了Sunny2.0智能小車的電路圖、程序代碼、演示視頻,程序代碼均在AVR Studio 4+WinAVR上調(diào)試通過。作者已開通博客,將會定期解答讀者的問題,不斷添加智能小車的擴展電路圖及程序代碼,更好地和讀者交流。限于作者水平,書中難免存在錯誤和疏漏之處,敬請讀者批評指正。編  者

內(nèi)容概要

  《AVR單片機原理與GCC編程實踐——智能小車的系統(tǒng)開發(fā)》以ATmega16單片機為藍(lán)本,AVRstudio4和WinAvR為軟件開發(fā)平臺,針對AVR單片機各個功能部件的原理和應(yīng)用,并結(jié)合sunny2.0智能小車控制系統(tǒng)實例進行全面地講解。全書的主要內(nèi)容有:AVR單片機概述、ATmega16單片機結(jié)構(gòu)、AVR單片機開發(fā)環(huán)境、AvR單片機的Gcc程序設(shè)計、A11megal6單片機系統(tǒng)的時鐘與電源管理、ATmega16單片機中斷系統(tǒng)、AIlmegal6單片機系統(tǒng)定時器及應(yīng)用、AVR單片機的串行接口與應(yīng)用、AVR單片機的ADc接口與應(yīng)用、AVR單片機I/O接口應(yīng)用、AVR單片機應(yīng)用實踐、AVR單片機智能小車應(yīng)用。每章節(jié)附有思考題,以供讀者練習(xí)?! ”緯涮坠獗P中附有所有章節(jié)的源程序,智能小車的電路原理圖,以及相關(guān)視頻等內(nèi)容?!  禔VR單片機原理與GCC編程實踐——智能小車的系統(tǒng)開發(fā)》適合作為普通高等學(xué)校的計算機、電氣信息類專業(yè)的培訓(xùn)用書,也可以作為相關(guān)專業(yè)工程技術(shù)人員的技術(shù)參考書。

書籍目錄

前言 第1章AVR單片機概述1 1.1單片機概述1 1.1.1單片機的結(jié)構(gòu)與組成1 1.1.2單片機的分類和指標(biāo)3 1.1.3AVR單片機4 1.1.4其他常用單片機系列6 1.2單片機的數(shù)制與編碼7 1.2.1進位計數(shù)制8 1.2.2進位計數(shù)制的相互轉(zhuǎn)換9 1.2.3二進制和十六進制數(shù)的運算10 1.2.4數(shù)碼和字符的代碼表示13 1.3ATmega16單片機的簡單應(yīng)用系統(tǒng)17 1.3.1單片機的I/O電平17 1.3.2單片機電路中三極管的應(yīng)用19 1.3.3單片機的一個簡單應(yīng)用系統(tǒng)19 1.4基于AVR單片機的智能小車20 1.4.1概述20 1.4.2機械構(gòu)造20 1.4.3設(shè)計原理21 思考題21 第2章ATmega16單片機結(jié)構(gòu)23 2.1ATmega16單片機內(nèi)核結(jié)構(gòu)23 2.2ATmega16單片機特點24 2.3ATmega16單片機引腳與封裝25 2.3.1ATmega16單片機的封裝25 2.3.2AVR單片機I/O端口的基本結(jié)構(gòu)29 2.3.3ATmega16單片機的I/O端口寄存器30 2.3.4Sunny2.0智能小車I/O端口使用舉例33 2.4ATmega16單片機存儲器結(jié)構(gòu)與編程36 2.4.1ATmega16單片機的程序存儲空間36 2.4.2ATmega16單片機的數(shù)據(jù)存儲空間37 2.4.3ATmega16單片機的EEPROM存儲空間38 2.5ATmega16單片機的熔絲位41 思考題43 第3章AVR單片機開發(fā)環(huán)境45 3.1AVR單片機軟件開發(fā)工具45 3.2WinAVR簡介46 3.3ATmega16JTAG與ISP接口47 3.3.1JTAG接口使用說明48 3.3.2ISP接口使用說明52 3.4AVRStudio4使用簡介54 3.5AVRStudio5使用簡介59 3.5.1創(chuàng)建項目60 3.5.2調(diào)試項目63 3.5.3創(chuàng)建ASF示例項目69 3.6AVRGCC的編譯過程71 思考題73 第4章AVR單片機的GCC程序設(shè)計74 4.1AVRGCC基本語法介紹74 4.1.1AVRGCC程序設(shè)計語言概述74 4.1.2AVRC程序的基本結(jié)構(gòu)75 4.1.3標(biāo)識符和關(guān)鍵字76 4.1.4變量與數(shù)據(jù)類型78 4.1.5運算符和表達式85 4.1.6程序結(jié)構(gòu)91 4.1.7數(shù)組、指針和結(jié)構(gòu)體96 4.1.8函數(shù)100 4.1.9中斷服務(wù)程序102 4.1.10預(yù)處理104 4.1.11在C代碼中嵌入?yún)R編語言108 4.2AVRLibc庫函數(shù)介紹109 4.2.1AVRLibc中對位操作的支持109 4.2.2AVRLibc對Flash訪問的支持111 4.2.3AVRLibc對EEPROM訪問的支持112 4.2.4AVRLibc對看門狗的支持114 4.2.5AVRLibc的數(shù)學(xué)庫115 4.3AVRGCC段定義和使用117 4.4嵌入式C語言程序設(shè)計的注意事項119 4.4.1數(shù)據(jù)運算的溢出問題119 4.4.2數(shù)據(jù)類型轉(zhuǎn)換問題120 思考題121 第5章ATmega16單片機系統(tǒng)的時鐘與電源管理123 5.1ATmega16單片機的時鐘123 5.1.1ATmega16單片機的時鐘結(jié)構(gòu)123 5.1.2ATmega16單片機的時鐘源125 5.2ATmega16單片機的復(fù)位130 5.2.1ATmega16單片機復(fù)位概述130 5.2.2ATmega16單片機的復(fù)位源與相關(guān)寄存器131 5.3ATmega16單片機的低功耗設(shè)計——時鐘與電源管理135 思考題140 第6章ATmega16單片機的中斷系統(tǒng)141 6.1中斷的基本概念141 6.1.1中斷的作用141 6.1.2中斷系統(tǒng)的響應(yīng)過程142 6.1.3中斷系統(tǒng)的優(yōu)先級143 6.2ATmega16單片機的中斷143 6.2.1ATmega16中斷源和中斷向量143 6.2.2中斷服務(wù)程序的編寫145 6.3ATmega16單片機的外部中斷145 6.4ATmega16外部中斷應(yīng)用148 思考題150 第7章ATmega16單片機系統(tǒng)定時器及應(yīng)用151 7.1ATmega16單片機的定時/計數(shù)器概述151 7.1.1ATmega16定時/計數(shù)器的相關(guān)引腳151 7.1.2定時/計數(shù)器概念及小車應(yīng)用152 7.2ATmega16單片機的定時/計數(shù)器1原理及應(yīng)用153 7.2.1ATmega16單片機定時/計數(shù)器1(T/C1)原理153 7.2.2ATmega16單片機定時/計數(shù)器1的PWM輸出157 7.2.3ATmega16單片機定時/計數(shù)器1相關(guān)寄存器159 7.2.4ATmega16單片機定時/計數(shù)器1的工作模式163 7.2.5ATmega16單片機定時/計數(shù)器1的時序圖167 7.3ATmega16單片機的定時/計數(shù)器1的應(yīng)用168 7.3.1T/C1作為外部事件計數(shù)器的應(yīng)用168 7.3.2T/C1作為普通定時器的應(yīng)用170 7.3.3T/C1作為輸入捕捉的應(yīng)用173 7.3.4T/C1作為PWM輸出的應(yīng)用176 7.3.5T/C1應(yīng)用小結(jié)178 7.4ATmega16單片機的定時/計數(shù)器0和2原理179 7.4.18位定時/計數(shù)器的特性與結(jié)構(gòu)179 7.4.28位定時/計數(shù)器T/C0相關(guān)的寄存器181 7.4.38位定時/計數(shù)器T/C0的工作模式184 7.4.48位定時/計數(shù)器T/C0的應(yīng)用186 7.4.58位定時/計數(shù)器T/C2簡介190 思考題193 第8章AVR單片機串行接口與應(yīng)用195 8.1串行通信基礎(chǔ)知識195 8.1.1并行通信和串行通信195 8.1.2異步通信和同步通信196 8.1.3單片機串行通信傳輸方式197 8.1.4串行數(shù)據(jù)通信的傳輸速率198 8.2ATmega16的USART接口及應(yīng)用198 8.2.1USART接口概述199 8.2.2異步傳輸模式200 8.2.3USART寄存器說明204 8.2.4異步USART應(yīng)用實例209 8.2.5單片機和PC機通信212 8.3ATmega16的SPI接口及應(yīng)用217 8.3.1SPI串行總線介紹217 8.3.2ATmega16的SPI接口概述217 8.3.3SPI寄存器說明219 8.3.4SPI的工作模式221 8.3.5SPI應(yīng)用實例223 8.4ATmega16的TWI接口及應(yīng)用226 8.4.1I2C總線概述226 8.4.2TWI概述及寄存器說明229 8.4.3TWI的使用方法232 8.4.4TWI應(yīng)用實例235 思考題240 第9章AVR單片機ADC接口與應(yīng)用241 9.1ATmega16的ADC概述241 9.2ATmega16與ADC相關(guān)的寄存器243 9.3ADC應(yīng)用要點247 9.4ADC應(yīng)用舉例249 思考題253 第10章ATmega16的I/O接口應(yīng)用255 10.1人機接口255 10.1.1LED接口255 10.1.2LCD接口259 10.1.3按鍵接口267 10.2數(shù)字I/O接口272 10.2.1光電隔離接口272 10.2.2蜂鳴器及其接口273 10.2.3功率輸出(繼電器)接口274 思考題276 第11章AVR單片機應(yīng)用實踐277 11.1位置檢測元件與應(yīng)用277 11.2直流電動機的控制280 11.3光敏電阻的應(yīng)用285 11.4熱敏電阻的應(yīng)用288 思考題293 第12章AVR單片機智能小車應(yīng)用294 12.1單片機系統(tǒng)設(shè)計的步驟294 12.2Sunny2.0智能小車簡介295 12.2.1Sunny2.0智能小車實物圖295 12.2.2功能說明296 12.2.3系統(tǒng)結(jié)構(gòu)框圖297 12.3智能小車硬件設(shè)計297 12.3.1車體介紹297 12.3.2單片機控制板297 12.3.3系統(tǒng)擴展板298 12.3.4Sunny2.0小車ATmega16硬件資源分配298 12.4智能小車控制板功能模塊說明299 12.4.1電源299 12.4.2單片機電路及JTAG接口電路301 12.4.3小車電動機驅(qū)動電路及控制編程302 12.4.4多路模擬開關(guān)接口電路及編程305 12.4.5智能小車測距309 12.4.6智能小車障礙檢測317 12.4.7LED數(shù)碼管顯示318 12.4.8電池電壓檢測318 12.5智能小車擴展板功能模塊說明319 12.6利用超聲波傳感器模塊實現(xiàn)倒車功能例程322 思考題329 附錄智能小車的電路原理圖330 參考文獻334

章節(jié)摘錄

版權(quán)頁:   插圖:   3.AVR Studio 早期的AVR Studio(4.18及以前版本)支持AVR匯編程序的編輯、編譯、連接,以及生成目標(biāo)代碼,并提供了與AVRGCC高級語言的接口,免除繁瑣的makefile編寫工作。免費的AVR Studio配合免費的AVR GCC,功能強大,集編輯、下載、仿真調(diào)試于一身,是節(jié)約開發(fā)成本的首要選擇。早期版本的AVR Stuido和AVR GCC需要分別安裝。 Atmel公司新推出的重量級產(chǎn)品AVR Studio 5.0,直接集成AVR GCC,無需分別安裝。開發(fā)環(huán)境采用了Microsoft Visual Studio Shell構(gòu)架,配合Visual Studio的各種插件,使得開發(fā)單片機程序變得更加快捷。 AVR Studio 5還在發(fā)展完善中,考慮到普及性以及開發(fā)者的使用習(xí)慣等原因,本書采用AVR Studio 4.18 SP3和WinAVR—20100110作為ATmega16單片機的開發(fā)工具。 3.2 WinAVR簡介 1.WinAVR工具包 WinAVR是在Windows平臺上的一組包含AVR C/C++編譯程序的工具包,是一組開放源代碼的程序集,用于Atmel公司AVR單片機的開發(fā),主要包含: (1)GNU程序包Binutils:GNU Binutils非常龐大,WinAVR僅包含與AVR相關(guān)的部分,有AVR匯編器、連接器以及與機器指令相關(guān)的一些工具。 (2)GNU GCC:C和C++編譯器。 (3)AVR Libc:AVR單片機C運行函數(shù)庫。 (4)軟件調(diào)試器、器件編程軟件、文件格式轉(zhuǎn)換工具等多個有用工具。 由于AVR GCC源于UNIX,對于不習(xí)慣UNIX編程人員,AVR GCC早期版本的安裝和使用都會感到十分的不便。但是,隨著版本的不斷升級優(yōu)化,特別是后來將有用的工具集合打包成WinAVR后,為大多數(shù)習(xí)慣Window編程的技術(shù)人員提供了極大的便利。 WinAVR的安裝已經(jīng)十分簡單。運行WinAVR—20100110—install.exe程序,按程序的提示直接安裝即可。早期的安裝是需要用命令行運行的方式,在DOS下逐個安裝、設(shè)置編譯參數(shù)、配置環(huán)境參數(shù)等。 2.Programmers Notepad(文本編輯調(diào)試器) WinAVR的程序集中包含了一個Programmers Notepad(文本編輯器),是一個短小精悍的編輯軟件,界面清晰明快,使用方便。與AVR GCC等工具的掛接也十分方便,可以直接使用安裝后默認(rèn)的編譯、連接設(shè)置。但不能在Programmers Notepad中對軟件進行在線調(diào)試,如果需要在線軟件跟蹤調(diào)試,還是需要AVR Studio。

編輯推薦

《AVR單片機原理與GCC編程實踐:智能小車的系統(tǒng)開發(fā)》介紹了AVRstudio4.18和WinAVR(AVRGCC編譯器)。AVRStudio是ATMEL公司官方的開發(fā)工具,完全免費,支持眾多的調(diào)試下載工具,對AVR新器件的支持也是最及時的。 AVRGCC是AVR單片機的C/C++語言編譯器,GCC(GNU Compiler Collection),即開源的GNU編譯器集合。在開源免費的軟件中,GCC的編譯器優(yōu)化程度可以說是做得最好的,同時它的bug數(shù)量也是最少的。WinAVR是基于windows平臺的免費GCC編譯器。它可以與AVRStdio無縫集成。

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    AVR單片機原理與GCC編程實踐 PDF格式下載


用戶評論 (總計1條)

 
 

  •   內(nèi)容充實,容易理解,編寫合理,值得一看,建議購買?。?!
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7