“單片機原理及應(yīng)用”是電氣信息類和機電類專業(yè)的必修課程,也是一門實踐性很強的應(yīng)用技術(shù)課程。本書從實際應(yīng)用出發(fā),將單片機的基本知識與基本原理、C51程序設(shè)計、μVision5集成開發(fā)環(huán)境、實驗板和典型教學(xué)實例有機地結(jié)合在一起,體系完整,便于教學(xué)和自學(xué)。
本書內(nèi)容主要包括單片機概述、51系列單片機的內(nèi)部硬件結(jié)構(gòu)、指令系統(tǒng)與匯編語言程序設(shè)計、C51語言程序設(shè)計、單片機的中斷和定時系統(tǒng)、串行通信、μVision5集成開發(fā)環(huán)境的使用和上機實驗指導(dǎo)等內(nèi)容。在此基礎(chǔ)上,以國產(chǎn)STC8H系列單片機為例,詳細(xì)介紹了擴展功能與接口技術(shù);結(jié)合全國大學(xué)生電子設(shè)計競賽、智能汽車競賽和創(chuàng)新創(chuàng)業(yè)活動,介紹了單片機應(yīng)用系統(tǒng)設(shè)計并給出典型實例。
本書論述嚴(yán)謹(jǐn)、內(nèi)容新穎、圖文并茂、注重基本原理和基本概念的闡述、強調(diào)理論聯(lián)系實際、突出應(yīng)用技術(shù)和實踐。本書可作為高等學(xué)校電氣信息類和機電類專業(yè)本科學(xué)生的教材和教學(xué)參考書,也可作為從事單片機應(yīng)用開發(fā)的工程技術(shù)人員的參考書。
單片機具有體積小、價格低、可靠性高和使用靈活方便的特點,其在各行各業(yè)中得到了廣泛的應(yīng)用。隨著社會經(jīng)濟的發(fā)展,用人單位對大學(xué)生就業(yè)的要求越來越高,如何通過教學(xué)過程使學(xué)生掌握單項成套應(yīng)用技術(shù)就顯得非常重要。編寫本書的目的就是期望通過對本課程的學(xué)習(xí),學(xué)生能夠逐步從單片機入門提高到基本能熟練應(yīng)用,進而掌握單片機應(yīng)用的成套技術(shù)。
為實現(xiàn)此目的,作者根據(jù)多年從事本科生教學(xué)及相關(guān)科研工作的實踐經(jīng)驗,在征求相關(guān)專業(yè)教師、高年級學(xué)生和單片機應(yīng)用專業(yè)技術(shù)人員意見的基礎(chǔ)上,結(jié)合使用單片機教學(xué)實驗箱、教學(xué)實驗板和單片機多功能應(yīng)用板的應(yīng)用情況,總結(jié)本書第1版使用的經(jīng)驗和不足,確定采用STC公司制作的教學(xué)實驗盒、基本實驗樣例,為本書編寫做好基本的準(zhǔn)備工作。
例題從易到難是本書的一大特點。學(xué)習(xí)過單片機的同學(xué)普遍反映能看懂別人編寫的程序,但自己編很難,尤其是較大的程序。對于實際應(yīng)用來說,這也是一大問題。它要求編寫教材不僅要例題多,還要精選例題并且要讓學(xué)生了解編程思路。本書在編寫時,對例題求解過程進行了詳細(xì)的分析和比較,便于學(xué)生自學(xué)和掌握分析思路;并按照章節(jié)的順序,逐步加大例題的難度,直至接近應(yīng)用。
掌握基本知識和基本原理至關(guān)重要。本書第1~3章在簡要介紹單片機應(yīng)用的基礎(chǔ)上,重點介紹單片機的工作原理和匯編語言程序設(shè)計。單片機實際應(yīng)用系統(tǒng)軟件設(shè)計目前大多采用C語言編程,第4章介紹C51語言程序設(shè)計,為后續(xù)章節(jié)學(xué)習(xí)使用C51語言編寫程序提供了基礎(chǔ)知識的準(zhǔn)備。第5章介紹單片機的中斷和定時系統(tǒng)。第6章介紹串行通信接口。單片機教學(xué)重在實踐,第14章介紹μVision5集成開發(fā)環(huán)境的應(yīng)用。第15章介紹上機實驗指導(dǎo)。通過這8章的學(xué)習(xí),學(xué)生應(yīng)能根據(jù)應(yīng)用系統(tǒng)的不同,掌握單片機的內(nèi)部資源及其應(yīng)用,并能完成實驗調(diào)試。
單片機功能強大。初學(xué)者從易開始都難學(xué)懂,這也是先介紹51系列單片機的原因。第7~10章介紹以51系列單片機為內(nèi)核的STC8H系列單片機的資源。學(xué)生熟悉各接口的功能和應(yīng)用場景后,掌握其SFR的應(yīng)用并不難。有效克服了死記硬背和單片機資源過多使人望而生畏的缺點,為學(xué)生掌握高端單片機并應(yīng)用于實際產(chǎn)品開發(fā)打下堅實的基礎(chǔ)。
從工程實踐出發(fā),結(jié)合實際應(yīng)用案例是本書的又一大特點。第11~13章結(jié)合電子設(shè)計競賽和智能汽車競賽介紹了3個典型案例,為學(xué)生在校開展創(chuàng)新創(chuàng)業(yè)等科技活動提供了范例。
本書由汪貴平、龔賢武、雷旭、朱進玉和李立共同編寫。汪貴平負(fù)責(zé)第2版的總體框架和組織,并完成第1章的編寫工作,龔賢武編寫第2、6、12、15章,雷旭編寫第4、9、10、13章,朱進玉編寫第3、11、14章,李立編寫第5、7、8章。STC公司姚永平先生提供了大量的實用資料。在編寫過程中,編者得到了作者單位(長安大學(xué))的支持和同事的幫助。在此對他們和參考文獻作者一并表示誠摯的感謝。
書稿雖經(jīng)反復(fù)討論和修改,但由于作者水平有限,書中難免有錯誤和不妥之處,敬請大家批評指正。意見和建議請發(fā)郵件至gpwang@chdeducn 或xwgong@chdeducn。
第1章單片機概述1
1.1單片機的概念1
1.2單片機的發(fā)展1
1.2.1單片機的發(fā)展趨勢2
1.2.2常用單片機的分類2
1.3單片機的應(yīng)用4
1.3.1單片機的主要特點4
1.3.2單片機的應(yīng)用領(lǐng)域4
1.4單片機應(yīng)用系統(tǒng)的開發(fā)5
1.4.1單片機應(yīng)用系統(tǒng)的硬件構(gòu)成5
1.4.2單片機應(yīng)用系統(tǒng)的開發(fā)過程6
1.5單片機應(yīng)用系統(tǒng)的開發(fā)調(diào)試模式7
1.5.1集成開發(fā)環(huán)境+仿真器+編程器的
開發(fā)模式7
1.5.2集成開發(fā)環(huán)境+ISP/IAP的
開發(fā)模式8
1.6本課程的性質(zhì)和任務(wù)9
習(xí)題9
第2章51系列單片機的硬件結(jié)構(gòu)11
2.1內(nèi)部總體結(jié)構(gòu)11
2.2引腳定義與功能14
2.3存儲器配置17
2.3.1程序存儲器17
2.3.2外部數(shù)據(jù)存儲器19
2.3.3內(nèi)部數(shù)據(jù)存儲器19
2.3.4特殊功能寄存器21
2.4輸入/輸出接口22
2.4.1P0口22
2.4.2P1口24
2.4.3P2口24
2.4.4P3口24
2.5時鐘電路與時序25
2.5.1時鐘電路25
2.5.2單片機的時序單位26
2.6復(fù)位和復(fù)位電路26
2.7工作方式27
2.7.1程序執(zhí)行方式28
2.7.2掉電保護方式28
2.7.380C51的低功耗方式28
習(xí)題30
第3章指令系統(tǒng)與匯編語言程序
設(shè)計32
3.1指令概述32
3.1.1指令格式32
3.1.2指令中用到的標(biāo)識符33
3.2尋址方式33
3.2.1立即尋址33
3.2.2直接尋址34
3.2.3寄存器尋址34
3.2.4寄存器間接尋址35
3.2.5變址尋址35
3.2.6相對尋址36
3.2.7位尋址36
3.3指令系統(tǒng)36
3.3.1指令系統(tǒng)概述36
3.3.2數(shù)據(jù)傳送指令37
3.3.3算術(shù)運算指令40
3.3.4邏輯操作指令43
3.3.5控制轉(zhuǎn)移指令44
3.3.6位操作指令46
3.4偽指令47
3.5匯編語言程序設(shè)計48
3.5.1編寫匯編語言程序的基本格式49
3.5.2運算程序50
3.5.3數(shù)據(jù)的拼拆和轉(zhuǎn)換51
3.5.4多分支轉(zhuǎn)移程序52
3.5.5顯示程序53
習(xí)題55
第4章C51語言程序設(shè)計58
4.1C51語言簡介58
4.1.1C51程序結(jié)構(gòu)58
4.1.2C51程序的編輯和編譯60
4.2C51對C語言的擴展61
4.2.1特殊功能寄存器的定義61
4.2.2數(shù)據(jù)類型63
〖1〗目錄Ⅶ〖1〗Ⅷ新編單片機原理及應(yīng)用第2版4.2.3數(shù)據(jù)存儲空間的定義63
4.2.4地址訪問65
4.2.5函數(shù)的使用66
4.2.6C51指針69
4.2.7庫函數(shù)70
4.2.8關(guān)鍵字71
4.3C51使用技巧71
4.3.1C51與匯編程序接口71
4.3.2C51程序的優(yōu)化75
4.4C51程序設(shè)計方法76
4.4.1C51程序設(shè)計的基本過程76
4.4.2問題分析77
4.4.3方案設(shè)計78
4.4.4編寫代碼79
4.4.5代碼的調(diào)試和測試81
4.4.6C51程序設(shè)計范例81
習(xí)題83
第5章單片機的中斷與定時系統(tǒng)85
5.1中斷系統(tǒng)85
5.1.1中斷的基本概念85
5.1.2中斷源及中斷請求86
5.1.3中斷系統(tǒng)結(jié)構(gòu)86
5.1.4中斷控制86
5.1.5中斷處理過程89
5.1.6中斷系統(tǒng)的應(yīng)用91
5.2定時器/計數(shù)器接口93
5.2.1定時器/計數(shù)器的主要特性93
5.2.2定時器/計數(shù)器T0、T1的結(jié)構(gòu)93
5.2.3定時器/計數(shù)器的控制寄存器93
5.2.4定時器/計數(shù)器的工作方式95
5.2.5定時器/計數(shù)器的初始化編程及
應(yīng)用99
5.2.6定時器/計數(shù)器T2100
5.3中斷及定時系統(tǒng)綜合應(yīng)用106
習(xí)題107
第6章單片機的串行接口及串行
通信110
6.1串行通信基礎(chǔ)110
6.1.1異步串行通信的字符格式110
6.1.2異步串行通信的信號形式111
6.1.3串行通信的數(shù)據(jù)通路形式111
6.1.4串行通信的數(shù)據(jù)傳輸速率111
6.2串行口的結(jié)構(gòu)與工作原理112
6.2.1串行口的結(jié)構(gòu)112
6.2.2串行口的工作原理113
6.3串行口的控制寄存器114
6.3.1串行控制寄存器114
6.3.2電源控制寄存器115
6.3.3中斷允許寄存器115
6.4單片機串行通信的工作方式115
6.4.1串行口工作方式0116
6.4.2串行口工作方式1117
6.4.3串行口工作方式2和方式3121
6.5單片機串行通信接口技術(shù)124
6.5.1常用的標(biāo)準(zhǔn)串行通信接口124
6.5.2單片機串行通信接口126
6.5.3單片機與PC通信接口127
6.5.4單片機與計算機通信程序設(shè)計128
習(xí)題132
第7章STC8H系列單片機硬件
結(jié)構(gòu)134
7.1總體結(jié)構(gòu)134
7.2選型表137
7.3引腳定義與功能137
7.4功能腳切換138
7.4.1功能腳切換相關(guān)寄存器138
7.4.2寄存器切換引腳功能位的定義138
7.5存儲器配置140
7.5.1程序存儲器140
7.5.2數(shù)據(jù)存儲器140
7.5.3特殊功能寄存器141
7.6輸入/輸出接口141
7.6.1I/O口結(jié)構(gòu)圖141
7.6.2I/O口配置144
7.6.3I/O口相關(guān)寄存器1447.7時鐘、復(fù)位與電源管理145
7.7.1系統(tǒng)時鐘控制146
7.7.2內(nèi)部IRC頻率調(diào)整147
7.7.3系統(tǒng)復(fù)位148
7.7.4時鐘停振/省電模式與系統(tǒng)
電源管理149
7.8IAP/EEPROM150
7.8.1EEPROM相關(guān)的SFR150
7.8.2EEPROM的大小及地址152
習(xí)題153
第8章STC8H系列的中斷與定時
系統(tǒng)155
8.1中斷系統(tǒng)155
8.1.1STC8H系列中斷列表156
8.1.2中斷相關(guān)寄存器157
8.1.3中斷允許控制寄存器157
8.1.4中斷請求寄存器160
8.1.5中斷優(yōu)先級寄存器163
8.2定時器/計數(shù)器接口164
8.2.1定時器的相關(guān)寄存器164
8.2.2定時器0/1164
8.2.3定時器2166
8.2.4定時器3/4166
8.2.5掉電喚醒定時器167
8.3綜合應(yīng)用舉例168
8.3.1跑馬燈程序168
8.3.2電子鐘程序169
8.3.3方波信號發(fā)生器程序170
8.3.4開關(guān)次數(shù)計數(shù)程序170
習(xí)題171
第9章單片機的接口擴展技術(shù)173
9.1脈沖寬度調(diào)制技術(shù)173
9.1.1脈沖寬度調(diào)制技術(shù)原理173
9.1.2STC8H系列單片機的PWM
寄存器174
9.1.3PWM時基單元195
9.1.4PWM時鐘/觸發(fā)控制器203
9.1.5PWM捕獲/比較通道212
9.1.6PWM中斷226
9.2模擬量輸入接口技術(shù)226
9.2.1A/D轉(zhuǎn)換原理227
9.2.2STC8H系列單片機A/D接口
原理227
9.3模擬量輸出接口技術(shù)231
9.3.1D/A轉(zhuǎn)換原理231
9.3.2STC8H系列單片機PWM實現(xiàn)D/A
輸出232
9.4綜合應(yīng)用舉例235
9.4.1帶死區(qū)控制的PWM互補輸出235
9.4.2利用ADC第15通道測量外部電壓或
電池電壓235
9.4.3利用PWM實現(xiàn)16位DAC236
習(xí)題237
第10章單片機串行總線擴展技術(shù)239
10.1SPI總線接口技術(shù)239
10.1.1SPI總線原理240
10.1.2SPI相關(guān)的寄存器241
10.1.3SPI接口的數(shù)據(jù)通信方式243
10.1.4SPI模塊配置244
10.1.5數(shù)據(jù)模式時序246
10.2I2C總線接口技術(shù)247
10.2.1I2C總線原理248
10.2.2I2C協(xié)議249
10.2.3STC8H系列單片機I2C
接口原理250
10.3綜合應(yīng)用舉例258
10.3.1SPI單主單從系統(tǒng)
(中斷方式)258
10.3.2I2C主機模式訪問PCF8563259
習(xí)題259
第11章項目一溫度控制系統(tǒng)設(shè)計
實例261
11.1單片機應(yīng)用系統(tǒng)的開發(fā)過程261
11.2可行性分析的主要內(nèi)容261
11.3系統(tǒng)設(shè)計方案262
11.3.1系統(tǒng)的主要功能與性能262
11.3.2硬件結(jié)構(gòu)設(shè)計265
11.3.3軟件結(jié)構(gòu)設(shè)計266
11.4系統(tǒng)調(diào)試267
11.4.1調(diào)試工具267
11.4.2硬件調(diào)試268
11.4.3軟件調(diào)試270
11.4.4模擬調(diào)試272
11.4.5現(xiàn)場調(diào)試272
11.5溫度控制系統(tǒng)設(shè)計274
11.6本章小結(jié)278
習(xí)題278
〖1〗目錄Ⅸ〖1〗Ⅹ新編單片機原理及應(yīng)用第2版第12章項目二基于STC8H8K64的兩輪自平衡車設(shè)計280
12.1兩輪自平衡車的基本構(gòu)造280
12.1.1兩輪自平衡車的機體結(jié)構(gòu)280
12.1.2車模簡介280
12.1.3測速傳感器的安裝281
12.1.4陀螺儀的安裝282
12.2兩輪自平衡車的控制原理282
12.2.1直立控制原理283
12.2.2速度控制原理283
12.2.3轉(zhuǎn)向控制原理284
12.3兩輪自平衡車硬件電路設(shè)計284
12.3.1控制核心板介紹284
12.3.2電源單元285
12.3.3角度檢測單元286
12.3.4車速檢測單元287
12.3.5直流電機驅(qū)動單元288
12.4兩輪自平衡車控制軟件設(shè)計289
12.4.1系統(tǒng)初始化290
12.4.2車模角度和角速度的測量291
12.4.3控制策略及控制算法292
12.5平衡車系統(tǒng)調(diào)試296
12.5.1硬件調(diào)試296
12.5.2軟件調(diào)試296
12.5.3整車調(diào)試297
習(xí)題300
第13章項目三智能汽車競賽電磁車
實例301
13.1電磁車路徑檢測系統(tǒng)設(shè)計301
13.1.1磁場檢測方法301
13.1.2傳感器模塊設(shè)計302
13.1.3信號調(diào)理電路303
13.1.4檢測系統(tǒng)設(shè)計與調(diào)試303
13.2電磁車電機控制系統(tǒng)設(shè)計305
13.2.1機電傳動系統(tǒng)305
13.2.2電機驅(qū)動電路原理307
13.2.3電機驅(qū)動電路設(shè)計309
13.2.4電機轉(zhuǎn)速測量方法315
13.3智能車控制策略318
13.3.1傳感器布局設(shè)計318
13.3.2轉(zhuǎn)向控制策略320
13.3.3速度控制策略321
13.4尋線行駛算法實現(xiàn)322
13.4.1定位算法322
13.4.2基于位置式PID的方向控制323
13.4.3基于增量式PID的速度控制324
13.4.4彎道策略分析324
13.4.5轉(zhuǎn)向舵機的PID控制算法326
13.4.6驅(qū)動電機的PID控制算法327
13.5電磁車系統(tǒng)調(diào)試327
習(xí)題330
第14章μVision5集成開發(fā)環(huán)境的
使用331
14.1μVision5簡介331
14.1.1μVision5軟件的下載331
14.1.2μVision5軟件的安裝332
14.1.3μVision5軟件工具的界面335
14.2使用μVision5創(chuàng)建自己的應(yīng)用341
14.2.1添加STC系列單片機數(shù)據(jù)庫341
14.2.2啟動μVision5并創(chuàng)建一個項目343
14.2.3新建一個源文件346
14.2.4為目標(biāo)設(shè)置工具選項347
14.2.5編譯項目并生成HEX文件348
14.3使用μVision5調(diào)試應(yīng)用程序349
14.3.1調(diào)試模式的設(shè)置350
14.3.2啟動調(diào)試模式351
14.3.3常用調(diào)試窗口352
14.3.4片上資源的仿真354
14.3.5運行調(diào)試圖標(biāo)356
14.4調(diào)試技巧356
14.4.1KeilC51與MDK共存357
14.4.2自定義快捷鍵357
14.4.3文本編輯相關(guān)設(shè)置357
14.4.4代碼格式化工具358
習(xí)題360
第15章單片機實驗指導(dǎo)361
15.1STC8H實驗板使用說明361
15.1.1STC8H實驗板外觀圖361
15.1.2STC8H實驗板元器件分布圖361
15.1.3STC8H實驗板元器件361
15.2實驗輔助軟件介紹363
15.2.1在系統(tǒng)編程軟件的使用363
15.2.2stc-isp-15xx-v6.87H串口助手的
使用363
15.3實驗指導(dǎo)365
15.3.1實驗一使用μVision設(shè)計、調(diào)試
匯編語言程序365
15.3.2實驗二使用μVision設(shè)計、
調(diào)試C51語言程序367
15.3.3實驗三跑馬燈實驗368
15.3.4實驗四單片機定時器/計數(shù)器的
應(yīng)用編程與調(diào)試369
15.3.5實驗五七段數(shù)碼管電子鐘顯示
實驗370
15.3.6實驗六單片機外部中斷實驗371
15.3.7實驗七矩陣鍵盤實驗371
15.3.8實驗八串行通信實驗373
15.3.9實驗九利用ADC第15通道測量外
部電壓或電池電壓375
15.3.10實驗十PWM模塊的應(yīng)用編程與
調(diào)試376
參考文獻377