內(nèi)容簡介
本書共分3篇,總計12章。第1篇共有7章的內(nèi)容,主要包含51系列單片機的結構原理、匯編語言程序設計等知識;第2篇共有4章的內(nèi)容,主要包含51系列單片機的擴展應用方式、常用接口芯片與單片機的連接和應用、單片機應用系統(tǒng)的設計等知識;第3篇盡管只有一章,卻包含了C51語言程序設計的基礎內(nèi)容,且列舉了較多的編程實例,這些以C51語言編制的實例大多數(shù)來自以往匯編語言程序的實例,這樣會使讀者有機會比較不同語言編制的程序,進入單片機學習的新境界。
本書可以作為各類高等學校單片機課程的基礎教材,也可以作為單片機愛好者的自學教材。
前 言
伴隨著國民經(jīng)濟的高速發(fā)展,人們對高等教育本質(zhì)的理解不斷深入,相關課程更加注重對工程實踐場景的構建;同時,近幾年對機械電子工程專業(yè)學生工程技能水平的要求也在不斷提升;這就需要有知識性更系統(tǒng)、實踐性更突出的微機原理與應用類教材。
針對以上情況,我們組織一線教師,總結和分析了本書第1版的優(yōu)點和不足,提出了第2版教材的修訂計劃。本次再版,充分考慮了各使用院校教師和學生的反饋意見和建議,并結合我們課程團隊在課程建設、教學實踐中的新想法和新思路,對原教材內(nèi)容做了更新、補充與完善。
本書以專業(yè)基礎知識為背景,以實踐教學過程為載體,著眼于學生對理論知識的應用能力和對基本工程問題的解決能力,培養(yǎng)學生良好的工程素養(yǎng)。
此次修訂中,在秉承原書風格的基礎上,對以下幾個方面做了修改,特此說明:
* 在第11章中,更改和增加了有關單片機應用系統(tǒng)設計的實例。刪除了原來例11-5的內(nèi)容,增加了兩個新的實例作為例11-5和例11-6,使實例與機械電子工程專業(yè)的結合更加緊密。
* 在第12章中,加入了"多模塊及其C51語言與匯編語言混合編程"一節(jié)的內(nèi)容。其目的是為了提高學生編制C51語言程序的能力。
* 此次修訂過程中,還對原書中的十八個實驗做了比較大的修訂,將實驗的內(nèi)容編寫得更接近于實驗指導書,使學生更容易自己對實驗進行操作、演練。
在本書的修訂過程中,沈林勇、周濤、劉建平、施群、王梅等教師提出了寶貴的意見,在此表示衷心的感謝。
希望此次修訂能繼續(xù)得到同行和學生的認可和支持。但由于編者水平有限,書中不足之處在所難免,歡迎讀者對此教材提供寶貴的意見。
編 者
2016.12
第1版前言
本書作者從事單片機原理與應用課程教學多年,對象是機械電子工程專業(yè)和機械工程與自動化專業(yè)的學生,深感本課程對學生的重要性和艱難性。每學期總有數(shù)名學生因感困難,而放棄該課程的考試,這始終成為作者多年來的遺憾。這也多次使作者心存編寫此書的愿望,希望寫出一本學生喜歡看的專業(yè)書,一本教師容易講的專業(yè)書。
本書在編寫的文字上力求通俗、口語化,每一張電路圖都有詳細的解釋,每一條程序中的指令都有注釋。
本書在每章的開頭,通常會采用設問的方式來引導學生,使他們了解該章的主題,并增加自學的興趣。在每章后面都安排了小結,便于學生和教師對該章內(nèi)容進行梳理。
本書在每章中都插入了實驗,全書共有十八個實驗,使得教師可以在實驗室講解單片機原理與應用課程,一邊講課,一邊做實驗,克服以往課堂教學與實驗教學分離的缺點。
本書在每章中都安排了一些習題,習題的設計大多數(shù)與例題類似,便于學生對該章知識點的復習鞏固。
以下內(nèi)容作為本書的導讀。
本書在結構上分為3篇。
第1篇是基礎篇,共有7章(第1~7章),內(nèi)容涉及51系列單片機的核心知識,是本書的重點。本篇內(nèi)容可作為單片機原理課程的教材。
第1章內(nèi)容把計算機與單片機之間的關系理清,把單片機中最基礎的問題搞懂,自然是學生學習單片機的起點。
第2章的內(nèi)容是把單片機內(nèi)部最主要的部件(CPU、存儲器和接口)聚在一起,使學生理解單片機的實質(zhì)。考慮到學習的順序,2.4節(jié)的內(nèi)容可以暫時擱置一下。
第3章的內(nèi)容是51系列單片機的指令系統(tǒng),是單片機的軟件設計基礎。
第4章的內(nèi)容是匯編語言的程序設計,使學生一方面可以把指令的知識加以應用,另一方面,可以學會匯編語言編程的知識。第4章的內(nèi)容學完后,建議把第2章留下的內(nèi)容(2.4節(jié)I/O接口)學習完,然后再學習第5章。
第5章的內(nèi)容是中斷系統(tǒng),是本書的難點之一,需花心血,反復琢磨。
第6章的內(nèi)容是定時器/計數(shù)器(CTC),學習CTC的知識可結合中斷技術,進一步理解中斷系統(tǒng)的知識。
第7章的內(nèi)容是串行接口,這也是本書的難點之一,但這是計算機通信的基礎。
第2篇是擴展、接口和應用篇,共有4章(第8~11章),內(nèi)容涉及51單片機的擴展應用模式、常用的接口和單片機應用系統(tǒng)的設計。本篇內(nèi)容可以作為單片機接口和應用課程的教材。
第8章的內(nèi)容是存儲器在單片機外面的擴展和連接,并行接口的擴展和連接。這是51系列單片機擴展技術的基礎。
第9章的內(nèi)容是顯示器/鍵盤電路和接口的原理及其應用,顯示器/鍵盤電路是單片機應用系統(tǒng)中最常見的配置。
第10章的內(nèi)容是模擬接口D/A轉(zhuǎn)換器和A/D轉(zhuǎn)換器的原理,以及與單片機的連接和應用。
第11章的內(nèi)容是單片機應用系統(tǒng)設計的一般方法,主要包含單片機應用系統(tǒng)的硬件結構和軟件結構。
第3篇是C51篇,只有1章(第12章)。主要是將學生引領進單片機學習的另一種境界,為進一步學習高級的嵌入式系統(tǒng)做準備。其內(nèi)容包括C51語言程序設計的一般方法,并用C51語言設計接口控制程序。
為方便教學,本書配套的電子教案可免費提供給采用本書作為教材的大專院校使用。如有需要,可發(fā)電子郵件至haoyinghua@cip.com.cn。
在本書編寫過程中,沈林勇副研究員提出了一些建設性的意見,在此表示真誠的感謝。
借建設上海高等學校教育高地之東風,歷時一年,繪制每一張圖,打入每一個字,終于完成了此書的編撰。
由于編者水平有限,書中缺點和錯誤在所難免,歡迎廣大師生批評指正。
編 者
2009年10月
目 錄
基 礎 篇第1章 單片機基礎知識 31.1 引言 31.1.1 計算機 31.1.2 微型機 61.1.3 單片機與嵌入式計算機 71.2 常用的數(shù)制和碼制 71.2.1 常用的數(shù)制及其轉(zhuǎn)換 71.2.2 常用的碼制 11實驗一:認識補碼 171.3 單片機內(nèi)部結構概論 181.3.1 中央處理器CPU概論 191.3.2 存儲器概論 231.3.3 輸入/輸出接口概論 261.4 單片機產(chǎn)品概述 271.4.1 單片機產(chǎn)品的類型 271.4.2 單片機產(chǎn)品的應用 28本章小結 28思考與練習 29第2章 MCS-51系列單片機系統(tǒng)的基本組織 302.1 總體結構 302.1.1 內(nèi)部結構 302.1.2 外部引腳 312.2 CPU的特性 322.3 存儲器的組織 332.3.1 程序存儲器 332.3.2 數(shù)據(jù)存儲器 352.3.3 特殊功能寄存器 372.3.4 外部數(shù)據(jù)存儲器和I/O接口 392.4 I/O接口 392.4.1 P1口 402.4.2 P3口 412.4.3 P2口 422.4.4 P0口 42實驗二:認識P0~P3口 432.5 時鐘和時鐘電路 462.5.1 內(nèi)部方式 462.5.2 外部方式 462.6 啟動和復位電路 462.6.1 上電啟動電路 472.6.2 人工按鈕復位電路 47本章小結 48思考與練習 48第3章 MCS-51系列的指令系統(tǒng) 503.1 指令格式和尋址方式 503.1.1 立即尋址方式 513.1.2 直接尋址方式 523.1.3 寄存器尋址方式 523.1.4 寄存器間接尋址方式 533.1.5 變址尋址方式 533.1.6 相對尋址方式 543.1.7 位尋址方式 553.1.8 學習尋址方式的意義 553.2 數(shù)據(jù)傳送類指令 563.2.1 內(nèi)部數(shù)據(jù)傳送指令 563.2.2 內(nèi)外數(shù)據(jù)傳送指令 613.2.3 查表指令 62實驗三:尋址方式和堆棧的認識 633.3 數(shù)據(jù)處理類指令 663.3.1 算術運算指令 673.3.2 邏輯運算指令 723.3.3 移位指令 743.4 位操作類指令 773.4.1 位變量傳送指令 773.4.2 位變量設置指令 783.4.3 位變量邏輯運算指令 783.5 程序轉(zhuǎn)移類指令 803.5.1 無條件轉(zhuǎn)移指令 803.5.2 有條件轉(zhuǎn)移指令 823.5.3 調(diào)用和返回子程序的指令 85實驗四:轉(zhuǎn)移類指令和位操作類指令的認識 883.6 CPU執(zhí)行指令的時序 89本章小結 91思考與練習 92第4章 MCS-51系列匯編語言程序設計 964.1 偽指令 964.1.1 起始指令 974.1.2 結束指令 974.1.3 數(shù)據(jù)定義類指令 974.2 匯編語言的語句格式 101實驗五:認識匯編語言程序的格式 1014.3 匯編語言程序設計的方法 1024.3.1 順序結構程序的設計 1034.3.2 分支結構程序的設計 1034.3.3 循環(huán)結構程序的設計 1054.3.4 子程序設計 1074.3.5 經(jīng)典程序設計舉例 113實驗六:查表程序設計 123實驗七:排序程序設計 124本章小結 125思考與練習 126第5章 MCS-51單片機系列的中斷系統(tǒng) 1295.1 中斷的概念 1295.1.1 什么是中斷 1295.1.2 中斷源 1305.1.3 中斷的優(yōu)先級 1305.1.4 控制中斷的特殊功能寄存器 1315.2 中斷處理過程 1345.2.1 中斷申請 1345.2.2 中斷響應條件 1345.2.3 中斷處理過程 1355.2.4 中斷請求信號的撤消 1365.3 中斷程序的編制 1365.3.1 中斷初始化程序的編制 1365.3.2 中斷服務子程序的編寫 137實驗八:認識中斷系統(tǒng)和中斷服務子程序編寫 138本章小結 140思考與練習 141第6章 MCS-51單片機的定時器/計數(shù)器 1426.1 定時器/計數(shù)器的結構和工作原理 1426.1.1 定時器/計數(shù)器T0和T1 1426.1.2 定時器/計數(shù)器T2 1466.1.3 定時器/計數(shù)器的使用極限 1506.2 控制定時器/計數(shù)器的特殊功能寄存器 1516.3 定時器/計數(shù)器的應用及其編程 1536.3.1 初始化編程 1536.3.2 定時器/計數(shù)器應用編程 154實驗九:定時器/計數(shù)器應用 160本章小結 162思考與練習 163第7章 MCS-51單片機的串行接口 1677.1 串行通信的概念 1677.2 單片機串行接口的結構原理 1707.3 單片機串口的工作方式和相關的特殊功能寄存器 1727.3.1 串行口控制寄存器SCON(Serial Control) 1727.3.2 串行口工作方式0 1747.3.3 串行口工作方式1 1767.3.4 串行口工作方式2、3 1777.3.5 串行口數(shù)據(jù)傳送的波特率 1787.4 串行口應用舉例 179實驗十:串行口雙機通信 186本章小結 189思考與練習 190擴展、接口和應用篇第8章 MCS-51單片機的擴展技術 1938.1 單片機擴展原理 1938.2 程序存儲器的擴展 1948.2.1 EPROM存儲器芯片 1958.2.2 程序存儲器芯片與系統(tǒng)的連接舉例 1968.3 數(shù)據(jù)存儲器的擴展 2008.3.1 常用靜態(tài)隨機存儲器(SRAM)芯片 2018.3.2 數(shù)據(jù)存儲器擴展應用舉例 2028.3.3 CPU如何訪問外部存儲器 206實驗十一:數(shù)據(jù)存儲器的擴展和測試 2088.4 并行接口的擴展 2098.4.1 基本并行接口及其擴展 210實驗十二:基本并行口及其擴展 2148.4.2 8255A并行口及其擴展 216實驗十三:8255A并行口及其擴展 2268.5 綜合接口芯片8155 228本章小結 232思考與練習 233第9章 鍵盤/顯示器的接口技術 2359.1 LED數(shù)碼顯示器的結構原理和接口技術 2359.1.1 LED數(shù)碼顯示器的結構原理 2359.1.2 LED數(shù)碼顯示器的顯示碼 2369.1.3 LED顯示器的顯示方式及其顯示程序 2379.2 鍵盤結構的原理與接口技術 2429.2.1 鍵盤電路的結構原理 2429.2.2 鍵抖動問題 2449.2.3 鍵盤接口電路舉例 2459.3 8279顯示器/鍵盤接口電路的原理和應用 2489.3.1 8279的內(nèi)部結構 2489.3.2 8279的接口工作方式 2499.3.3 8279的控制命令字、狀態(tài)字和數(shù)據(jù)格式 2509.3.4 8279芯片的外部引腳 2539.3.5 8279的應用舉例 254實驗十四:8279顯示器/鍵盤接口和編程 261本章小結 261思考與練習 262第10章 D/A和A/D轉(zhuǎn)換器的接口技術 26310.1 D/A轉(zhuǎn)換器和接口技術 26410.1.1 D/A轉(zhuǎn)換器的原理 26410.1.2 D/A轉(zhuǎn)換器的性能指標 26610.1.3 DAC0832的結構原理和接口技術 26710.1.4 DAC0832的應用和編程 270實驗十五:D/A轉(zhuǎn)換器應用舉例 27310.2 A/D轉(zhuǎn)換器和接口技術 27410.2.1 A/D轉(zhuǎn)換器的原理 27410.2.2 A/D轉(zhuǎn)換器的主要性能指標 27510.2.3 ADC0809的結構原理和接口技術 27610.2.4 A/D轉(zhuǎn)換器的應用舉例 278實驗十六:A/D轉(zhuǎn)換器的應用和編程 281本章小結 283思考與練習 283第11章 單片機應用系統(tǒng)的研制 28511.1 單片機應用系統(tǒng)設計概述 28511.2 單片機應用系統(tǒng)的硬件設計 28611.3 單片機應用系統(tǒng)的軟件設計 29011.4 單片機應用系統(tǒng)設計舉例 291實驗十七:單片機應用系統(tǒng)設計舉例 311本章小結 312思考與練習 312C51 篇第12章 C51程序設計初步 31512.1 C51概論 31512.1.1 C51語言與C語言 31512.1.2 C51語言與51系列匯編語言 31612.2 C51的數(shù)據(jù)類型 31612.2.1 數(shù)據(jù)類型 31612.2.2 存儲器類型 31712.2.3 訪問特殊功能寄存器 31912.2.4 位變量的定義 32012.2.5 C51指針 32012.2.6 絕對地址訪問 32112.2.7 存儲器模式 32212.3 C51位變量邏輯運算符 32212.4 C51程序設計 32312.4.1 基本并行接口的輸入/輸出程序的設計 32312.4.2 8255A并行接口的輸入/輸出程序的設計 32412.4.3 51串行口發(fā)送/接收程序的設計 32512.4.4 D/A轉(zhuǎn)換控制程序的設計 32812.4.5 A/D轉(zhuǎn)換控制程序的設計 32912.4.6 步進電機控制單片機應用系統(tǒng)的設計 33112.4.7 直流電機控制單片機應用系統(tǒng)的設計 33412.5 C51的函數(shù)庫 33912.6 多模塊及其C51語言與匯編語言混合編程 340本章小結 342實驗十八:C51語言程序設計(邏輯函數(shù)的運算) 342思考與練習 343附錄 51系列單片機的指令表 345參考文獻 350