第1章 單片機基礎知識 1
1.1 單片機的應用與發展 1
1.1.1 單片機的簡單應用 1
1.1.2 單片機的發展歷史 3
1.2 單片機的分類 6
1.3 AT89C52單片機簡介 7
1.3.1 AT89C52單片機的引腳功能 8
1.3.2 AT89C52單片機的內部結構 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 指令程序和指令執行 27
本章小結 27
思考題與習題 28
第2章 指令繫統及彙編語言程序設計 29
2.1 尋址方式 29
2.2 指令繫統 34
2.2.1 數據傳送指令 34
2.2.2 算術運算指令 37
2.2.3 邏輯運算指令 39
2.2.4 位(布爾)操作類指令 41
2.2.5 控制轉移類指令 42
2.3 彙編語言指令格式及彙編語言程序設計基礎 46
2.3.1 彙編語言執行指令格式 46
2.3.2 彙編偽指令 47
2 單片機原理與應用實例仿真(第4版)
2.3.3 彙編語言的特點 49
2.3.4 彙編語言程序設計的步驟 49
本章小結 49
思考題與習題 49
第3章 單片機的C語言程序設計 51
3.1 C51的程序結構 51
3.2 數據類型、存儲類型及存儲模式 53
3.2.1 數據類型 53
3.2.2 常量和變量 54
3.2.3 C51的存儲類型及存儲模式 55
3.2.4 特殊功能寄存器、並行接口及位變量的定義 58
3.3 運算符、函數及程序流程控制 61
3.3.1 C51的運算符 61
3.3.2 C51的函數 62
3.3.3 C51的流程控制語句 65
3.4 C51的構造數據類型 68
3.4.1 數 組 68
3.4.2 結 構 69
3.4.3 聯 合 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 程序的調試 81
本章小結 85
思考題與習題 85
第4章 單片機的I/O口及Proteus簡介 87
4.1 P0~P3端口的結構與功能 87
4.1.1 P0端口的結構與功能 87
4.1.2 P1端口的結構與功能 88
4.1.3 P2端口的結構與功能 89
4.1.4 P3端口的結構與功能 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相結合的設計和仿真 98
4.3 I/O口應用實例與仿真 105
4.3.1 LED與數碼管簡介 105
4.3.2 LED點陣顯示屏 107
4.3.3 簡易鍵盤的設計 109
4.3.4 I/O口的實例仿真 111
本章小結 125
思考題與習題 125
第5章 單片機的中斷繫統與實例仿真 126
5.1 中斷繫統結構 126
5.1.1 中斷概述 126
5.1.2 中斷繫統結構與中斷控制 127
5.2 中斷的實現過程 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 中斷繫統實例與仿真 138
本章小結 148
思考題與習題 149
第6章 定時/計數器原理及實例仿真 150
6.1 定時/計數器0和1結構和工作原理 150
6.1.1 定時/計數器0和1 150
6.1.2 與定時/計數器0和定時/計數器1相關的特殊功能寄存器
151
6.1.3 定時/計數器0和定時/計數器1的工作模式 153
6.2 定時/計數器2(T/C2)的結構和工作原理 155
4 單片機原理與應用實例仿真(第4版)
6.2.1 與定時/計數器2相關的特殊功能寄存器 155
6.2.2 定時/計數器2的工作模式 156
6.3 仿真實例 160
6.3.1 定時器工作方式實例 160
6.3.2 計數器工作方式實例 166
6.3.3 捕捉模式實例 168
6.3.4 定時/計數器復雜應用實例 174
6.4 看門狗定時器 178
6.4.1 看門狗簡介 178
6.4.2 看門狗的工作原理 179
6.4.3 看門狗的使用 179
6.4.4 高級看門狗 180
本章小結 180
思考題與習題 181
第7章 單片機的串行通信與實例仿真 182
7.1 串行通信概述 182
7.2 串行接口結構與工作原理 184
7.2.1 AT89C52單片機的串行接口結構 184
7.2.2 AT89C52單片機的串行通信過程 185
7.3 串行接口的控制寄存器與工作方式 185
7.3.1 串行接口的控制寄存器 185
7.3.2 串行口的工作方式 188
7.3.3 波特率的確定 191
7.3.4 定時/計數器T2產生波特率 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實現的PC機與單片機的串行通信仿真 216
7.6.4 單片機與計算機的串行通信技術 221
本章小結 232
思考題與習題 232
第8章 單片機擴展技術與實例仿真 234
8.1 存儲器的擴展實例與仿真 234
8.1.1 數據存儲器的擴展 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轉換器 252
8.3.2 A/D轉換器 260
本章小結 267
習題與思考題 267
第9章 單片機高級應用實例 269
9.1 Mifare射頻卡讀/寫器的設計 269
9.1.1 Mifare卡的內部結構 270
9.1.2 Mifare卡讀/寫器主要模塊的設計 272
9.1.3 Mifare卡操作流程 277
9.1.4 FM1702SL密鑰的設計與衝突檢測措施 278
9.1.5 Mifare卡讀/寫軟件設計 280
9.2 基於nRF905的無線傳輸繫統設計 287
9.2.1 nRF905簡介 288
9.2.2 nRF905電路原理圖 292
9.2.3 nRF905固件程序設計 294
本章小結 301
思考題與習題 301
第10章 程序燒錄與樣機開發 302
10.1 項目開發流程 302
10.1.1 項目開發概述 302
10.1.2 需求分析 302
10.1.3 繫統總體設計 305
10.2 硬件電路設計與焊接 306
10.2.1 準備工作 306
10.2.2 小繫統硬件電路焊接 308
6 單片機原理與應用實例仿真(第4版)
10.2.3 電路板焊接效果檢查 309
10.3 軟件開發 310
10.3.1 軟件開發過程 311
10.3.2 構建軟件項目 312
10.3.3 μVision5軟件調試 316
10.4 程序存儲器編程 321
10.4.1 程序存儲器編程方法 321
10.4.2 在線編程原理 322
10.4.3 STC繫列單片機的程序下載 324
10.5 綜合調試 326
10.6 綜合實例———掉電不丟失日歷時鐘 327
10.6.1 繫統功能要求 327
10.6.2 功能分析器件確定 327
10.6.3器件性能介紹 328
10.6.4 硬件設計 334
10.6.5 軟件設計 335
本章小結 337
思考題與習題 337
附錄A 主要單片機生產商網址及相關信息網址 338
附錄B 常用數碼對應關繫表 339
附錄C Proteus V件庫器件說明 340
附錄D C語言的關鍵字 343
附錄E C51的庫函數 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 共陰極數碼管對應的顯示代碼程序 36
例2.9 標號和字節偽指令DB的使用 47
例2.10 偽指令DS、DB、DW 的使用 48
例3.1 將外部數據存儲器2000H~20FFH的內容清零 52
例3.2 求兩個數的和 63
例3.3 設計一個程序來實現以下功能:使用撥動開關模擬從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 並行口直接驅動數碼管顯示的Proteus仿真及C語言程序設計
119
例4.5 動態數碼管顯示的Proteus仿真及C語言程序設計 121
例5.1 外部中斷0的Proteus仿真及C語言程序設計 138
例5.2 外部中斷在不同觸發方式下的Proteus仿真及C語言程序設計 140
例5.3 流水燈Proteus仿真及C語言程序設計 142
例5.4 兩位計數數碼管的Proteus仿真及C語言程序設計 144
例5.5 74LS148外部中斷擴展的Proteus仿真及C語言程序設計 147
例6.1 將例4.1中的軟件延時方式改為使用定時器來延時,其他內容不變
161
例6.2 利用定時器產生脈衝的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數據存儲器並在Proteus中仿真
236
例8.2 AT89C52用一片2764芯片擴展8 KB程序存儲器 241
例8.3 AT89C52通過8255A 並行擴展,模擬交通燈控制並在Proteus中仿真
249
例8.4 利用DAC0832轉換器輸出三角波的Proteus仿真電路和C語言程序設計
257
例8.5 ADC0808電壓模數轉換Proteus仿真電路和C語言程序設計 264