本書較為系統(tǒng)地介紹了51單片機和Arduino的內(nèi)部結(jié)構(gòu)、工作原理、編程方法,并給出了使用實例。全書共21章,首先介紹了單片機的基本知識,引入51單片機和Arduino單片機,通過諸多實例講解了兩種形式單片機的結(jié)構(gòu)、原理、編程方法以及調(diào)試方法等。內(nèi)容基本覆蓋了單片機入門所需知識點。本書語言淺顯易懂,實例豐富,同時在網(wǎng)站http://eelab.buaa.edu.cn/的創(chuàng)新園地欄目中開源電路圖與源程序。
全書共21章,首先介紹了單片機的基本知識,引入51單片機和Arduino單片機,通過諸多實例講解了兩種形式單片機的結(jié)構(gòu)、原理、編程方法以及調(diào)試方法等。內(nèi)容基本覆蓋了單片機入門所需知識點。本書語言淺顯易懂,實例豐富,同時在網(wǎng)站http://eelab.buaa.edu.cn/的創(chuàng)新園地欄目中開源電路圖與源程序。
前 言
單片機是一種集成CPU、存儲器、I/O口、定時器的微型計算機系統(tǒng),也叫微控制器,在智能儀器、工業(yè)控制、家用電器、網(wǎng)絡(luò)通信、模塊化系統(tǒng)、汽車電子、消費電子等領(lǐng)域應用廣泛。
全書分為兩篇,上篇包括第1章~第11章,以經(jīng)典的8051單片機為例,介紹單片機結(jié)構(gòu)、工作原理及編程方法;下篇包括第12章~第21章,結(jié)合單片機發(fā)展趨勢,介紹Arduino單片機平臺及其編程方法。兩種單片機均提供應用實例方便學習掌握,整體結(jié)構(gòu)如附圖所示。
附圖 本書內(nèi)容組織結(jié)構(gòu)圖
第1章主要介紹單片機的發(fā)展歷史及應用領(lǐng)域。第2章詳細介紹了8051單片機的內(nèi)部結(jié)構(gòu)及指令系統(tǒng)。第3章介紹了編者開發(fā)的單片機開發(fā)板硬件系統(tǒng),作為后續(xù)講解過程中的硬件基礎(chǔ)。第4章~第9章循序漸進地介紹了8051單片機對I/O口、中斷系統(tǒng)、定時器、串口等資源的控制,并提供可以運行的程序代碼。第10章~第11章結(jié)合課程中實踐作品,提供了基于51單片機的應用實例。第12章介紹了目前非常流行的開源單片機平臺Arduino及其開發(fā)環(huán)境搭建。第13章介紹了Arduino硬件電路,作為后續(xù)講解過程中的硬件基礎(chǔ)。第14章~第17章介紹了Arduino應用開發(fā)中常用功能模塊的編程實現(xiàn)。第18章~第21章提供了基于Arduino的應用實例。
本書由王俊、張玉璽、劉寒穎編著,其中王俊編著了第1、2、3、4、5、12、13、14、15章;張玉璽編著了第6、7、8、9、16、17、18、19章;劉寒穎編著了第10、11、20、21章;最后由王俊對本書進行統(tǒng)稿。本書在編寫過程中,北京航空航天大學電子信息工程學院的碩士生吳智昌、羅雨泉、朱振國、李偉華、馬抒恒、屈亦成,本科生胡楊、李天一、王孖杰等,結(jié)合項目調(diào)試經(jīng)驗,參與了單片機例程的編寫與書稿的編輯工作。
本教材配有開源電路圖及源程序,可登錄北京航空航天大學空天電子信息實驗教學中心網(wǎng)站(http://eelab.buaa.edu.cn/)免費下載。
書中如有疏漏或不當之處,懇請廣大讀者批評指正。
王俊,北航電子信息工程學院教授、博士生導師、副院長,空天電子信息國家級實驗教學示范中心和空天電子信息國家級虛擬仿真實驗教學中心主任。兼任中國電子學會DSP專家委員會副主任委員、中國電子學會無線電定位技術(shù)分會委員。主要從事環(huán)境智能感知、實時信號并行處理、深度學習、智能硬件等方面的研究工作,出版教材《DSP/FPGA嵌入式實時處理技術(shù)及應用》。
上 篇
第1章 單片機概述(2)
1.1 單片機簡介(2)
1.2 計算機發(fā)展史(2)
1.3 單片機發(fā)展史(4)
1.4 單片機的應用(5)
1.5 如何學習單片機(6)
1.6 小結(jié)(8)
第2章 51單片機的基本結(jié)構(gòu)和工作原理(9)
2.1 概述(9)
2.2 引腳及最小系統(tǒng)(9)
2.2.1 時鐘電路引腳(9)
2.2.2 復位信號引腳(10)
2.2.3 輸入/輸出引腳(11)
2.2.4 其他控制引腳(11)
2.2.5 單片機最小系統(tǒng)(12)
2.3 內(nèi)部結(jié)構(gòu)(12)
2.4 中央處理器(14)
2.4.1 運算器(14)
2.4.2 控制器(14)
2.4.3 指令集與指令周期(15)
2.5 存儲器(20)
2.5.1 數(shù)據(jù)存儲器(20)
2.5.2 程序存儲器(25)
2.6 工作過程(26)
2.7 小結(jié)(28)
第3章 51單片機開發(fā)板介紹(29)
3.1 最小系統(tǒng)(29)
3.2 電源系統(tǒng)(31)
3.3 外圍器件與接口(32)
3.4 小結(jié)(33)
第4章 51單片機LED燈控制(34)
4.1 LED工作原理(34)
4.2 I/O寄存器控制(36)
4.3 流程圖(39)
4.4 程序設(shè)計(39)
4.4.1 C51基礎(chǔ)(39)
4.4.2 LED燈亮滅的C51程序(41)
4.5 編寫/編譯/調(diào)試(41)
4.5.1 編寫(42)
4.5.2 編譯(44)
4.5.3 調(diào)試(45)
4.6 燒寫(47)
4.7 小結(jié)(48)
第5章 51單片機控制數(shù)碼管(49)
5.1 數(shù)碼管工作原理(49)
5.1.1 LED燈兩種接法(50)
5.1.2 位選與段選(51)
5.1.3 兩種顯示方式(52)
5.1.4 消去殘影(53)
5.2 I/O寄存器控制(55)
5.3 靜態(tài)顯示實現(xiàn)(55)
5.3.1 流程圖(55)
5.3.2 程序設(shè)計(56)
5.3.3 燒寫(56)
5.4 動態(tài)顯示實現(xiàn)(57)
5.4.1 流程圖(57)
5.4.2 程序設(shè)計(57)
5.4.3 燒寫(58)
5.5 小結(jié)(59)
第6章 51單片機按鍵控制(60)
6.1 按鍵檢測原理(60)
6.1.1 獨立按鍵(60)
6.1.2 矩陣鍵盤(61)
6.1.3 按鍵消抖(62)
6.2 I/O寄存器控制(63)
6.3 獨立按鍵功能實現(xiàn)(63)
6.3.1 流程圖(63)
6.3.2 程序設(shè)計(63)
6.3.3 燒寫(64)
6.4 矩陣鍵盤功能實現(xiàn)(64)
6.4.1 流程圖(65)
6.4.2 程序設(shè)計(66)
6.4.3 燒寫(68)
6.5 小結(jié)(69)
第7章 51單片機的中斷系統(tǒng)(70)
7.1 中斷系統(tǒng)概述(70)
7.1.1 中斷的概念(70)
7.1.2 中斷源(70)
7.1.3 中斷向量表(71)
7.1.4 中斷優(yōu)先級(71)
7.1.5 中斷的技術(shù)優(yōu)勢(72)
7.2 中斷寄存器控制(72)
7.2.1 中斷允許控制寄存器IE(73)
7.2.2 中斷優(yōu)先控制寄存器IP(74)
7.2.3 定時器/計數(shù)器控制寄存器TCON(75)
7.3 流程圖(76)
7.4 程序設(shè)計(76)
7.4.1 中斷服務函數(shù)寫法(76)
7.4.2 C51程序(77)
7.4.3 由匯編程序看程序運行過程(77)
7.5 燒寫(79)
7.6 小結(jié)(80)
第8章 51單片機定時器(81)
8.1 定時器工作原理(81)
8.1.1 定時/計數(shù)兩種模式(81)
8.1.2 定時器的工作過程(82)
8.2 相關(guān)寄存器控制(83)
8.2.1 工作方式寄存器TMOD(84)
8.2.2 定時器/計數(shù)器控制寄存器TCON(85)
8.2.3 定時器T0/T1的高/低8位TH0/TL0/TH1/TL1(86)
8.3 定時器功能實現(xiàn)(方式1)(86)
8.3.1 工作方式1 16位定時/計數(shù)器(86)
8.3.2 定時器的初始化(87)
8.3.3 流程圖(88)
8.3.4 程序設(shè)計(89)
8.3.5 調(diào)試(89)
8.3.6 燒寫(91)
8.4 定時器的其他工作方式(92)
8.4.1 工作方式0 13位定時/計數(shù)器(92)
8.4.2 工作方式2 自動重裝初值的8位定時/計數(shù)器(93)
8.4.3 工作方式3 將T0分成兩個獨立的8位定時/計數(shù)器(95)
8.5 小結(jié)(96)
第9章 51單片機串口通信(97)
9.1 串行口的工作原理(97)
9.1.1 串行通信基本概念(97)
9.1.2 字符幀(98)
9.1.3 波特率(98)
9.1.4 串行通信的傳輸方向(99)
9.1.5 串口工作流程(99)
9.1.6 接口電路(100)
9.2 串口相關(guān)寄存器控制(101)
9.2.1 串行數(shù)據(jù)緩沖器SBUF(103)
9.2.2 串行口控制寄存器SCON(103)
9.2.3 電源控制寄存器PCON(104)
9.3 串口通信工作方式(104)
9.3.1 工作方式0 同步移位寄存器(104)
9.3.2 工作方式1 10位數(shù)據(jù)的異步通信口(104)
9.3.3 工作方式2 11位數(shù)據(jù)的異步通信口(106)
9.3.4 工作方式3 11位數(shù)據(jù)的異步通信口(106)
9.4 波特率的計算(107)
9.4.1 串口4種工作方式下的波特率計算(107)
9.4.2 波特率計算方式舉例(107)
9.5 流程圖(107)
9.5.1 串口數(shù)據(jù)發(fā)送操作(107)
9.5.2 串口數(shù)據(jù)接收操作(108)
9.6 程序設(shè)計(108)
9.7 燒寫(110)
9.8 小結(jié)(111)
第10章 基于51單片機的LCD電子鐘(112)
10.1 LCD工作原理(112)
10.1.1 液晶的概念(112)
10.1.2 液晶通光原理(112)
10.1.3 液晶顯示器工作原理(113)
10.1.4 LCD-1602工作原理(114)
10.2 系統(tǒng)連接(117)
10.3 流程圖(118)
10.4 程序設(shè)計(118)
10.5 燒寫(122)
10.6 小結(jié)(122)
第11章 基于51單片機的打地鼠游戲(123)
11.1 工作原理(123)
11.1.1 LCD-12864工作原理(123)
11.1.2 AT24C02工作原理(124)
11.2 系統(tǒng)連接圖(125)
11.3 流程圖(125)
11.4 程序設(shè)計(127)
11.5 燒寫(131)
11.6 小結(jié)(133)
下 篇
第12章 Arduino入門(136)
12.1 Arduino的誕生(136)
12.2 Arduino的特性(137)
12.3 熟悉Arduino Uno(138)
12.4 搭建Arduino開發(fā)環(huán)境(139)
12.4.1 安裝Arduino IDE(139)
12.4.2 配置Arduino IDE(141)
12.5 編寫Arduino程序(142)
12.5.1 Arduino程序構(gòu)成(142)
12.5.2 編寫Arduino程序三例(143)
12.6 小結(jié)(145)
第13章 Arduino開發(fā)板介紹(146)
13.1 Arduino開發(fā)板簡介(146)
13.2 Arduino開發(fā)板核心電路(148)
13.3 Arduino開發(fā)板電源系統(tǒng)(149)
13.4 Arduino開發(fā)板USB(150)
13.5 Arduino開發(fā)板外設(shè)接口(151)
13.6 小結(jié)(151)
第14章 Arduino數(shù)字輸入輸出接口(152)
14.1 數(shù)字接口工作原理(152)
14.1.1 數(shù)字接口數(shù)量與布局(152)
14.1.2 輸入或輸出模式設(shè)置(153)
14.1.3 數(shù)字接口功能函數(shù)(153)
14.2 數(shù)字輸出接口(154)
14.2.1 系統(tǒng)連接(154)
14.2.2 流程圖(155)
14.2.3 程序設(shè)計(155)
14.2.4 燒寫(156)
14.3 數(shù)字輸入接口(157)
14.3.1 系統(tǒng)連接(157)
14.3.2 流程圖(157)
14.3.3 程序設(shè)計(158)
14.3.4 燒寫(158)
14.4 小結(jié)(159)
第15章 Arduino模擬輸入輸出接口(160)
15.1 模擬接口工作原理(160)
15.1.1 模擬輸入接口(160)
15.1.2 模擬輸出接口(161)
15.1.3 模擬接口位置(161)
15.1.4 模擬輸入接口的相關(guān)函數(shù)(162)
15.1.5 模擬輸出接口的相關(guān)函數(shù)(163)
15.2 模擬輸入接口(163)
15.2.1 系統(tǒng)連接(163)
15.2.2 流程圖(164)
15.2.3 程序設(shè)計(164)
15.2.4 燒寫(165)
15.3 模擬輸入Constrain函數(shù)(165)
15.3.1 限制輸入數(shù)據(jù)范圍(165)
15.3.2 映射輸入數(shù)值(166)
15.4 map函數(shù)(167)
15.4.1 系統(tǒng)連接(167)
15.4.2 流程圖(167)
15.4.3 程序設(shè)計(167)
15.4.4 燒寫(169)
15.5 模擬輸出接口(169)
15.5.1 流程圖(169)
15.5.2 程序設(shè)計(169)
15.5.3 燒寫(170)
15.6 小結(jié)(170)
第16章 Arduino串口通信(171)
16.1 工作原理(171)
16.1.1 Arduino串口引腳(171)
16.1.2 Serial庫函數(shù)(172)
16.2 流程圖(173)
16.3 程序設(shè)計(173)
16.4 小結(jié)(174)
第17章 基于Arduino的串口RGB迷你燈(175)
17.1 RGB-LED工作原理(175)
17.2 系統(tǒng)連接(175)
17.3 流程圖(176)
17.4 程序設(shè)計(177)
17.5 燒寫(178)
17.6 小結(jié)(179)
第18章 基于Arduino的溫濕度計(180)
18.1 DHT11傳感器工作原理(180)
18.2 系統(tǒng)連接(182)
18.3 流程圖(183)
18.4 程序設(shè)計(184)
18.5 燒寫(187)
18.6 小結(jié)(187)
第19章 基于Arduino的超聲波測距裝置(188)
19.1 工作原理(188)
19.1.1 超聲波測距原理(188)
19.1.2 LCD工作原理(189)
19.2 系統(tǒng)連接(189)
19.3 流程圖(190)
19.4 程序設(shè)計(190)
19.5 燒寫(191)
19.6 小結(jié)(192)
第20章 基于Arduino的重力感應聯(lián)機互動游戲設(shè)備(193)
20.1 工作原理(193)
20.1.1 MPU-6050加速度傳感器(193)
20.1.2 HC-05藍牙模塊(194)
20.2 系統(tǒng)連接(195)
20.3 流程圖(195)
20.4 程序設(shè)計(197)
20.5 燒寫(199)
20.6 小結(jié)(200)
第21章 基于Arduino的WiFi小車(201)
21.1 工作原理(201)
21.1.1 WiFi小車結(jié)構(gòu)(201)
21.1.2 ESP8266 WiFi模塊(201)
21.1.3 L298N電機驅(qū)動模塊(202)
21.2 系統(tǒng)連接(203)
21.3 流程圖(204)
21.4 程序設(shè)計(204)
21.4.1 ESP8266調(diào)試2