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