李克強總理提出要實施“中國制造2025”,堅持創新驅動、智能轉型、強化基礎、綠色發展,加快從制造大國轉向制造強國。基于單片機技術的設計方法正在成為電子系統設計的主流,單片機技術將為國家戰略——智能制造提供強有力的支持,因此單片機技術已經成為高等學校電子信息類專業學生必須掌握的一門重要技術。
本書在編寫過程中,根據多年來對不同專業單片機課程的教學經驗,總結出的一種新的教學思想——誘導和小模塊制作教學思想,力求在內容、結構、理論教學與實踐教學等方面充分體現單片機教學的特點。與同類教材相比,本書具有以下特點。
(1)教、學、做相結合,將理論與實踐相結合。
單片機技術及應用是一門應用性很強的課程,我們在多年的教學過程中,一直采用教、學、做相結合的教學模式,教學效果好。這種經驗充分體現在本書內容的編排上,從最基本的應用出發,由實際問題入手,列舉大量的與教學內容相關的應用實例,希望通過這些實例使讀者對課程產生興趣,達到更好理解相關教學內容的目的。
(2)理論夠用為度,著眼于應用。
結合應用型本科和高職高專教育的特點,本書在編寫時按照貼近目標、保證基礎、面向更新、聯系實際、突出應用,以“必需、夠用”為度的原則,突出重點,注重學生的操作技能、分析問題、解決問題的能力培養。
(3)內容安排合理,注重學生學習需要。
為了方便教學和學生學習,在本書的案例分析中對所涉及的元器件、電路圖、程序流程圖及程序代碼都進行了詳細介紹;在課程內容上常結合具體案例,分別用匯編語言和C51語言同時編程,讓讀者體會兩種語言的優缺點。在一些地方還對用兩種語言完成同一項內容做了比較,這與目前大部分單片機教材基本都使用單一語言進行編程是有一定區別的。每個章節案例分析都用當前流行的Keil和Proteus軟件進行仿真調試,使抽象的軟件學習與形象的硬件仿真結合起來,對初學者的學習是有很大幫助的,部分解決了沒有硬件環境就不能有效完成單片機教學的問題,也為學生自學提供了條件。
全書由11章和3個附錄組成,系統地介紹了51單片機的基本知識和設計開發過程。李精華教授對本書的編寫思路與大綱進行了總體策劃,指導全書的編寫,對全書統稿,并具體編寫了第1、2、8、9、10、11章,第3、4章由桂林理工大學的鄧酩老師編寫,第5、6、7章由桂林航天工業學院的李云老師編寫,附錄A、B、C由桂林航天工業學院的盧望老師編寫。
本書使用匯編語言和C51程序設計,案例分析使用當前流行的Keil和Proteus軟件,并經過實驗調試。本書提供配套PPT、案例程序、習題參考答案等,請登錄華信教育資源網注冊下載,也可聯系本書編輯索取。
本書在編寫過程中查閱和參考了相關參考文獻和其他資料,從中得到很多幫助和啟示;還得到“2017年桂林航天工業學院校級重點課程建設項目基金”的資助,桂林航天工業學院為本書配備了全套的實驗板和元器件,在此表示深深的感謝。單片機技術是發展的,相應的教學內容和教學方法也應不斷改進,其中一定有許多問題值得深入探討。我們真誠地希望廣大讀者對書中的錯誤和不妥之處給予批評指正。
作 者
2017年6月于桂林航天工業學院
李精華,教授,學士畢業于國防科技大學電子工程專業,碩士畢業于天津大學通信與信息系統專業。廣西電氣及自動化教資委委員,桂林航天工業學院教學督導員,桂林市公共資源交易中心評審專家。長期任教于桂林航天工業學院,講授單片機原理及應用、數字電子技術、EDA技術等課程。
第1章 認識51單片機 1
1.1 單片機基本概念 1
1.2 51系列單片機介紹 2
1.2.1 51單片機的特點和分類 2
1.2.2 MCS-51系列單片機 4
1.2.3 Atmel的51系列單片機 4
1.2.4 STC-51單片機 4
1.2.5 51單片機產品標號與引腳信息 5
1.2.6 單片機的應用 6
1.3 51單片機應用系統開發流程與開發工具 7
1.3.1 51單片機應用系統的開發流程 7
1.3.2 Keil C51開發工具簡介 8
1.3.3 Proteus軟件使用簡介 8
1.3.4 單片機開發仿真器 9
1.3.5 編程器 9
本章小結 10
習題一 10
第2章 51系列單片機基本結構 11
2.1 51單片機的內部結構 11
2.1.1 中央處理器(CPU) 12
2.1.2 存儲器 13
2.2 51系列單片機的端口及引腳介紹 19
2.3 51單片機最小系統 23
2.3.1 51單片機最小系統設計 23
2.3.2 51單片機復位電路 24
2.3.4 時鐘電路 26
2.4 51單片機的CPU時序 26
本章小結 27
習題二 28
第3章 51單片機匯編語言程序設計 33
3.1 51單片機指令系統簡介 33
3.1.1 51單片機匯編指令格式 34
3.1.2 51單片機的指令符號 35
3.1.3 51單片機匯編語言的語句格式 35
3.1.4 51單片機匯編語言的語句格式 36
3.2 51單片機指令的尋址方式 38
3.2.1 立即尋址 38
3.2.2 直接尋址 38
3.2.3 寄存器尋址 39
3.2.4 寄存器間接尋址 39
3.2.5 變址尋址 40
3.2.6 相對尋址 40
3.2.7 位尋址 41
3.3 數據傳送類指令 42
3.3.1 內部RAM間的數據傳送 42
3.3.2 ACC與外部數據存儲器(或擴展的I/O口)傳遞數據 43
3.3.3 程序存儲器數據傳送類指令 44
3.3.4 堆棧操作 45
3.3.5 數據交換指令 46
3.4 算術運算類指令 47
3.4.1 加法指令 47
3.4.2 減法指令 47
3.4.3 加1減1指令 48
3.4.4 十進制調整指令 49
3.4.5 乘法和除法指令 50
3.5 邏輯運算的指令 50
3.6 循環移位類指令 52
3.7 控制轉移類指令 53
3.7.1 無條件轉移指令 53
3.7.2 條件轉移指令 55
3.7.3 數值比較不相等轉移指令 55
3.7.4 循環轉移指令 55
3.7.5 子程序調用及返回指令 56
3.8 位操作類指令 57
3.8.1 位數據傳送指令 58
3.8.2 置位和清零指令 58
3.8.3 位邏輯運算指令 58
3.9 51單片機匯編語言程序設計 59
3.9.1 匯編語言概述 59
3.9.2 匯編語言指令 59
3.9.3 順序程序設計 62
3.9.4 分支程序設計 63
3.9.5 循環程序設計 64
3.9.6 查表程序設計 65
本章小結 66
習題三 66
第4章 單片機C51程序設計 72
4.1 單片機C51語言的基本結構 72
4.2 C51語言數據 75
4.2.1 C51數據類型 75
4.2.2 標識符和關鍵字 80
4.2.3 常量和變量 82
4.3 C51運算符和表達式 85
4.4 C51語句 89
4.4.1 簡單語句與復合語句 89
4.4.2 分支控制語句 89
4.4.3 循環控制語句 92
4.4.4 轉移語句 93
4.5 C51函數與預處理命令 94
4.5.1 函數的說明與定義 94
4.5.2 函數的調用 96
4.5.3 內部函數與外部函數 97
4.5.4 C51語言的預處理命令 98
本章小結 99
習題四 100
第5章 51單片機系統的顯示和按鍵接口 102
5.1 LED與51單片機接口設計 102
5.2 LED數碼顯示原理及應用實現 105
5.2.1 LED數碼管顯示原理 105
5.2.2 單片機控制的數碼管靜態顯示設計 107
5.2.3 單片機控制的數碼管動態顯示設計 109
5.2.4 單片機控制的字符型LCD液晶顯示及接口設計 111
5.2.5 單片機與LED點陣屏的接口設計 119
5.3 51單片機系統的按鍵接口 121
5.3.1 常用按鍵 121
5.3.2 51單片機獨立式按鍵設計 124
5.3.3 51單片機矩陣鍵盤設計 127
本章小結 132
習題五 132
第6章 51單片機的中斷應用 138
6.1 中斷系統概述 138
6.1.1 中斷的相關概念 138
6.1.2 CPU與外設之間的數據傳送方式 138
6.1.3 中斷的種類 139
6.2 51系列單片機的中斷系統 140
6.2.1 51單片機中斷類型 140
6.2.2 中斷控制寄存器 141
6.2.3 中斷向量地址與中斷控制 143
6.2.4 中斷處理過程 144
6.3 中斷服務程序設計 147
6.3.1 中斷初始化 147
6.3.2 中斷子程序 147
6.3.3 運用中斷法設計信號燈 148
本章小結 151
習題六 151
第7章 51單片機定時/計數器應用 157
7.1 定時/計數器的結構及工作原理 157
7.1.1 定時/計數器的組成 157
7.1.2 定時/計數器的控制寄存器與工作方式 158
7.1.3 定時/計數器的工作方式 159
7.2 定時/計數器的應用 162
7.2.1 51單片機控制的蜂鳴器設計 163
7.2.2 運用51單片機的定時中斷方式控制8個LED閃爍 166
7.2.3 運用51單片機的定時/計數器設計簡易頻率發生器 169
本章小結 172
習題七 172
第8章 51單片機串行通信 176
8.1 串行通信基礎 176
8.1.1 波特率 176
8.1.2 串行通信的方式 177
8.1.3 RS-232C電平與TTL電平的轉換 178
8.2 認識51單片機串行口 181
8.2.1 51單片機串行口結構 181
8.2.2 51單片機串行口工作方式 183
8.2.3 波特率的設置 186
8.3 51單片機串行口設計 188
8.3.1 用51單片機的串行口擴展控制流水燈設計 188
8.3.2 51單片機串行口的并行轉串行設計 190
8.3.3 51單片機與單片機之間的雙機通信設計 192
8.3.4 51單片機與PC機之間的通信設計 196
本章小結 198
習題八 198
第9章 51單片機系統的存儲器擴展 200
9.1 51單片機的總線結構 200
9.2 51單片機系統擴展結構與編址技術 201
9.3 51單片機系統的存儲器并行擴展 203
9.3.1 存儲器簡介 203
9.3.2 51單片機系統存儲器并行擴展設計 205
9.3.3 51單片機的Flash存儲器擴展設計 207
9.3.4 I2C總線和串行E2PROM芯片AT24C02介紹 210
9.4 E2PROM芯片AT24C02與51單片機的通信設計 216
本章小結 220
習題九 220
第10章 A/D與D/A轉換接口設計 221
10.1 A/D轉換基本知識 221
10.2 ADC0809模數轉換器 222
10.3 基于ADC0809的簡易數字電壓表設計 225
10.4 D/A轉換的基本知識 229
10.5 集成D/A轉換器――DAC0832 231
10.6 51單片機控制簡單波形發生器設計 234
10.7 I2C總線A/D與D/A轉換器PCF8591 235
10.7.1 PCF8591芯片介紹 235
10.7.2 PCF8591的I2C總線連接與通信 236
10.7.3 PCF8591的A/D和D/A轉換器程序設計 237
本章小結 242
習題十 242
第11章 51單片機綜合實驗開發板設計 244
11.1 單片機應用系統開發過程 244
11.1.1 總體設計 244
11.1.2 硬件設計 245
11.1.3 資源分配 245
11.2 單片機開發工具及選擇 246
11.2.1 仿真器 246
11.2.2 其他工具 246
11.3 系統可靠性設計 247
11.4 51單片機綜合實驗系統設計 248
11.4.1 電源電路 248
11.4.2 51單片機最小系統 249
11.4.3 數碼管動態顯示接口電路 250
11.4.4 液晶接口電路 252
11.4.5 矩陣鍵盤電路 254
11.4.6 與PC串行通信電路 256
11.4.7 LED控制電路 258
11.4.8 I2C總線器件電路 260
11.4.9 繼電器、蜂鳴器和電機控制電路 261
11.4.10 溫度控制電路 265
11.4.11 紅外遙控系統 269
11.4.12 實時時鐘電路 272
附錄A 51系列單片機指令表 273
附錄B Keil ?Vision集成開發環境 276
附錄C 基于51單片機仿真的Proteus軟件使用簡介 284
部分習題參考答案 292
參考文獻 294