本書以89S51 為典型機,主要論述單片機的基本結(jié)構(gòu)與工作原理,以及單片機應(yīng)用系統(tǒng)的設(shè)計與開發(fā)方法。全書內(nèi)容分為13 章,內(nèi)容包括概述、單片機的結(jié)構(gòu)和工作原理、指令系統(tǒng)、單片機C51 語言程序設(shè)計基礎(chǔ)、中斷系統(tǒng)、定時器/計數(shù)器、單片機的串行口UART、單片機常用并行接口技術(shù)、串行總線接口技術(shù)、單片機應(yīng)用系統(tǒng)開發(fā)環(huán)境、基于嵌入式實時操作系統(tǒng)的單片機程序設(shè)計方法、基于RTX51的樂曲編輯器和發(fā)生器設(shè)計、數(shù)控電流源設(shè)計。書后附錄給出了18 個單片機課程設(shè)計課題,以及單片機89S51 的指令系統(tǒng)。本書從工程應(yīng)用出發(fā),突出單片機應(yīng)用技術(shù)的新穎性和實用性;此外,本書為任課教師免費提供電子課件。
歐偉明,湖南工業(yè)大學(xué)信息工程學(xué)院教授,長期從事電子技術(shù)方面的教學(xué)與研究工作,教材成果豐富,出版教材2部,發(fā)表論文多篇。
第1章 概述 1
1.1 單片機概念與發(fā)展過程 1
1.1.1 單片機概念 1
1.1.2 單片機技術(shù)發(fā)展過程 1
1.1.3 單片機技術(shù)發(fā)展方向 3
1.1.4 常用數(shù)制與編碼 4
1.2 單片機應(yīng)用領(lǐng)域與嵌入式系統(tǒng)概念 5
1.2.1 單片機應(yīng)用領(lǐng)域 6
1.2.2 嵌入式系統(tǒng)概念 6
1.3 單片機應(yīng)用系統(tǒng)開發(fā)過程簡述 8
1.3.1 單片機編程語言 8
1.3.2 單片機應(yīng)用系統(tǒng)結(jié)構(gòu) 9
1.3.3 單片機應(yīng)用模式 10
1.3.4 單片機應(yīng)用系統(tǒng)開發(fā)過程簡介 11
1.4 本書特點與教材使用建議 12
1.4.1 本書編寫指導(dǎo)思想 13
1.4.2 本書特點 15
1.4.3 教材使用建議 16
1.5 本章小結(jié) 18
1.6 思考題與習(xí)題 19
第2章 單片機的結(jié)構(gòu)和工作原理 20
2.1 MCS-51系列單片機概述 20
2.2 89S51單片機引腳功能說明 21
2.2.1 89S51的引腳圖與封裝 21
2.2.2 89S51的引腳功能說明 22
2.2.3 89S51的引腳應(yīng)用特性 23
2.3 89S51單片機內(nèi)部結(jié)構(gòu) 24
2.3.1 89S51的基本組成 24
2.3.2 89S51的CPU 26
2.4 89S51單片機的存儲器 28
2.4.1 程序存儲器 29
2.4.2 數(shù)據(jù)存儲器 29
2.5 89S51單片機的時鐘電路與時序 32
2.5.1 時鐘電路 32
2.5.2 基本時序單位 33
2.6 89S51單片機的工作方式 35
2.6.1 復(fù)位工作方式和復(fù)位電路 35
2.6.2 低功耗工作方式 36
2.6.3 串行ISP編程方式 37
2.7 89S51單片機的輸入/輸出端口 38
2.7.1 P0端口 38
2.7.2 P1端口 39
2.7.3 P2端口 40
2.7.4 P3端口 40
2.8 本章小結(jié) 41
2.9 思考題與習(xí)題 42
第3章 指令系統(tǒng)* 43
3.1 MCS-51單片機指令概述 43
3.1.1 指令格式 43
3.1.2 符號說明 44
3.2 尋址方式 45
3.2.1 寄存器尋址方式 45
3.2.2 直接尋址方式 45
3.2.3 寄存器間接尋址方式 46
3.2.4 立即尋址方式 46
3.2.5 變址尋址方式 46
3.2.6 相對尋址方式 47
3.2.7 位尋址方式 47
3.3 89S51單片機的指令系統(tǒng) 47
3.3.1 數(shù)據(jù)傳送類指令 47
3.3.2 算術(shù)運算類指令 50
3.3.3 邏輯運算及移位類指令 53
3.3.4 控制轉(zhuǎn)移類指令 54
3.3.5 位操作類指令 56
3.4 單片機匯編語言簡介 58
3.4.1 匯編語言的語句格式 58
3.4.2 偽指令 59
3.4.3 單片機匯編語言程序設(shè)計 60
3.5 本章小結(jié) 63
3.6 思考題與習(xí)題 63
第4章 單片機C51語言程序設(shè)計基礎(chǔ) 65
4.1 單片機C51語言概述 65
4.1.1 C51語言在單片機應(yīng)用系統(tǒng)開發(fā)中的優(yōu)勢 65
4.1.2 C51語言與標(biāo)準C語言的比較 65
4.1.3 編寫C51語言程序的基本原則 66
4.2 C51語言關(guān)鍵字與數(shù)據(jù)類型 67
4.2.1 標(biāo)識符 67
4.2.2 關(guān)鍵字 68
4.2.3 數(shù)據(jù)類型 69
4.3 C51語言數(shù)據(jù) 71
4.3.1 常量 71
4.3.2 變量 72
4.3.3 存儲器類型和存儲器模式 72
4.3.4 數(shù)組 74
4.3.5 指針 75
4.4 C51語言對單片機硬件資源的控制 76
4.4.1 特殊功能寄存器(SFR)的定義 76
4.4.2 位變量的定義 77
4.4.3 存儲器和外接I/O端口的絕對地址訪問 78
4.5 C51語言運算符和表達式 79
4.5.1 運算符 79
4.5.2 表達式 81
4.6 C51語言流程控制語句 81
4.6.1 語句的概念和分類 81
4.6.2 判斷分支(if、switch語句) 82
4.6.3 循環(huán)控制(for、while語句) 84
4.6.4 break、continue、return、goto語句 85
4.7 C51語言函數(shù) 86
4.7.1 函數(shù)的定義 87
4.7.2 函數(shù)的調(diào)用 88
4.7.3 C51語言中斷函數(shù) 89
4.8 C51語言預(yù)處理命令 90
4.8.1 文件包含 90
4.8.2 宏定義 90
4.8.3 條件編譯 91
4.9 C51語言與匯編語言混合編程方法 91
4.9.1 C51語言程序嵌入?yún)R編語句 92
4.9.2 C51語言程序調(diào)用匯編語言子程序 93
4.10 本章小結(jié) 94
4.11 思考題與習(xí)題 95
第5章 中斷系統(tǒng) 96
5.1 中斷 96
5.1.1 中斷的概念 96
5.1.2 中斷的條件和中斷響應(yīng)過程 97
5.2 89S51中斷系統(tǒng)結(jié)構(gòu)與控制 98
5.2.1 89S51的中斷源和中斷入口地址 98
5.2.2 89S51的中斷系統(tǒng)結(jié)構(gòu) 99
5.2.3 中斷控制 100
5.3 中斷應(yīng)用舉例 105
5.3.1 單外部中斷源系統(tǒng)的設(shè)計 105
5.3.2 多外部中斷源系統(tǒng)的設(shè)計 106
5.4 本章小結(jié) 107
5.5 思考題與習(xí)題 108
第6章 定時器/計數(shù)器 109
6.1 定時器/計數(shù)器的結(jié)構(gòu)與控制 109
6.1.1 89S51定時器/計數(shù)器的結(jié)構(gòu) 109
6.1.2 定時器/計數(shù)器的控制 110
6.2 定時器/計數(shù)器的4種工作方式 111
6.2.1 工作方式1 111
6.2.2 工作方式2 112
6.2.3 工作方式3 113
6.2.4 工作方式0 115
6.3 定時器/計數(shù)器的應(yīng)用舉例 115
6.3.1 脈沖信號的產(chǎn)生 115
6.3.2 脈沖寬度的測量 116
6.4 本章小結(jié) 117
6.5 思考題與習(xí)題 117
第7章 單片機的串行口UART 119
7.1 串行通信概述 119
7.1.1 串行通信與并行通信 119
7.1.2 串行通信的分類 119
7.1.3 串行通信的數(shù)據(jù)傳送方式 121
7.2 89S51串行口UART的結(jié)構(gòu)與控制 122
7.2.1 串行口UART的結(jié)構(gòu) 122
7.2.2 串行口UART的工作方式 124
7.2.3 串行口UART的波特率計算 126
7.3 串行口UART的編程及應(yīng)用實例 128
7.3.1 串行口UART的編程步驟 128
7.3.2 串行口UART應(yīng)用實例 128
7.4 本章小結(jié) 131
7.5 思考題與習(xí)題 131
第8章 單片機常用并行接口技術(shù) 133
8.1 鍵盤接口 133
8.1.1 獨立按鍵 134
8.1.2 矩陣鍵盤 136
8.2 LED顯示器接口 141
8.2.1 LED數(shù)碼管 141
8.2.2 LED數(shù)碼管靜態(tài)顯示接口 142
8.2.3 LED數(shù)碼管動態(tài)顯示接口 144
8.3 DAC接口 147
8.3.1 DAC0832芯片介紹 147
8.3.2 DAC0832與89S51的接口電路 148
8.3.3 利用DAC0832輸出各種電壓波形 149
8.4 ADC接口 151
8.4.1 ADC0809芯片介紹 151
8.4.2 ADC0809與89S51的接口電路 153
8.4.3 ADC0809應(yīng)用舉例 154
8.5 液晶顯示模塊LCD1602的接口 155
8.5.1 LCD1602介紹 155
8.5.2 LCD1602與89S51的接口電路 160
8.5.3 LCD1602應(yīng)用舉例 161
8.6 外部并行三總線接口 164
8.7 大功率器件驅(qū)動接口 165
8.7.1 光耦接口 166
8.7.2 繼電器接口 166
8.7.3 雙向晶閘管輸出接口 167
8.7.4 固態(tài)繼電器輸出接口 168
8.8 本章小結(jié) 169
8.9 思考題與習(xí)題 169
第9章 串行總線接口技術(shù) 170
9.1 EIA系列總線標(biāo)準及其接口 170
9.1.1 RS-232C總線 170
9.1.2 RS-485總線 172
9.1.3 單片機與PC之間的通信 174
9.2 SPI總線 176
9.2.1 SPI總線簡介 176
9.2.2 SPI總線通信協(xié)議 177
9.2.3 E2PROM存儲器AT93C46及其應(yīng)用 177
9.3 I2C總線 180
9.3.1 I2C總線簡介 180
9.3.2 I2C總線通信協(xié)議 181
9.3.3 I2C接口存儲器AT24C02及其應(yīng)用 183
9.4 1-Wire單總線 191
9.4.1 1-Wire單總線簡介 191
9.4.2 溫度傳感器DS18B20及其應(yīng)用 193
9.5 USB總線 198
9.5.1 USB總線原理 198
9.5.2 USB總線通信接口設(shè)計實例 200
9.6 CAN總線 202
9.6.1 CAN總線簡介 203
9.6.2 CAN總線控制器 204
9.6.3 CAN總線通信接口設(shè)計實例 204
9.7 本章小結(jié) 205
9.8 思考題與習(xí)題 206
第10章 單片機應(yīng)用系統(tǒng)開發(fā)環(huán)境 207
10.1 單片機應(yīng)用系統(tǒng)的調(diào)試方法 207
10.1.1 硬件調(diào)試方法 207
10.1.2 軟件仿真調(diào)試方法 209
10.2 Keil μVision4集成開發(fā)環(huán)境 210
10.2.1 Keil μVision4的主要特性 210
10.2.2 Keil μVision4集成開發(fā)環(huán)境設(shè)置方法 211
10.2.3 Keil μVision4工程應(yīng)用 216
10.2.4 Keil C51主要頭文件介紹 226
10.3 Proteus 8仿真軟件 228
10.3.1 Proteus 8主界面介紹 228
10.3.2 Proteus 8繪制電路原理圖 230
10.3.3 Proteus 8仿真調(diào)試 232
10.4 單片機應(yīng)用系統(tǒng)開發(fā)小工具 233
10.4.1 波特率初值計算工具 233
10.4.2 數(shù)碼管編碼器 233
10.4.3 定時器計算工具 234
10.4.4 串口調(diào)試助手 234
10.5 本章小結(jié) 235
10.6 思考題與習(xí)題 236
第11章 基于嵌入式實時操作系統(tǒng)的單片機程序設(shè)計方法 237
11.1 嵌入式實時操作系統(tǒng)的概念 237
11.1.1 嵌入式系統(tǒng)的特征 237
11.1.2 嵌入式實時操作系統(tǒng)的概念 238
11.2 在電子系統(tǒng)設(shè)計中引入RTOS的意義 238
11.2.1 兩種軟件開發(fā)模式的比較 239
11.2.2 嵌入式應(yīng)用中使用嵌入式RTOS的必要性 239
11.2.3 嵌入式操作系統(tǒng)環(huán)境下的應(yīng)用軟件設(shè)計 240
11.2.4 嵌入式操作系統(tǒng)環(huán)境下的應(yīng)用軟件調(diào)試 241
11.3 嵌入式實時操作系統(tǒng)RTX51的介紹 241
11.3.1 RTX51的技術(shù)參數(shù) 241
11.3.2 幾個概念 242
11.3.3 RTX Tiny內(nèi)核分析 245
11.3.4 RTX Tiny內(nèi)核源代碼 249
11.4 基于RTX51的單片機程序設(shè)計方法 251
11.4.1 目標(biāo)系統(tǒng)需求 251
11.4.2 軟件設(shè)計指導(dǎo)方針 251
11.4.3 任務(wù)劃分的原則 252
11.4.4 應(yīng)用程序架構(gòu) 254
11.5 本章小結(jié) 256
11.6 思考題與習(xí)題 256
第12章 基于RTX51的樂曲編輯器和發(fā)生器設(shè)計 257
12.1 設(shè)計任務(wù) 257
12.2 方案設(shè)計與論證 257
12.2.1 以FPGA為核心的實現(xiàn)方案 257
12.2.2 以MCU為核心的實現(xiàn)方案 257
12.3 系統(tǒng)硬件設(shè)計 258
12.3.1 系統(tǒng)硬件電路原理圖 258
12.3.2 人機交互界面 259
12.4 基于RTX51的系統(tǒng)軟件設(shè)計 260
12.4.1 樂曲的表示方法 260
12.4.2 編輯樂曲的軟件實現(xiàn)方法 261
12.4.3 播放樂曲的軟件實現(xiàn)方法 262
12.4.4 系統(tǒng)軟件流程框圖 264
12.5 系統(tǒng)源程序清單 265
12.5.1 C51語言主程序 265
12.5.2 讀AT24C02匯編語言子程序 276
12.5.3 寫AT24C02匯編語言子程序 279
12.5.4 鍵盤掃描匯編語言子程序 281
12.5.5 實時操作系統(tǒng)RTX51 Tiny內(nèi)核程序 283
12.6 系統(tǒng)設(shè)計總結(jié) 283
第13章 數(shù)控電流源設(shè)計 284
13.1 設(shè)計任務(wù) 284
13.2 方案設(shè)計與論證 284
13.2.1 D/A轉(zhuǎn)換模塊設(shè)計方案的論證與比較 285
13.2.2 恒流源模塊設(shè)計方案的論證與比較 285
13.2.3 數(shù)據(jù)采集模塊設(shè)計方案的論證與比較 286
13.2.4 輔助電源、主電源設(shè)計方案的論證與比較 287
13.2.5 鍵盤、顯示器設(shè)計方案的論證與比較 288
13.3 理論計算與EWB仿真 288
13.3.1 采樣電阻值的確定 288
13.3.2 D/A轉(zhuǎn)換器分辨率的確定 289
13.3.3 TLC5618參考電壓的確定 289
13.3.4 主電源參數(shù)的確定 289
13.3.5 用EWB進行電路仿真 289
13.4 系統(tǒng)硬件設(shè)計 291
13.4.1 MCU微控制器、鍵盤、顯示器電路圖 291
13.4.2 D/A轉(zhuǎn)換模塊、恒流源模塊的電路圖 291
13.4.3 數(shù)據(jù)采集模塊的電路圖 294
13.4.4 輔助電源、主電源的電路圖 294
13.5 系統(tǒng)軟件設(shè)計 298
13.5.1 主程序流程框圖 298
13.5.2 設(shè)置輸出電流給定值功能函數(shù)程序流程框圖 299
13.5.3 設(shè)置電流步進值功能函數(shù)程序流程框圖 299
13.5.4 鍵盤掃描程序流程框圖 300
13.6 系統(tǒng)測試方法與結(jié)果分析 300
13.6.1 測試使用的儀器 300
13.6.2 恒流特性的測試 301
13.6.3 電流步進值為1mA的測試 301
13.6.4 紋波電流的測試 302
13.6.5 輸出電流范圍的測試 302
13.6.6 輸出電壓的測試 302
13.6.7 1~99mA內(nèi)任意電流步進值設(shè)置功能的測試 303
13.6.8 測試結(jié)果分析 303
13.7 系統(tǒng)使用說明書 303
13.7.1 鍵盤界面 304
13.7.2 菜單操作 305
13.8 系統(tǒng)源程序清單 305
13.8.1 C51語言主程序 305
13.8.2 鍵盤掃描匯編語言子程序 316
13.8.3 寫TLC5618的匯編語言子程序 318
13.8.4 讀MC14433的匯編語言子程序 319
13.8.5 顯示緩沖器的匯編語言子程序 320
13.9 系統(tǒng)設(shè)計總結(jié) 321
附錄A 單片機課程設(shè)計 322
附錄B 89S51指令表 331