內容簡介
隨著科學技術日新月異,自動化程度不斷提高,單片機技術在各領域的套用飛速發展。由於單片機具有體積小、成本低、功能強、可靠性高等特點,因而廣泛套用於工業控制、儀器儀表、汽車、艦船、航空航天、軍事、通信、辦公自動化和智慧型終端等領域。
單片機種類和型號繁多,各種高性能的不同型號單片機不斷問世,但8位單片機仍以其突出的性價比、成熟的開發和套用技術,在單片機套用領域占有非常重要的地位。20世紀80年代中期,Intel公司將MCS-51核心使用權轉給世界許多著名的IC製造廠家,這樣,世界各大公司以8051基本核心為核心,發展出上百個品種,使得MCS-51成為一個大家族,直到現在,MCS-51系列或其兼容的單片機仍是套用的主流產品之一。此外,MCS-51單片機硬體結構清晰、指令可讀性強,常作為初學者首選。
本書以目前廣泛使用的MSC-51系列單片機為背景,系統闡述MCS-51單片機的硬體結構、指令系統及彙編語言程式設計、單片機C語言及程式設計,並在此基礎上,介紹了MSC-51單片機的並行I/O連線埠、定時器/計數器、中斷系統、串列I/O接口,以及擴展存儲器、並行I/O接口、輸入/輸出人機接口、A/D與D/A轉換的接口技術和套用實戰案例。除第3章外,程式設計以C語言為主,為了與彙編銜接,個別實例同時給出彙編程式。 全書內容系統全面、結構合理,論述深入淺出、循序漸進,書中對每個知識點都提供了詳細的實例,實例豐富、新穎,易於掌握,書中實例大多來源於科研工作及教學實踐,理論聯繫實際,涉及面廣、實用性強。 本書可作為高等院校自動化、計算機、電子信息工程、測控技術與儀器等電類專業教材,也可作為各類培訓機構教材。
本書共分為13章,各章具體內容如下。
* 第1章:介紹了單片微型計算機及MCS-51系列單片機,主要講解了MCS-51單片機的主要硬體結構。
* 第2章:主要講解了MCS-51單片機的指令系統及彙編語言程式設計。
* 第3章:主要講解了MCS-51的C51語言編程方法及實例。
通過對第2章和第3章的學習,幫助讀者掌握基本程式設計語言,為編程打下基礎,從第4章開始介紹單片機的內部資源。
* 第4章:主要講解了MCS-51單片機的並行I/O連線埠。
* 第5章:主要講解了MCS-51單片機的定時器/計數器。
* 第6章:主要講解了MCS-51單片機的串列接口。
* 第7章:主要講解了MCS-51單片機的中斷系統。
從第8章開始介紹單片機的接口技術。
* 第8章:主要講解了單片機存儲器的擴展。
* 第9章:主要講解了單片機並行I/O接口的擴展。
* 第10章和第11章:主要講解了單片機的輸入/輸出人機接口。
* 第12章:主要講解了單片機與A/D、D/A轉換器的接口。
* 第13章:從套用實戰案例出發,具體介紹如何根據套用需求,進行套用系統的軟、硬體設計。
圖書特點
本書以MCS-51單片機為核心,面向套用,主要有以下特點。
* 在內容編排上層次分明,由淺入深。首先介紹了MCS-51單片機的結構原理及軟體程式語言,然後依次講述了MCS-51單片機的內部資源、MCS-51單片機的擴展技術,最後通過套用實戰案例實現單片機的套用系統設計。
* 實例豐富,易於掌握。書中的各知識點多以實例來詮釋,淺顯易懂。實例是作者在科研和教學中反覆提煉出來的,涉及面廣、實用性強。
* 程式設計以C語言為主。C語言是目前使用最廣的單片機套用系統程式語言,更容易理解和掌握,也適於系統程式的開發。
* 彙編語言為輔。程式設計主要採用C語言,配有彙編指令介紹,個別程式同時配有彙編,有利於讀者深入理解單片機的結構及工作原理。
讀者對象
本書可作為院校自動化、計算機、電子信息工程、測控技術與儀器等電類專業教材,也可作為各類培訓機構教材。
本書由趙傑編寫第1、2、4、5章,王麗編寫第10、11章,謝東岩編寫第3、6章,韓龍編寫第12、13章,楊立新編寫第7、8、9章。參加本書編寫工作的還有管殿柱、宋一兵、趙景波、李文秋、王獻紅、張忠林、談世哲、初航等。
目錄
第1章 MCS-51系列單片機結構
1.1 單片微型計算機概述 1
1.1.1 單片機的發展歷史 1
1.1.2 單片機的發展趨勢 2
1.1.3 單片機的套用 3
1.4.4 51系列單片機 4
1.2 MCS-51單片機內部結構 5
1.3 中央處理器 6
1.4 存儲器 9
1.4.1 存儲器地址分配 9
1.4.2 程式存儲器 10
1.4.3 片內數據存儲器 11
1.4.4 片外數據存儲器 14
1.5 MCS-51系列單片機的引腳功能 15
1.6 MCS-51時鐘和CPU時序 17
1.6.1 時鐘電路 17
1.6.2 CPU時序 18
1.7 MCS-51單片機的工作方式 21
1.7.1 復位方式 21
1.7.2 程式執行方式 23
1.7.3 節電工作方式 24
1.7.4 編程和校驗方式 27
1.8 思考與練習 28
第2章 MCS-51彙編語言程式設計
2.1 程式設計語言概述 29
2.2 指令格式和定址方式 29
2.2.1 彙編語言指令格式 30
2.2.2 定址方式 30
2.3 MCS-51單片機的指令系統 35
2.3.1 數據傳送指令 35
2.3.2 算術運算類指令 43
2.3.3 邏輯運算類指令 51
2.3.4 控制轉移指令 55
2.3.5 位操作指令 62
2.4 偽指令 66
2.5 彙編語言程式設計 68
2.5.1 順序程式設計 68
2.5.2 查表程式設計 71
2.5.3 分支程式設計 74
2.5.4 循環程式設計 80
2.5.5 子程式設計 83
2.6 套用舉例 86
2.6.1 巡迴檢測報警裝置 86
2.6.2 單片機測溫系統 87
2.6.3 碼制轉換 87
2.6.4 排序問題 93
2.7 思考與練習 97
第3章 C51程式設計
3.1 C51的標識符和關鍵字 99
3.2 變數和常量 100
3.2.1 常量 100
3.2.2 變數 101
3.3 C51的運算符與表達式 107
3.3.1 算術運算符與表達式 107
3.3.2 邏輯運算符與表達式 108
3.3.3 關係運算符與表達式 109
3.3.4 位運算符與表達式 110
3.3.5 “,”運算符與表達式 111
3.3.6 “?”運算符 111
3.3.7 “sizeof”運算符 111
3.3.8 指針運算符 111
3.3.9 聯合操作運算符 112
3.3.10 類型轉換運算符 112
3.3.11 運算符優先權和結合性 113
3.4 C51構造數據類型 114
3.4.1 數組 114
3.4.2 指針 116
3.4.3 結構與聯合 119
3.4.4 枚舉 122
3.5 C51基本語句 123
3.5.1 賦值語句 123
3.5.2 變數聲明語句 123
3.5.3 表達式語句 124
3.5.4 複合語句 124
3.5.5 條件語句 124
3.5.6 循環語句 126
3.5.7 程式跳轉語句 127
3.5.8 開關語句 129
3.5.9 空語句 131
3.6 C51的流程控制基本結構 131
3.6.1 順序結構 132
3.6.2 選擇結構 132
3.6.3 循環結構 134
3.7 C51函式 135
3.7.1 函式的定義 135
3.7.2 函式的參數和函式的值 137
3.7.3 函式的調用 139
3.8 套用舉例——用C51實現快速傅立葉變換 141
3.9 思考與練習 144
第4章 單片機並行I/O連線埠
4.1 P0口 145
4.2 P1口 147
4.3 P2口 147
4.4 P3口 148
4.5 套用實例 150
4.6 思考與練習 151
第5章 單片機定時器/計數器
5.1 定時器/計數器的結構和原理 152
5.2 定時器/計數器的控制暫存器 153
5.3 定時器/計數器的工作方式 155
5.4 定時器/計數器初始化 157
5.5 套用舉例 160
5.6 思考與練習 161
第6章 MCS-51單片機串列接口
6.1 串列通信概述 163
6.2 串列口功能結構 165
6.2.1 串列口控制暫存器SCON 165
6.2.2 特殊功能暫存器PCON 166
6.3 串列口工作方式 167
6.3.1 方式0 167
6.3.2 方式1 168
6.3.3 方式2 168
6.3.4 方式3 169
6.4 串列口套用實例 169
6.4.1 擴展矩陣鍵盤接口電路 169
6.4.2 串列RS232協定與乙太網通訊協定的轉換 171
6.4.3 主從結構的單片機通信系統收發程式的設計 174
6.5 思考與練習 175
第7章 單片機中斷系統
7.1 中斷系統概述 177
7.2 中斷控制 179
7.2.1 中斷允許暫存器IE 179
7.2.2 中斷優先權暫存器IP 180
7.3 中斷回響過程 182
7.4 中斷回響時間 183
7.5 中斷請求的撤銷 184
7.6 套用舉例 186
7.6.1 主程式初始化 186
7.6.2 中斷服務程式設計 187
7.7 MCS-51對外部中斷源的擴展 189
7.7.1 定時器/計數器擴展為外部中斷源 189
7.7.2 中斷和查詢結合擴展中斷源 189
7.7.3 中斷晶片8259擴展外部中斷源 190
7.8 思考與練習 193
第8章 存儲器的擴展
8.1 MCS-51單片機外部匯流排結構 194
8.1.1 地址解碼方法 195
8.1.2 外部地址鎖存器 198
8.2 程式存儲器擴展 199
8.2.1 EPROM晶片介紹 200
8.2.2 程式存儲器的操作時序 201
8.2.3 典型的EPROM接口電路 202
8.3 數據存儲器擴展 204
8.3.1 常用的靜態RAM(SRAM)晶片 204
8.3.2 外擴數據存儲器的讀寫操作時序 205
8.3.3 典型的外擴數據存儲器的接口電路 207
8.4 EPROM和RAM的綜合擴展 209
8.4.1 接口電路設計 209
8.4.2 工作原理 210
8.5 思考與練習 212
第9章 並行I/O接口的擴展
9.1 I/O擴展概述 213
9.1.1 I/O接口的功能 214
9.1.2 I/O連線埠的編址 215
9.1.3 I/O數據的幾種傳送方式 216
9.2 8255接口晶片 216
9.2.1 8255A晶片介紹 217
9.2.2 單片機和8255A的接口及程式設計 220
9.3 8155接口晶片 222
9.3.1 8155H晶片介紹 222
9.3.2 MCS-51與8155H的接口及程式設計 227
9.4 套用舉例 228
9.5 思考與練習 232
第10章 輸入設備
10.1 鍵盤概述 234
10.1.1 按鍵去抖動 235
10.1.2 鍵盤的分類 236
10.2 鍵盤與單片機的接口 239
10.2.1 獨立式鍵盤與單片機的接口 239
10.2.2 矩陣式鍵盤與單片機的接口 243
10.2.3 串列口擴展鍵盤接口 246
10.3 思考與練習 249
第11章 輸出設備
11.1 發光二極體 250
11.2 LED顯示器接口 251
11.2.1 LED顯示器的結構與工作原理 252
11.2.2 LED顯示器的工作方式 253
11.2.3 LED數碼管的選擇和驅動 255
11.2.4 數碼管的軟體解碼和硬體解碼 256
11.2.5 數碼管套用設計 256
11.3 LCD顯示器接口 259
11.3.1 LCD顯示器工作原理 260
11.3.2 OCM12864液晶顯示模組 262
11.3.3 LCD套用舉例 265
11.4 8279可程式鍵盤/顯示器接口晶片 273
11.4.1 8279可程式晶片簡介 273
11.4.2 8279與單片機接口套用舉例 280
11.5 列印輸出設備 282
11.5.1 微型印表機概述 282
11.5.2 微型印表機的套用 287
11.6 思考與練習 290
第12章 A/D和D/A轉換器
12.1 A/D轉換器 291
12.1.1 A/D轉換器分類 291
12.1.2 A/D轉換器的指標 291
12.1.3 並行AD轉換器ADC0809 292
12.1.4 串列AD轉換器TLC2543 297
12.2 DA轉換器 301
12.2.1 DA轉換器分類 301
12.2.2 DA轉換器的重要指標 302
12.2.3 並行DA轉換器DAC0832 302
12.2.4 串列DA轉換器MAX517 307
12.3 思考與練習 309
第13章 套用實戰案例
13.1 仿真軟體 310
13.1.1 新建檔案和項目 310
13.1.2 程式的下載 311
13.2 直流電動機控制 312
13.2.1 直流電動機工作原理及調速方法 312
13.2.2 PWM調速原理 312
13.2.3 套用電路設計 313
13.2.4 軟體程式設計 314
13.3 步進電動機控制 319
13.3.1 步進電動機原理 319
13.3.2 靜態指標 320
13.3.3 套用電路設計 320
13.3.4 軟體設計 320
13.4 舵機控制 322
13.4.1 工作原理 322
13.4.2 舵機重要指標 322
13.4.3 軟體設計 323
13.5 RS232與VB串列通訊 324
13.5.1 VB串列通訊簡介 325
13.5.2 套用電路設計 325
13.5.3 軟體設計 326
13.6 語音錄放控制 328
13.6.1 ISD2560引腳功能 329
13.6.2 套用電路設計 330
13.6.3 軟體程式設計 331
13.7 短距離無線傳輸 332
13.7.1 模組管腳說明 333
13.7.2 工作模式 334
13.7.3 RF905數據的收發過程 334
13.7.4 軟體設計 335
13.8 思考與練習 339
附錄A ASCII碼字元表
附錄B MCS-51系列單片機指令一覽表
附錄C C51庫函式
參考文獻