“單片機原理及應用”是電氣信息類和機電類專業(yè)的必修課程,也是一門實踐性很強的應用技術課程。本書從實際應用出發(fā),將單片機的基本知識與基本原理、C51程序設計、μVision5集成開發(fā)環(huán)境、實驗板和典型教學實例有機地結合在一起,體系完整,便于教學和自學。
本書內(nèi)容主要包括單片機概述、51系列單片機的內(nèi)部硬件結構、指令系統(tǒng)與匯編語言程序設計、C51語言程序設計、單片機的中斷和定時系統(tǒng)、串行通信、μVision5集成開發(fā)環(huán)境的使用和上機實驗指導等內(nèi)容。在此基礎上,以國產(chǎn)STC8H系列單片機為例,詳細介紹了擴展功能與接口技術;結合全國大學生電子設計競賽、智能汽車競賽和創(chuàng)新創(chuàng)業(yè)活動,介紹了單片機應用系統(tǒng)設計并給出典型實例。
本書論述嚴謹、內(nèi)容新穎、圖文并茂、注重基本原理和基本概念的闡述、強調(diào)理論聯(lián)系實際、突出應用技術和實踐。本書可作為高等學校電氣信息類和機電類專業(yè)本科學生的教材和教學參考書,也可作為從事單片機應用開發(fā)的工程技術人員的參考書。
單片機具有體積小、價格低、可靠性高和使用靈活方便的特點,其在各行各業(yè)中得到了廣泛的應用。隨著社會經(jīng)濟的發(fā)展,用人單位對大學生就業(yè)的要求越來越高,如何通過教學過程使學生掌握單項成套應用技術就顯得非常重要。編寫本書的目的就是期望通過對本課程的學習,學生能夠逐步從單片機入門提高到基本能熟練應用,進而掌握單片機應用的成套技術。
為實現(xiàn)此目的,作者根據(jù)多年從事本科生教學及相關科研工作的實踐經(jīng)驗,在征求相關專業(yè)教師、高年級學生和單片機應用專業(yè)技術人員意見的基礎上,結合使用單片機教學實驗箱、教學實驗板和單片機多功能應用板的應用情況,總結本書第1版使用的經(jīng)驗和不足,確定采用STC公司制作的教學實驗盒、基本實驗樣例,為本書編寫做好基本的準備工作。
例題從易到難是本書的一大特點。學習過單片機的同學普遍反映能看懂別人編寫的程序,但自己編很難,尤其是較大的程序。對于實際應用來說,這也是一大問題。它要求編寫教材不僅要例題多,還要精選例題并且要讓學生了解編程思路。本書在編寫時,對例題求解過程進行了詳細的分析和比較,便于學生自學和掌握分析思路;并按照章節(jié)的順序,逐步加大例題的難度,直至接近應用。
掌握基本知識和基本原理至關重要。本書第1~3章在簡要介紹單片機應用的基礎上,重點介紹單片機的工作原理和匯編語言程序設計。單片機實際應用系統(tǒng)軟件設計目前大多采用C語言編程,第4章介紹C51語言程序設計,為后續(xù)章節(jié)學習使用C51語言編寫程序提供了基礎知識的準備。第5章介紹單片機的中斷和定時系統(tǒng)。第6章介紹串行通信接口。單片機教學重在實踐,第14章介紹μVision5集成開發(fā)環(huán)境的應用。第15章介紹上機實驗指導。通過這8章的學習,學生應能根據(jù)應用系統(tǒng)的不同,掌握單片機的內(nèi)部資源及其應用,并能完成實驗調(diào)試。
單片機功能強大。初學者從易開始都難學懂,這也是先介紹51系列單片機的原因。第7~10章介紹以51系列單片機為內(nèi)核的STC8H系列單片機的資源。學生熟悉各接口的功能和應用場景后,掌握其SFR的應用并不難。有效克服了死記硬背和單片機資源過多使人望而生畏的缺點,為學生掌握高端單片機并應用于實際產(chǎn)品開發(fā)打下堅實的基礎。
從工程實踐出發(fā),結合實際應用案例是本書的又一大特點。第11~13章結合電子設計競賽和智能汽車競賽介紹了3個典型案例,為學生在校開展創(chuàng)新創(chuàng)業(yè)等科技活動提供了范例。
本書由汪貴平、龔賢武、雷旭、朱進玉和李立共同編寫。汪貴平負責第2版的總體框架和組織,并完成第1章的編寫工作,龔賢武編寫第2、6、12、15章,雷旭編寫第4、9、10、13章,朱進玉編寫第3、11、14章,李立編寫第5、7、8章。STC公司姚永平先生提供了大量的實用資料。在編寫過程中,編者得到了作者單位(長安大學)的支持和同事的幫助。在此對他們和參考文獻作者一并表示誠摯的感謝。
書稿雖經(jīng)反復討論和修改,但由于作者水平有限,書中難免有錯誤和不妥之處,敬請大家批評指正。意見和建議請發(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單片機的應用4
1.3.1單片機的主要特點4
1.3.2單片機的應用領域4
1.4單片機應用系統(tǒng)的開發(fā)5
1.4.1單片機應用系統(tǒng)的硬件構成5
1.4.2單片機應用系統(tǒng)的開發(fā)過程6
1.5單片機應用系統(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ì)和任務9
習題9
第2章51系列單片機的硬件結構11
2.1內(nèi)部總體結構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復位和復位電路26
2.7工作方式27
2.7.1程序執(zhí)行方式28
2.7.2掉電保護方式28
2.7.380C51的低功耗方式28
習題30
第3章指令系統(tǒng)與匯編語言程序
設計32
3.1指令概述32
3.1.1指令格式32
3.1.2指令中用到的標識符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算術運算指令40
3.3.4邏輯操作指令43
3.3.5控制轉移指令44
3.3.6位操作指令46
3.4偽指令47
3.5匯編語言程序設計48
3.5.1編寫匯編語言程序的基本格式49
3.5.2運算程序50
3.5.3數(shù)據(jù)的拼拆和轉換51
3.5.4多分支轉移程序52
3.5.5顯示程序53
習題55
第4章C51語言程序設計58
4.1C51語言簡介58
4.1.1C51程序結構58
4.1.2C51程序的編輯和編譯60
4.2C51對C語言的擴展61
4.2.1特殊功能寄存器的定義61
4.2.2數(shù)據(jù)類型63
〖1〗目錄Ⅶ〖1〗Ⅷ新編單片機原理及應用第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關鍵字71
4.3C51使用技巧71
4.3.1C51與匯編程序接口71
4.3.2C51程序的優(yōu)化75
4.4C51程序設計方法76
4.4.1C51程序設計的基本過程76
4.4.2問題分析77
4.4.3方案設計78
4.4.4編寫代碼79
4.4.5代碼的調(diào)試和測試81
4.4.6C51程序設計范例81
習題83
第5章單片機的中斷與定時系統(tǒng)85
5.1中斷系統(tǒng)85
5.1.1中斷的基本概念85
5.1.2中斷源及中斷請求86
5.1.3中斷系統(tǒng)結構86
5.1.4中斷控制86
5.1.5中斷處理過程89
5.1.6中斷系統(tǒng)的應用91
5.2定時器/計數(shù)器接口93
5.2.1定時器/計數(shù)器的主要特性93
5.2.2定時器/計數(shù)器T0、T1的結構93
5.2.3定時器/計數(shù)器的控制寄存器93
5.2.4定時器/計數(shù)器的工作方式95
5.2.5定時器/計數(shù)器的初始化編程及
應用99
5.2.6定時器/計數(shù)器T2100
5.3中斷及定時系統(tǒng)綜合應用106
習題107
第6章單片機的串行接口及串行
通信110
6.1串行通信基礎110
6.1.1異步串行通信的字符格式110
6.1.2異步串行通信的信號形式111
6.1.3串行通信的數(shù)據(jù)通路形式111
6.1.4串行通信的數(shù)據(jù)傳輸速率111
6.2串行口的結構與工作原理112
6.2.1串行口的結構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單片機串行通信接口技術124
6.5.1常用的標準串行通信接口124
6.5.2單片機串行通信接口126
6.5.3單片機與PC通信接口127
6.5.4單片機與計算機通信程序設計128
習題132
第7章STC8H系列單片機硬件
結構134
7.1總體結構134
7.2選型表137
7.3引腳定義與功能137
7.4功能腳切換138
7.4.1功能腳切換相關寄存器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口結構圖141
7.6.2I/O口配置144
7.6.3I/O口相關寄存器1447.7時鐘、復位與電源管理145
7.7.1系統(tǒng)時鐘控制146
7.7.2內(nèi)部IRC頻率調(diào)整147
7.7.3系統(tǒng)復位148
7.7.4時鐘停振/省電模式與系統(tǒng)
電源管理149
7.8IAP/EEPROM150
7.8.1EEPROM相關的SFR150
7.8.2EEPROM的大小及地址152
習題153
第8章STC8H系列的中斷與定時
系統(tǒng)155
8.1中斷系統(tǒng)155
8.1.1STC8H系列中斷列表156
8.1.2中斷相關寄存器157
8.1.3中斷允許控制寄存器157
8.1.4中斷請求寄存器160
8.1.5中斷優(yōu)先級寄存器163
8.2定時器/計數(shù)器接口164
8.2.1定時器的相關寄存器164
8.2.2定時器0/1164
8.2.3定時器2166
8.2.4定時器3/4166
8.2.5掉電喚醒定時器167
8.3綜合應用舉例168
8.3.1跑馬燈程序168
8.3.2電子鐘程序169
8.3.3方波信號發(fā)生器程序170
8.3.4開關次數(shù)計數(shù)程序170
習題171
第9章單片機的接口擴展技術173
9.1脈沖寬度調(diào)制技術173
9.1.1脈沖寬度調(diào)制技術原理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模擬量輸入接口技術226
9.2.1A/D轉換原理227
9.2.2STC8H系列單片機A/D接口
原理227
9.3模擬量輸出接口技術231
9.3.1D/A轉換原理231
9.3.2STC8H系列單片機PWM實現(xiàn)D/A
輸出232
9.4綜合應用舉例235
9.4.1帶死區(qū)控制的PWM互補輸出235
9.4.2利用ADC第15通道測量外部電壓或
電池電壓235
9.4.3利用PWM實現(xiàn)16位DAC236
習題237
第10章單片機串行總線擴展技術239
10.1SPI總線接口技術239
10.1.1SPI總線原理240
10.1.2SPI相關的寄存器241
10.1.3SPI接口的數(shù)據(jù)通信方式243
10.1.4SPI模塊配置244
10.1.5數(shù)據(jù)模式時序246
10.2I2C總線接口技術247
10.2.1I2C總線原理248
10.2.2I2C協(xié)議249
10.2.3STC8H系列單片機I2C
接口原理250
10.3綜合應用舉例258
10.3.1SPI單主單從系統(tǒng)
(中斷方式)258
10.3.2I2C主機模式訪問PCF8563259
習題259
第11章項目一溫度控制系統(tǒng)設計
實例261
11.1單片機應用系統(tǒng)的開發(fā)過程261
11.2可行性分析的主要內(nèi)容261
11.3系統(tǒng)設計方案262
11.3.1系統(tǒng)的主要功能與性能262
11.3.2硬件結構設計265
11.3.3軟件結構設計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)設計274
11.6本章小結278
習題278
〖1〗目錄Ⅸ〖1〗Ⅹ新編單片機原理及應用第2版第12章項目二基于STC8H8K64的兩輪自平衡車設計280
12.1兩輪自平衡車的基本構造280
12.1.1兩輪自平衡車的機體結構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轉向控制原理284
12.3兩輪自平衡車硬件電路設計284
12.3.1控制核心板介紹284
12.3.2電源單元285
12.3.3角度檢測單元286
12.3.4車速檢測單元287
12.3.5直流電機驅(qū)動單元288
12.4兩輪自平衡車控制軟件設計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
習題300
第13章項目三智能汽車競賽電磁車
實例301
13.1電磁車路徑檢測系統(tǒng)設計301
13.1.1磁場檢測方法301
13.1.2傳感器模塊設計302
13.1.3信號調(diào)理電路303
13.1.4檢測系統(tǒng)設計與調(diào)試303
13.2電磁車電機控制系統(tǒng)設計305
13.2.1機電傳動系統(tǒng)305
13.2.2電機驅(qū)動電路原理307
13.2.3電機驅(qū)動電路設計309
13.2.4電機轉速測量方法315
13.3智能車控制策略318
13.3.1傳感器布局設計318
13.3.2轉向控制策略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轉向舵機的PID控制算法326
13.4.6驅(qū)動電機的PID控制算法327
13.5電磁車系統(tǒng)調(diào)試327
習題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)建自己的應用341
14.2.1添加STC系列單片機數(shù)據(jù)庫341
14.2.2啟動μVision5并創(chuàng)建一個項目343
14.2.3新建一個源文件346
14.2.4為目標設置工具選項347
14.2.5編譯項目并生成HEX文件348
14.3使用μVision5調(diào)試應用程序349
14.3.1調(diào)試模式的設置350
14.3.2啟動調(diào)試模式351
14.3.3常用調(diào)試窗口352
14.3.4片上資源的仿真354
14.3.5運行調(diào)試圖標356
14.4調(diào)試技巧356
14.4.1KeilC51與MDK共存357
14.4.2自定義快捷鍵357
14.4.3文本編輯相關設置357
14.4.4代碼格式化工具358
習題360
第15章單片機實驗指導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實驗指導365
15.3.1實驗一使用μVision設計、調(diào)試
匯編語言程序365
15.3.2實驗二使用μVision設計、
調(diào)試C51語言程序367
15.3.3實驗三跑馬燈實驗368
15.3.4實驗四單片機定時器/計數(shù)器的
應用編程與調(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模塊的應用編程與
調(diào)試376
參考文獻377