本書以80C51單片機為主介紹微機基本理論與原理,實現(xiàn)將微機原理的學(xué)習(xí)和具體的單片機應(yīng)用實踐密切結(jié)合。本書從計算機基礎(chǔ)知識入手,全面介紹微機的基本組成和原理,重點講述80C51單片機的結(jié)構(gòu)、指令系統(tǒng)、程序設(shè)計及常用的接口技術(shù)。對8086系統(tǒng)和C51語言分設(shè)兩章介紹,一些實用的接口技術(shù)和接口芯片的使用穿插在相關(guān)的章節(jié)中介紹。 本書以匯編語言為主、C51語言為輔來講述程序的設(shè)計方法與技巧,對Proteus8、Keil μVision5、C51語言做基本介紹,C51語言與匯編語言編程在實例中交叉出現(xiàn),對典型或重要知識點實例通常給出匯編語言與C51語言對應(yīng)的源程序及軟件仿真過程。本書選材規(guī)范,通俗易懂,每章都配有思考題與習(xí)題。 本書可作為高等院校電氣類、電子信息類、自動化類等“微機原理”與“單片機技術(shù)”課程的教材,也可作為高職高專相關(guān)專業(yè)的教材,同時可作為學(xué)習(xí)單片機應(yīng)用基礎(chǔ)的培訓(xùn)教材和自學(xué)參考書。
宋躍,東莞理工學(xué)院電子工程與智能化學(xué)院教授,首屆國家級一流本科課程、廣東省高等學(xué)校本科精品課程、廣東省精品開放資源共享課程“微機原理與單片機技術(shù)”負責(zé)人,一直從事微機原理、單片機、嵌入式等方面的教學(xué)與科研工作。
第1章 計算機基礎(chǔ)知識 1
1.1 計算機中負數(shù)的表示和運算 1
1.1.1 機器數(shù) 1
1.1.2 機器數(shù)的原碼、反碼和補碼 1
1.1.3 補碼加/減運算 2
1.1.4 原碼乘/除運算 3
1.2 計算機中的常用編碼 3
1.2.1 ASCII碼 3
1.2.2 非ASCII編碼 4
1.2.3 BCD碼 4
1.3 微型計算機概述 4
1.3.1 計算機的發(fā)展 4
1.3.2 微型計算機的基本組成 5
1.3.3 中央處理器的基本組成 5
1.3.4 微型計算機的程序存儲與控制 6
1.4 單片機概述 6
1.4.1 單片機的發(fā)展過程及產(chǎn)品近況 6
1.4.2 AT89S5X單片機簡介 7
1.4.3 STC系列單片機簡介 7
1.4.4 STM32系列單片機簡介 8
1.4.5 GD32系列單片機簡介 8
1.5 單片機應(yīng)用的開發(fā)仿真工具 8
1.5.1 Keil μVision集成開發(fā)環(huán)境簡介 8
1.5.2 Proteus軟件介紹 14
1.5.3 跑馬燈仿真實例 17
思考題與習(xí)題 21
第2章 存儲器 22
2.1 概述 22
2.2 只讀存儲器 24
2.2.1 只讀存儲器的結(jié)構(gòu)及分類 24
2.2.2 EPROM芯片27256介紹 26
2.3 隨機存儲器 28
2.3.1 靜態(tài)基本存儲電路 29
2.3.2 動態(tài)基本存儲電路 30
2.3.3 SRAM芯片6116介紹 30
2.3.4 DRAM芯片2116介紹 31
2.4 閃存 31
2.4.1 閃存簡介 32
2.4.2 閃存芯片M45PE80 32
2.5 存儲器的選擇與擴展 33
2.5.1 存儲器的選擇 33
2.5.2 存儲器的擴展 33
思考題與習(xí)題 37
第3章 80C51單片機的結(jié)構(gòu)和原理 38
3.1 80C51單片機的概述 38
3.1.1 MCS-51單片機 38
3.1.2 80C51單片機的應(yīng)用模式 38
3.2 80C51單片機典型產(chǎn)品資源配置與引腳 39
3.2.1 80C51單片機典型產(chǎn)品資源配置 39
3.2.2 引腳及其功能 39
3.3 80C51單片機的結(jié)構(gòu) 40
3.3.1 80C51單片機邏輯結(jié)構(gòu) 40
3.3.2 80C51單片機內(nèi)部結(jié)構(gòu) 41
3.4 80C51單片機內(nèi)部數(shù)據(jù)存儲器 42
3.4.1 80C51單片機的內(nèi)部RAM 42
3.4.2 專用寄存器的位尋址 46
3.5 80C51單片機內(nèi)部程序存儲器 47
3.5.1 內(nèi)部與外部ROM的選擇 47
3.5.2 ROM的幾個特殊單元 48
3.6 80C51單片機輸入/輸出(I/O)接口 49
3.6.1 P0口 49
3.6.2 P1口 50
3.6.3 P2口 50
3.6.4 P3口 50
3.7 單片機的工作方式 51
3.7.1 復(fù)位及復(fù)位電路 51
3.7.2 時鐘電路和時序 52
3.7.3 單片機的低功耗方式 54
3.8 單片機執(zhí)行指令的過程 54
思考題與習(xí)題 55
第4章 80C51單片機的指令系統(tǒng) 57
4.1 指令的基本格式及常用符號 57
4.1.1 指令的字節(jié)數(shù) 57
4.1.2 指令的執(zhí)行時間 58
4.1.3 匯編語言的語句結(jié)構(gòu) 58
4.2 80C51單片機的尋址方式 58
4.2.1 立即尋址 59
4.2.2 直接尋址 59
4.2.3 寄存器尋址 60
4.2.4 寄存器間接尋址 60
4.2.5 變址尋址 61
4.2.6 相對尋址 61
4.2.7 位尋址 62
4.3 數(shù)據(jù)傳送類指令 62
4.3.1 一般傳送指令 63
4.3.2 特殊傳送指令 64
4.4 算術(shù)運算類指令 67
4.4.1 不帶進位加法指令及BCD碼調(diào)整指令 67
4.4.2 帶進位加法指令 69
4.4.3 加1指令 69
4.4.4 帶借位減法指令 70
4.4.5 減1指令 70
4.4.6 乘、除法指令 70
4.5 邏輯運算類指令 71
4.5.1 邏輯與指令 71
4.5.2 邏輯或指令 72
4.5.3 邏輯異或指令 72
4.5.4 清零及取反指令 72
4.5.5 移位指令 73
4.6 控制轉(zhuǎn)移類指令 73
4.6.1 無條件轉(zhuǎn)移指令 74
4.6.2 條件轉(zhuǎn)移指令 75
4.6.3 子程序調(diào)用和返回指令 77
4.7 布爾變量操作指令 78
4.7.1 位傳送指令 78
4.7.2 位置位指令 78
4.7.3 位運算指令 79
4.7.4 位控制轉(zhuǎn)移指令 79
思考題與習(xí)題 80
第5章 80C51單片機的匯編語言程序設(shè)計 82
5.1 程序編制的方法和技巧 82
5.1.1 匯編語言的語句種類及
指令格式 82
5.1.2 常用的偽指令 83
5.1.3 源程序的編輯和匯編 84
5.2 匯編語言基本程序結(jié)構(gòu) 85
5.2.1 順序程序 85
5.2.2 分支程序 85
5.2.3 循環(huán)程序 88
5.2.4 子程序及其調(diào)用 90
5.3 常用程序舉例 94
5.3.1 算術(shù)運算程序 94
5.3.2 代碼轉(zhuǎn)換 96
5.3.3 I/O操作 97
5.4 簡單I/O設(shè)備的并行口直接驅(qū)動示例 99
思考題與習(xí)題 101
第6章 80C51單片機的C語言程序設(shè)計 103
6.1 單片機C語言概述 103
6.1.1 C51的程序結(jié)構(gòu) 103
6.1.2 C51編譯器介紹 103
6.1.3 C51語言和匯編語言的關(guān)系 103
6.2 C51的數(shù)據(jù)類型及存儲類型 104
6.2.1 C51的數(shù)據(jù)類型 104
6.2.2 C51數(shù)據(jù)的存儲類型 105
6.2.3 80C51單片機特殊功能寄存器的C51定義 105
6.3 C51的運算符和表達式 106
6.3.1 賦值運算符 106
6.3.2 算術(shù)運算符 107
6.3.3 關(guān)系運算符 107
6.3.4 邏輯運算符 107
6.3.5 位運算符 108
6.3.6 其他運算符 108
6.4 C51流程控制語句 111
6.4.1 條件語句 111
6.4.2 循環(huán)語句 111
6.4.3 開關(guān)語句 112
6.4.4 break、continue和goto語句 113
6.5 C51的構(gòu)造數(shù)據(jù)類型 114
6.5.1 數(shù)組 114
6.5.2 指針 115
6.5.3 結(jié)構(gòu)體 117
6.5.4 枚舉 118
6.6 C51函數(shù) 118
6.6.1 C51函數(shù)定義 119
6.6.2 C51函數(shù)調(diào)用 120
6.6.3 混合編程簡介 120
6.6.4 混合編程形式 122
6.6.5 C51庫函數(shù) 122
6.7 C51中斷編程實例 123
6.8 C51實例 124
6.8.1 C51仿真實例 124
6.8.2 混合編程實例 125
思考題與習(xí)題 126
第7章 80C51單片機的中斷系統(tǒng)及定時/計數(shù)器 127
7.1 中斷概述 127
7.2 中斷處理過程 128
7.3 80C51單片機的中斷系統(tǒng)及其控制 130
7.4 80C51單片機中斷源的擴展 135
7.5 80C51單片機的定時/計數(shù)器及其應(yīng)用 136
思考題與習(xí)題 152
第8章 80C51單片機的串行口及串行總線擴展 154
8.1 串行通信基本知識 154
8.1.1 基本通信方式及特點 154
8.1.2 串行通信的數(shù)據(jù)傳送方式 154
8.1.3 串行通信的分類 155
8.1.4 串行通信的波特率、比特率 156
8.2 80C51單片機的串行口 156
8.2.1 80C51單片機串行口的結(jié)構(gòu) 156
8.2.2 80C51單片機串行口控制 157
8.2.3 80C51單片機串行口實例 160
8.3 80C51單片機的串行口應(yīng)用 163
8.3.1 雙機通信 163
8.3.2 多機通信 166
8.3.3 單片機與PC通信 167
8.4 單片機的串行總線擴展 171
8.4.1 I2C總線接口及其擴展 171
8.4.2 SPI總線接口及其擴展 180
8.4.3 CAN總線 183
8.4.4 USB總線 184
8.4.5 單總線(1-Wire) 184
思考題與習(xí)題 185
第9章 80C51單片機的系統(tǒng)擴展 187
9.1 I/O接口電路概述 187
9.2 數(shù)據(jù)傳送方式 187
9.2.1 無條件傳送方式 187
9.2.2 查詢傳送方式 188
9.2.3 中斷傳送方式 188
9.2.4 直接存儲器存。―MA)方式 188
9.3 存儲器擴展及時序 188
9.3.1 系統(tǒng)擴展總線及擴展芯片的尋址方式 189
9.3.2 程序存儲器擴展 189
9.3.3 數(shù)據(jù)存儲器擴展 191
9.3.4 簡單I/O接口擴展 195
9.4 可編程接口芯片81C55及其應(yīng)用 197
9.5 可編程接口芯片82C55及其應(yīng)用 202
9.6 單片機顯示、鍵盤系統(tǒng) 206
9.6.1 并行擴展靜態(tài)顯示電路 208
9.6.2 串行擴展靜態(tài)顯示電路 209
9.6.3 動態(tài)顯示電路及其實例 210
9.7 單片機LCD顯示接口及其實例 214
9.8 單片機鍵盤接口 218
思考題與習(xí)題 223
第10章 80C51單片機的模擬量接口 225
10.1 并行D/A轉(zhuǎn)換器與單片機的接口 225
10.1.1 D/A轉(zhuǎn)換概述及DAC的主要性能指標(biāo) 225
10.1.2 8位D/A轉(zhuǎn)換器DAC0832及與單片機接口 227
10.1.3 12位D/A轉(zhuǎn)換器DAC1208及與單片機接口 230
10.2 并行A/D轉(zhuǎn)換器與單片機的接口 232
10.2.1 A/D轉(zhuǎn)換器概述及其主要性能指標(biāo) 232
10.2.2 8位A/D轉(zhuǎn)換器ADC0809及與單片機接口 234
10.2.3 12位A/D轉(zhuǎn)換器AD1674及與單片機接口 237
10.3 串行A/D轉(zhuǎn)換器與單片機的接口 240
10.3.1 串行A/D轉(zhuǎn)換器HX711介紹 241
10.3.2 HX711的工作原理 241
10.3.3 80C51單片機和HX711的接口設(shè)計 243
思考題與習(xí)題 243
第11章 80C51單片機應(yīng)用系統(tǒng)設(shè)計 245
11.1 單片機應(yīng)用設(shè)計過程 245
11.1.1 確定系統(tǒng)的功能與性能 245
11.1.2 確定系統(tǒng)基本結(jié)構(gòu) 245
11.1.3 單片機應(yīng)用系統(tǒng)硬件、軟件的設(shè)計原則 246
11.1.4 硬件設(shè)計 247
11.1.5 軟件設(shè)計 248
11.1.6 資源分配 248
11.1.7 單片機應(yīng)用系統(tǒng)的開發(fā) 248
11.2 提高系統(tǒng)可靠性的一般方法 249
11.2.1 電源干擾及其抑制 250
11.2.2 地線干擾及其抑制 250
11.2.3 其他提高系統(tǒng)可靠性的方法 251
11.3 設(shè)計與制作實例 256
11.3.1 單片機學(xué)習(xí)板設(shè)計與制作 256
11.3.2 用溫度傳感器DS18B20進行溫度測量 258
11.3.3 電子密碼鎖設(shè)計 259
思考題與習(xí)題 263
第12章 微處理器及微機系統(tǒng) 264
12.1 微處理器概述 264
12.1.1 微處理器發(fā)展簡介 264
12.1.2 8086的結(jié)構(gòu) 264
12.1.3 8086的內(nèi)部寄存器 265
12.1.4 8086的存儲空間管理 267
12.1.5 8086的引腳功能 268
12.1.6 8086的兩種工作方式 269
12.1.7 8086的總線周期 271
12.1.8 8086的指令系統(tǒng) 271
12.1.9 匯編語言程序設(shè)計 272
12.2 微機系統(tǒng)的構(gòu)成與擴展 275
12.2.1 微機系統(tǒng)的構(gòu)成 275
12.2.2 8086系統(tǒng)擴展 276
12.3 總線技術(shù) 281
12.3.1 總線概述 281
12.3.2 總線規(guī)范及主要性能指標(biāo) 281
12.3.3 常用的系統(tǒng)總線 281
思考題與習(xí)題 282
參考文獻 283