本書以應用廣泛的MCS51增強型單片機為對象,系統(tǒng)地講解了單片機結(jié)構原理、編程方法、接口及應用。內(nèi)容包括:MCS51單片機結(jié)構原理,指令系統(tǒng),單片機C語言、軟硬件開發(fā)工具,I/O口及應用、中斷系統(tǒng)、定時器、串行口,常用總線接口技術、模擬器件和開關器件接口技術,以及單片機應用系統(tǒng)設計。 本書從教學和初學者的角度講解單片機的基本內(nèi)容和應用,結(jié)構科學,概念清晰、準確,材料數(shù)據(jù)可靠;以C為主要編程語言,講解、舉例編程均用C語言,并有匯編語言對照;以程序開發(fā)軟件Keil C、電路設計模擬運行軟件Proteus為教學、學習和訓練工具,理論與實踐緊密結(jié)合。 本書適合于具有C語言基礎的計算機、電子、通信、自動化、電氣、測控技術與儀器等專業(yè)的本科學生作為教材,也可以作為各種培訓機構的教材,以及工程技術人員參考和自學使用。
MCS51單片機雖然走過了30多年的歷史,但它因其獨特的系統(tǒng)結(jié)構、不斷增加的片內(nèi)設備以及強大的指令系統(tǒng),不僅沒有被歷史淘汰,而且依然是單片機中的主流。隨著技術的發(fā)展和應用的需求,MCS51單片機片內(nèi)設備越來越豐富,應用也越來越多,所以MCS51單片機仍然是單片機教學的主要對象。
作者結(jié)合多年來講授單片機、微機原理與接口技術和C語言等課程的教學體會,以及從事單片機、計算機項目開發(fā)的經(jīng)驗,在《單片機原理及應用(C語言版)》教材的基礎上,經(jīng)過修改編寫成本教材,在內(nèi)容的組織和講解方面,以初學者為對象。本書主要有以下特點。
一是以增強型單片機89C52為對象講解。當今在實際中使用的單片機多數(shù)是增強型,而現(xiàn)在又多用C語言編程,程序的長度很容易超過4KB,另外增強型單片機的價格比89C51高得不多,并且有更多的片內(nèi)設備。書中講解了增強型片內(nèi)高128字節(jié)的存儲器,定時器/計數(shù)器2的多種用途,片內(nèi)的A/D轉(zhuǎn)換器等。
二是以C語言作為主要編程語言,注重編程能力的培養(yǎng),用一章內(nèi)容講解了單片機的C語言。在實際應用中,程序設計多以C語言為主,匯編語言為輔,為了適應實際工作的需要,必須要掌握C語言編程。本書在講解第2章單片機結(jié)構原理時,就引入了C51的概念,強調(diào)存儲區(qū)域概念; 在第4章的單片機C語言及程序設計之后,內(nèi)容的講解、編程舉例、程序設計,都采用C語言,并且在第5、6、7章介紹單片機的基本內(nèi)容時,為了便于學習匯編語言,也列出了匯編語言程序。
三是C語言這章更具特色,精選內(nèi)容,結(jié)合單片機的實際講解C語言。本章只講了與單片機結(jié)構密切相關的、與普通C語言不同的內(nèi)容: 變量的定義、特殊功能寄存器的定義、位變量的定義、指針的定義、C51的輸入/輸出、C51函數(shù)的定義、匯編語言與C語言混合編程,沒有涉及C語言的基礎內(nèi)容,因為現(xiàn)在理工科學校都開設了C語言課程。內(nèi)容講解透徹,各個定義格式明確、格式中屬性闡述準確,并且在每一種定義中都寫有使用說明或注意,這些都是作者應用經(jīng)驗的總結(jié)。例子、思考題習題(30個)都是結(jié)合作者對內(nèi)容的理解、實際應用編寫的,學完該章后,對C語言在單片機中的應用沒有任何障礙。
四是注意開發(fā)工具應用、實踐能力的培養(yǎng)。書中第1章就專門介紹了程序開發(fā)軟件Keil C和單片機電路設計、系統(tǒng)模擬運行軟件Proteus的使用方法,教師稍加引導就可以做一些簡單的I/O口實驗。書中的例題盡可能地使用Proteus繪制單片機應用電路,其程序在電路中模擬運行。書中的部分習題要求用用Keil C編程,用Proteus繪制電路并模擬運行程序。
五是注意接口能力的培養(yǎng)。接口概念明確,真正理解接口含義,8255A是典型的接口芯片,通過該芯片的介紹,能夠較全面地理解接口的相關概念和接口的功能(從簡單和實用的角度考慮,只講了8255A的工作方式0)。重視接口時序的分析和應用,幾乎在每個接口中都有體現(xiàn),使讀者能夠正確使用各種接口芯片。
六是提出了多個新概念,以方便講解和理解相關內(nèi)容。在第4章提出了變量存儲區(qū)(域)和設備變量的概念。變量存儲區(qū)(域)的概念在《單片機原理及應用(C語言版)》中首次提出,該概念符合單片機變量保存位置區(qū)域的特征,并且與ANSI C變量屬性(存儲類型)不沖突。設備變量的概念為本書首次提出,雖然該概念不是必需的,但設備變量本身訪問過程的復雜性和它的特指性,對于初學者理解、掌握這類訪問過程復雜的變量會有幫助,對于教師則方便講解。第5章提出了中斷通道的概念,該概念符合串行口、定時器T2中斷結(jié)構的特征,使中斷結(jié)構的相關概念更清晰,容易理解中斷系統(tǒng)結(jié)構,方便教師講解(見表51)。
本書由周國運任主編,組織內(nèi)容及統(tǒng)稿,并且編寫了1.5節(jié)和1.6節(jié)、第2~4章及附錄,趙天翔編寫了1.1節(jié)~1.4節(jié)和第5、6、8章,魯慶賓編寫了第7、9~11章。
編者2013年10月
主編周國運是計算機、物理學雙學科三級教授,物理學本科,光學研究生,從事物理教學、計算機教學及應用研究三十多年,現(xiàn)在主要研究方向為嵌入式系統(tǒng)及應用。
講授過的課程主要有:單片機原理及應用、微機原理與接口技術、嵌入式系統(tǒng)及應用、計算機控制技術、計算機操作系統(tǒng)、匯編語言程序設計、C語言程序設計、電子CAD、電子技術,以及電磁學、光學、傅里葉光學等課程。
主持編寫出版的教材主要有:《單片機原理及應用(C語言版)》(中國水利水電出版社)、《微機原理與接口技術》(機械工業(yè)出版社)、《電子技術教程》(西北大學出版社)等教材。編寫的講義主要有:《STM32原理及應用》、《ARM9嵌入式系統(tǒng)教程》、《MCS-51單片機課外實驗指導》、《匯編語言程序設計》等。
主持完成火電廠凝汽器在線清洗控制系統(tǒng)、噴油泵校驗控制系統(tǒng)等十多項省市級、及橫向科研項目;主持完成多項省級和校級教學研究項目;獲得二十余項省、市和學?蒲许椖俊⒔萄许椖开剟。
第1章單片機及其開發(fā)工具
1.1單片機的基本概念
1.2單片機的發(fā)展歷史
1.3單片機的特點及應用
1.3.1單片機的特點
1.3.2單片機的應用
1.4常見MCS51單片機簡介
1.4.1MCS51系列單片機
1.4.2ATMEL89系列單片機
1.4.3STC系列單片機
1.5單片機程序開發(fā)軟件Keil C簡介
1.5.1Keil C集成開發(fā)工具簡介
1.5.2Keil C的操作工具
1.5.3Keil C程序開發(fā)方法
1.5.4Keil C調(diào)試運行方法
1.6單片機系統(tǒng)模擬軟件Proteus簡介
1.6.1Proteus主界面
1.6.2Proteus ISIS的操作工具
1.6.3Proteus ISIS原理圖設計方法
1.6.4Proteus ISIS原理圖設計舉例
1.6.5Proteus ISIS仿真方法
思考題與習題
第2章MCS51單片機結(jié)構原理
2.1MCS51單片機內(nèi)部結(jié)構及CPU
2.1.1MCS51單片機結(jié)構及特點
2.1.2MCS51單片機內(nèi)部原理結(jié)構
2.1.3MCS51單片機的CPU
2.2MCS51單片機引腳信號
2.2.1MCS51單片機引腳信號及功能
2.2.2MCS51單片機的外部總線結(jié)構
2.3MCS51單片機存儲器結(jié)構
2.3.1程序存儲器結(jié)構
2.3.2片內(nèi)數(shù)據(jù)存儲器結(jié)構
2.3.3片外數(shù)據(jù)存儲器結(jié)構
2.4MCS51單片機時鐘及CPU時序
2.4.1時鐘電路及時鐘信號
2.4.2CPU時序
2.5MCS51單片機的復位
2.5.1復位狀態(tài)
2.5.2復位電路
2.6MCS51單片機低功耗工作方式
2.6.1低功耗結(jié)構及控制
2.6.2空閑工作方式
2.6.3掉電工作方式
思考題與習題
第3章MCS51指令系統(tǒng)及匯編程序設計
3.1匯編語言概述
3.1.1指令和機器語言
3.1.2匯編語言
3.1.3匯編語言格式
3.2MCS51單片機尋址方式
3.2.1立即數(shù)尋址
3.2.2寄存器尋址
3.2.3直接尋址
3.2.4寄存器間接尋址
3.2.5變址尋址
3.2.6位尋址
3.2.7指令尋址
3.2.8尋址空間及指令中符號注釋
3.3MCS51單片機指令系統(tǒng)
3.3.1數(shù)據(jù)傳送指令
3.3.2算術運算指令
3.3.3邏輯操作指令
3.3.4控制程序轉(zhuǎn)移指令
3.3.5位操作指令
3.4MCS51單片機偽指令
3.5匯編語言程序設計
3.5.1簡單程序設計
3.5.2分支程序設計
3.5.3循環(huán)程序設計
3.5.4子程序設計
思考題與習題
第4章單片機C語言及程序設計
4.1單片機C語言概述
4.1.1C語言編程的優(yōu)勢
4.1.2C51與ANSI C的區(qū)別
4.1.3C51擴充的關鍵字
4.2C51數(shù)據(jù)類型及存儲
4.2.1C51的數(shù)據(jù)類型
4.2.2C51數(shù)據(jù)的存儲
4.3C51一般變量的定義
4.3.1C51變量的定義格式
4.3.2C51變量的存儲類型
4.3.3C51變量的存儲區(qū)
4.3.4C51變量定義舉例
4.3.5C51變量的存儲模式
4.3.6C51變量的定位
4.3.7C51設備變量的概念
4.4C51特殊功能寄存器的定義
4.4.18位特殊功能寄存器的定義
4.4.216位特殊功能寄存器的定義
4.5C51位變量的定義
4.5.1bit型位變量的定義
4.5.2sbit型位變量的定義
4.5.3位操作應用
4.6C51指針與結(jié)構體的定義
4.6.1通用指針
4.6.2存儲器專用指針
4.6.3指針變換
4.6.4C51指針應用
4.6.5C51結(jié)構體定義
4.7C51函數(shù)的定義
4.7.1C51函數(shù)定義的一般格式
4.7.2C51中斷函數(shù)的定義
4.8C51與匯編語言混合編程
4.8.1在C51函數(shù)中嵌入?yún)R編語句
4.8.2C51與匯編語言混合編程規(guī)則
4.8.3C51與匯編語言混合編程舉例
思考題與習題
第5章單片機I/O口及應用
5.1單片機I/O口結(jié)構原理
5.1.1P1口
5.1.2P2口
5.1.3P3口
5.1.4P0口
5.1.5端口負載能力和接口要求
5.2I/O口輸出數(shù)碼管及顯示控制
5.2.1數(shù)碼管顯示器結(jié)構原理
5.2.2數(shù)碼管顯示方式
5.2.3數(shù)碼管顯示控制
5.3I/O口輸入鍵盤及按鍵識別
5.3.1鍵盤分類及按鍵識別
5.3.2獨立式鍵盤及按鍵識別
5.3.3行列式鍵盤及按鍵識別
5.3.4中斷方式掃描鍵盤
5.3.5鍵盤應用舉例
5.4液晶顯示器及控制
5.4.1LM016L引腳信號
5.4.2LM016L操作指令
5.4.3LM016L存儲器
5.4.4LM016L基本操作函數(shù)
5.4.5LM016L應用編程
思考題與習題
第6章單片機中斷系統(tǒng)
6.1中斷系統(tǒng)概述
6.1.1中斷的基本概念
6.1.2中斷的功能
6.2中斷系統(tǒng)結(jié)構與原理
6.2.1中斷系統(tǒng)結(jié)構
6.2.2中斷系統(tǒng)原理
6.2.3外部中斷觸發(fā)方式
6.2.4中斷請求標志
6.3中斷系統(tǒng)控制
6.3.1中斷允許控制
6.3.2中斷優(yōu)先級控制
6.4中斷響應與處理
6.4.1中斷響應
6.4.2中斷處理
6.5外部中斷應用舉例
6.5.1中斷應用程序結(jié)構
6.5.2應用舉例
思考題與習題
第7章單片機定時器/計數(shù)器
7.1單片機定時器/計數(shù)器的結(jié)構
7.2定時器/計數(shù)器T0、T1
7.2.1T0、T1的特殊功能寄存器
7.2.2T0、T1的工作模式
7.2.3T0、T1的使用方法
7.3定時器/計數(shù)器T2
7.3.1T2的特殊功能寄存器
7.3.2T2的工作方式
7.4定時器應用舉例
思考題與習題
第8章單片機串行口
8.1串行通信基礎知識
8.1.1數(shù)據(jù)通信
8.1.2異步通信和同步通信
8.1.3波特率
8.1.4通信方向
8.1.5串行通信接口種類
8.2串行口結(jié)構及控制
8.2.1單片機串行口結(jié)構
8.2.2串行口特殊功能寄存器
8.2.3波特率設計
8.3串行口工作方式
8.3.1串行口方式0
8.3.2串行口方式1
8.3.3串行口方式2和方式3
8.4串行口接口技術
8.4.1RS232接口
8.4.2RS422/485接口
8.4.3與USB接口
8.5串行口的C51操作函數(shù)
8.5.1串行口輸出函數(shù)
8.5.2串行口輸入函數(shù)
8.6串行口應用舉例
8.6.1串行口方式0應用
8.6.2串行口方式1、方式3應用
思考題與習題
第9章單片機常用總線接口技術
9.1接口的基本概念
9.1.1單片機應用系統(tǒng)構成
9.1.2接口的概念
9.1.3接口的基本功能
9.1.4接口的結(jié)構
9.1.5端口及其編址
9.2并行總線操作時序及存儲器接口
9.2.1單片機并行總線結(jié)構
9.2.2單片機并行總線操作時序
9.2.3單片機與并行數(shù)據(jù)存儲器的接口
9.3單片機與并行總線設備的接口
9.3.18255A內(nèi)部結(jié)構
9.3.28255A引腳信號
9.3.38255A的控制字
9.3.48255A的工作方式
9.3.58255A應用舉例
9.4IIC總線及應用接口
9.4.1IIC總線特點
9.4.2IIC總線時序
9.4.3IIC總線操作函數(shù)
9.4.4IIC總線應用
9.5SPI總線及應用接口
9.5.1SPI總線特點
9.5.2SPI總線時序
9.5.3SPI總線操作函數(shù)
9.5.4SPI總線應用
思考題與習題
第10章單片機與模擬、開關器件接口技術
10.1D/A轉(zhuǎn)換器及接口技術
10.1.1D/A轉(zhuǎn)換器的主要參數(shù)
10.1.2D/A轉(zhuǎn)換器TLC5615及接口技術
10.1.3D/A轉(zhuǎn)換器DAC124S085及接口技術
10.2A/D轉(zhuǎn)換器及接口技術
10.2.1A/D轉(zhuǎn)換器的主要參數(shù)
10.2.2A/D轉(zhuǎn)換器ADC0834及接口技術
10.2.3A/D轉(zhuǎn)換器TLC2543及接口技術
10.2.4單片機片內(nèi)A/D轉(zhuǎn)換器及應用
10.3開關信號器件及接口技術
10.3.1光電耦合器件及接口技術
10.3.2繼電器接口技術
10.3.3直流電機控制接口技術
10.3.4步進電機控制接口技術
思考題與習題
第11章單片機應用系統(tǒng)設計
11.1簡易計算器設計
11.1.1數(shù)碼管與鍵盤接口芯片BC7277簡介
11.1.2系統(tǒng)電路設計
11.1.3系統(tǒng)功能設計
11.1.4系統(tǒng)程序設計
11.2萬年歷設計
11.2.1時鐘芯片DS1302簡介
11.2.2系統(tǒng)電路設計
11.2.3系統(tǒng)功能設計
11.2.4系統(tǒng)程序設計
11.3環(huán)境檢測系統(tǒng)設計
11.3.1溫濕度傳感器DHT11簡介
11.3.2光照度傳感器BH1750簡介
11.3.3系統(tǒng)電路設計
11.3.4系統(tǒng)程序設計
課程設計參考題目
附錄AMCS51指令表
附錄BC51庫函數(shù)
B.1一般I/O函數(shù)
B.2內(nèi)部函數(shù)
B.3地址訪問函數(shù)
附錄CC語言運算符特性表
附錄D標準ASCII碼表
參考文獻