本書以80C51系列中的89系列單片機為例介紹單片機的硬件結(jié)構(gòu)、工作原理、指令系統(tǒng)、匯編語言及C語言程序設計、接口技術(shù)、中斷系統(tǒng)及單片機應用等內(nèi)容。主要內(nèi)容包括:概況、單片機結(jié)構(gòu)及原理、指令系統(tǒng)、匯編語言程序設計、C51語言程序及開發(fā)環(huán)境、定時/計數(shù)器、80C51的串行接口、中斷系統(tǒng)、單片機的系統(tǒng)擴展、接口技術(shù)、單片機應用系統(tǒng)的設計與開發(fā)等。本書在各章中對關鍵性內(nèi)容都結(jié)合實例予以說明,并附大量思考題和習題,配套電子課件、程序代碼、參考答案等。
張迎新,解放軍裝備指揮技術(shù)學院教授,長期從事電子系統(tǒng)設計領域的教學和科研工作,擁有三十余年一線教學經(jīng)驗,負責了多項***、全軍、省部級科研和教研項目,出版過多部著作,教學和寫作經(jīng)驗豐富。
目 錄
第1章 概述 (1)
1.1 單片機發(fā)展概況 (1)
1.1.1 單片機的發(fā)展歷史 (1)
1.1.2 單片機的組成及特點 (3)
1.1.3 單片機與嵌入式系統(tǒng) (4)
1.2 80C51系列單片機簡介 (5)
1.2.1 80C51系列單片機的發(fā)展 (5)
1.2.2 AT89系列單片機的特點及分類 (6)
1.3 其它常用單片機系列簡介 (7)
1.3.1 低端產(chǎn)品概述 (7)
1.3.2 高端產(chǎn)品概述 (8)
1.3 單片機基礎知識 (9)
1.3.1 數(shù)制與編碼 (9)
1.3.2 計算機的基本組成電路 (12)
1.3.3 存儲器簡介 (15)
思考與練習 (19)
第2章 單片機結(jié)構(gòu)及原理 (20)
2.1 單片機結(jié)構(gòu) (20)
2.1.1 單片機組成及結(jié)構(gòu) (20)
2.1.2 引腳定義及功能 (23)
2.2 80C51的存儲器 (26)
2.2.1 存儲器結(jié)構(gòu)和地址空間 (26)
2.2.2 程序存儲器 (27)
2.2.3 數(shù)據(jù)存儲器 (28)
2.3 特殊功能寄存器SFR (30)
2.3.1 80C51系列的SFR (30)
2.3.2 SFR地址分布及尋址 (31)
2.3.3 SFR的功能與作用 (33)
2.4 單片機的工作原理 (36)
2.4.1 指令與程序概述 (36)
2.4.2 CPU的工作原理 (36)
2.4.3 單片機執(zhí)行程序過程 (38)
2.5 輸入/輸出端口結(jié)構(gòu) (40)
2.5.1 4個I/O端口的主要異同點 (40)
2.5.2 P0口 (41)
2.5.3 P1口 (42)
2.5.4 P2口 (43)
2.5.5 P3口 (44)
2.6 時序及時鐘電路 (45)
2.6.1 CPU時序及有關概念 (45)
2.6.2 振蕩器和時鐘電路 (46)
2.6.3 80C51的指令時序 (47)
2.7 復位和復位電路 (48)
2.7.1 內(nèi)部復位信號的產(chǎn)生 (48)
2.7.2 復位狀態(tài) (48)
2.7.3 外部復位電路設計 (49)
2.8 80C51系列單片機的低功耗方式 (50)
2.8.1 電源控制寄存器PCON (50)
2.8.2 待機方式 (50)
2.8.3 掉電方式 (51)
思考與練習 (52)
第3章 指令系統(tǒng) (53)
3.1 指令系統(tǒng)簡介 (53)
3.2 尋 址 方 式 (54)
3.2.1 符號約定 (54)
3.2.2 尋址方式說明 (55)
3.3 指令系統(tǒng)分類介紹 (60)
3.3.1 數(shù)據(jù)傳送類指令 (60)
3.3.2 算術(shù)運算類指令 (65)
3.3.3 邏輯操作類指令 (69)
3.3.4 控制轉(zhuǎn)移類指令 (71)
3.3.5 位操作類指令 (75)
思考與練習 (77)
第4章 匯編語言程序設計 (81)
4.1 概述 (81)
4.1.1 程序設計語言 (81)
4.1.2 匯編語言規(guī)范 (82)
4.1.3 匯編語言程序設計步驟 (85)
4.2 匯編語言程序設計舉例 (86)
4.2.1 順序程序設計 (86)
4.2.2 循環(huán)程序設計 (87)
4.2.3 分支程序設計 (88)
4.2.4 查表程序設計 (92)
4.2.5 子程序設計 (94)
思考與練習 (98)
第5章 C51語言程序及開發(fā)環(huán)境 (101)
5.1 C51語言基礎知識 (101)
5.1.1 C51語言簡介 (101)
5.1.2 C51語言的運算符及表達式 (101)
5.1.3 C51語言的程序結(jié)構(gòu) (103)
5.1.4 C51語言的流程控制語句 (104)
5.2 C51語言對通用C語言的擴展 (106)
5.2.1 數(shù)據(jù)類型 (106)
5.2.2 數(shù)據(jù)的存儲類型 (108)
5.2.3 指針 (110)
5.2.4 函數(shù) (111)
5.2.5 C51語言對單片機硬件的訪問 (113)
5.3 C51語言編程舉例 (115)
5.4 KEIL C51軟件開發(fā)環(huán)境 (119)
5.4.1 Keil軟件簡介 (119)
5.4.2 項目的建立與設置 (121)
5.4.3 運行調(diào)試 (124)
5.5 PROTEUS 硬件仿真環(huán)境 (126)
5.5.1 Proteus軟件簡介 (126)
5.5.2 Proteus ISIS窗口功能 (126)
5.5.3 Proteus ISIS的基本操作 (128)
思考題與練習題 (134)
第6章 定時/計數(shù)器 (135)
6.1 定時/計數(shù)器T0、T1概述 (135)
6.1.1 定時器/計數(shù)器T0、T1的結(jié)構(gòu) (135)
6.1.2 定時/計數(shù)器的原理 (136)
6.2 定時/計數(shù)器的控制方法 (136)
6.2.1 定時/計數(shù)器寄存器 (136)
6.2.2 定時/計數(shù)器的初始化 (138)
6.2.3 定時/計數(shù)器初值的確定方法 (138)
6.3 定時/計數(shù)器T0、T1的工作方式 (139)
6.3.1 方式0 (139)
6.3.2 方式1 (139)
6.3.3 方式2 (140)
6.3.4 方式3 (140)
6.4 定時器T0、T1應用舉例 (142)
6.4.1 定時器應用舉例 (142)
6.4.2 計數(shù)器應用舉例 (143)
6.4.3 門控位應用舉例 (145)
6.5 定時/計數(shù)器T2 (147)
6.5.1 T2的寄存器 (147)
6.5.2 定時器T2的工作方式 (149)
6.5.3 應用例題 (153)
6.6 定時器T3― WDT監(jiān)視定時器 (155)
6.6.1 WDT的功能及應用特點 (155)
6.6.2 輔助寄存器AUXR (155)
思考與練習 (156)
第7章 80C51的串行接口 (157)
7.1 串行通信概述 (157)
7.1.1 同步通信和異步通信方式 (157)
7.1.2 串行通信的數(shù)據(jù)傳送速率 (158)
7.1.3 串行通信的方式 (158)
7.1.4 通信協(xié)議 (159)
7.2 80C51串行口簡介 (159)
7.2.1 串行口結(jié)構(gòu)與工作原理 (159)
7.2.2 串行口控制寄存器SCON (160)
7.2.3 80C51的幀格式 (161)
7.2.4 波特率的設置 (162)
7.3 串行通信工作方式 (163)
7.3.1 方式0 (164)
7.3.2 方式1 (164)
7.3.3 方式2和方式3 (165)
7.3.4 多機通信 (165)
7.4 串行口應用舉例 (166)
7.4.1 用串行口擴展I/O口 (167)
7.4.2 用串行口進行異步通信 (170)
思考與練習 (177)
第8章 中斷系統(tǒng) (178)
8.1 概述 (178)
8.1.1 中斷的概念 (178)
8.1.2 引進中斷技術(shù)的優(yōu)點 (178)
8.1.3 中斷源 (179)
8.1.4 中斷系統(tǒng)的功能 (179)
8.2 AT89S51單片機的中斷系統(tǒng) (181)
8.2.1 中斷系統(tǒng)的結(jié)構(gòu) (181)
8.2.2 中斷源及中斷入口 (181)
8.2.3 與中斷控制有關的寄存器 (183)
8.3 中斷處理過程 (186)
8.3.1 中斷響應 (186)
8.3.2 中斷處理 (187)
8.3.3 中斷返回 (188)
8.3.4 中斷請求的撤除 (188)
8.3.5 中斷響應時間 (189)
8.3.6 擴充外中斷源 (189)
8.4 中斷程序的設計與應用 (191)
8.4.1 中斷程序的一般設計方法 (191)
8.4.2 中斷程序應用舉例 (193)
思考與練習 (201)
第9章 單片機的系統(tǒng)擴展 (202)
9.1 并行擴展概述 (202)
9.1.1 系統(tǒng)擴展常用接口芯片 (202)
9.1.2 外部并行擴展總線 (204)
9.1.3 并行擴展的尋址方法 (205)
9.2 存儲器的并行擴展 (206)
9.2.1 數(shù)據(jù)存儲器擴展概述 (206)
9.2.2 訪問片外數(shù)據(jù)存儲器的操作時序 (206)
9.2.3 數(shù)據(jù)存儲器擴展舉例 (207)
9.3 并行I/O接口的擴展 (208)
9.3.1 擴展并行I/O口簡述 (208)
9.3.2 簡單并行I /O口的擴展 (209)
9.4 串行擴展概述 (210)
9.4.1 常用串行總線與串行接口簡介 (211)
9.4.2 單片機串行擴展的模擬技術(shù) (214)
9.4.3 串行擴展的主要特點 (214)
9.5 I2C總線 (215)
9.5.1 I2C總線的組成及基本工作原理 (215)
9.5.2 I2C總線的傳輸時序 (215)
9.5.3 I2C總線的通用模擬軟件包 (217)
9.5.4 I2C總線應用舉例 (223)
9.6 擴展數(shù)/模轉(zhuǎn)換器 (227)
9.6.1 數(shù)/模轉(zhuǎn)換器簡介 (228)
9.6.2 數(shù)/模轉(zhuǎn)換電路原理 (228)
9.6.3 D/A轉(zhuǎn)換器的主要技術(shù)指標 (229)
9.6.4 并行D/A轉(zhuǎn)換器 (230)
9.7 擴展模/數(shù)轉(zhuǎn)換器 (233)
9.7.1 模/數(shù)轉(zhuǎn)換器簡介 (233)
9.7.2 模/數(shù)轉(zhuǎn)換器的主要技術(shù)指標 (234)
9.7.3 逐次逼近式A/D轉(zhuǎn)換器 (235)
9.7.4 雙積分A/D轉(zhuǎn)換器 (238)
9.7.5 串行A/D轉(zhuǎn)換器 (242)
思考與練習 (245)
第10章 接口技術(shù) (247)
10.1 鍵盤接口 (247)
10.1.1 鍵盤工作原理 (247)
10.1.2 獨立式按鍵 (248)
10.1.3 行列式鍵盤 (251)
10.2 顯示器接口 (258)
10.2.1 LED顯示器的結(jié)構(gòu)與原理 (258)
10.2.2 LED靜態(tài)顯示方式 (259)
10.2.3 LED動態(tài)顯示方式 (260)
10.2.4 液晶顯示器概述 (263)
10.2.5 字符型液晶顯示模塊LCM的組成及原理 (264)
10.2.6 字符型液晶顯示模塊LCM的引腳及說明 (265)
10.2.7 LCM的指令 (266)
10.2.8 LCM的復位及初始化 (268)
10.2.9 LCM的接口及應用舉例 (269)
10.3 功率驅(qū)動器件及接口電路 (277)
10.3.1 輸出接口的隔離技術(shù) (277)
10.3.2 直流負載驅(qū)動電路 (278)
10.3.3 晶閘管負載驅(qū)動電路 (279)
10.3.4 繼電器接口電路 (280)
10.3.5 固態(tài)繼電器接口電路 (281)
10.4 打印機接口 (281)
10.4.1 微型打印機簡介 (282)
10.4.2 字符代碼及打印命令 (283)
10.4.3 打印機與單片機接口舉例 (284)
思考與練習 (286)
第11章 單片機應用系統(tǒng)的設計與開發(fā) (287)
11.1 應用系統(tǒng)研制過程 (287)
11.1.1 總體方案設計 (287)
11.1.2 硬件設計 (288)
11.1.3 軟件設計 (290)
11.2 開發(fā)工具和開發(fā)方法 (292)
11.2.1 開發(fā)工具 (292)
11.2.2 開發(fā)方法 (294)
11.3 恒溫箱溫度控制監(jiān)測系統(tǒng) (295)
11.3.1 題目分析 (296)
11.3.2 硬件設計 (296)
11.4.3 軟件設計 (297)
11.4 PC機與單片機間的串行通信設計 (301)
11.4.1 RS-232C標準接口 (301)
11.4.2 單片機與PC機之間的電平轉(zhuǎn)換芯片 (302)
11.4.3 PC機與單片機串行通信應用實例 (302)
11.5 步進電機控制設計 (309)
11.5.1 步進電機的工作原理 (309)
11.5.2 步進電機的控制方法 (309)
11.5.3 步進電機控制應用舉例 (310)
思考與練習 (316)
附錄A 80C51指令表 (316)
附錄B 各數(shù)制對照表 (321)
附錄C ASCII(美國標準信息交換碼)表 (322)
附錄D 二進制邏輯單元圖形符號對照表 (316)
附錄E 常用芯片引腳圖 (324)
參考文獻 (326)