內容簡介
本書以89S51 為典型機,主要論述單片機的基本結構與工作原理,以及單片機套用系統的設計與開發方法。全書內容分為13 章,內容包括概述、單片機的結構和工作原理、指令系統、單片機C51 語言程式設計基礎、中斷系統、定時器/計數器、單片機的串列口UART、單片機常用並行接口技術、串列匯流排接口技術、單片機套用系統開發環境、基於嵌入式實時作業系統的單片機程式設計方法、基於RTX51的樂曲編輯器和發生器設計、數控電流源設計。書後附錄給出了18 個單片機課程設計課題,以及單片機89S51 的指令系統。本書從工程套用出發,突出單片機套用技術的新穎性和實用性;此外,本書為任課教師免費提供電子課件。
圖書目錄
第1章 概述 1
1.1 單片機概念與發展過程 1
1.1.1 單片機概念 1
1.1.2 單片機技術發展過程 1
1.1.3 單片機技術發展方向 3
1.1.4 常用數制與編碼 4
1.2 單片機套用領域與嵌入式系統概念 5
1.2.1 單片機套用領域 6
1.2.2 嵌入式系統概念 6
1.3 單片機套用系統開發過程簡述 8
1.3.1 單片機程式語言 8
1.3.2 單片機套用系統結構 9
1.3.3 單片機套用模式 10
1.3.4 單片機套用系統開發過程簡介 11
1.4 本書特點與教材使用建議 12
1.4.1 本書編寫指導思想 13
1.4.2 本書特點 15
1.4.3 教材使用建議 16
1.5 本章小結 18
1.6 思考題與習題 19
第2章 單片機的結構和工作原理 20
2.1 MCS-51系列單片機概述 20
2.2 89S51單片機引腳功能說明 21
2.2.1 89S51的引腳圖與封裝 21
2.2.2 89S51的引腳功能說明 22
2.2.3 89S51的引腳套用特性 23
2.3 89S51單片機內部結構 24
2.3.1 89S51的基本組成 24
2.3.2 89S51的CPU 26
2.4 89S51單片機的存儲器 28
2.4.1 程式存儲器 29
2.4.2 數據存儲器 29
2.5 89S51單片機的時鐘電路與時序 32
2.5.1 時鐘電路 32
2.5.2 基本時序單位 33
2.6 89S51單片機的工作方式 35
2.6.1 復位工作方式和復位電路 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 本章小結 41
2.9 思考題與習題 42
第3章 指令系統* 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單片機的指令系統 47
3.3.1 數據傳送類指令 47
3.3.2 算術運算類指令 50
3.3.3 邏輯運算及移位類指令 53
3.3.4 控制轉移類指令 54
3.3.5 位操作類指令 56
3.4 單片機彙編語言簡介 58
3.4.1 彙編語言的語句格式 58
3.4.2 偽指令 59
3.4.3 單片機彙編語言程式設計 60
3.5 本章小結 63
3.6 思考題與習題 63
第4章 單片機C51語言程式設計基礎 65
4.1 單片機C51語言概述 65
4.1.1 C51語言在單片機套用系統開發中的優勢 65
4.1.2 C51語言與標準C語言的比較 65
4.1.3 編寫C51語言程式的基本原則 66
4.2 C51語言關鍵字與數據類型 67
4.2.1 標識符 67
4.2.2 關鍵字 68
4.2.3 數據類型 69
4.3 C51語言數據 71
4.3.1 常量 71
4.3.2 變數 72
4.3.3 存儲器類型和存儲器模式 72
4.3.4 數組 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 循環控制(for、while語句) 84
4.6.4 break、continue、return、goto語句 85
4.7 C51語言函式 86
4.7.1 函式的定義 87
4.7.2 函式的調用 88
4.7.3 C51語言中斷函式 89
4.8 C51語言預處理命令 90
4.8.1 檔案包含 90
4.8.2 宏定義 90
4.8.3 條件編譯 91
4.9 C51語言與彙編語言混合編程方法 91
4.9.1 C51語言程式嵌入彙編語句 92
4.9.2 C51語言程式調用彙編語言子程式 93
4.10 本章小結 94
4.11 思考題與習題 95
第5章 中斷系統 96
5.1 中斷 96
5.1.1 中斷的概念 96
5.1.2 中斷的條件和中斷回響過程 97
5.2 89S51中斷系統結構與控制 98
5.2.1 89S51的中斷源和中斷入口地址 98
5.2.2 89S51的中斷系統結構 99
5.2.3 中斷控制 100
5.3 中斷套用舉例 105
5.3.1 單外部中斷源系統的設計 105
5.3.2 多外部中斷源系統的設計 106
5.4 本章小結 107
5.5 思考題與習題 108
第6章 定時器/計數器 109
6.1 定時器/計數器的結構與控制 109
6.1.1 89S51定時器/計數器的結構 109
6.1.2 定時器/計數器的控制 110
6.2 定時器/計數器的4種工作方式 111
6.2.1 工作方式1 111
6.2.2 工作方式2 112
6.2.3 工作方式3 113
6.2.4 工作方式0 115
6.3 定時器/計數器的套用舉例 115
6.3.1 脈衝信號的產生 115
6.3.2 脈衝寬度的測量 116
6.4 本章小結 117
6.5 思考題與習題 117
第7章 單片機的串列口UART 119
7.1 串列通信概述 119
7.1.1 串列通信與並行通信 119
7.1.2 串列通信的分類 119
7.1.3 串列通信的數據傳送方式 121
7.2 89S51串列口UART的結構與控制 122
7.2.1 串列口UART的結構 122
7.2.2 串列口UART的工作方式 124
7.2.3 串列口UART的波特率計算 126
7.3 串列口UART的編程及套用實例 128
7.3.1 串列口UART的編程步驟 128
7.3.2 串列口UART套用實例 128
7.4 本章小結 131
7.5 思考題與習題 131
第8章 單片機常用並行接口技術 133
8.1 鍵盤接口 133
8.1.1 獨立按鍵 134
8.1.2 矩陣鍵盤 136
8.2 LED顯示器接口 141
8.2.1 LED數碼管 141
8.2.2 LED數碼管靜態顯示接口 142
8.2.3 LED數碼管動態顯示接口 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套用舉例 154
8.5 液晶顯示模組LCD1602的接口 155
8.5.1 LCD1602介紹 155
8.5.2 LCD1602與89S51的接口電路 160
8.5.3 LCD1602套用舉例 161
8.6 外部並行三匯流排接口 164
8.7 大功率器件驅動接口 165
8.7.1 光耦接口 166
8.7.2 繼電器接口 166
8.7.3 雙向晶閘管輸出接口 167
8.7.4 固態繼電器輸出接口 168
8.8 本章小結 169
8.9 思考題與習題 169
第9章 串列匯流排接口技術 170
9.1 EIA系列匯流排標準及其接口 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匯流排通信協定 177
9.2.3 E2PROM存儲器AT93C46及其套用 177
9.3 I2C匯流排 180
9.3.1 I2C匯流排簡介 180
9.3.2 I2C匯流排通信協定 181
9.3.3 I2C接口存儲器AT24C02及其套用 183
9.4 1-Wire單匯流排 191
9.4.1 1-Wire單匯流排簡介 191
9.4.2 溫度感測器DS18B20及其套用 193
9.5 USB匯流排 198
9.5.1 USB匯流排原理 198
9.5.2 USB匯流排通信接口設計實例 200
9.6 CAN匯流排 202
9.6.1 CAN匯流排簡介 203
9.6.2 CAN匯流排控制器 204
9.6.3 CAN匯流排通信接口設計實例 204
9.7 本章小結 205
9.8 思考題與習題 206
第10章 單片機套用系統開發環境 207
10.1 單片機套用系統的調試方法 207
10.1.1 硬體調試方法 207
10.1.2 軟體仿真調試方法 209
10.2 Keil μVision4集成開發環境 210
10.2.1 Keil μVision4的主要特性 210
10.2.2 Keil μVision4集成開發環境設定方法 211
10.2.3 Keil μVision4工程套用 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仿真調試 232
10.4 單片機套用系統開發小工具 233
10.4.1 波特率初值計算工具 233
10.4.2 數碼管編碼器 233
10.4.3 定時器計算工具 234
10.4.4 串口調試助手 234
10.5 本章小結 235
10.6 思考題與習題 236
第11章 基於嵌入式實時作業系統的單片機程式設計方法 237
11.1 嵌入式實時作業系統的概念 237
11.1.1 嵌入式系統的特徵 237
11.1.2 嵌入式實時作業系統的概念 238
11.2 在電子系統設計中引入RTOS的意義 238
11.2.1 兩種軟體開發模式的比較 239
11.2.2 嵌入式套用中使用嵌入式RTOS的必要性 239
11.2.3 嵌入式作業系統環境下的套用軟體設計 240
11.2.4 嵌入式作業系統環境下的套用軟體調試 241
11.3 嵌入式實時作業系統RTX51的介紹 241
11.3.1 RTX51的技術參數 241
11.3.2 幾個概念 242
11.3.3 RTX Tiny核心分析 245
11.3.4 RTX Tiny核心原始碼 249
11.4 基於RTX51的單片機程式設計方法 251
11.4.1 目標系統需求 251
11.4.2 軟體設計指導方針 251
11.4.3 任務劃分的原則 252
11.4.4 應用程式架構 254
11.5 本章小結 256
11.6 思考題與習題 256
第12章 基於RTX51的樂曲編輯器和發生器設計 257
12.1 設計任務 257
12.2 方案設計與論證 257
12.2.1 以FPGA為核心的實現方案 257
12.2.2 以MCU為核心的實現方案 257
12.3 系統硬體設計 258
12.3.1 系統硬體電路原理圖 258
12.3.2 人機互動界面 259
12.4 基於RTX51的系統軟體設計 260
12.4.1 樂曲的表示方法 260
12.4.2 編輯樂曲的軟體實現方法 261
12.4.3 播放樂曲的軟體實現方法 262
12.4.4 系統軟體流程框圖 264
12.5 系統源程式清單 265
12.5.1 C51語言主程式 265
12.5.2 讀AT24C02彙編語言子程式 276
12.5.3 寫AT24C02彙編語言子程式 279
12.5.4 鍵盤掃描彙編語言子程式 281
12.5.5 實時作業系統RTX51 Tiny核心程式 283
12.6 系統設計總結 283
第13章 數控電流源設計 284
13.1 設計任務 284
13.2 方案設計與論證 284
13.2.1 D/A轉換模組設計方案的論證與比較 285
13.2.2 恆流源模組設計方案的論證與比較 285
13.2.3 數據採集模組設計方案的論證與比較 286
13.2.4 輔助電源、主電源設計方案的論證與比較 287
13.2.5 鍵盤、顯示器設計方案的論證與比較 288
13.3 理論計算與EWB仿真 288
13.3.1 採樣電阻值的確定 288
13.3.2 D/A轉換器解析度的確定 289
13.3.3 TLC5618參考電壓的確定 289
13.3.4 主電源參數的確定 289
13.3.5 用EWB進行電路仿真 289
13.4 系統硬體設計 291
13.4.1 MCU微控制器、鍵盤、顯示器電路圖 291
13.4.2 D/A轉換模組、恆流源模組的電路圖 291
13.4.3 數據採集模組的電路圖 294
13.4.4 輔助電源、主電源的電路圖 294
13.5 系統軟體設計 298
13.5.1 主程式流程框圖 298
13.5.2 設定輸出電流給定值功能函式程式流程框圖 299
13.5.3 設定電流步進值功能函式程式流程框圖 299
13.5.4 鍵盤掃描程式流程框圖 300
13.6 系統測試方法與結果分析 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內任意電流步進值設定功能的測試 303
13.6.8 測試結果分析 303
13.7 系統使用說明書 303
13.7.1 鍵盤界面 304
13.7.2 選單操作 305
13.8 系統源程式清單 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 系統設計總結 321
附錄A 單片機課程設計 322