本書是根據(jù)高等教育“單片機原理與應用”課程教學基本要求編寫的。介紹了使用*廣泛的MCS-51系列單片機的工作原理、內部各功能部件的結構、內部硬件資源及應用編程、外部擴展技術。本書采用匯編語言和C語言相對照的編寫方式,同時通過實例介紹匯編語言和C語言的混合編程。本書還介紹了單片機應用系統(tǒng)的基本設計方法,并附有大量的設計實例。*后一章是實驗與課程設計,實驗部分安排了10個實驗,采用匯編語言和C語言實現(xiàn);課程設計部分精選了單片機應用的典型應用實例和20個課程設計題目,并給出了設計要求,內容詳實。本書既可作為計算機、電子、機電、測控等相關專業(yè)的本科或高職教材,也可供相關工程技術人員參考。
朱文忠,男,教授,自1995年起在四川理工學院計算機學院任教。是四川省計算機學會教育培訓專業(yè)委員會理事、自貢市信息安全委員會委員。負責四川省精品課程《微機原理及應用》、四川理工學院精品課程《單片機原理及應用》的教學工作。負責"基于數(shù)據(jù)同化的釜溪河流域水體參數(shù)濃度遙感估算研究 (2015YSGZZ04)”、"面向智慧旅游信息系統(tǒng)構建的旅游數(shù)據(jù)整合研究(ZHZ14-02)”、"物聯(lián)網(wǎng)控制系統(tǒng)中信息傳輸關鍵技術及應用研究(2014WY06)”等7個四川省重點項目。編寫《微型計算機原理及應用――理論、實驗、課程設計》、《計算機兩部教材組成原理》2部教材。作為**獲獎人,曾獲得四川省教學成果獎1次,校級教學成果獎2次。
第1章 單片機概述 1
1.1 單片機的概念 1
1.1.1 單片機的定義 1
1.1.2 單片機的誕生 1
1.1.3 單片機的應用領域 2
1.1.4 單片機與嵌入式系統(tǒng) 2
1.2 單片機發(fā)展史及發(fā)展趨勢 2
1.3 MCS-51系列單片機及其兼容產(chǎn)品 3
1.3.1 MCS-51系列單片機分類 4
1.3.2 MCS-51系列單片機的兼容產(chǎn)品 5
1.4 計算機基礎知識 6
1.4.1 數(shù)制 6
1.4.2 數(shù)制轉換 7
1.4.3 編碼 8
1.4.4 計算機中數(shù)的表示 9
本章小結 10
習題與思考題 10
第2章 MCS-51單片機硬件結構 12
2.1 MCS-51系列單片機的基本結構 12
2.1.1 MCS-51系列單片機的總體基本結構 12
2.1.2 MCS-51系列單片機主要功能部件 12
2.1.3 8051單片機內部結構及引腳 13
2.1.4 外部總線構成 15
2.2 MCS-51單片機的中央處理器 16
2.2.1 CPU的組成 16
2.2.2 指令執(zhí)行的基本步驟 16
2.2.3 時鐘電路及時鐘時序單位 17
2.3 MCS-51單片機的內部存儲器 20
2.3.1 存儲器結構及地址分配 20
2.3.2 內部程序存儲器 21
2.3.3 內部數(shù)據(jù)存儲器 22
2.3.4 堆棧 26
2.4 MCS-51單片機的工作方式 27
2.4.1 執(zhí)行指令程序方式 27
2.4.2 掉電保護方式 28
2.4.3 低功耗方式 28
本章小結 30
習題與思考題 30
第3章 MCS-51單片機指令系統(tǒng) 33
3.1 MCS-51單片機指令概述 33
3.1.1 MCS-51單片機匯編語言指令格式 33
3.1.2 布爾處理機 33
3.1.3 指令中的常用符號 34
3.2 MCS-51單片機的尋址方式 34
3.2.1 立即尋址 35
3.2.2 直接尋址 35
3.2.3 寄存器尋址 36
3.2.4 寄存器間接尋址 36
3.2.5 基址加變址尋址 37
3.2.6 相對尋址 38
3.2.7 位尋址 39
3.3 MCS-51單片機的指令系統(tǒng) 40
3.3.1 數(shù)據(jù)傳送指令 40
3.3.2 算術運算指令 45
3.3.3 邏輯運算和移位指令 48
3.3.4 控制轉移指令 51
3.3.5 位操作指令 56
本章小結 58
習題與思考題 59
第4章 匯編語言程序設計 65
4.1 程序設計基礎 65
4.1.1 匯編語言源程序設計的步驟 66
4.1.2 匯編語言的語句格式 67
4.1.3 匯編語言的偽指令 68
4.1.4 MCS-51單片機匯編語言源程序格式及上機過程 73
4.2 單片機匯編語言程序的控制結構 74
4.2.1 順序結構程序設計 74
4.2.2 分支結構程序設計 75
4.2.3 循環(huán)結構程序設計 76
4.2.4 子程序設計 81
4.3 MCS-51單片機匯編語言程序設計舉例 83
4.3.1 數(shù)據(jù)傳送程序設計 83
4.3.2 算術運算程序設計 84
4.3.3 數(shù)制轉換程序設計 87
4.3.4 查表程序設計 90
4.3.5 數(shù)據(jù)檢索程序設計 92
本章小結 94
習題與思考題 95
第5章 C51應用基礎 97
5.1 Keil C51簡介 97
5.2 C51程序設計概述 97
5.2.1 C51語言的特點 97
5.2.2 C51程序與標準C程序的區(qū)別 98
5.2.3 C51的標識符與關鍵字 98
5.2.4 C51語言程序的書寫格式 99
5.3 C51數(shù)據(jù)類型 99
5.3.1 C51的數(shù)據(jù)類型 99
5.3.2 數(shù)據(jù)類型轉換 102
5.4 C51的運算量 103
5.4.1 常量 103
5.4.2 變量 104
5.4.3 存儲模式 105
5.5 C51的運算符和表達式 106
5.5.1 C51運算符簡介 106
5.5.2 算術運算符和算術表達式 107
5.5.3 關系運算符與關系表達式 107
5.5.4 邏輯運算符與邏輯表達式 108
5.5.5 位運算符 108
5.5.6 賦值運算符和賦值表達式 111
5.5.7 復合賦值運算符和復合賦值表達式 111
5.5.8 逗號運算符和逗號表達式 111
5.5.9 條件運算符和條件表達式 112
5.5.10 指針和地址運算符 112
5.5.11 sizeof運算符 112
5.6 C51的基本語句 114
5.6.1 表達式語句和空語句 114
5.6.2 復合語句 115
5.6.3 條件語句 115
5.6.4 開關語句 117
5.6.5 循環(huán)結構 119
5.7 C51的指針 121
5.7.1 C51指針變量 122
5.7.2 指針的運算 124
5.7.3 通過指針宏訪問存儲器 124
5.8 C51的函數(shù) 126
5.8.1 C51函數(shù)分類 126
5.8.2 C51函數(shù)的定義 127
5.8.3 C51中斷函數(shù)的定義 128
5.8.4 C51的部分頭文件和庫函數(shù) 129
5.9 C51程序設計應用舉例 132
5.9.1 8051單片機I/O口操作 132
5.9.2 再入函數(shù)的定義 133
5.9.3 排序和查找 133
5.9.4 碼制轉換 136
本章小結 138
習題與思考題 139
第6章 MCS-51單片機的硬件資源及其應用 141
6.1 并行I/O端口 141
6.1.1 端口功能 141
6.1.2 端口原理及操作 142
6.1.3 并行口應用舉例 146
6.2 MCS-51的中斷系統(tǒng) 147
6.2.1 MCS-51中斷系統(tǒng)的組成及中斷源 148
6.2.2 MCS-51的中斷控制 149
6.2.3 MCS-51的中斷響應過程 152
6.2.4 MCS-51的中斷程序設計 155
6.3 MCS-51單片機的定時/計數(shù)器 158
6.3.1 定時/計數(shù)器的功能概述 158
6.3.2 定時/計數(shù)器的結構、控制及工作方式 159
6.3.3 定時/計數(shù)器的編程及應用 165
6.4 MCS-51單片機的串行接口及其串行通信 168
6.4.1 串行通信的基本概念 169
6.4.2 MCS-51單片機的串行口及控制寄存器 170
6.4.3 MCS-51單片機的串行通信工作方式 172
6.4.4 串行口應用舉例 175
本章小結 183
習題與思考題 183
第7章 MCS-51單片機系統(tǒng)擴展及其應用 187
7.1 存儲器的擴展 187
7.1.1 擴展技術的原理和方法 187
7.1.2 常用半導體存儲器芯片 190
7.1.3 程序存儲器擴展 193
7.1.4 數(shù)據(jù)存儲器擴展設計 195
7.1.5 單片機擴展外部存儲器空間地址分配 195
7.1.6 多片存儲器擴展設計 198
7.2 I/O接口的擴展 200
7.2.1 簡單I/O接口擴展 200
7.2.2 用串行口擴展并行I/O接口 202
7.2.3 可編程I/O接口擴展 203
7.3 D/A、A/D轉換及其接口擴展 208
7.3.1 A/D轉換芯片ADC0809簡介 208
7.3.2 ADC0809與MCS-51型單片機的接口 210
7.4 MCS-51型單片機與D/A轉換接口 212
7.4.1 D/A轉換芯片ADC0832簡介 213
7.4.2 DAC0832與MCS-51單片機的接口 215
7.5 MCS-51單片機鍵盤接口 218
7.5.1 獨立式鍵盤 218
7.5.2 矩陣式鍵盤 221
7.6 MCS-51單片機顯示器接口 226
7.6.1 LED顯示器的結構與原理 226
7.6.2 LED顯示器的顯示方式 227
7.6.3 LED顯示接口典型應用電路 229
本章小結 232
習題與思考題 233
第8章 串行總線擴展技術 234
8.1 串行總線擴展概述 234
8.1.1 串行擴展的種類 234
8.1.2 串行擴展的特點 234
8.2 I2C串行擴展總線 235
8.3 SPI串行擴展接口 237
8.3.1 SPI總線的結構原理 237
8.3.2 SPI總線的軟件模擬 238
8.3.3 SPI串行擴展應用實例 239
8.4 串行單總線(1-Wire)技術 241
8.4.1 單總線的工作原理 241
8.4.2 單總線應用實例――數(shù)字溫度測量與控制 242
本章小結 248
習題與思考題 248
第9章 MCS-51單片機應用系統(tǒng)設計 249
9.1 MCS-51單片機應用系統(tǒng)的結構 249
9.2 MCS-51單片機應用系統(tǒng)設計 250
9.2.1 總體方案設計 250
9.2.2 硬件設計 251
9.2.3 軟件設計 251
9.2.4 可靠性設計 253
9.3 單片機應用系統(tǒng)的調試、測試 256
9.3.1 硬件調試 256
9.3.2 軟件調試 257
9.3.3 系統(tǒng)聯(lián)合調試 258
9.3.4 現(xiàn)場調試及性能測試 258
9.4 單片機應用系統(tǒng)舉例 259
9.4.1 單片機在控制系統(tǒng)中的應用 259
9.4.2 單片機在里程、速度計量中的應用 261
9.4.3 數(shù)字電子時鐘系統(tǒng)設計實例 265
9.4.4 單片機遙控系統(tǒng)的應用設計 273
本章小結 296
習題與思考題 297
第10章 實驗與課程設計 298
10.1 DVCC-ZHC2/DVCC-52196JH/JH+單片機仿真實驗系統(tǒng)使用簡介 298
10.1.1 實驗系統(tǒng)的啟動 298
10.1.2 實驗系統(tǒng)鍵盤簡介 299
10.1.3 DVCC實驗系統(tǒng)的工作方式 300
10.1.4 實驗過程中實驗結果的查看 301
10.1.5 實驗的一般步驟 301
10.2 Keil ?Vision開發(fā)環(huán)境簡介 302
10.2.1 Keil ?Vision簡介 302
10.2.2 Keil ?Vision3 集成開發(fā)環(huán)境 302
10.2.3 使用Keil C51進行單片機程序設計實驗的一般步驟 303
10.3 基礎性實驗 306
實驗一 清零實驗 306
實驗二 拆字實驗 308
實驗三 數(shù)據(jù)排序實驗 309
實驗四 多分支實驗 312
實驗五 單片機I/O口實驗(P3和P1口應用) 314
實驗六 并行I/O口8255擴展實驗 316
實驗七 A/D轉換ADC0809應用 320
實驗八 D/A轉換DAC0832應用 323
實驗九 串并轉換實驗 326
實驗十 音樂發(fā)聲器(電子音響)實驗 328
實驗十一 繼電器控制實驗 331
10.4 設計性實驗 333
實驗一 P1口實驗 333
實驗二 獨立式按鍵實驗 335
實驗三 7段LED數(shù)碼管實驗 337
實驗四 8051內部定時器實驗 339
實驗五 4×4矩陣式鍵盤實驗 342
10.5 課程設計 346
10.5.1 設計目的 346
10.5.2 內容及時間安排 346
10.5.3 基本要求 347
10.5.4 考核及評分標準 347
10.5.5 設計報告內容及要求 347
10.5.6 課程設計實例 347
10.5.7 課程設計參考題目及要求 356
附錄A ASCII碼表 359
附錄B MCS-51系列單片機指令表 360
附錄C 常用數(shù)字集成電路引腳圖 364
參考文獻 368