本書以MCS51系列單片機為主要對象,以C語言為主、匯編語言為輔安排全書內(nèi)容,詳細介紹了51系列單片機的結(jié)構(gòu)原理和系統(tǒng)設計,敘述了單片機開發(fā)軟件Keil C51的應用及調(diào)試方法,介紹了單片機應用仿真工具Proteus ISIS,最后一章講述了單片機系統(tǒng)的實際開發(fā)制作過程。本書是再版書,相比第2版,本書從單片機的簡單應用實例講起,并對舊版書的結(jié)構(gòu)、內(nèi)容進行了更新。
書中列舉了大量單片機應用實例,所有實例均仿真通過。本書配套資料中既包含全書的應用實例,還包含30個課外實例供讀者參考選用。本書各章都有小結(jié),并配有習題,多數(shù)習題要求
第1章 單片機基礎知識 1
1.1 單片機的應用與發(fā)展 1
1.1.1 單片機的簡單應用 1
1.1.2 單片機的發(fā)展歷史 3
1.2 單片機的分類 6
1.3 AT89C52單片機簡介 7
1.3.1 AT89C52單片機的引腳功能 8
1.3.2 AT89C52單片機的內(nèi)部結(jié)構(gòu) 9
1.3.3 AT89C52單片機的I/O接口部分和特殊功能部分 16
1.4 AT89C52單片機的時鐘與復位電路 17
1.4.1 復位操作和復位電路 17
1.4.2 振蕩電路和時鐘 19
1.4.3 AT89C52單片機的機器周期 20
1.5 AT89C52單片機的低功耗工作方式 21
1.6 常用的名詞術語和二進制編碼 23
1.7 指令程序和指令執(zhí)行 27
本章小結(jié) 27
思考題與習題 28
第2章 指令系統(tǒng)及匯編語言程序設計 29
2.1 尋址方式 29
2.2 指令系統(tǒng) 34
2.2.1 數(shù)據(jù)傳送指令 34
2.2.2 算術運算指令 37
2.2.3 邏輯運算指令 39
2.2.4 位(布爾)操作類指令 41
2.2.5 控制轉(zhuǎn)移類指令 42
2.3 匯編語言指令格式及匯編語言程序設計基礎 46
2.3.1 匯編語言執(zhí)行指令格式 46
2.3.2 匯編偽指令 47
2 單片機原理與應用實例仿真(第4版)
2.3.3 匯編語言的特點 49
2.3.4 匯編語言程序設計的步驟 49
本章小結(jié) 49
思考題與習題 49
第3章 單片機的C語言程序設計 51
3.1 C51的程序結(jié)構(gòu) 51
3.2 數(shù)據(jù)類型、存儲類型及存儲模式 53
3.2.1 數(shù)據(jù)類型 53
3.2.2 常量和變量 54
3.2.3 C51的存儲類型及存儲模式 55
3.2.4 特殊功能寄存器、并行接口及位變量的定義 58
3.3 運算符、函數(shù)及程序流程控制 61
3.3.1 C51的運算符 61
3.3.2 C51的函數(shù) 62
3.3.3 C51的流程控制語句 65
3.4 C51的構(gòu)造數(shù)據(jù)類型 68
3.4.1 數(shù) 組 68
3.4.2 結(jié) 構(gòu) 69
3.4.3 聯(lián) 合 70
3.4.4 枚 舉 71
3.4.5 指 針 71
3.5 C51實例分析及混合編程 74
3.5.1 C51實例分析 74
3.5.2 混合編程 75
3.6 Keil C51簡介 78
3.6.1 項目文件的建立、設置與目標文件的獲得 78
3.6.2 程序的調(diào)試 81
本章小結(jié) 85
思考題與習題 85
第4章 單片機的I/O口及Proteus簡介 87
4.1 P0~P3端口的結(jié)構(gòu)與功能 87
4.1.1 P0端口的結(jié)構(gòu)與功能 87
4.1.2 P1端口的結(jié)構(gòu)與功能 88
4.1.3 P2端口的結(jié)構(gòu)與功能 89
4.1.4 P3端口的結(jié)構(gòu)與功能 90
4.2 Proteus簡介 91
4.2.1 Proteus ISIS的工作界面 92
4.2.2 Proteus ISIS的基本操作 92
4.2.3 Proteus ISIS的原理圖繪制和仿真 96
4.2.4 Proteus與Keil C相結(jié)合的設計和仿真 98
4.3 I/O口應用實例與仿真 105
4.3.1 LED與數(shù)碼管簡介 105
4.3.2 LED點陣顯示屏 107
4.3.3 簡易鍵盤的設計 109
4.3.4 I/O口的實例仿真 111
本章小結(jié) 125
思考題與習題 125
第5章 單片機的中斷系統(tǒng)與實例仿真 126
5.1 中斷系統(tǒng)結(jié)構(gòu) 126
5.1.1 中斷概述 126
5.1.2 中斷系統(tǒng)結(jié)構(gòu)與中斷控制 127
5.2 中斷的實現(xiàn)過程 132
5.2.1 中斷采樣 133
5.2.2 中斷查詢 133
5.2.3 中斷響應 133
5.2.4 中斷服務 135
5.2.5 中斷返回 136
5.2.6 中斷請求的撤銷 137
5.3 中斷系統(tǒng)實例與仿真 138
本章小結(jié) 148
思考題與習題 149
第6章 定時/計數(shù)器原理及實例仿真 150
6.1 定時/計數(shù)器0和1結(jié)構(gòu)和工作原理 150
6.1.1 定時/計數(shù)器0和1 150
6.1.2 與定時/計數(shù)器0和定時/計數(shù)器1相關的特殊功能寄存器
151
6.1.3 定時/計數(shù)器0和定時/計數(shù)器1的工作模式 153
6.2 定時/計數(shù)器2(T/C2)的結(jié)構(gòu)和工作原理 155
4 單片機原理與應用實例仿真(第4版)
6.2.1 與定時/計數(shù)器2相關的特殊功能寄存器 155
6.2.2 定時/計數(shù)器2的工作模式 156
6.3 仿真實例 160
6.3.1 定時器工作方式實例 160
6.3.2 計數(shù)器工作方式實例 166
6.3.3 捕捉模式實例 168
6.3.4 定時/計數(shù)器復雜應用實例 174
6.4 看門狗定時器 178
6.4.1 看門狗簡介 178
6.4.2 看門狗的工作原理 179
6.4.3 看門狗的使用 179
6.4.4 高級看門狗 180
本章小結(jié) 180
思考題與習題 181
第7章 單片機的串行通信與實例仿真 182
7.1 串行通信概述 182
7.2 串行接口結(jié)構(gòu)與工作原理 184
7.2.1 AT89C52單片機的串行接口結(jié)構(gòu) 184
7.2.2 AT89C52單片機的串行通信過程 185
7.3 串行接口的控制寄存器與工作方式 185
7.3.1 串行接口的控制寄存器 185
7.3.2 串行口的工作方式 188
7.3.3 波特率的確定 191
7.3.4 定時/計數(shù)器T2產(chǎn)生波特率 192
7.4 串行接口的實例與仿真 193
7.5 單片機多機通信 200
7.6 單片機與PC機串行口通信 207
7.6.1 RS232C接口 207
7.6.2 RS485接口 212
7.6.3 Proteus實現(xiàn)的PC機與單片機的串行通信仿真 216
7.6.4 單片機與計算機的串行通信技術 221
本章小結(jié) 232
思考題與習題 232
第8章 單片機擴展技術與實例仿真 234
8.1 存儲器的擴展實例與仿真 234
8.1.1 數(shù)據(jù)存儲器的擴展 234
8.1.2 程序存儲器的擴展 239
8.2 I/O接口的擴展實例與仿真 243
8.2.1 可編程接口芯片8255A 243
8.2.2 8255A的應用及仿真 249
8.3 D/A、A/D接口應用實例與仿真 252
8.3.1 D/A轉(zhuǎn)換器 252
8.3.2 A/D轉(zhuǎn)換器 260
本章小結(jié) 267
習題與思考題 267
第9章 單片機高級應用實例 269
9.1 Mifare射頻卡讀/寫器的設計 269
9.1.1 Mifare卡的內(nèi)部結(jié)構(gòu) 270
9.1.2 Mifare卡讀/寫器主要模塊的設計 272
9.1.3 Mifare卡操作流程 277
9.1.4 FM1702SL密鑰的設計與沖突檢測措施 278
9.1.5 Mifare卡讀/寫軟件設計 280
9.2 基于nRF905的無線傳輸系統(tǒng)設計 287
9.2.1 nRF905簡介 288
9.2.2 nRF905電路原理圖 292
9.2.3 nRF905固件程序設計 294
本章小結(jié) 301
思考題與習題 301
第10章 程序燒錄與樣機開發(fā) 302
10.1 項目開發(fā)流程 302
10.1.1 項目開發(fā)概述 302
10.1.2 需求分析 302
10.1.3 系統(tǒng)總體設計 305
10.2 硬件電路設計與焊接 306
10.2.1 準備工作 306
10.2.2 最小系統(tǒng)硬件電路焊接 308
6 單片機原理與應用實例仿真(第4版)
10.2.3 電路板焊接效果檢查 309
10.3 軟件開發(fā) 310
10.3.1 軟件開發(fā)過程 311
10.3.2 構(gòu)建軟件項目 312
10.3.3 μVision5軟件調(diào)試 316
10.4 程序存儲器編程 321
10.4.1 程序存儲器編程方法 321
10.4.2 在線編程原理 322
10.4.3 STC系列單片機的程序下載 324
10.5 綜合調(diào)試 326
10.6 綜合實例———掉電不丟失日歷時鐘 327
10.6.1 系統(tǒng)功能要求 327
10.6.2 功能分析及主要元器件確定 327
10.6.3 主要元器件性能介紹 328
10.6.4 硬件設計 334
10.6.5 軟件設計 335
本章小結(jié) 337
思考題與習題 337
附錄A 主要單片機生產(chǎn)商網(wǎng)址及相關信息網(wǎng)址 338
附錄B 常用數(shù)碼對應關系表 339
附錄C Proteus VSM 元件庫和常用元器件說明 340
附錄D C語言的關鍵字 343
附錄E C51的庫函數(shù) 345
附錄F MCS 51指令表 356
參考文獻 360
實例目錄
例2.1 寄存器尋址方式 31
例2.2 直接尋址方式 31
例2.3 直接尋址和立即尋址對比 32
例2.4 寄存器間接尋址方式 32
例2.5 變址尋址方式 33
例2.6 相對尋址方式 33
例2.7 位尋址方式 34
例2.8 共陰極數(shù)碼管對應的顯示代碼程序 36
例2.9 標號和字節(jié)偽指令DB的使用 47
例2.10 偽指令DS、DB、DW 的使用 48
例3.1 將外部數(shù)據(jù)存儲器2000H~20FFH的內(nèi)容清零 52
例3.2 求兩個數(shù)的和 63
例3.3 設計一個程序來實現(xiàn)以下功能:使用撥動開關模擬從P3.0口輸入一個脈沖,控制P1口按十六進制加一方式變化。這里選用AT89C52單片機74
例3.4 編寫一個流水燈程序,其中延時程序用匯編語言編寫 77
例4.1 閃爍燈的Proteus仿真及C語言程序設計 111
例4.2 模擬開關燈的Proteus仿真及C語言程序設計 113
例4.3 廣告燈(利用查表方式)的Proteus仿真及程序設計 115
例4.4 I/O 并行口直接驅(qū)動數(shù)碼管顯示的Proteus仿真及C語言程序設計119
例4.5 動態(tài)數(shù)碼管顯示的Proteus仿真及C語言程序設計 121
例5.1 外部中斷0的Proteus仿真及C語言程序設計 138
例5.2 外部中斷在不同觸發(fā)方式下的Proteus仿真及C語言程序設計 140
例5.3 流水燈Proteus仿真及C語言程序設計 142
例5.4 兩位計數(shù)數(shù)碼管的Proteus仿真及C語言程序設計 144
例5.5 74LS148外部中斷擴展的Proteus仿真及C語言程序設計 147
例6.1 將例4.1中的軟件延時方式改為使用定時器來延時,其他內(nèi)容不變 161
例6.2 利用定時器產(chǎn)生脈沖的Proteus仿真及C語言程序設計 163
例6.3 簡易車輛里程表的Proteus仿真及C語言程序設計 166
8 單片機原理與應用實例仿真(第4版)
例6.4 利用定時器2測量脈沖寬度的Proteus仿真及C語言程序設計 168
例6.5 音樂播放的Proteus仿真及C語言程序設計 175
例7.1 串入并出芯片74164的Proteus仿真及C語言程序設計 193
例7.2 串行口自檢的Proteus仿真及C語言程序設計 195
例7.3 單片機與單片機之間的串行通信Proteus仿真及C語言程序設計 196
例7.4 多機通信的Proteus仿真與C語言程序設計 201
例7.5 單片機與PC機串行通信的Proteus仿真及C語言程序設計 209
例7.6 RS485串行通信的Proteus仿真及C語言程序設計 214
例7.7 串行通信的Proteus仿真及C語言程序設計 218
例7.8 Visual Basic 6.0上位機程序控制DS1302時鐘的Proteus仿真 223
例8.1 AT89C52用一片6264芯片擴展8 KB數(shù)據(jù)存儲器并在Proteus中仿真 236
例8.2 AT89C52用一片2764芯片擴展8 KB程序存儲器 241
例8.3 AT89C52通過8255A 并行擴展,模擬交通燈控制并在Proteus中仿真 249
例8.4 利用DAC0832轉(zhuǎn)換器輸出三角波的Proteus仿真電路和C語言程序設計257
例8.5 ADC0808電壓模數(shù)轉(zhuǎn)換Proteus仿真電路和C語言程序設計 264