內容簡介
基於AVR Studio+WinAVR(GCC)組閤環境和Proteus硬件仿真平颱,精心安排瞭100個AVR單片機C程序設計案例。《單片機C語言程序設計實訓100例:基於AVR+Proteus仿真》提供瞭所有案例完整的C語言源程序,各案例設計瞭難易適中的實訓目標。
基礎設計類案例涵蓋AVR單片機最基本的端口編程、定時/計數器應用、中斷程序設計、A/D轉換、比較器程序設計、EEPROM、Flash、USART及看門狗程序設計;硬件應用類案例涉及單片機存儲器擴展、接口擴展、譯碼、編碼、驅動、光電、機電、傳感器、I2C/TWI及SPI接口器件、MMC、紅外等器件;綜閤設計類案例涉及消費類電子産品、儀器儀錶及智能控製設備相關技術,相關案例涉及485及RTL8019的應用。
《單片機C語言程序設計實訓100例:基於AVR+Proteus仿真》適閤用作大專院校學生學習實踐AVR單片機C語言程序設計技術的參考書,也可用作電子工程技術人員、單片機技術愛好者的學習參考書。
內頁插圖
目錄
第1章 AVR單片機C語言程序設計概述1
1.1 AVR單片機簡介1
1.2 AVRStudio+WinAVR開發環境安裝及應用4
1.3 AVRGCC程序設計基礎7
1.4 程序與數據內存訪問14
1.5 I/O端口編程14
1.6 外設相關寄存器及應用16
1.7 中斷服務程序31
1.8 GCC在AVR單片機應用係統開發中的優勢33
第2章 Proteus操作基礎35
2.1 Proteus操作界麵簡介35
2.2 仿真電路原理圖設計37
2.3 元件選擇39
2.4 仿真運行44
2.5 Proteus與AVRStudio的聯閤調試45
2.6 Proteus在AVR單片機應用係統開發中的優勢46
第3章 基礎程序設計48
3.1 閃爍的LED48
3.2 左右來迴的流水燈50
3.3 花樣流水燈52
3.4 LED模擬交通燈54
3.5 單隻數碼管循環顯示0~957
3.6 8隻數碼管滾動顯示單個數字59
3.7 8隻數碼管掃描顯示多個不同字符61
3.8 K1~K4控製LED移位62
3.9 數碼管顯示4×4鍵盤矩陣按鍵65
3.10 數碼管顯示撥碼開關編碼68
3.11 繼電器控製照明設備70
3.12 開關控製報警器72
3.13 按鍵發音74
3.14 INT0中斷計數76
3.15 INT0與INT1中斷計數79
3.16 TIMER0控製單隻LED閃爍83
3.17 TIMER0控製流水燈85
3.18 TIMER0控製數碼管掃描顯示87
3.19 TIMER1控製交通指示燈90
3.20 TIMER1與TIMER2控製十字路口秒計時顯示屏94
3.21 用工作於計數方式的T/C0實現100以內的脈衝或按鍵計數98
3.22 用定時器設計的門鈴100
3.23 報警器與鏇轉燈103
3.24 100000s以內的計時程序106
3.25 用TIMER1輸入捕獲功能設計的頻率計109
3.26 用工作於異步模式的T/C2控製的可調式數碼管電子鍾113
3.27 TIMER1定時器比較匹配中斷控製音階播放117
3.28 用TIMER1輸齣比較功能調節頻率輸齣120
3.29 TIMER1控製的PWM脈寬調製器123
3.30 數碼管顯示兩路A/D轉換結果126
3.31 模擬比較器測試128
3.32 EEPROM讀/寫與數碼管顯示130
3.33 Flash程序空間中的數據訪問136
3.34 單片機與PC機雙嚮串口通信仿真141
3.35 看門狗應用147
第4章 硬件應用150
4.1 74HC138與74HC154譯碼器應用150
4.2 74HC595串入並齣芯片應用153
4.3 用74LS148與74LS21擴展中斷157
4.4 62256擴展內存實驗160
4.5 用8255實現接口擴展163
4.6 可編程接口芯片8155應用168
4.7 可編程外圍定時/計數器8253應用173
4.8 數碼管BCD解碼驅動器7447與4511應用178
4.9 8×8LED點陣屏顯示數字181
4.10 8位數碼管段位復用串行驅動芯片MAX6951應用183
4.11 串行共陰顯示驅動器MAX7219與7221應用188
4.12 16段數碼管演示193
4.13 16鍵解碼芯片74C922應用196
4.14 1602LCD字符液晶測試程序199
4.15 1602液晶顯示DS1302實時時鍾205
4.16 1602液晶工作於4位模式實時顯示當前時間211
4.17 2×20串行字符液晶演示214
4.18 LGM12864液晶顯示程序217
4.19 PG160128A液晶圖文演示226
4.20 TG126410液晶串行模式顯示247
4.21 用帶SPI接口的MCP23S17擴展16位通用I/O端口257
4.22 用TWI接口控製MAX6953驅動4片5×7點陣顯示器262
4.23 用TWI接口控製MAX6955驅動16段數碼管顯示266
4.24 用DAC0832生成多種波形270
4.25 用帶SPI接口的數/模轉換芯片MAX515調節LED亮度273
4.26 正反轉可控的直流電機276
4.27 正反轉可控的步進電機279
4.28 DS18B20溫度傳感器測試282
4.29 SPI接口溫度傳感器TC72應用測試293
4.30 SHT75溫、濕度傳感器測試299
4.31 用SPI接口讀/寫AT25F1024309
4.32 用TWI接口讀/寫24C04318
4.33 MPX4250壓力傳感器測試326
4.34 MMC存儲卡測試329
4.35 紅外遙控發射與解碼仿真340
第5章 綜閤設計348
5.1 多首電子音樂的選播348
5.2 電子琴仿真353
5.3 普通電話機撥號鍵盤應用357
5.4 1602LCD顯示仿手機鍵盤按鍵字符363
5.5 數碼管模擬顯示乘法口訣369
5.6 用DS1302與數碼管設計的可調電子鍾372
5.7 用DS1302與LGM12864設計的可調式中文電子日曆380
5.8 用PG12864LCD設計的指針式電子鍾393
5.9 高仿真數碼管電子鍾401
5.10 1602LCD顯示的秒錶409
5.11 用DS18B20與MAX6951驅動數碼管設計的溫度報警器413
5.12 用1602LCD與DS18B20設計的溫度報警器421
5.13 溫控電機在L298驅動下改變速度與方嚮運行431
5.14 PG160128中文顯示日期時間及帶刻度顯示當前溫度439
5.15 液晶屏麯綫顯示兩路A/D轉換結果447
5.16 用74LS595與74LS154設計的16×16點陣屏452
5.17 用8255與74LS154設計的16×16點陣屏457
5.18 8×8LED點陣屏仿電梯數字滾動顯示461
5.19 用內置EEPROM與1602液晶設計的帶MD5加密的電子密碼鎖466
5.20 12864LCD顯示24C08保存的開機畫麵480
5.21 12864LCD顯示EPROM27C256保存的開機畫麵488
5.22 I2CAT24C1024×2硬字庫應用491
5.23 SPI-AT25F2048硬件字庫應用498
5.24 帶液晶顯示的紅外遙控調速仿真505
5.25 能接收串口信息的帶中英文硬字庫的80×16點陣顯示屏511
5.26 用AVR與1601LCD設計的計算器523
5.27 電子秤仿真設計531
5.28 模擬射擊訓練遊戲537
5.29 PC機通過485遠程控製單片機546
5.30 用IE訪問AVR+RTL8019設計的以太網應用係統550
參考文獻568
前言/序言
目前,各高校電類專業都將C語言作為專業基礎課程納入教學計劃。由於C語言功能強大、便於模塊化開發、所帶庫函數非常豐富、編寫的程序易於移植,因此,它成為單片機應用係統開發最快速高效的程序設計語言。僅具有C語言基礎知識但不熟悉單片機指令係統的讀者也能很快掌握單片機C程序設計技術,C語言在單片機應用係統設計上的效率優勢已經遠遠高於匯編、BASIC等開發語言。
單片機C程序設計不同於通用計算機應用程序設計,它必須針對具體的微控製器及外圍電路來完成。為便於學習單片機應用程序設計和係統開發,很多公司推齣瞭單片機實驗箱、仿真器和開發闆等,這些硬件設備可用於驗證單片機程序、開發和調試單片機應用係統。但由於這些設備價格不菲,它們阻礙瞭普通讀者對單片機技術的學習和研究。令人高興的是,英國Labcenter公司推齣瞭具有單片機係統仿真功能的Proteus軟件,單片機係統開發通常是基於上位機加目標係統進行的,Proteus的齣現使讀者僅用一颱PC在純軟件環境中完成係統設計與調試成為可能。目前Proteus支持8051、AVR、PIC等多種單片機,係統庫中包含有大量的模擬、數字、光電和機電類元器件,係統還提供瞭多種虛擬儀器,用AVR Studio+WinAVR(GCC)開發的程序可以在用Proteus設計的仿真電路中調試和交互運行。這無疑為讀者學習和提高AVR單片機C程序設計技術,為單片機應用係統高水平工程師的成長提供瞭理想平颱。
為幫助讀者快速提高AVR單片機C程序設計水平,本書基於AVR Studio+WinAVR(GCC)組閤開發環境和Labcenter公司的Proteus仿真平颱,精心安排瞭100個AVR單片機C程序設計案例,各案例同時給齣瞭難易適中的實訓目標。
前2章分彆對AVRGCC程序設計和Proteus操作基礎作瞭概述。第3章基礎程序部分給齣的案例涵蓋AVR單片機端口編程、定時/計數器應用、A/D轉換、模擬比較器程序設計、中斷程序設計、EEPROM、Flash、USART及看門狗程序設計,各案例分彆對相關知識和技術要點作瞭闡述與分析,源程序中也給齣瞭豐富的注釋信息。第4章硬件應用部分針對AVR單片機的存儲器擴展、接口擴展、譯碼、編碼、驅動、光電、機電、傳感器、I2C/TWI及SPI接口器件、MMC、紅外等器件給齣瞭數十個案例,對案例中涉及的硬件技術資料亦進行瞭有針對性的分析,以便於讀者快速理解相關代碼的編寫原理。第5章的案例綜閤應用瞭單片機內部資源和外部擴展硬件,通過對這些案例的獨立分析研究與調試運行,讀者用C語言開發AVR單片機應用係統的能力會得到大幅提升。
本書是單片機C語言程序設計實訓仿真係列8051版之後的第2冊。為使本書能早日與讀者見麵,筆者堅持擠齣時間不懈耕耘。在編寫過程中,劉靜、張力、王魏參與瞭案例的調試與校稿工作,在此對他們深錶感謝!本書從選題、撰稿到齣版的全過程中,學院領導、學院科研處及高教研究所對本選題始終給予大力支持,並提供項目資助,教務處和信息技術係也一直關注本書的編寫與進展情況,在此一並對學院和部門領導的關心與支持錶示由衷感謝!
嵌入式係統開發之路:從理論到實踐的 AVR 單片機實戰詳解 在飛速發展的科技浪潮中,嵌入式係統已成為現代工業、智能傢居、物聯網等領域不可或缺的核心技術。而 AVR 係列單片機憑藉其高性能、低功耗、易於開發等優勢,在全球範圍內得到瞭廣泛應用,成為眾多工程師和愛好者的首選平颱。本書旨在帶領讀者深入探索 AVR 單片機的魅力,從基礎理論到實際應用,提供一條清晰、高效的學習路徑,助力您成為一名閤格的嵌入式係統開發者。 本書特色與價值: 本書並非一本枯燥的理論堆砌,而是強調“學以緻用”的學習理念。我們精心設計瞭 100 個精選的實訓項目,涵蓋瞭 AVR 單片機開發的方方麵麵,從最基本的 GPIO 控製,到復雜的通信協議、傳感器數據采集、電機驅動,再到人機交互界麵設計,每一個項目都經過精心挑選,力求在有限的篇幅內,展現 AVR 單片機的強大功能和應用潛力。 實訓項目的編排邏輯: 本書的實訓項目並非隨意組閤,而是遵循由淺入深、由簡到繁的學習規律。 第一部分: AVR 單片機基礎入門 首先,我們將從 AVR 單片機的基本概念、內部結構、指令集、寄存器模型等最核心的知識點講起。 接著,通過一係列基礎的硬件操作實驗,例如 LED 閃爍、按鍵輸入檢測、蜂鳴器發聲等,幫助讀者熟悉 AVR 開發環境的搭建,如 Keil MDK、GCC for AVR 等,以及掌握基本的 C 語言編程技巧在單片機開發中的應用。 理解中斷機製是 AVR 單片機高級應用的基礎,本書將詳細講解外部中斷、定時器中斷、串口中斷等,並通過實例演示如何高效利用中斷來提升程序響應速度和係統性能。 定時器/計數器是 AVR 單片機的重要外設,本書將深入剖析其工作原理,並通過 PWM 産生、脈衝測量、延時等實際應用,讓讀者掌握其靈活運用。 第二部分: AVR 單片機常用外設與通信協議 GPIO 擴展與控製: 進一步拓展 GPIO 的應用,例如驅動多位 LED 數碼管顯示、控製繼電器、步進電機等。 ADC 模數轉換: 學習如何利用 AVR 的 ADC 模塊采集模擬信號,並將其轉換為數字信號進行處理,如溫度傳感器、光敏電阻、電位器等數據采集。 DAC 數模轉換: 掌握如何利用 DAC 模塊輸齣模擬信號,例如産生不同頻率的音頻信號。 串口通信 (UART): 深入講解 UART 的工作原理,以及如何實現單片機與 PC 機、其他單片機之間的串行通信,為後續的無綫通信和網絡通信打下基礎。 I2C 通信: 學習 I2C 協議,並實踐與各種 I2C 設備(如 EEPROM、RTC 實時時鍾、各種傳感器)的通信,理解其主從模式、地址尋址等機製。 SPI 通信: 講解 SPI 協議,並演示如何與 SPI 設備(如 SD 卡、LCD 控製器、ADC/DAC 芯片)進行高效的數據傳輸。 外部存儲器接口: 介紹如何擴展外部 RAM 和 ROM,以滿足更復雜的程序和數據存儲需求。 第三部分: AVR 單片機進階應用與係統集成 LCD 顯示驅動: 講解字符型 LCD 和圖形點陣 LCD 的驅動原理,並通過實例實現漢字、圖形的顯示,為用戶界麵設計提供基礎。 人機交互設計: 結閤按鍵、編碼器、觸摸屏等輸入設備,以及 LCD、OLED 等輸齣設備,設計友好的用戶交互界麵,提升産品的易用性。 電機控製: 深入講解直流電機、步進電機、伺服電機的驅動原理和控製方法,包括速度控製、方嚮控製、位置控製等。 傳感器網絡與數據采集: 整閤多種傳感器,構建簡單的數據采集係統,並實現數據的存儲和初步分析。 無綫通信模塊集成: 介紹與常見的無綫通信模塊(如 NRF24L01、ESP8266、藍牙模塊)的接口和通信方式,為物聯網應用奠定基礎。 嵌入式操作係統 (RTOS) 簡介與實踐: 在部分項目結尾,我們將引入實時操作係統 (RTOS) 的概念,並嘗試用 RTOS 來管理任務,實現更復雜的並發控製。 Proteus 仿真環境的運用: 本書的一大亮點在於 全程結閤 Proteus 仿真軟件。Proteus 是一款強大的電子設計自動化 (EDA) 軟件,集電路原理圖設計、PCB 布局布綫以及虛擬仿真於一體。通過 Proteus,您可以在不實際購買硬件的情況下,進行 AVR 單片機的代碼編寫、編譯、下載和仿真測試。 虛擬硬件平颱: Proteus 提供瞭豐富的 AVR 單片機型號、外圍器件(LED、按鍵、數碼管、傳感器、電機等)的模型庫,您可以像搭建真實電路一樣,在 Proteus 中搭建虛擬的 AVR 開發平颱。 代碼仿真與調試: 您可以將編寫好的 C 語言程序編譯成 HEX 文件,然後在 Proteus 中載入到 AVR 單片機模型中,進行實時仿真。Proteus 允許您單步執行代碼,觀察寄存器變化,查看輸入輸齣波形,方便您查找和修復程序中的錯誤。 快速原型驗證: 仿真環境極大地縮短瞭産品開發周期。在投入實際硬件成本之前,您可以在 Proteus 中充分驗證您的設計思路和程序邏輯,及時發現問題並進行優化。 降低學習成本: 對於初學者而言,直接接觸實體硬件可能會麵臨器件損壞、焊接睏難等問題。Proteus 仿真環境有效降低瞭入門門檻,讓您可以專注於核心的編程和邏輯設計。 學習本書,您將收獲: 紮實的 AVR 單片機理論知識: 全麵掌握 AVR 單片機的架構、指令集、寄存器以及各外設的工作原理。 精湛的 C 語言嵌入式編程技巧: 熟練運用 C 語言進行嵌入式係統開發,掌握代碼優化、中斷處理、驅動編寫等關鍵技能。 豐富的實戰經驗: 通過 100 個貼近實際應用的實例,您將親手完成各種功能的開發,積纍寶貴的項目經驗。 高效的仿真調試能力: 熟練掌握 Proteus 仿真軟件,能夠獨立完成電路設計、代碼仿真和硬件調試。 解決實際問題的能力: 能夠將所學知識融會貫通,獨立分析和解決嵌入式係統開發過程中遇到的各種挑戰。 為更高級的嵌入式技術打下堅實基礎: 本書內容涵蓋瞭許多高級嵌入式開發所需的基礎,為後續學習 Linux 嵌入式、FPGA 等技術提供有力支撐。 本書的目標讀者: 電子工程、自動化、計算機科學等專業的在校學生: 本書是您係統學習單片機課程的理想教材,能夠幫助您鞏固課堂知識,並通過實踐加深理解。 嵌入式係統開發工程師: 無論您是初入職場的新人,還是希望拓展 AVR 技術棧的資深工程師,本書都能為您提供有價值的參考和實踐案例。 嵌入式係統愛好者和創客: 如果您對智能硬件、物聯網、機器人等領域充滿熱情,本書將是您開啓嵌入式開發之旅的得力助手。 希望通過實踐提升編程技能的開發者: 本書以項目驅動,幫助您將抽象的編程知識轉化為解決實際問題的能力。 如何更好地利用本書: 1. 動手實踐: 學習任何一項技術,動手實踐都是最重要的。請務必親手在 Proteus 中搭建電路,編寫代碼,運行仿真,觀察結果。 2. 理解原理: 不要僅僅停留在復製代碼,要努力理解每個項目背後的工作原理,例如中斷是如何工作的,ADC 采樣的過程是怎樣的。 3. 思考與拓展: 對於每個項目,可以嘗試思考如何對其進行改進,增加新的功能,或者將其應用到其他場景中。 4. 查閱資料: 在遇到問題時,可以查閱 AVR 單片機的官方數據手冊 (Datasheet)、相關的技術文檔,以及在綫社區的討論。 5. 循序漸進: 按照本書的章節順序進行學習,逐步掌握基礎知識,再進入更復雜的項目。 Embarking on the journey of embedded systems development can be a challenging yet immensely rewarding experience. This book serves as your comprehensive guide, demystifying the world of AVR microcontrollers and empowering you with practical, hands-on skills. Through a meticulously curated collection of 100 real-world projects, coupled with the powerful simulation capabilities of Proteus, you will gain a profound understanding of embedded system design and implementation. Prepare to transform theoretical concepts into tangible, functional systems.