單片機原理及應用技術(C語言版)
-
【作 者】周國運 魯慶賓 趙天翔 編著
【I S B N 】978-7-5170-7709-1
【責任編輯】張玉玲
【適用讀者群】本科
【出版時間】2019-06-12
【開 本】16開
【裝幀信息】平裝(光膜)
【版 次】第1版第1次印刷
【頁 數】260
【千字數】396
【印 張】16.25
【定 價】¥42
【叢 書】應用型高等院校教學改革創新教材
【備注信息】
簡介
本書特色
前言
章節列表
精彩閱讀
下載資源
相關圖書
本書以應用最廣泛的MCS-51增強型單片機為對象,系統地講解了單片機結構原理、編程方法、接口及應用。本書內容包括單片機概述,MCS-51單片機結構原理,單片機C語言基礎,開發工具,I/O口及應用,中斷系統,定時器/計數器,串行口,常用總線接口,單片機與模擬、開關量接口技術,以及單片機應用系統設計。
本書從教學和初學者的角度講解單片機的基本內容和應用,結構科學、概念清晰、準確易懂、材料數據可靠;以C語言為基礎講解、舉例和編程;以程序開發軟件Keil C、電路設計模擬運行軟件Proteus為教學、學習和訓練工具,理論與實踐緊密結合。
本書適用于具有C語言基礎的計算機、電子、通信、自動化、電氣、測控技術與儀器等專業的本科學生作為教材,也可以作為各種培訓機構的教材,以及工程技術人員、自學者的參考書。
結構清晰、科學、先進,內容選取精煉,講解清晰、準確。
例題習題豐富,軟硬件結合,理論與實踐緊密結合。
詳細講解了C51 函數在串行口操作中的應用。
創新性地提出了多個概念及鍵盤識別和編程方法。
前 言
自《單片機原理及應用(C語言版)》出版到現在,已過去了十年的時間。在這十年里,計算機技術、網絡技術、嵌入式系統、芯片技術等得到了快速發展,并且這些技術迅速得到了廣泛的應用。雖然在嵌入式系統、物聯網等領域使用高性能32位微控制器越來越多,但易學易用、開發成本低、性價比高的8位單片機依然不失主流,并且單片機也是嵌入式系統一種重要的微控制器,而且單片機是學習嵌入式系統的基礎。
隨著科學技術及其應用的發展,單片機的教學內容和方法應該作相應的改革。回想之前出版的兩本單片機圖書,《單片機原理及應用(C語言版)》(中國水利水電出版社)主要是加入了單片機C語言,因為講得透徹、改變了編程方法、提高了編程效率,所以得到了同行的認可。《單片機原理及應用教程(C語言版)》(中國水利水電出版社)主要是加入了虛擬仿真工具Proteus,改變了實驗方法,學生可以在自己的計算機上隨時進行仿真實驗,并且實驗程序與硬件電路密切結合,提高了學習效率和應用技能,所以也得到了同行的認可。
近幾年單片機的教材有不少從項目驅動教學方面進行改革,是一種注重于實用性、趣味性的探索嘗試。本版仍然以知識的科學性、邏輯性為原則,搭建知識結構,組織教學內容,其主要變化是優化了結構、更新和完善了內容。
一、本書主要作的修改
(1)優化了知識的結構。主要是組建了“單片機I/O口及應用”一章,使整書結構更加科學,邏輯關系更加合理。
(2)更新了過時的內容。一是把原來8位、單通道、并行接口的DAC0832,換成了12位、4通道、SPI接口的DAC124S085;二是把原來8位、8通道、并行接口的ADC0809,換成了8位、4通道、SPI接口的ADC0834;三是更新了Keil C和Proteus的相關內容。
(3)修改、完善了一些內容。如增加了RS-422/485接口、USB接口,增加了串行口C語言編程一節,詳細講解了相關的函數;修改、完善了總線接口技術一章的內容,其內容包括并行總線接口技術,SPI、IIC總線接口技術;豐富了“單片機應用系統設計”一章的內容,增加了“環境檢測系統設計”一節。
(4)刪除了“指令系統與匯編程序設計”一章,以滿足對這部分內容沒有要求的讀者。
(5)修改了書中的各種錯誤。
二、本書的主要特點與特色
經過以上幾個方面的修改,在保留了前幾版的特色(以89C52為對象講解、以C語言為主要編程語言、與單片機緊密結合的C語言內容、Proteus仿真實驗)的基礎上,又有創新和提高。具體來說,本版具有如下特色:
(1)本書結構清晰、科學、先進;內容選取精煉、講解清晰、準確;例題習題豐富、聯系實際;軟硬件結合、理論與實踐緊密結合;勇于探索、開拓創新。
(2)突出了輸入/輸出端口及應用。單列一章(第5章)講解輸入/輸出端口結構原理及應用。這樣設置,既突出了I/O口的重要性,增加了對I/O口的應用(專門編寫了I/O口應用方面的十幾道編程題),并且解決了鍵盤、顯示器內容滯后的問題。
(3)注意接口方法與能力的培養。一是接口概念明確,真正理解接口的含義;二是用一章介紹常用總線(并行總線、SPI總線、IIC總線)的接口技術,增加了SPI總線;三是重視接口時序分析和應用,幾乎在每個接口中都有體現,使讀者能夠正確使用各種接口芯片;四是增加了串行口的接口技術,其內容包括單片機與RS-232、RS-422/485、USB的接口技術,這些內容都很實用。本書通過“總線接口、芯片接口、接口時序、操作函數、接口應用”這五個方面眾多實例的學習與訓練,使讀者能夠通過閱讀手冊,使用新的芯片,即能夠寫出基本操作函數,編寫應用程序。
(4)所有的A/D、D/A轉換器都采用SPI接口的芯片。淘汰了傳統的并行三總線接口的A/D、D/A轉換器,這些轉換器在實際中已經很少使用。書中所講的這些轉換器,不僅接口方便,而且應用廣泛、價格便宜、編程簡單,在Proteus器件庫中都可以找到,能夠仿真調試運行。
(5)“單片機應用系統設計”一章關注基礎性、普適性和實用性,是第10章的延續與提升。簡易計算器設計,在軟件方面示范了鍵盤、數碼管及其驅動芯片的使用方法及系統構成,其程序示范了如何從鍵盤獲得數值型變量值、怎樣處理功能鍵;萬年歷設計為讀者提供了時鐘芯片的使用方法,以及完整的萬年歷程序;環境檢測系統設計示范了數字溫濕度傳感器、光照度傳感器等環境檢測中常用的器件的使用方法和應用程序。這幾個例子有如下特點:一是基本上不包含專業性、行業性較強的內容,因此,程序容易閱讀、學習;二是例子中示范的器件應用廣泛,是一般應用系統中必不可少的部分;三是例子中的程序可以直接用到其他應用系統中。
(6)詳細講解了C51函數在串行口操作中的應用。C51的輸入/輸出函數在很多應用中特別方便,如對GPRS、GPS等模塊的操作。現有單片機圖書對輸入/輸出函數在串行口中的應用介紹較少,深入、透徹講解的更少。本書在串行口一章用一節的篇幅,對輸入/輸出函數的特點、應用方法、注意的問題等,作了詳細的講解。
(7)在“C51位變量的定義”一節,專門寫了“位操作應用”小節,講解了判斷位值、查找0/1位、逐位發送、逐位接收這些位操作的方法及編程,這些方法在鍵盤識別、串行總線(SPI、IIC、單總線)接口操作中會廣泛用到,解決了讀者學習這些內容的相關問題。
(8)創新性地提出了多個概念及鍵盤識別和編程方法。在第4章提出了“變量存儲區(域)”和“設備變量”的概念。“變量存儲區(域)”的概念(其他單片機書中稱為“存儲類別”)符合單片機變量保存位置區域的特征,容易理解并且與ANSI C變量的“存儲類型”屬性不沖突。“設備變量”的概念雖然不是必須的,但“設備變量”本身訪問過程的復雜性和它的特指性,對于初學者理解、掌握這類訪問過程復雜的變量有顯著的作用,對于教師則方便講解,書中不僅給出了概念的定義、特征描述,還給出了“設備變量”的多種定義方法之比較及最佳定義方法。在第5章提出了“行列快速掃描法”鍵盤識別方法,與常用的“行掃描法”“行列反轉法”相比,該方法更簡單、更容易理解、更容易編程。
(9)其他方面。如所有延時都有確定的時間,長的到1000ms、2000ms,短的至5μs、1μs,不存在延時時間模糊、讀者存疑的情況。在IIC、SPI等總線操作中,注釋了一些關鍵部分的操作時間。又如,思考題例題豐富,便于學習、訓練參考。再如,所截電路圖緊湊、布局恰當、突出重點、清晰、大小適中。
三、幾點說明
(1)本書中的單片機型號都標示為“89C52”,在實際應用開發中選用的多為我國宏晶公司的STC系列單片機,但Proteus仿真軟件中沒有該系列,選用的是“AT89C52”,標示為“89C52”。
(2)書中的Proteus仿真電路都省略了晶振、復位、電源等電路,也省略了數碼管等電路的驅動,請讀者注意。
(3)關于單片機的學習,除了重視單片機的結構、原理、編程之外,還要重視芯片的結構、原理、接口方法和接口時序,能夠寫出操作函數。
本書由周國運主持編寫、組織內容及統稿。本書編寫分工如下:周國運編寫了第2章~第4章和5.1、8.4.3、8.5、11.1.1節及附錄,魯慶賓編寫了第5、第8、第10、第11章,趙天翔編寫了第1、第6、第7、第9章。
由于編者水平有限,書中難免存在錯誤和不妥之處,敬請同行和讀者批評指正。作者郵箱:zhouguoyun@sina.com。
編 者
2019年3月
第1章 單片機概述 1
1.1 單片機的基本概念 1
1.2 單片機的發展歷史 1
1.3 單片機的特點及應用 3
1.3.1 單片機的特點 3
1.3.2 單片機的應用 3
1.4 常見MCS-51單片機簡介 4
1.4.1 MCS-51系列單片機 4
1.4.2 ATMEL89系列單片機 4
1.4.3 STC系列單片機 5
思考題與習題 6
第2章 MCS-51單片機結構原理 7
2.1 MCS-51單片機內部結構及CPU 7
2.1.1 MCS-51單片機結構及特點 7
2.1.2 MCS-51單片機內部原理結構 8
2.1.3 MCS-51單片機的CPU 8
2.2 MCS-51單片機引腳信號 11
2.2.1 MCS-51單片機引腳信號及功能 11
2.2.2 MCS-51單片機外部總線結構 14
2.3 MCS-51單片機存儲器結構 15
2.3.1 程序存儲器結構 15
2.3.2 片內數據存儲器結構 16
2.3.3 片外數據存儲器結構 19
2.4 MCS-51單片機時鐘及CPU時序 20
2.4.1 時鐘電路及時鐘信號 20
2.4.2 CPU時序 22
2.5 MCS-51單片機的復位 24
2.5.1 復位狀態 24
2.5.2 復位電路 24
2.6 MCS-51單片機低功耗工作方式 25
2.6.1 低功耗結構及控制 25
2.6.2 空閑工作方式 26
2.6.3 掉電工作方式 27
思考題與習題 27
第3章 單片機C語言基礎 29
3.1 C51概述 29
3.1.1 C語言編程的優勢 29
3.1.2 C51與ANSI C的區別 30
3.1.3 C51擴充的關鍵字 31
3.2 C51數據類型及存儲 31
3.2.1 C51的數據類型 31
3.2.2 C51數據的存儲 33
3.3 C51一般變量的定義 34
3.3.1 C51變量的定義格式 34
3.3.2 C51變量的存儲類型 34
3.3.3 C51變量的存儲區 35
3.3.4 C51變量定義舉例 36
3.3.5 C51變量的存儲模式 36
3.3.6 C51變量的絕對定位 37
3.3.7 C51設備變量 38
3.4 C51特殊功能寄存器的定義 38
3.4.1 8位特殊功能寄存器的定義 39
3.4.2 16位特殊功能寄存器的定義 39
3.5 C51位變量的定義 39
3.5.1 bit型位變量的定義 39
3.5.2 sbit型位變量的定義 40
4.5.3 位操作應用 41
3.6 C51指針與結構體的定義 44
3.6.1 通用指針 44
3.6.2 存儲器專用指針 44
3.6.3 指針變換 45
3.6.4 C51指針應用 45
3.6.5 C51結構體定義 48
3.7 C51函數的定義 49
3.7.1 C51函數定義的一般格式 49
3.7.2 C51中斷函數的定義 50
思考題與習題 51
第4章 單片機開發工具 53
4.1 單片機程序開發軟件Keil C簡介 53
4.1.1 Keil C集成開發工具簡介 53
4.1.2 Keil C的操作工具 54
4.1.3 Keil C程序開發方法 58
4.1.4 Keil C調試運行方法 61
4.2 單片機系統模擬軟件Proteus簡介 64
4.2.1 Proteus主界面 65
4.2.2 Proteus ISIS的操作工具 65
4.2.3 Proteus ISIS原理圖設計方法 71
4.2.4 Proteus ISIS原理圖設計舉例 74
4.2.5 Proteus ISIS仿真方法 76
思考題與習題 77
第5章 單片機I/O口及應用 79
5.1 單片機I/O口結構原理 79
5.1.1 P1口 79
5.1.2 P2口 81
5.1.3 P3口 81
5.1.4 P0口 82
5.1.5 端口負載能力和接口要求 83
5.2 數碼管及顯示控制 84
5.2.1 數碼管顯示器結構原理 84
5.2.2 數碼管顯示方式 85
5.2.3 數碼管顯示控制 86
5.3 鍵盤及識別控制 87
5.3.1 鍵盤分類及按鍵識別 87
5.3.2 獨立式鍵盤及按鍵識別 88
5.3.3 行列式鍵盤及按鍵識別 89
5.3.4 中斷方式掃描鍵盤 92
5.3.5 鍵盤應用舉例 92
5.4 LCD顯示器及控制 95
5.4.1.LM016L引腳信號 95
5.4.2 LM016L操作指令 95
5.4.3 LM016L數據存儲器 96
5.4.4 LM016L基本操作函數 97
5.4.5 LM016L應用編程 98
思考題與習題 99
第6章 單片機中斷系統 101
6.1 中斷系統概述 101
6.1.1 中斷的基本概念 101
6.1.2 中斷的功能 101
6.2 中斷系統的結構與原理 102
6.2.1 中斷系統的結構 102
6.2.2 中斷系統的原理 102
6.2.3 外部中斷觸發方式 103
6.2.4 中斷請求標志 104
6.3 中斷系統控制 105
6.3.1 中斷允許控制 105
6.3.2 中斷優先級控制 106
6.4 中斷響應與處理 108
6.4.1 中斷響應 108
6.4.2 中斷處理 109
6.5 外部中斷應用舉例 109
6.5.1 中斷應用程序結構及初始化 109
6.5.2 應用舉例 111
思考題與習題 113
第7章 單片機定時器/計數器 115
7.1 單片機定時器/計數器的結構 115
7.2 定時器/計數器T0、T1 116
7.2.1 T0、T1的特殊功能寄存器 116
7.2.2 T0、T1的工作模式 117
7.2.3 T0、T1的使用方法 119
7.3 定時器/計數器T2 122
7.3.1 T2的特殊功能寄存器 122
7.3.2 T2的工作方式 123
7.4 定時器應用舉例 127
思考題與習題 133
第8章 單片機串行口 134
8.1 串行通信基礎知識 134
8.1.1 數據通信 134
8.1.2 異步通信和同步通信 135
8.1.3 波特率 136
8.1.4 通信方向 136
8.1.5 串行通信接口種類 137
8.2 串行口結構及控制 137
8.2.1 單片機串行口結構 137
8.2.2 串行口特殊功能寄存器 138
8.2.3 波特率設計 139
8.3 串行口工作方式 142
8.3.1 串行口方式0 142
8.3.2 串行口方式1 144
8.3.3 串行口方式2和方式3 145
8.4 串行口接口技術 146
8.4.1 RS-232接口 146
8.4.2 RS-422/485接口 148
8.4.3 USB接口 150
8.5 串行口的C51操作方法 152
8.5.1 串行口輸出函數 152
8.5.2 串行口輸入函數 155
8.6 串行口應用舉例 157
8.6.1 串行口方式0應用 157
8.6.2 串行口方式1、方式3應用 160
思考題與習題 162
第9章 單片機常用總線接口 164
9.1 接口的基本概念 164
9.1.1 單片機應用系統構成 164
9.1.2 接口的概念 165
9.1.3 接口的基本功能 165
9.1.4 接口的結構 165
9.1.5 端口及其編址 166
9.2 并行總線及存儲器接口 167
9.2.1 單片機并行總線結構 167
9.2.2 單片機并行總線操作時序 168
9.2.3 單片機與并行數據存儲器的接口 169
9.3 單片機與并行總線設備的接口 171
9.3.1 8255A內部結構 171
9.3.2 8255A引腳信號 172
9.3.3 8255A的控制字 173
9.3.4 8255A的工作方式 174
9.3.5 8255A應用舉例 175
9.4 IIC總線及應用接口 176
9.4.1 IIC總線特點 176
9.4.2 IIC總線時序 177
9.4.3 IIC總線操作函數 180
9.4.4 IIC總線應用 181
9.5 SPI總線及應用接口 183
9.5.1 SPI總線特點 183
9.5.2 SPI總線時序 184
9.5.3 SPI總線操作函數 185
9.5.4 SPI總線應用 187
思考題與習題 191
第10章 單片機與模擬、開關量接口技術 192
10.1 D/A轉換器及應用 192
10.1.1 D/A轉換器的主要參數 192
10.1.2 D/A轉換器TLC5615及接口技術 192
10.1.3 D/A轉換器DAC124S085及接口
技術 195
10.2 A/D轉換器及應用 198
10.2.1 A/D轉換器的主要參數 199
10.2.2 A/D轉換器ADC0834及接口技術 199
10.2.3 A/D轉換器TLC2543及接口技術 204
10.2.4 單片機片內A/D轉換器及應用 210
10.3 開關信號器件及應用 212
10.3.1 光電耦合器件及接口技術 212
10.3.2 繼電器接口技術 213
10.3.3 直流電機控制接口技術 214
10.3.4 步進電機控制接口技術 216
思考題與習題 217
第11章 單片機應用系統設計 219
11.1 簡易計算器設計 219
11.1.1 數碼管與鍵盤接口芯片BC7277
簡介 219
11.1.2 系統電路設計 223
11.1.3 系統功能設計 224
11.1.4 系統程序設計 225
11.2 萬年歷設計 229
11.2.1 時鐘芯片DS1302簡介 229
11.2.2 系統電路設計 232
11.2.3 系統功能設計 233
11.2.4 系統程序設計 233
11.3 環境檢測系統設計 236
11.3.1 溫濕度傳感器DHT11簡介 236
11.3.2 光照度傳感器BH1750簡介 239
11.3.3 系統電路設計 241
11.3.4 系統程序設計 242
課程設計參考題目 243
參考文獻 244
附錄A 標準ASCII碼表 245
附錄B C語言運算符特性表 246
附錄C C51庫函數 247
C.1 一般I/O函數 247
C.2 內部函數 248
C.3 絕對地址訪問函數 249
- C程序設計實踐教程 [劉衛國]
- C程序設計(慕課版) [劉衛國]
- 程序設計基礎實踐教程(C/C++語言版) [張桂芬 葛麗娜]
- C++案例項目精講 [主編 楊國興]
- SwiftUI完全開發 [李智威 著]
- MySQL數據庫項目式教程 [陳亞峰]
- C語言程序設計習題與實驗指導(第二版) [主編 甄增榮 張賓]
- C語言程序設計(第二版) [主編 甄增榮 田云霞]
- Unity3D虛擬現實應用開發實踐 [主 編 劉龍]
- Python程序設計 [主編 姜春磊 陳虹潔]
- C語言程序設計實踐教程(活頁式) [主編 鄭茵 陳巍 滕泓虬]
- 面向對象程序設計 [主編 張勇 張平華 趙小龍]
- Python程序設計基礎及實戰 [主編 劉健]
- C語言程序設計 [姜雪]
- Python程序設計實踐教程 [王鶴琴 蔡正保]
- C++程序設計實踐教程(第三版) [主編 劉衛國 曹岳輝]
- C++程序設計(第三版) [主編 曹岳輝 劉衛國]
- C語言程序設計項目化教程(活頁式) [主編 張利華 潘曉利]
- 機器人流程自動化(RPA)實戰——基于UiPath [主編 金鑫]
- Python 語言程序設計實踐指導 [主編 張雙獅]
- Python程序設計案例教程 [主編 毛錦庚 鐘肖英 周賢來 ]
- 基于.NET Core框架的分布式系統架構設計 [湯佳 著]
- Python語言程序設計教程 [郭其標 房宜汕]
- C語言同步案例習題精解 [主編 肖朝暉]
- Python程序設計 [李國燕 王新強 劉佳 等編著]
- Python程序設計項目化教程(活頁式) [主編 盧鳳偉]
- Java編程基礎案例式教程 [主編 陳艷華 唐春蘭]
- Python語言同步案例習題精解 [主編 肖朝暉]
- Unity應用開發與實戰(微課版) [主 編 程永恒]
- PHP程序設計項目化教程 [主 編 杜海穎]