前言
第1章 緒論
1.1 AVR與MCS51單片機
1.2 通用計算機系統(tǒng)與嵌入式計算機系統(tǒng)
1.3 單片機嵌入式系統(tǒng)
1.3.1 單片機及其發(fā)展
1.3.2 單片機的發(fā)展趨勢
1.3.3 單片機嵌入式系統(tǒng)結構
1.3.4 單片機嵌入式系統(tǒng)的應用領域
1.4 AVR 系列單片機
1.4.1 AVR單片機的發(fā)展及開發(fā)產品的優(yōu)勢
1.4.2 AVR 單片機的主要特點
1.5 ATmega16單片機
1.5.1 ATmega16單片機的結構和主要特點
1.5.2 ATmega16單片機的封裝與引腳
1.6 AVR教學實驗板的總體結構和實驗項目
1.7 思考與練習
第2章 ATmega16單片機硬件結構
2.1 ATmega16單片機的內核
2.1.1 ATmega16單片機的中央處理器概述
2.1.2 算術邏輯單元(ALU)
2.1.3 狀態(tài)寄存器和堆棧指針寄存器
2.1.4 通用工作寄存器組
2.1.5 I/O寄存器
2.1.6 堆棧指針寄存器(SP)
2.2 CPU的工作時序
2.3 ATmega16單片機存儲器
2.3.1 系統(tǒng)內可編程的Flash 程序存儲器
2.3.2 SRAM 數據存儲器
2.3.3 EEPROM 數據存儲器
2.4 ATmega16的系統(tǒng)時鐘及電源管理
2.4.1 晶體振蕩器
2.4.2 低頻晶體振蕩器
2.4.3 外部RC振蕩器
2.4.4 標定的片內RC振蕩器
2.4.5 外部時鐘
2.5 電源管理及睡眠模式
2.5.1 空閑模式
2.5.2 ADC噪聲抑制模式
2.5.3 掉電模式
2.5.4 省電模式
2.5.5 Standby模式
2.5.6 最小化功耗
2.6 ATmega16單片機系統(tǒng)的控制和復位
2.6.1 復位源
2.6.2 MCU控制和狀態(tài)寄存器(MCUCSR)
2.6.3 片內基準電壓
2.6.4 看門狗定時器
2.7 思考與練習
第3章 ATmega16單片機最小系統(tǒng)
3.1 ATmega16單片機最小系統(tǒng)設計
3.2 AVR的程序下載
3.3 ATmega16的熔絲位配置概述
3.4 AVR單片機的工作狀態(tài)
3.5 支持ISP編程的最小系統(tǒng)設計
3.6 AVR單片機程序下載實例
3.7 思考與練習
第4章 AVR單片機的開發(fā)環(huán)境
4.1 ICCAVR集成開發(fā)環(huán)境
4.1.1 ICCAVR編譯器的安裝
4.1.2 對安裝完成的軟件進行注冊
4.1.3 ICCAVR 功能介紹
4.1.4 ICCAVR 的IDE 環(huán)境
4.1.5 菜單解釋
4.2 ICCAVR中的C啟動文件與庫函數
4.2.1 啟動文件
4.2.2 ICCAVR中常用庫函數介紹
4.2.3 字符類型庫
4.2.4 浮點運算庫
4.2.5 標準輸入輸出庫
4.2.6 標準庫和內存分配函數
4.2.7 字符串函數
4.2.8 變量參數函數
4.2.9 堆棧檢查函數
4.3 AVR訪問硬件編程
4.3.1 AVR硬件操作
4.3.2 位操作
4.3.3 程序存儲器和常量數據
4.3.4 堆棧
4.3.5 在線匯編
4.3.6 I/O寄存器
4.3.7 C 任務Tasks
4.3.8 中斷操作
4.3.9 訪問UART
4.3.1 0訪問EEPROM
4.3.1 1相對轉移/調用的地址范圍
4.4 思考與練習
第5章 C語言編程基礎
5.1 C語言的組成及特點
5.2 運算符和表達式
5.2.1 算術運算符
5.2.2 賦值運算符
5.2.3 關系運算符和關系表達式
5.2.4 邏輯運算符和邏輯表達式
5.3 C程序語句及程序結構
5.3.1 順序結構程序設計
5.3.2 選擇結構的基本形式
5.3.3 簡單分支結構
5.3.4 雙分支結構
5.3.5 多分支結構
5.3.6 switch case分支結構
5.3.7 循環(huán)結構的基本形式
5.3.8 if goto 構成的循環(huán)
5.3.9 while循環(huán)
5.3.1 0do while循環(huán)
5.3.1 1for循環(huán)
5.3.1 2循環(huán)控制語句
5.4 數組
5.4.1 一維數組
5.4.2 數組的定義
5.4.3 數組元素的引用
5.4.4 數組的初始化
5.5 指針變量和指針運算符
5.5.1 指針變量定義及指針運算
5.5.2 指針變量的引用
5.6 函數與參數傳遞
5.6.1 函數定義的一般形式
5.6.2 形式參數與實際參數
5.6.3 函數的返回值
5.6.4 函數的調用
5.6.5 函數的聲明
5.7 編譯預處理
5.7.1 宏定義
5.7.2 無參宏定義
5.7.3 帶參宏定義
5.7.4 文件包含
5.7.5 條件編譯
5.8 結構體與鏈表
5.8.1 結構體的定義和引用
5.8.2 結構體類型定義
5.8.3 結構體類型變量的定義
5.8.4 結構體變量的初始化和成員引用
5.9 位運算符
5.1 0思考與練習
第6章 I/O口的應用
6.1 通用I/O口的基本結構與特性
6.1.1 I/O端口概述
6.1.2 I/O口的基本結構
6.1.3 I/O端口寄存器
6.1.4 通用數字I/O口的設置與編程
6.2 I/O口控制流水燈實例
6.2.1 典型器件介紹
6.2.2 硬件設計
6.2.3 程序設計及詳解
6.3 I/O口控制數碼管顯示實例
6.3.1 數碼管介紹
6.3.2 硬件設計
6.3.3 程序設計及詳解
6.4 I/O口控制諾基亞5510液晶顯示屏實例
6.4.1 諾基亞5510液晶屏控制器PCD8544介紹
6.4.2 硬件設計
6.5 I/O口控制1602液晶顯示實例
6.5.1 1602字符型LCD
6.5.2 LCD的基本參數及引腳功能
6.5.3 1602LCD的指令說明及時序
6.5.4 1602LCD的RAM地址映射及標準字庫表
6.5.5 1602LCD的一般初始化(復位)過程
6.5.6 硬件設計
6.5.7 程序詳解
6.6 I/O口 控制12864中文液晶顯示實例
6.6.1 概述
6.6.2 模塊引腳說明
6.6.3 接口時序
6.6.4 用戶指令集
6.6.5 顯示坐標
6.6.6 顯示RAM
6.6.7 漢字取模
6.6.8 硬件設計
6.6.9 程序設計詳解
6.7 8×8點陣LED顯示控制實例
6.7.1 8×8點陣LED工作原理說明
6.7.2 硬件設計
6.7.3 程序設計詳解
6.8 思考與練習
第7章 定時計數器的結構與應用
7.1 定時/計數器T/C0
7.1.1 T/C0的組成結構
7.1.2 與T/C0相關的寄存器
7.1.3 8位T/C0的工作模式
7.1.4 8位T/C0的計數工作時序
7.2 16位定時計數器T/C1的應用
7.2.1 16位定時器計數器功能介紹
7.2.2 T/C1的控制寄存器說明
7.3 利用定時器實現(xiàn)發(fā)光管閃爍的實例
7.3.1 硬件連接
7.3.2 程序設計詳解
7.4 利用定時器0實現(xiàn)PWM輸出實例
7.4.1 硬件連接
7.4.2 程序設計詳解
7.5 思考與練習
第8章 中斷系統(tǒng)的基本應用
8.1 為什么要用中斷
8.2 中斷相關概念
8.3 ATmega16的中斷系統(tǒng)
8.4 ATmega16 典型的復位和中斷設置
8.5 ATmega16的外部中斷
8.6 外部中斷應用實例
8.6.1 硬件連接
8.6.2 程序設計詳解
8.7 思考與練習
第9章 模擬比較器和ADC接口
9.1 模擬比較器簡介
9.1.1 與模擬比較器相關的寄存器和標志位
9.1.2 模擬比較器的應用設計
9.2 模數轉換器ADC概述
9.2.1 10位ADC結構
9.2.2 ADC相關的I/O寄存器
9.2.3 ADC應用預分頻與轉換時間
9.2.4 ADC輸入通道和參考電源的選擇
9.2.5 ADC轉換結果
9.3 ADC的應用實例
9.3.1 實例功能
9.3.2 硬件電路
9.3.3 程序設計詳解
9.4 ADC的應用實例2
9.4.1 硬件電路
9.4.2 程序設計詳解
9.5 思考與練習
第10章 串行接口及應用接口
10.1 同步串行接口SPI
10.1.1 SPI簡介
10.1.2 ATmega16 的SPI接口的特點
10.1.3 SS引腳的功能
10.1.4 與SPI 相關的寄存器
10.1.5 數據模式
10.1.6 SPI應用實例
10.2 異步傳輸接口USART
10.2.1 時鐘產生
10.2.2 USART 的初始化
10.2.3 數據發(fā)送——USART 發(fā)送器
10.2.4 數據接收——USART 接收器
10.2.5 異步數據接收
10.2.6 訪問UBRRH/UCSRC 寄存器
10.2.7 USART 寄存器描述
10.3 串口通信應用實例
10.3.1 器件介紹
10.3.2 硬件設計
10.3.3 程序設計詳解
10.4 兩線串行接口TWI
10.4.1 兩線串行接口總線定義
10.4.2 電氣連接
10.4.3 數據傳輸和幀格式
10.4.4 TWI模塊綜述
10.4.5 TWI 寄存器說明
10.4.6 使用TWI
10.4.7 數據傳輸模式
10.5 TWI應用實例
10.5.1 器件介紹
10.5.2 硬件設計
10.5.3 程序設計詳解
10.6 思考與練習
第11章 電機、繼電器和鍵盤輸入的控制
11.1 直流電機簡介
11.2 直流電機常用驅動方案
11.3 直流電機控制實例
11.4 步進電機控制實例
11.5 繼電器控制
11.6 PS/2鍵盤控制
11.7 獨立按鍵和矩陣鍵盤的識別
11.7.1 按鍵的分類
11.7.2 矩陣式鍵盤的結構與工作原理
11.7.3 矩陣式鍵盤的按鍵識別方法
11.7.4 獨立式按鍵的結構和工作原理
11.7.5 鍵盤的掃描工作方式
11.7.6 獨立按鍵和矩陣按鍵識別應用實例
11.8 思考與練習
第12章 點陣LED屏的控制
12.1 LED點陣屏驅動電路
12.2 字模數據
12.3 點陣字庫
12.4 在計算機中顯示一個字符
12.5 幾種常用的字符動態(tài)編碼顯示方案
12.6 點陣屏控制實例
12.6.1 硬件設計
12.6.2 程序設計及詳解
12.7 思考與練習
第13章 紅外遙控器的解碼
13.1 紅外遙控簡介
13.1.1 紅外光的利用
13.1.2 紅外光的調制
13.1.3 發(fā)射器
13.1.4 接收器
13.1.5 常用的HT6221遙控器芯片簡介
13.1.6 HT6221編碼特征
13.1.7 遙控器解碼方法及軟件說明
13.2 紅外遙控解碼實例
13.2.1 硬件設計
13.2.2 軟件設計及詳解
13.3 紅外遙控解碼液晶(LCD1602)顯示
13.4 思考與練習
第14章 DS18B20溫度傳感器的應用
14.1 DS18B20溫度傳感器概述
14.2 DS18B20芯片封裝結構及引腳功能
14.3 DS18B20工作原理及應用
14.4 DS18B20芯片與單片機的接口
14.5 DS28B20芯片ROM指令和存儲器操作指令
14.6 DS18B20復位及應答關系
14.7 DS18B20溫度傳感器應用實例1
14.7.1 硬件設計
14.7.2 程序設計及詳解
14.8 DS18B20溫度傳感器應用實例2
14.8.1 硬件設計
14.8.2 程序設計及詳解
14.9 思考與練習
第15章 時鐘芯片DS1302的應用
15.1 DS1302使用介紹
15.1.1 概述
15.1.2 DS1302的結構及性能
15.1.3 DS1302管腳描述
15.1.4 DS1302 內部寄存器
15.1.5 DS1302 與微控制器的接口軟件及功能應用
15.2 時鐘芯片DS1302應用實例1
15.3 時鐘芯片DS1302應用實例2
15.4 思考與練習
附錄
附錄A C語言運算符的優(yōu)先級
附錄B 常用字符與ASCII代碼對照表
參考文獻