本書從工程實踐角度出發(fā),全面、 系統(tǒng)地講解了 AVR 單片機的基礎(chǔ)知識、 硬件結(jié)構(gòu)、 各典型接口應(yīng)用以及多 個綜合系統(tǒng)應(yīng)用的設(shè)計和分析等。 本書共分為 11章 ,第 1 章介紹了 AVR 單 片 機 的 基 礎(chǔ) 知 識; 第 2 章 ~ 第 8 章 以 ATmega128單 片機為例講解了 AVR 單片機的系統(tǒng)開發(fā) 工 具、 硬 件 結(jié) 構(gòu)、 指 令 系 統(tǒng) 和 各 典 型 接 口 的 應(yīng) 用 等, 其 中 還穿插講解了 C語言編程基礎(chǔ);第 9章講解了 AVR 單片機在電氣控制系統(tǒng)中的應(yīng)用實例; 第 10 章講解 了 各 種 傳 感器的應(yīng)用實例;第 11章 的內(nèi)容講解了 AVR 單片機的綜合應(yīng)用設(shè)計實例。本書內(nèi)容豐富、 深入淺出、 圖文并茂,書中收集了大量的 AVR 單片機設(shè)計實例電路圖及程序案例, 并配以詳 盡的文字講解,適合從事單片機技術(shù)的開發(fā)人員使用,同時可作為相關(guān)專業(yè)在校師生的參考用書。
AVR 單片機是于1997年由 Atmel公司研發(fā)出的, 增強型內(nèi)置 Flash的 RISC (ReducedIn- structionSetCPU)精簡指令集高速8 位單片機。 AVR 單片機具有可靠性高、 功能強、 高速 度、 低功耗等優(yōu)點, 廣泛應(yīng)用于計算機外部設(shè)備、 工業(yè)實時控制、 儀器儀表、 通信設(shè)備、 家用電器等各個領(lǐng)域。 本書以 AVR 單片 機 中 的 高 檔 系 列ATmega128 單 片 機 為 藍(lán) 本, 全 面、 系 統(tǒng) 地 講 解 了 AVR 單片機的基礎(chǔ)知識、 系統(tǒng)開發(fā)工具、 硬件結(jié)構(gòu)、 各典型接口應(yīng)用以及多個綜合系統(tǒng)應(yīng) 用的設(shè)計和分析等知識。 本書以實例為主, 偏重于實用性, 書中每個案例都經(jīng)過了實踐驗 證, 具有很強的工程實踐指導(dǎo)性, 使讀者能舉一反三, 從而掌握 AVR 單片機的開發(fā)與應(yīng)用 技術(shù)。 本書由張校銘主編, 參 加 本 書 編 寫 的 還 有 寇 志 萬、 楊 歡、 趙 春 霞、 王 建 薇、 李 娟、 崔穎、 張 國 發(fā)、 崔 二 立、 王 志 永、 袁 建 國、 李 維 忠、 許 振 興、 裴 廣 龍、 王 彥 倫、 鄭 號、 張珺、 周波、 周俞、 李亞旭、 劉興 杰、 馬 緒 濱、 張 穎 偉、 張 伯 虎 等。 本 書 在 編 寫 過程中還參考了相關(guān)書籍和資料, 在此對以上編寫人員及文獻(xiàn)作者一并表示感謝! 由于作者水 平 有 限, 加 之 時 間 倉 促, 本 書 難 免 有 錯 誤 和 不 足 之 處, 望 廣 大 讀 者 批 評 指正。編者
前言第1章 AVR 單片機的基礎(chǔ)知識 11.1 AVR 單片機特點與種類 11.1.1 AVR 單片機的特點 11.1.2 封裝和引腳功能 31.1.3 AVR 種類與標(biāo)識 61.1.4 AVR 單片機的基本結(jié)構(gòu) 71.2 ATmega16/32/128系列單片機 91.2.1 ATmega16單 片內(nèi)部結(jié)構(gòu) 91.2.2 封裝與引腳功能 111.2.3 ATmega128系 列單片機 131.2.4 AVR 程序下載 181.2.5 ATmega128單 片機熔絲位 19第2章 AVR 單片機的系統(tǒng)開發(fā)工具 232.1 AVR 單片機系統(tǒng)的軟硬件開發(fā)工具 232.1.1 AVR 單片機系統(tǒng)的硬件開發(fā)工具 232.1.2 AVR 單片機系統(tǒng)的軟件開發(fā)平臺 262.1.3 AVR 單片機的開發(fā)板及下載線 302.2 AVR 單片機 C語言編程基礎(chǔ) 332.2.1 C語言的構(gòu)成及特點 342.2.2 運算符和表達(dá)式 362.2.3 C語言的語句及程序結(jié)構(gòu) 382.2.4 數(shù)組 432.2.5 指針變量和指針運算符 442.2.6 函數(shù)與參數(shù)傳遞 452.2.7 編譯預(yù)處理 482.2.8 結(jié)構(gòu)體與鏈表 522.2.9 運算符 542.3 CVAVR 編譯器開發(fā)環(huán)境 552.3.1 開發(fā)環(huán)境簡介 562.3.2 開發(fā)環(huán)境的應(yīng)用 562.3.3 代碼生成器 66ICCAVR 集成開發(fā)環(huán)境 712.4.1 概述 72ICCAVR 的安裝與注冊ICCAVR 的IDE 環(huán)境ICCAVR 的設(shè)置與使用 79ICCAVR 的函數(shù)庫 88AVR 的編程 942.5 AVRStudio集成開發(fā)環(huán)境 101AVRStudio概 述 101AVRStudio的IDE 108設(shè)置 AVRStudio 1162.5.4 查看和修改狀態(tài) 122AVR 匯編器AVR 下載線 126第3章 ATmega128單片機的指令系統(tǒng) 1313.1 AVR 單片機指令系統(tǒng)的特點與指令種類 1313.2 AVR 系列單片機的指令格式 1323.2.1 指令符號 1323.2.2 函數(shù)表達(dá)式 1363.2.3 AVR 指令與標(biāo)志位的關(guān)系 1373.3 AVR 單片機的尋址方式 1373.3.1 程序直接尋址3.3.2 程序間接尋址3.3.3 程序相對尋址 1383.3.4 程序取常量尋址 1393.3.5 單寄存器直接尋址 1403.3.6 雙寄存器直接尋址 1403.3.7 堆棧寄存器間接尋址 1403.3.8 I/O 寄存器直接尋址 1413.3.9 數(shù)據(jù)存儲器直接尋址 1413.3.10 數(shù)據(jù)存儲器間接尋址 141錄3.3.11 程序存儲器數(shù)據(jù)尋址3.3.12 數(shù)據(jù)存儲器間接尋址 1423.3.13 程序存儲器帶后增量的空間取常量尋址 1433.4 數(shù)據(jù)傳輸指令 1443.4.1 數(shù)據(jù)傳輸至寄存器的指令 1453.4.2 數(shù)據(jù)傳輸至 SRAM 中的指令 1523.4.3 寫程序存儲器指令 1563.4.4 堆棧操作指令3.5 算術(shù)和邏輯指令 1573.5.1 加法指令3.5.2 減法指令3.5.3 乘法指令 1613.5.4 邏輯與指令3.5.5 邏輯或指令3.5.6 邏輯異或指令3.5.7 取反碼指令3.5.8 取補碼指令 1693.6 轉(zhuǎn)移和跳轉(zhuǎn)指令 1703.6.1 無條件跳轉(zhuǎn)指令 1713.6.2 調(diào)用和返回指令 1723.6.3 條件跳轉(zhuǎn)指令 1743.7 位指令和位測試指令 1833.7.1 位變量修改指令 1843.7.2 帶進(jìn)位邏輯操作指令 1893.7.3 位變量傳送指令 1913.8 MCU 控制指令3.9 匯編語言的應(yīng)用3.9.1 匯編語言格式 1933.9.2 匯編語言應(yīng)用實例 194第4章 ATmega128單片機I/O 端口的應(yīng)用 2074.1 ATmega128單片機的I/O 端口 2074.1.1 ATmega128單 片機I/O 端口結(jié)構(gòu)與特點 2074.1.2 各端口說明 2114.2 I/O 寄存器的設(shè)置與編程 2214.2.1 I/O 寄存器的操作特點 2214.2.2 I/O 寄存器的 C語言程序 2214.2.3 特殊功能I/O 寄存器 SFIOR 2224.2.4 通用I/O 口的設(shè)置與編程 2224.3 I/O 口控制應(yīng)用實例 2244.3.1 I/O 口控制 LED 發(fā)光二極管應(yīng)用實例 2244.3.2 I/O 口控制 LED 數(shù)碼管應(yīng)用實例 2284.3.3 I/O 口控制 LED 點陣應(yīng)用實例 2324.3.4 I/O 口鍵盤掃描電路應(yīng)用實例 2374.3.5 I/O 口控制 1602液 晶顯示應(yīng)用實例 2414.3.6 I/O 口控制 12864中 文液晶顯示應(yīng)用實例 245第5章 ATmega128單片機定時/計數(shù)器的應(yīng)用 2505.1 定時/計數(shù)器作用與使用注意事項 2505.1.1 定時器的作用 2505.1.2 使用定 時/計 數(shù)器時需要注意的問題 2505.2 預(yù)分頻器 2515.2.1 T/C0的 預(yù)分頻器 2525.2.2 T/C1、T/C2和 T/C3的 預(yù)分頻器 2525.2.3 特殊功能寄存器 2525.3 8位定時/計數(shù)器 T/C0 2535.3.1 8位定 時/計 數(shù)器 T/C0的 結(jié)構(gòu) 2535.3.2 T/C0定 時/計 數(shù)器的相關(guān)寄存器 2565.3.3 T/C0定 時/計 數(shù)器的工作模式 2595.3.4 T/C0定 時/計 數(shù)器的時序圖 2635.4 8位定時/計數(shù)器 T/C2 2645.4.1 T/C2定 時/計 數(shù)器的結(jié)構(gòu) 2645.4.2 定 時/計 數(shù)器 T/C2的 相關(guān)寄存器 2665.4.3 T/C2定 時/計 數(shù)器的工作模式 2675.5 16位定時/計數(shù)器 T/C1和 T/C3 2685.5.1 T/C1和 T/C3定 時/計 數(shù)器的結(jié)構(gòu) 2695.5.2 T/C1和 T/C3定 時/計 數(shù)器的相關(guān)寄存器 2735.5.3 T/C1和 T/C3定 時/計 數(shù)器的工作模式 2815.5.4 T/C1和 T/C3定 時/計 數(shù)器的時序圖 2875.6 定時/計數(shù)器的應(yīng)用 2885.6.1 利用定 時/計 數(shù)器實現(xiàn)秒表的應(yīng)用實例 2885.6.2 利用定 時/計 數(shù)器實現(xiàn) PWM 輸出的應(yīng)用實例 293第6章 ATmega128單片機模數(shù)轉(zhuǎn)換器和模擬比較器的應(yīng)用 2966.1 模數(shù)轉(zhuǎn)換器 2966.1.1 模數(shù)轉(zhuǎn)換器種類與特點 2966.1.2 ATmega128單 片機模數(shù)轉(zhuǎn)換器的結(jié)構(gòu)和特點 2986.1.3 A/D 轉(zhuǎn)換器相關(guān)寄存器 3066.2 模擬比較器 3106.2.1 模擬比較器概述 3106.2.2 模擬比較器相關(guān)寄存器 3106.2.3 多路輸入 3126.3 A/D 轉(zhuǎn)換器應(yīng)用實例 3126.3.1 利用 A/D 轉(zhuǎn)換器構(gòu)成簡易電壓表的應(yīng)用實例 3126.3.2 雙通道 A/D 采樣應(yīng)用在液晶顯示器上實例 3156.4 模擬比較器應(yīng)用實例 3236.4.1 模擬信號的比較應(yīng)用實例 (一) 3236.4.2 模擬信號的比較應(yīng)用實例 (二) 3246.4.3 模擬比較器應(yīng)用實例 (三) 324第7章 ATmega128單片機中斷系統(tǒng)的基本應(yīng)用 3277.1 中斷系統(tǒng)工作原理 3277.1.1 中斷系統(tǒng)的定義與中斷過程 3277.1.2 控制寄存器 3347.2 外部中斷 3357.2.1 外部中斷觸發(fā)方式 3357.2.2 外部中斷寄存器 3357.3 中斷程序編寫與應(yīng)用實例 3377.3.1 使用ICCAVR 開發(fā)環(huán)境編寫中斷程序 3377.3.2 外部中斷系統(tǒng)應(yīng)用實例 339第8章 ATmega128單片機串行接口的應(yīng)用 3428.1 同步串行接口 SPI 3428.1.1 同步串行通信 3428.1.2 ATmega128單 片機的同步串行接口 SPI 3458.1.3 ATmega128單 片機 SPI相 關(guān)寄存器 3488.1.4 SPI的 編程 3508.1.5 SPI應(yīng) 用實例 352USART 接口8.2.1 異步通信基礎(chǔ) 355ATmega128單 片機的 USART 接口 357訪問 USART 361USART 相關(guān)寄存器 3698.3 ATmega128單片機 USART 接口的應(yīng)用實例 3748.3.1 串口通信應(yīng)用實例 3748.3.2 利用串口控制微型打印機應(yīng)用實例 3788.4 兩線串行接口 TWI 3858.4.1 串行通信基礎(chǔ)知識 3858.4.2 I2C 總線協(xié)議 3858.4.3 ATmega128單 片機的 TWI接 口 3888.5 ATmega128單片機 TWI接口應(yīng)用實例 4038.5.1 利用 TWI口 對存儲器進(jìn)行操作的應(yīng)用實例 4038.5.2 I2C 總線接口日歷時鐘芯片應(yīng)用實例 407第9章 AVR 單片機在電氣控制系統(tǒng)中的應(yīng)用實例 4169.1 電動機類控制電路的應(yīng)用實例 4169.1.1 步進(jìn)電動機的應(yīng)用實例 4169.1.2 舵機的應(yīng)用實例 4199.1.3 電動機調(diào)速系統(tǒng)設(shè)計實例9.2 人機對話控制電路的應(yīng)用 4259.2.1 鍵盤的應(yīng)用實例 4259.2.2 觸摸屏人機接口的應(yīng)用實例 432第10章 各種傳感器的應(yīng)用實例 43610.1 紅外遙控器的解碼應(yīng)用 43610.1.1 紅外線 43610.1.2 紅外遙控系統(tǒng)原理 43610.1.3 紅外遙控器的解碼實例 43810.2 紅外測距傳感器的應(yīng)用 44210.2.1 硬件設(shè)計 44210.2.2 程序設(shè)計 44310.3 超聲測距傳感器的應(yīng)用 44610.3.1 硬件設(shè)計 44610.3.2 程序設(shè)計 44710.4 氣體傳感器的應(yīng)用 44910.4.1 氣體傳感器模塊 44910.4.2 氣體傳感器應(yīng)用實例 45010.5 加速度傳感器的應(yīng)用 45310.5.1 型加速度傳感器模塊 45310.5.2 加速度傳感器應(yīng)用實例 45410.6 光照傳感器的應(yīng)用 45610.6.1 硬件設(shè)計 45710.6.2 程序設(shè)計 45710.7 溫度傳感器應(yīng)用實例 45910.7.1 硬件設(shè)計 45910.7.2 軟件設(shè)計 459第11章 AVR 單片機的綜合應(yīng)用設(shè)計實例 46411.1 基于 ATmega128單片機的輪式機器人設(shè)計 46411.1.1 硬件設(shè)計 46411.1.2 軟件設(shè)計 46611.2 基于 ATmega128單片機的交通信號機設(shè)計 47111.2.1 硬件設(shè)計 47111.2.2 軟件設(shè)計 474