本教材以ATmega16單片機(jī)為藍(lán)本,共分3篇,由15章組成。第1-3章為開發(fā)基礎(chǔ)篇,主要介紹了AVR單片機(jī)的特點(diǎn)、開發(fā)編譯環(huán)境以及C語言開發(fā)基礎(chǔ)。第4-11章為實(shí)戰(zhàn)演練篇,針對ATmega16單片機(jī)的數(shù)字I/O端口、中斷系統(tǒng)、定時(shí)器/計(jì)數(shù)器、A/D轉(zhuǎn)換、SPI總線、異步通信、TWI總線等功能模塊設(shè)計(jì)典型實(shí)用實(shí)例,并對相應(yīng)外圍器件進(jìn)行詳細(xì)介紹,將知識講解與實(shí)際應(yīng)用充分結(jié)合。第12-15章為綜合實(shí)踐篇,從設(shè)計(jì)思路、硬件設(shè)計(jì)、軟件設(shè)計(jì)三方面詳細(xì)介紹單片機(jī)音樂播放器、ZLG7290的鍵盤顯示系統(tǒng)、基于DS1302的電子時(shí)鐘和基于超聲波檢測的智能避障小車四個(gè)綜合項(xiàng)目,旨在鍛煉學(xué)生綜合運(yùn)用所學(xué)知識完成小型應(yīng)用系統(tǒng)設(shè)計(jì)和調(diào)試的能力。
更多科學(xué)出版社服務(wù),請掃碼獲取。
目錄
前言
第一篇 開發(fā)基礎(chǔ)篇
第1章 AVR單片機(jī)概述 1
1.1 認(rèn)識單片機(jī) 1
1.1.1 單片機(jī)的定義及特點(diǎn) 1
1.1.2 單片機(jī)的發(fā)展歷史 1
1.1.3 單片機(jī)的系列 2
1.1.4 單片機(jī)的開發(fā)技術(shù) 2
1.2 單片機(jī)的應(yīng)用領(lǐng)域及前景 3
1.2.1 單片機(jī)的應(yīng)用領(lǐng)域 3
1.2.2 單片機(jī)的發(fā)展趨勢 3
1.3 AVR系列單片機(jī)概述 5
1.3.1 AVR系列單片機(jī)的主要特征 5
1.3.2 AVR系列單片機(jī)的選型 6
1.4 ATmega16單片機(jī)概述 6
1.4.1 ATmega16單片機(jī)的性能 7
1.4.2 ATmega16單片機(jī)的封裝與引腳 9
1.4.3 ATmega16單片機(jī)的存儲器結(jié)構(gòu) 11
第2章 ATmega16 的開發(fā)環(huán)境與開發(fā)技巧 13
2.1 AVR單片機(jī)開發(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的擴(kuò)展關(guān)鍵字及庫函數(shù) 22
2.3 ISP編程器控制平臺 23
2.3.1 下載器 23
2.3.2 編程平臺 26
2.4 ATmega16單片機(jī)學(xué)習(xí)板的設(shè)計(jì)與制作 28
2.4.1 時(shí)鐘電路設(shè)計(jì) 29
2.4.2 復(fù)位電路設(shè)計(jì) 29
2.4.3 I/O端口輸出電路設(shè)計(jì) 30
2.4.4 A/D轉(zhuǎn)換濾波電路設(shè)計(jì) 30
2.4.5 ISP下載接口電路設(shè)計(jì) 31
2.4.6 電源電路設(shè)計(jì) 31
2.5 ATmega16單片機(jī)系統(tǒng)開發(fā)技巧及開發(fā)流程 32
2.5.1 AVR單片機(jī)的仿真調(diào)試 32
2.5.2 基于ISP的AVR單片機(jī)調(diào)試技巧 33
2.5.3單片機(jī)應(yīng)用系統(tǒng)開發(fā)流程 34
第3章 AVR單片機(jī)C語言基礎(chǔ) 36
3.1 C語言的發(fā)展與特點(diǎn) 36
3.1.1 C語言的產(chǎn)生及發(fā)展 36
3.1.2 C語言的特點(diǎn) 36
3.2 C語言程序組成 37
3.2.1 C語言程序結(jié)構(gòu) 37
3.2.2 標(biāo)識符與關(guān)鍵字 37
3.3 C語言基本數(shù)據(jù)類型 39
3.4 C語言常量、變量 39
3.4.1 常量 40
3.4.2 變量 40
3.5 運(yùn)算符與表達(dá)式 41
3.5.1 算術(shù)運(yùn)算符與算術(shù)表達(dá)式 41
3.5.2 賦值運(yùn)算符和賦值表達(dá)式 42
3.5.3 關(guān)系運(yùn)算符與關(guān)系表達(dá)式 44
3.5.4 邏輯運(yùn)算符與邏輯表達(dá)式 45
3.5.5 位運(yùn)算符與位運(yùn)算表達(dá)式 46
3.5.6 條件運(yùn)算符與條件表達(dá)式 48
3.5.7 逗號運(yùn)算符與逗號表達(dá)式 48
3.5.8 運(yùn)算符的優(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
第二篇 實(shí)戰(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è)計(jì) 75
4.5.2 軟件設(shè)計(jì) 75
4.6 獨(dú)立按鍵鍵值解讀系統(tǒng) 76
4.6.1 機(jī)械觸點(diǎn)按鍵常識 76
4.6.2 硬件電路設(shè)計(jì) 76
4.6.3 軟件設(shè)計(jì) 77
4.7 多功能8位LED流水燈 78
4.7.1 硬件電路設(shè)計(jì) 78
4.7.2 軟件設(shè)計(jì) 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è)計(jì) 84
4.8.4 多功能數(shù)碼管顯示器軟件設(shè)計(jì) 84
4.8.5 下載調(diào)試 86
第5章 中斷系統(tǒng)及其應(yīng)用 88
5.1 中斷和中斷系統(tǒng) 88
5.2 ATmega16單片機(jī)的中斷系統(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)時(shí)間 91
5.3 ATmega16單片機(jī)外部中斷相關(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 通用中斷標(biāo)志寄存器GIFR 93
5.4 利用外部中斷方式實(shí)現(xiàn)多功能8位流水燈 94
5.4.1 硬件電路設(shè)計(jì) 94
5.4.2 軟件設(shè)計(jì) 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總線的操作時(shí)序 101
6.1.3 硬件SPI與軟件SPI 102
6.2 ATmega16單片機(jī)的SPI總線模塊 102
6.2.1 SPI總線接口及特點(diǎn) 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總線模塊時(shí)序 106
6.5 基于SPI總線實(shí)現(xiàn)74HC595驅(qū)動多位數(shù)碼管動態(tài)顯示 107
6.5.1 移位寄存器74HC595介紹 107
6.5.2 硬件電路設(shè)計(jì) 109
6.5.3 軟件設(shè)計(jì) 110
6.5.4 下載調(diào)試 113
第7章 定時(shí)器/計(jì)數(shù)器及其應(yīng)用 114
7.1 ATmega16單片機(jī)定時(shí)器/計(jì)數(shù)器概述 114
7.2 定時(shí)器/計(jì)數(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í)器/計(jì)數(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í)器/計(jì)數(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實(shí)現(xiàn)流水燈的控制 138
7.6 用T/C0產(chǎn)生占空比為15%的PWM波 140
7.7 用T/C1實(shí)現(xiàn)LED滾動閃爍顯示 141
7.8 簡易電子門鈴 144
7.8.1 蜂鳴器介紹 144
7.8.2 硬件電路設(shè)計(jì) 145
7.8.3 軟件設(shè)計(jì) 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單片機(jī)內(nèi)部A/D轉(zhuǎn)換的原理 151
8.2 內(nèi)置A/D轉(zhuǎn)換模塊的結(jié)構(gòu)及特點(diǎn) 151
8.2.1 A/D轉(zhuǎn)換模塊的結(jié)構(gòu) 151
8.2.2 A/D轉(zhuǎn)換模塊的特點(diǎ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)換時(shí)序 158
8.4.3 ADC輸入通道和參考電源選擇 159
8.4.4 A/D轉(zhuǎn)換結(jié)果 160
8.5 簡易數(shù)字電壓表 160
8.5.1 硬件電路設(shè)計(jì) 161
8.5.2 軟件設(shè)計(jì) 161
8.5.3 系統(tǒng)調(diào)試 165
第9章 異步通信模塊及其應(yīng)用 166
9.1單片機(jī)串行通信原理 166
9.1.1 串行通信 166
9.1.2 常用硬件通信協(xié)議 168
9.2 USART模塊概述 169
9.2.1 USART模塊特點(diǎn) 169
9.2.2 USART模塊的組成 169
9.2.3 時(shí)鐘發(fā)生器 169
9.2.4 幀格式及校驗(yàn)位的計(jì)算 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機(jī)與單片機(jī)通信設(shè)計(jì) 181
9.5.1 USB簡介 181
9.5.2 硬件電路設(shè)計(jì) 181
9.5.3 軟件設(shè)計(jì) 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總線連接及特點(diǎn) 190
10.1.3 TWI模塊的組成 191
10.1.4 TWI數(shù)據(jù)傳輸和幀格式 193
10.1.5 多主機(jī)總線仲裁和同步 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(從機(jī))地址寄存器TWAR 197
10.3 TWI總線模塊工作時(shí)序及傳輸模式 198
10.3.1 TWI總線工作時(shí)序 198
10.3.2 TWI總線數(shù)據(jù)傳輸模式 199
10.4 TWI總線讀取AT24C02 206
10.4.1 AT24C02介紹 206
10.4.2 硬件電路設(shè)計(jì) 207
10.4.3 軟件設(shè)計(jì) 207
第11章 復(fù)位系統(tǒng)及休眠模式 212
11.1 ATmega16單片機(jī)的系統(tǒng)時(shí)鐘 212
11.1.1 時(shí)鐘源的選擇 213
11.1.2 晶體振蕩器 213
11.1.3 低頻晶體振蕩器 214
11.1.4 外部RC振蕩器 215
11.1.5 標(biāo)定的片內(nèi)RC振蕩器 215
11.1.6 外部時(shí)鐘 216
11.2 ATmega16單片機(jī)休眠模式與電源管理 217
11.2.1 空閑模式 217
11.2.2 ADC噪聲抑制模式 217
11.2.3 掉電模式 217
11.2.4 省電模式 217
11.2.5 Standby模式及擴(kuò)展Standby模式 218
11.2.6 休眠模式設(shè)置 218
11.2.7 最小化功耗 218
11.3 ATmega16單片機(jī)復(fù)位系統(tǒng) 219
11.3.1 復(fù)位源 219
11.3.2 MCU控制和狀態(tài)寄存器MCUCSR 222
11.3.3 看門狗定時(shí)器 222
11.4 復(fù)位系統(tǒng)及休眠模式的應(yīng)用實(shí)例 224
第三篇 綜合實(shí)踐篇
第12章 單片機(jī)音樂播放器 226
12.1 單片機(jī)音樂播放器功能介紹 226
12.2 單片機(jī)音樂播放器設(shè)計(jì)思路 226
12.2.1 PWM原理 226
12.2.2 單片機(jī)音樂播放器原理 228
12.2.3 系統(tǒng)工作流程 228
12.3 單片機(jī)音樂播放器硬件電路設(shè)計(jì) 229
12.4 單片機(jī)音樂播放器軟件設(shè)計(jì) 229
12.4.1 軟件工作流程 229
12.4.2 軟件應(yīng)用代碼 230
12.5 下載調(diào)試 237
第13章 基于ZLG7290B的鍵盤顯示系統(tǒng)設(shè)計(jì) 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è)計(jì) 244
13.4 鍵盤顯示系統(tǒng)軟件設(shè)計(jì) 245
13.4.1 ZLG7290驅(qū)動軟件設(shè)計(jì) 245
13.4.2 綜合軟件設(shè)計(jì) 252
13.5 下載調(diào)試 253
第14章 基于DS1302的電子時(shí)鐘設(shè)計(jì) 255
14.1 電子時(shí)鐘系統(tǒng)介紹 255
14.2 電子時(shí)鐘系統(tǒng)設(shè)計(jì)思路 255
14.3 DS1302時(shí)鐘芯片介紹 255
14.3.1 DS1302的結(jié)構(gòu)和性能 255
14.3.2 DS1302的控制字和數(shù)據(jù)讀寫時(shí)序 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操作時(shí)序 261
14.4.4 LCD1602的標(biāo)準(zhǔn)字庫表 262
14.5 電子時(shí)鐘硬件電路設(shè)計(jì) 263
14.6 電子時(shí)鐘軟件設(shè)計(jì) 264
14.6.1 軟件流程 264
14.6.2 DS1302驅(qū)動軟件設(shè)計(jì) 264
14.6.3 LCD1602驅(qū)動軟件設(shè)計(jì) 267
14.6.4 電子時(shí)鐘綜合軟件設(shè)計(jì) 270
14.7 下載調(diào)試 272
第15章 基于超聲波檢測的智能避障小車設(shè)計(jì) 273
15.1 智能避障小車介紹 273
15.2 智能避障小車總體設(shè)計(jì) 273
15.3 智能避障小車硬件電路設(shè)計(jì) 274
15.3.1 超聲波測距模塊電路設(shè)計(jì) 274
15.3.2 舵機(jī)及其控制系統(tǒng)設(shè)計(jì) 275
15.3.3 電機(jī)及其驅(qū)動系統(tǒng)設(shè)計(jì) 275
15.3.4 電源電路設(shè)計(jì) 278
15.3.5 智能避障小車硬件電路原理圖 278
15.4 智能避障小車軟件設(shè)計(jì) 279
15.4.1 軟件流程圖 279
15.4.2 超聲波測距程序設(shè)計(jì) 279
15.4.3 避障算法設(shè)計(jì) 280
15.4.4 電機(jī)驅(qū)動程序設(shè)計(jì) 280
15.4.5 軟件應(yīng)用代碼 280
15.5 下載調(diào)試 284
參考文獻(xiàn) 286