前 言
伴隨著國(guó)民經(jīng)濟(jì)的高速發(fā)展,人們對(duì)高等教育本質(zhì)的理解不斷深入,相關(guān)課程更加注重對(duì)工程實(shí)踐場(chǎng)景的構(gòu)建;同時(shí),近幾年對(duì)機(jī)械電子工程專業(yè)學(xué)生工程技能水平的要求也在不斷提升;這就需要有知識(shí)性更系統(tǒng)、實(shí)踐性更突出的微機(jī)原理與應(yīng)用類教材。
針對(duì)以上情況,我們組織一線教師,總結(jié)和分析了本書第1版的優(yōu)點(diǎn)和不足,提出了第2版教材的修訂計(jì)劃。本次再版,充分考慮了各使用院校教師和學(xué)生的反饋意見和建議,并結(jié)合我們課程團(tuán)隊(duì)在課程建設(shè)、教學(xué)實(shí)踐中的新想法和新思路,對(duì)原教材內(nèi)容做了更新、補(bǔ)充與完善。
本書以專業(yè)基礎(chǔ)知識(shí)為背景,以實(shí)踐教學(xué)過程為載體,著眼于學(xué)生對(duì)理論知識(shí)的應(yīng)用能力和對(duì)基本工程問題的解決能力,培養(yǎng)學(xué)生良好的工程素養(yǎng)。
此次修訂中,在秉承原書風(fēng)格的基礎(chǔ)上,對(duì)以下幾個(gè)方面做了修改,特此說明:
* 在第11章中,更改和增加了有關(guān)單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)的實(shí)例。刪除了原來例11-5的內(nèi)容,增加了兩個(gè)新的實(shí)例作為例11-5和例11-6,使實(shí)例與機(jī)械電子工程專業(yè)的結(jié)合更加緊密。
* 在第12章中,加入了"多模塊及其C51語言與匯編語言混合編程"一節(jié)的內(nèi)容。其目的是為了提高學(xué)生編制C51語言程序的能力。
* 此次修訂過程中,還對(duì)原書中的十八個(gè)實(shí)驗(yàn)做了比較大的修訂,將實(shí)驗(yàn)的內(nèi)容編寫得更接近于實(shí)驗(yàn)指導(dǎo)書,使學(xué)生更容易自己對(duì)實(shí)驗(yàn)進(jìn)行操作、演練。
在本書的修訂過程中,沈林勇、周濤、劉建平、施群、王梅等教師提出了寶貴的意見,在此表示衷心的感謝。
希望此次修訂能繼續(xù)得到同行和學(xué)生的認(rèn)可和支持。但由于編者水平有限,書中不足之處在所難免,歡迎讀者對(duì)此教材提供寶貴的意見。
編 者
2016.12
第1版前言
本書作者從事單片機(jī)原理與應(yīng)用課程教學(xué)多年,對(duì)象是機(jī)械電子工程專業(yè)和機(jī)械工程與自動(dòng)化專業(yè)的學(xué)生,深感本課程對(duì)學(xué)生的重要性和艱難性。每學(xué)期總有數(shù)名學(xué)生因感困難,而放棄該課程的考試,這始終成為作者多年來的遺憾。這也多次使作者心存編寫此書的愿望,希望寫出一本學(xué)生喜歡看的專業(yè)書,一本教師容易講的專業(yè)書。
本書在編寫的文字上力求通俗、口語化,每一張電路圖都有詳細(xì)的解釋,每一條程序中的指令都有注釋。
本書在每章的開頭,通常會(huì)采用設(shè)問的方式來引導(dǎo)學(xué)生,使他們了解該章的主題,并增加自學(xué)的興趣。在每章后面都安排了小結(jié),便于學(xué)生和教師對(duì)該章內(nèi)容進(jìn)行梳理。
本書在每章中都插入了實(shí)驗(yàn),全書共有十八個(gè)實(shí)驗(yàn),使得教師可以在實(shí)驗(yàn)室講解單片機(jī)原理與應(yīng)用課程,一邊講課,一邊做實(shí)驗(yàn),克服以往課堂教學(xué)與實(shí)驗(yàn)教學(xué)分離的缺點(diǎn)。
本書在每章中都安排了一些習(xí)題,習(xí)題的設(shè)計(jì)大多數(shù)與例題類似,便于學(xué)生對(duì)該章知識(shí)點(diǎn)的復(fù)習(xí)鞏固。
以下內(nèi)容作為本書的導(dǎo)讀。
本書在結(jié)構(gòu)上分為3篇。
第1篇是基礎(chǔ)篇,共有7章(第1~7章),內(nèi)容涉及51系列單片機(jī)的核心知識(shí),是本書的重點(diǎn)。本篇內(nèi)容可作為單片機(jī)原理課程的教材。
第1章內(nèi)容把計(jì)算機(jī)與單片機(jī)之間的關(guān)系理清,把單片機(jī)中最基礎(chǔ)的問題搞懂,自然是學(xué)生學(xué)習(xí)單片機(jī)的起點(diǎn)。
第2章的內(nèi)容是把單片機(jī)內(nèi)部最主要的部件(CPU、存儲(chǔ)器和接口)聚在一起,使學(xué)生理解單片機(jī)的實(shí)質(zhì)。考慮到學(xué)習(xí)的順序,2.4節(jié)的內(nèi)容可以暫時(shí)擱置一下。
第3章的內(nèi)容是51系列單片機(jī)的指令系統(tǒng),是單片機(jī)的軟件設(shè)計(jì)基礎(chǔ)。
第4章的內(nèi)容是匯編語言的程序設(shè)計(jì),使學(xué)生一方面可以把指令的知識(shí)加以應(yīng)用,另一方面,可以學(xué)會(huì)匯編語言編程的知識(shí)。第4章的內(nèi)容學(xué)完后,建議把第2章留下的內(nèi)容(2.4節(jié)I/O接口)學(xué)習(xí)完,然后再學(xué)習(xí)第5章。
第5章的內(nèi)容是中斷系統(tǒng),是本書的難點(diǎn)之一,需花心血,反復(fù)琢磨。
第6章的內(nèi)容是定時(shí)器/計(jì)數(shù)器(CTC),學(xué)習(xí)CTC的知識(shí)可結(jié)合中斷技術(shù),進(jìn)一步理解中斷系統(tǒng)的知識(shí)。
第7章的內(nèi)容是串行接口,這也是本書的難點(diǎn)之一,但這是計(jì)算機(jī)通信的基礎(chǔ)。
第2篇是擴(kuò)展、接口和應(yīng)用篇,共有4章(第8~11章),內(nèi)容涉及51單片機(jī)的擴(kuò)展應(yīng)用模式、常用的接口和單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)。本篇內(nèi)容可以作為單片機(jī)接口和應(yīng)用課程的教材。
第8章的內(nèi)容是存儲(chǔ)器在單片機(jī)外面的擴(kuò)展和連接,并行接口的擴(kuò)展和連接。這是51系列單片機(jī)擴(kuò)展技術(shù)的基礎(chǔ)。
第9章的內(nèi)容是顯示器/鍵盤電路和接口的原理及其應(yīng)用,顯示器/鍵盤電路是單片機(jī)應(yīng)用系統(tǒng)中最常見的配置。
第10章的內(nèi)容是模擬接口D/A轉(zhuǎn)換器和A/D轉(zhuǎn)換器的原理,以及與單片機(jī)的連接和應(yīng)用。
第11章的內(nèi)容是單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)的一般方法,主要包含單片機(jī)應(yīng)用系統(tǒng)的硬件結(jié)構(gòu)和軟件結(jié)構(gòu)。
第3篇是C51篇,只有1章(第12章)。主要是將學(xué)生引領(lǐng)進(jìn)單片機(jī)學(xué)習(xí)的另一種境界,為進(jìn)一步學(xué)習(xí)高級(jí)的嵌入式系統(tǒng)做準(zhǔn)備。其內(nèi)容包括C51語言程序設(shè)計(jì)的一般方法,并用C51語言設(shè)計(jì)接口控制程序。
為方便教學(xué),本書配套的電子教案可免費(fèi)提供給采用本書作為教材的大專院校使用。如有需要,可發(fā)電子郵件至haoyinghua@cip.com.cn。
在本書編寫過程中,沈林勇副研究員提出了一些建設(shè)性的意見,在此表示真誠(chéng)的感謝。
借建設(shè)上海高等學(xué)校教育高地之東風(fēng),歷時(shí)一年,繪制每一張圖,打入每一個(gè)字,終于完成了此書的編撰。
由于編者水平有限,書中缺點(diǎn)和錯(cuò)誤在所難免,歡迎廣大師生批評(píng)指正。
編 者
2009年10月
第1章 單片機(jī)基礎(chǔ)知識(shí).... 3
1.1 引言... 3
1.1.1 計(jì)算機(jī)... 3
1.1.2 微型機(jī)... 6
1.1.3 單片機(jī)與嵌入式計(jì)算機(jī)... 7
1.2 常用的數(shù)制和碼制... 7
1.2.1 常用的數(shù)制及其轉(zhuǎn)換... 7
1.2.2 常用的碼制... 11
實(shí)驗(yàn)一:認(rèn)識(shí)補(bǔ)碼... 17
1.3 單片機(jī)內(nèi)部結(jié)構(gòu)概論... 18
1.3.1 中央處理器CPU概論... 19
1.3.2 存儲(chǔ)器概論... 23
1.3.3 輸入/輸出接口概論... 26
1.4 單片機(jī)產(chǎn)品概述... 27
1.4.1 單片機(jī)產(chǎn)品的類型... 27
1.4.2 單片機(jī)產(chǎn)品的應(yīng)用... 28
本章小結(jié)... 28
思考與練習(xí)... 29
第2章 MCS-51系列單片機(jī)系統(tǒng)的
基本組織.... 30
2.1 總體結(jié)構(gòu)... 30
2.1.1 內(nèi)部結(jié)構(gòu)... 30
2.1.2 外部引腳... 31
2.2
CPU的特性... 32
2.3 存儲(chǔ)器的組織... 33
2.3.1 程序存儲(chǔ)器... 33
2.3.2 數(shù)據(jù)存儲(chǔ)器... 35
2.3.3 特殊功能寄存器... 37
2.3.4 外部數(shù)據(jù)存儲(chǔ)器和I/O接口... 39
2.4
I/O接口... 39
2.4.1 P1口... 40
2.4.2 P3口... 41
2.4.3 P2口... 42
2.4.4 P0口... 42
實(shí)驗(yàn)二:認(rèn)識(shí)P0~P3口... 43
2.5 時(shí)鐘和時(shí)鐘電路... 46
2.5.1 內(nèi)部方式... 46
2.5.2 外部方式... 46
2.6 啟動(dòng)和復(fù)位電路... 46
2.6.1 上電啟動(dòng)電路... 47
2.6.2 人工按鈕復(fù)位電路... 47
本章小結(jié)... 48
思考與練習(xí)... 48
第3章 MCS-51系列的指令系統(tǒng).... 50
3.1 指令格式和尋址方式... 50
3.1.1 立即尋址方式... 51
3.1.2 直接尋址方式... 52
3.1.3 寄存器尋址方式... 52
3.1.4 寄存器間接尋址方式... 53
3.1.5 變址尋址方式... 53
3.1.6 相對(duì)尋址方式... 54
3.1.7 位尋址方式... 55
3.1.8 學(xué)習(xí)尋址方式的意義... 55
3.2 數(shù)據(jù)傳送類指令... 56
3.2.1 內(nèi)部數(shù)據(jù)傳送指令... 56
3.2.2 內(nèi)外數(shù)據(jù)傳送指令... 61
3.2.3 查表指令... 62
實(shí)驗(yàn)三:尋址方式和堆棧的認(rèn)識(shí)... 63
3.3 數(shù)據(jù)處理類指令... 66
3.3.1 算術(shù)運(yùn)算指令... 67
3.3.2 邏輯運(yùn)算指令... 72
3.3.3 移位指令... 74
3.4 位操作類指令... 77
3.4.1 位變量傳送指令... 77
3.4.2 位變量設(shè)置指令... 78
3.4.3 位變量邏輯運(yùn)算指令... 78
3.5 程序轉(zhuǎn)移類指令... 80
3.5.1 無條件轉(zhuǎn)移指令... 80
3.5.2 有條件轉(zhuǎn)移指令... 82
3.5.3 調(diào)用和返回子程序的指令... 85
實(shí)驗(yàn)四:轉(zhuǎn)移類指令和位操作類
指令的認(rèn)識(shí)... 88
3.6 CPU執(zhí)行指令的時(shí)序... 89
本章小結(jié)... 91
思考與練習(xí)... 92
第4章 MCS-51系列匯編語言程序
設(shè)計(jì).... 96
4.1 偽指令... 96
4.1.1 起始指令... 97
4.1.2 結(jié)束指令... 97
4.1.3 數(shù)據(jù)定義類指令... 97
4.2 匯編語言的語句格式... 101
實(shí)驗(yàn)五:認(rèn)識(shí)匯編語言程序的
格式... 101
4.3 匯編語言程序設(shè)計(jì)的方法... 102
4.3.1 順序結(jié)構(gòu)程序的設(shè)計(jì)... 103
4.3.2 分支結(jié)構(gòu)程序的設(shè)計(jì)... 103
4.3.3 循環(huán)結(jié)構(gòu)程序的設(shè)計(jì)... 105
4.3.4 子程序設(shè)計(jì)... 107
4.3.5 經(jīng)典程序設(shè)計(jì)舉例... 113
實(shí)驗(yàn)六:查表程序設(shè)計(jì)... 123
實(shí)驗(yàn)七:排序程序設(shè)計(jì)... 124
本章小結(jié)... 125
思考與練習(xí)... 126
第5章 MCS-51單片機(jī)系列的中斷
系統(tǒng).... 129
5.1 中斷的概念... 129
5.1.1 什么是中斷... 129
5.1.2 中斷源... 130
5.1.3 中斷的優(yōu)先級(jí)... 130
5.1.4 控制中斷的特殊功能
寄存器... 131
5.2 中斷處理過程... 134
5.2.1 中斷申請(qǐng)... 134
5.2.2 中斷響應(yīng)條件... 134
5.2.3 中斷處理過程... 135
5.2.4 中斷請(qǐng)求信號(hào)的撤消... 136
5.3 中斷程序的編制... 136
5.3.1 中斷初始化程序的編制... 136
5.3.2 中斷服務(wù)子程序的編寫... 137
實(shí)驗(yàn)八:認(rèn)識(shí)中斷系統(tǒng)和中斷服務(wù)
子程序編寫... 138
本章小結(jié)... 140
思考與練習(xí)... 141
第6章 MCS-51單片機(jī)的
定時(shí)器/計(jì)數(shù)器.... 142
6.1 定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)和工作原理... 142
6.1.1 定時(shí)器/計(jì)數(shù)器T0和T1. 142
6.1.2 定時(shí)器/計(jì)數(shù)器T2. 146
6.1.3 定時(shí)器/計(jì)數(shù)器的使用極限... 150
6.2 控制定時(shí)器/計(jì)數(shù)器的特殊功能
寄存器... 151
6.3 定時(shí)器/計(jì)數(shù)器的應(yīng)用及其編程... 153
6.3.1 初始化編程... 153
6.3.2 定時(shí)器/計(jì)數(shù)器應(yīng)用編程... 154
實(shí)驗(yàn)九:定時(shí)器/計(jì)數(shù)器應(yīng)用... 160
本章小結(jié)... 162
思考與練習(xí)... 163
第7章 MCS-51單片機(jī)的串行接口.... 167
7.1 串行通信的概念... 167
7.2 單片機(jī)串行接口的結(jié)構(gòu)原理... 170
7.3 單片機(jī)串口的工作方式和相關(guān)的
特殊功能寄存器... 172
7.3.1 串行口控制寄存器SCON
(Serial Control) 172
7.3.2 串行口工作方式0. 174
7.3.3 串行口工作方式1. 176
7.3.4 串行口工作方式2、3. 177
7.3.5 串行口數(shù)據(jù)傳送的波特率... 178
7.4 串行口應(yīng)用舉例... 179
實(shí)驗(yàn)十:串行口雙機(jī)通信... 186
本章小結(jié)... 189
思考與練習(xí)... 190
擴(kuò)展、接口和應(yīng)用篇
第8章 MCS-51單片機(jī)的擴(kuò)展技術(shù).... 193
8.1 單片機(jī)擴(kuò)展原理... 193
8.2 程序存儲(chǔ)器的擴(kuò)展... 194
8.2.1 EPROM存儲(chǔ)器芯片... 195
8.2.2 程序存儲(chǔ)器芯片與系統(tǒng)的
連接舉例... 196
8.3 數(shù)據(jù)存儲(chǔ)器的擴(kuò)展... 200
8.3.1 常用靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)
芯片... 201
8.3.2 數(shù)據(jù)存儲(chǔ)器擴(kuò)展應(yīng)用舉例... 202
8.3.3 CPU如何訪問外部存儲(chǔ)器... 206
實(shí)驗(yàn)十一:數(shù)據(jù)存儲(chǔ)器的擴(kuò)展
和測(cè)試... 208
8.4 并行接口的擴(kuò)展... 209
8.4.1 基本并行接口及其擴(kuò)展... 210
實(shí)驗(yàn)十二:基本并行口及其擴(kuò)展... 214
8.4.2 8255A并行口及其擴(kuò)展... 216
實(shí)驗(yàn)十三:8255A并行口及其
擴(kuò)展... 226
8.5 綜合接口芯片8155. 228
本章小結(jié)... 232
思考與練習(xí)... 233
第9章 鍵盤/顯示器的接口技術(shù).... 235
9.1
LED數(shù)碼顯示器的結(jié)構(gòu)原理和接口
技術(shù)... 235
9.1.1 LED數(shù)碼顯示器的結(jié)構(gòu)
原理... 235
9.1.2 LED數(shù)碼顯示器的顯示碼... 236
9.1.3 LED顯示器的顯示方式及其
顯示程序... 237
9.2 鍵盤結(jié)構(gòu)的原理與接口技術(shù)... 242
9.2.1 鍵盤電路的結(jié)構(gòu)原理... 242
9.2.2 鍵抖動(dòng)問題... 244
9.2.3 鍵盤接口電路舉例... 245
9.3
8279顯示器/鍵盤接口電路的原理
和應(yīng)用... 248
9.3.1 8279的內(nèi)部結(jié)構(gòu)... 248
9.3.2 8279的接口工作方式... 249
9.3.3 8279的控制命令字、狀態(tài)字
和數(shù)據(jù)格式... 250
9.3.4 8279芯片的外部引腳... 253
9.3.5 8279的應(yīng)用舉例... 254
實(shí)驗(yàn)十四:8279顯示器/鍵盤接口
和編程... 261
本章小結(jié)... 261
思考與練習(xí)... 262
第10章 D/A和A/D轉(zhuǎn)換器的接口
技術(shù).... 263
10.1
D/A轉(zhuǎn)換器和接口技術(shù)... 264
10.1.1 D/A轉(zhuǎn)換器的原理... 264
10.1.2 D/A轉(zhuǎn)換器的性能指標(biāo)... 266
10.1.3 DAC0832的結(jié)構(gòu)原理和接口
技術(shù)... 267
10.1.4 DAC0832的應(yīng)用和編程... 270
實(shí)驗(yàn)十五:D/A轉(zhuǎn)換器應(yīng)用舉例... 273
10.2
A/D轉(zhuǎn)換器和接口技術(shù)... 274
10.2.1 A/D轉(zhuǎn)換器的原理... 274
10.2.2 A/D轉(zhuǎn)換器的主要性能
指標(biāo)... 275
10.2.3 ADC0809的結(jié)構(gòu)原理和接口
技術(shù)... 276
10.2.4 A/D轉(zhuǎn)換器的應(yīng)用舉例... 278
實(shí)驗(yàn)十六:A/D轉(zhuǎn)換器的應(yīng)用
和編程... 281
本章小結(jié)... 283
思考與練習(xí)... 283
第11章 單片機(jī)應(yīng)用系統(tǒng)的研制.... 285
11.1
單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)概述... 285
11.2
單片機(jī)應(yīng)用系統(tǒng)的硬件設(shè)計(jì)... 286
11.3
單片機(jī)應(yīng)用系統(tǒng)的軟件設(shè)計(jì)... 290
11.4
單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)舉例... 291
實(shí)驗(yàn)十七:?jiǎn)纹瑱C(jī)應(yīng)用系統(tǒng)設(shè)計(jì)
舉例... 311
本章小結(jié)... 312
思考與練習(xí)... 312
C51 篇
第12章 C51程序設(shè)計(jì)初步.... 315
12.1 C51概論... 315
12.1.1 C51語言與C語言... 315
12.1.2 C51語言與51系列匯編
語言... 316
12.2 C51的數(shù)據(jù)類型... 316
12.2.1 數(shù)據(jù)類型... 316
12.2.2 存儲(chǔ)器類型... 317
12.2.3 訪問特殊功能寄存器... 319
12.2.4 位變量的定義... 320
12.2.5 C51指針... 320
12.2.6 絕對(duì)地址訪問... 321
12.2.7 存儲(chǔ)器模式... 322
12.3 C51位變量邏輯運(yùn)算符... 322
12.4 C51程序設(shè)計(jì)... 323
12.4.1 基本并行接口的輸入/輸出
程序的設(shè)計(jì)... 323
12.4.2 8255A并行接口的輸入/輸出
程序的設(shè)計(jì)... 324
12.4.3 51串行口發(fā)送/接收程序
的設(shè)計(jì)... 325
12.4.4 D/A轉(zhuǎn)換控制程序的設(shè)計(jì)... 328
12.4.5 A/D轉(zhuǎn)換控制程序的設(shè)計(jì)... 329
12.4.6 步進(jìn)電機(jī)控制單片機(jī)應(yīng)用
系統(tǒng)的設(shè)計(jì)... 331
12.4.7 直流電機(jī)控制單片機(jī)應(yīng)用
系統(tǒng)的設(shè)計(jì)... 334
12.5
C51的函數(shù)庫(kù)... 339
12.6
多模塊及其C51語言與匯編語言
混合編程... 340
本章小結(jié)... 342
實(shí)驗(yàn)十八:C51語言程序設(shè)計(jì)(邏輯
函數(shù)的運(yùn)算) 342
思考與練習(xí)... 343
附錄 51系列單片機(jī)的指令表.... 345
參考文獻(xiàn).... 350