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