本教材以ATmega16單片機為藍本,共分3篇,由15章組成。第1-3章為開發(fā)基礎篇,主要介紹了AVR單片機的特點、開發(fā)編譯環(huán)境以及C語言開發(fā)基礎。第4-11章為實戰(zhàn)演練篇,針對ATmega16單片機的數字I/O端口、中斷系統(tǒng)、定時器/計數器、A/D轉換、SPI總線、異步通信、TWI總線等功能模塊設計典型實用實例,并對相應外圍器件進行詳細介紹,將知識講解與實際應用充分結合。第12-15章為綜合實踐篇,從設計思路、硬件設計、軟件設計三方面詳細介紹單片機音樂播放器、ZLG7290的鍵盤顯示系統(tǒng)、基于DS1302的電子時鐘和基于超聲波檢測的智能避障小車四個綜合項目,旨在鍛煉學生綜合運用所學知識完成小型應用系統(tǒng)設計和調試的能力。
更多科學出版社服務,請掃碼獲取。
目錄
前言
第一篇 開發(fā)基礎篇
第1章 AVR單片機概述 1
1.1 認識單片機 1
1.1.1 單片機的定義及特點 1
1.1.2 單片機的發(fā)展歷史 1
1.1.3 單片機的系列 2
1.1.4 單片機的開發(fā)技術 2
1.2 單片機的應用領域及前景 3
1.2.1 單片機的應用領域 3
1.2.2 單片機的發(fā)展趨勢 3
1.3 AVR系列單片機概述 5
1.3.1 AVR系列單片機的主要特征 5
1.3.2 AVR系列單片機的選型 6
1.4 ATmega16單片機概述 6
1.4.1 ATmega16單片機的性能 7
1.4.2 ATmega16單片機的封裝與引腳 9
1.4.3 ATmega16單片機的存儲器結構 11
第2章 ATmega16 的開發(fā)環(huán)境與開發(fā)技巧 13
2.1 AVR單片機開發(fā)工具概述 13
2.2 ICCAVR開發(fā)編譯環(huán)境 13
2.2.1 ICC AVR簡介 14
2.2.2 ICCV8安裝方法 15
2.2.3 ICCV8快速入門 16
2.2.4 ICC AVR的擴展關鍵字及庫函數 22
2.3 ISP編程器控制平臺 23
2.3.1 下載器 23
2.3.2 編程平臺 26
2.4 ATmega16單片機學習板的設計與制作 28
2.4.1 時鐘電路設計 29
2.4.2 復位電路設計 29
2.4.3 I/O端口輸出電路設計 30
2.4.4 A/D轉換濾波電路設計 30
2.4.5 ISP下載接口電路設計 31
2.4.6 電源電路設計 31
2.5 ATmega16單片機系統(tǒng)開發(fā)技巧及開發(fā)流程 32
2.5.1 AVR單片機的仿真調試 32
2.5.2 基于ISP的AVR單片機調試技巧 33
2.5.3單片機應用系統(tǒng)開發(fā)流程 34
第3章 AVR單片機C語言基礎 36
3.1 C語言的發(fā)展與特點 36
3.1.1 C語言的產生及發(fā)展 36
3.1.2 C語言的特點 36
3.2 C語言程序組成 37
3.2.1 C語言程序結構 37
3.2.2 標識符與關鍵字 37
3.3 C語言基本數據類型 39
3.4 C語言常量、變量 39
3.4.1 常量 40
3.4.2 變量 40
3.5 運算符與表達式 41
3.5.1 算術運算符與算術表達式 41
3.5.2 賦值運算符和賦值表達式 42
3.5.3 關系運算符與關系表達式 44
3.5.4 邏輯運算符與邏輯表達式 45
3.5.5 位運算符與位運算表達式 46
3.5.6 條件運算符與條件表達式 48
3.5.7 逗號運算符與逗號表達式 48
3.5.8 運算符的優(yōu)先級和結合性 48
3.6 程序基本結構及流程圖 49
3.6.1 順序結構及其流程圖 49
3.6.2 選擇結構及其流程圖 50
3.6.3 循環(huán)結構及其流程圖 52
3.7 C語言中的數組 56
3.7.1 一維數組的定義和引用 56
3.7.2 二維數組的定義和引用 58
3.7.3 字符數組與字符串 59
3.8 函數 60
3.8.1 函數的定義 61
3.8.2 函數的參數傳遞與返回值 61
3.8.3 函數的調用 62
3.8.4 函數的嵌套 63
3.9 編譯預處理 65
3.9.1 宏定義 65
3.9.2 文件包含 67
3.9.3 條件編譯 67
第二篇 實戰(zhàn)演練篇
第4章 通用數字I/O端口及其應用 71
4.1 通用數字I/O端口簡介 71
4.2 通用數字I/O端口的基本特性 71
4.3 通用數字I/O端口相關寄存器 72
4.3.1 數據方向寄存器DDRx 73
4.3.2 數據寄存器PORTx 73
4.3.3 端口輸入引腳寄存器PINx 73
4.4 通用數字I/O口的設置與編程 73
4.5 8 位LED燈顯示系統(tǒng) 75
4.5.1 硬件電路設計 75
4.5.2 軟件設計 75
4.6 獨立按鍵鍵值解讀系統(tǒng) 76
4.6.1 機械觸點按鍵常識 76
4.6.2 硬件電路設計 76
4.6.3 軟件設計 77
4.7 多功能8位LED流水燈 78
4.7.1 硬件電路設計 78
4.7.2 軟件設計 78
4.7.3 系統(tǒng)調試 82
4.8 多功能數碼管顯示器 82
4.8.1 LED數碼管介紹 82
4.8.2 多位LED數碼管動態(tài)顯示 83
4.8.3 硬件電路設計 84
4.8.4 多功能數碼管顯示器軟件設計 84
4.8.5 下載調試 86
第5章 中斷系統(tǒng)及其應用 88
5.1 中斷和中斷系統(tǒng) 88
5.2 ATmega16單片機的中斷系統(tǒng) 89
5.2.1 ATmega16中斷源和中斷向量 89
5.2.2 ATmega16中斷響應過程 90
5.2.3 ATmega16中斷優(yōu)先級 90
5.2.4 ATmega16中斷響應時間 91
5.3 ATmega16單片機外部中斷相關寄存器 91
5.3.1 MCU控制寄存器MCUCR 92
5.3.2 MCU控制與狀態(tài)寄存器MCUCSR 92
5.3.3 通用中斷控制寄存器GICR 93
5.3.4 通用中斷標志寄存器GIFR 93
5.4 利用外部中斷方式實現多功能8位流水燈 94
5.4.1 硬件電路設計 94
5.4.2 軟件設計 95
5.4.3 下載調試 99
第6章 SPI總線模塊及其應用 100
6.1 SPI總線簡介 100
6.1.1 SPI總線的構成及信號類型 100
6.1.2 SPI總線的操作時序 101
6.1.3 硬件SPI與軟件SPI 102
6.2 ATmega16單片機的SPI總線模塊 102
6.2.1 SPI總線接口及特點 102
6.2.2 SPI總線的主從接口 102
6.2.3 SS引腳的功能 103
6.3 SPI總線模塊相關寄存器 104
6.3.1 SPI控制寄存器SPCR 104
6.3.2 SPI狀態(tài)寄存器SPSR 105
6.3.3 SPI數據寄存器SPDR 105
6.4 SPI總線模塊時序 106
6.5 基于SPI總線實現74HC595驅動多位數碼管動態(tài)顯示 107
6.5.1 移位寄存器74HC595介紹 107
6.5.2 硬件電路設計 109
6.5.3 軟件設計 110
6.5.4 下載調試 113
第7章 定時器/計數器及其應用 114
7.1 ATmega16單片機定時器/計數器概述 114
7.2 定時器/計數器0(T/C0) 117
7.2.1 T/C0概述 117
7.2.2 T/C0的工作模式 118
7.2.3 T/C0的相關寄存器 119
7.3 定時器/計數器1(T/C1) 122
7.3.1 T/C1概述 122
7.3.2 T/C1的工作模式 123
7.3.3 T/C1的相關寄存器 127
7.3.4 訪問16位寄存器 131
7.4 定時器/計數器2(T/C2) 133
7.4.1 T/C2概述 133
7.4.2 T/C2的工作模式 134
7.4.3 T/C2的相關寄存器 134
7.5 用T/C0實現流水燈的控制 138
7.6 用T/C0產生占空比為15%的PWM波 140
7.7 用T/C1實現LED滾動閃爍顯示 141
7.8 簡易電子門鈴 144
7.8.1 蜂鳴器介紹 144
7.8.2 硬件電路設計 145
7.8.3 軟件設計 146
7.8.4 下載調試 148
第8章 A/D轉換模塊及其應用 150
8.1 A/D轉換基礎知識 150
8.1.1 A/D轉換基本原理 150
8.1.2單片機內部A/D轉換的原理 151
8.2 內置A/D轉換模塊的結構及特點 151
8.2.1 A/D轉換模塊的結構 151
8.2.2 A/D轉換模塊的特點 153
8.3 ADC模塊相關寄存器 153
8.3.1 ADC多工選擇寄存器ADMUX 153
8.3.2 ADC控制和狀態(tài)寄存器A(ADCSRA) 155
8.3.3 ADC數據寄存器(ADCL和ADCH) 156
8.3.4 ADC特殊功能I/O寄存器SFIOR 157
8.4 ADC模塊的使用 157
8.4.1 啟動一次轉換 157
8.4.2 ADC轉換時序 158
8.4.3 ADC輸入通道和參考電源選擇 159
8.4.4 A/D轉換結果 160
8.5 簡易數字電壓表 160
8.5.1 硬件電路設計 161
8.5.2 軟件設計 161
8.5.3 系統(tǒng)調試 165
第9章 異步通信模塊及其應用 166
9.1單片機串行通信原理 166
9.1.1 串行通信 166
9.1.2 常用硬件通信協(xié)議 168
9.2 USART模塊概述 169
9.2.1 USART模塊特點 169
9.2.2 USART模塊的組成 169
9.2.3 時鐘發(fā)生器 169
9.2.4 幀格式及校驗位的計算 171
9.3 USART模塊相關寄存器 172
9.3.1 USART數據寄存器UDR 172
9.3.2 USART控制和狀態(tài)寄存器A(UCSRA) 172
9.3.3 USART控制和狀態(tài)寄存器B(UCSRB) 173
9.3.4 USART控制和狀態(tài)寄存器C(UCSRC) 174
9.3.5 USART波特率寄存器(UBRRL和UBRRLH) 175
9.4 USART模塊的使用 175
9.4.1 USART的初始化 175
9.4.2 數據發(fā)送 176
9.4.3 數據接收 178
9.4.4 異步數據接收 180
9.5 基于USB的PC機與單片機通信設計 181
9.5.1 USB簡介 181
9.5.2 硬件電路設計 181
9.5.3 軟件設計 183
9.5.4 系統(tǒng)調試 186
第10章 TWI總線模塊及其應用 188
10.1 TWI總線概述 188
10.1.1 I2C總線概述 188
10.1.2 TWI總線連接及特點 190
10.1.3 TWI模塊的組成 191
10.1.4 TWI數據傳輸和幀格式 193
10.1.5 多主機總線仲裁和同步 195
10.2 TWI總線模塊相關寄存器 195
10.2.1 TWI比特率寄存器TWBR(TWI Bit Rate Register) 195
10.2.2 TWI控制寄存器TWCR 196
10.2.3 TWI狀態(tài)寄存器TWSR 197
10.2.4 TWI數據寄存器TWDR 197
10.2.5 TWI(從機)地址寄存器TWAR 197
10.3 TWI總線模塊工作時序及傳輸模式 198
10.3.1 TWI總線工作時序 198
10.3.2 TWI總線數據傳輸模式 199
10.4 TWI總線讀取AT24C02 206
10.4.1 AT24C02介紹 206
10.4.2 硬件電路設計 207
10.4.3 軟件設計 207
第11章 復位系統(tǒng)及休眠模式 212
11.1 ATmega16單片機的系統(tǒng)時鐘 212
11.1.1 時鐘源的選擇 213
11.1.2 晶體振蕩器 213
11.1.3 低頻晶體振蕩器 214
11.1.4 外部RC振蕩器 215
11.1.5 標定的片內RC振蕩器 215
11.1.6 外部時鐘 216
11.2 ATmega16單片機休眠模式與電源管理 217
11.2.1 空閑模式 217
11.2.2 ADC噪聲抑制模式 217
11.2.3 掉電模式 217
11.2.4 省電模式 217
11.2.5 Standby模式及擴展Standby模式 218
11.2.6 休眠模式設置 218
11.2.7 最小化功耗 218
11.3 ATmega16單片機復位系統(tǒng) 219
11.3.1 復位源 219
11.3.2 MCU控制和狀態(tài)寄存器MCUCSR 222
11.3.3 看門狗定時器 222
11.4 復位系統(tǒng)及休眠模式的應用實例 224
第三篇 綜合實踐篇
第12章 單片機音樂播放器 226
12.1 單片機音樂播放器功能介紹 226
12.2 單片機音樂播放器設計思路 226
12.2.1 PWM原理 226
12.2.2 單片機音樂播放器原理 228
12.2.3 系統(tǒng)工作流程 228
12.3 單片機音樂播放器硬件電路設計 229
12.4 單片機音樂播放器軟件設計 229
12.4.1 軟件工作流程 229
12.4.2 軟件應用代碼 230
12.5 下載調試 237
第13章 基于ZLG7290B的鍵盤顯示系統(tǒng)設計 238
13.1 鍵盤顯示系統(tǒng)介紹 238
13.2 ZLG7290B芯片介紹 238
13.2.1 引腳說明及典型應用電路 239
13.2.2 寄存器介紹 241
13.2.3 控制命令 243
13.3 鍵盤顯示系統(tǒng)硬件電路設計 244
13.4 鍵盤顯示系統(tǒng)軟件設計 245
13.4.1 ZLG7290驅動軟件設計 245
13.4.2 綜合軟件設計 252
13.5 下載調試 253
第14章 基于DS1302的電子時鐘設計 255
14.1 電子時鐘系統(tǒng)介紹 255
14.2 電子時鐘系統(tǒng)設計思路 255
14.3 DS1302時鐘芯片介紹 255
14.3.1 DS1302的結構和性能 255
14.3.2 DS1302的控制字和數據讀寫時序 256
14.3.3 DS1302的內部寄存器 257
14.4 LCD1602液晶顯示模塊 259
14.4.1 LCD1602基本參數及引腳說明 259
14.4.2 LCD1602操作指令 260
14.4.3 LCD1602操作時序 261
14.4.4 LCD1602的標準字庫表 262
14.5 電子時鐘硬件電路設計 263
14.6 電子時鐘軟件設計 264
14.6.1 軟件流程 264
14.6.2 DS1302驅動軟件設計 264
14.6.3 LCD1602驅動軟件設計 267
14.6.4 電子時鐘綜合軟件設計 270
14.7 下載調試 272
第15章 基于超聲波檢測的智能避障小車設計 273
15.1 智能避障小車介紹 273
15.2 智能避障小車總體設計 273
15.3 智能避障小車硬件電路設計 274
15.3.1 超聲波測距模塊電路設計 274
15.3.2 舵機及其控制系統(tǒng)設計 275
15.3.3 電機及其驅動系統(tǒng)設計 275
15.3.4 電源電路設計 278
15.3.5 智能避障小車硬件電路原理圖 278
15.4 智能避障小車軟件設計 279
15.4.1 軟件流程圖 279
15.4.2 超聲波測距程序設計 279
15.4.3 避障算法設計 280
15.4.4 電機驅動程序設計 280
15.4.5 軟件應用代碼 280
15.5 下載調試 284
參考文獻 286