本書較為系統(tǒng)地介紹了51單片機和Arduino的內部結構、工作原理、編程方法,并給出了使用實例。全書共21章,首先介紹了單片機的基本知識,引入51單片機和Arduino單片機,通過諸多實例講解了兩種形式單片機的結構、原理、編程方法以及調試方法等。內容基本覆蓋了單片機入門所需知識點。本書語言淺顯易懂,實例豐富,同時在網站http://eelab.buaa.edu.cn/的創(chuàng)新園地欄目中開源電路圖與源程序。
全書共21章,首先介紹了單片機的基本知識,引入51單片機和Arduino單片機,通過諸多實例講解了兩種形式單片機的結構、原理、編程方法以及調試方法等。內容基本覆蓋了單片機入門所需知識點。本書語言淺顯易懂,實例豐富,同時在網站http://eelab.buaa.edu.cn/的創(chuàng)新園地欄目中開源電路圖與源程序。
前 言
單片機是一種集成CPU、存儲器、I/O口、定時器的微型計算機系統(tǒng),也叫微控制器,在智能儀器、工業(yè)控制、家用電器、網絡通信、模塊化系統(tǒng)、汽車電子、消費電子等領域應用廣泛。
全書分為兩篇,上篇包括第1章~第11章,以經典的8051單片機為例,介紹單片機結構、工作原理及編程方法;下篇包括第12章~第21章,結合單片機發(fā)展趨勢,介紹Arduino單片機平臺及其編程方法。兩種單片機均提供應用實例方便學習掌握,整體結構如附圖所示。
附圖 本書內容組織結構圖
第1章主要介紹單片機的發(fā)展歷史及應用領域。第2章詳細介紹了8051單片機的內部結構及指令系統(tǒng)。第3章介紹了編者開發(fā)的單片機開發(fā)板硬件系統(tǒng),作為后續(xù)講解過程中的硬件基礎。第4章~第9章循序漸進地介紹了8051單片機對I/O口、中斷系統(tǒng)、定時器、串口等資源的控制,并提供可以運行的程序代碼。第10章~第11章結合課程中實踐作品,提供了基于51單片機的應用實例。第12章介紹了目前非常流行的開源單片機平臺Arduino及其開發(fā)環(huán)境搭建。第13章介紹了Arduino硬件電路,作為后續(xù)講解過程中的硬件基礎。第14章~第17章介紹了Arduino應用開發(fā)中常用功能模塊的編程實現。第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)稿。本書在編寫過程中,北京航空航天大學電子信息工程學院的碩士生吳智昌、羅雨泉、朱振國、李偉華、馬抒恒、屈亦成,本科生胡楊、李天一、王孖杰等,結合項目調試經驗,參與了單片機例程的編寫與書稿的編輯工作。
本教材配有開源電路圖及源程序,可登錄北京航空航天大學空天電子信息實驗教學中心網站(http://eelab.buaa.edu.cn/)免費下載。
書中如有疏漏或不當之處,懇請廣大讀者批評指正。
王俊,北航電子信息工程學院教授、博士生導師、副院長,空天電子信息國家級實驗教學示范中心和空天電子信息國家級虛擬仿真實驗教學中心主任。兼任中國電子學會DSP專家委員會副主任委員、中國電子學會無線電定位技術分會委員。主要從事環(huán)境智能感知、實時信號并行處理、深度學習、智能硬件等方面的研究工作,出版教材《DSP/FPGA嵌入式實時處理技術及應用》。
上 篇
第1章 單片機概述(2)
1.1 單片機簡介(2)
1.2 計算機發(fā)展史(2)
1.3 單片機發(fā)展史(4)
1.4 單片機的應用(5)
1.5 如何學習單片機(6)
1.6 小結(8)
第2章 51單片機的基本結構和工作原理(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 內部結構(12)
2.4 中央處理器(14)
2.4.1 運算器(14)
2.4.2 控制器(14)
2.4.3 指令集與指令周期(15)
2.5 存儲器(20)
2.5.1 數據存儲器(20)
2.5.2 程序存儲器(25)
2.6 工作過程(26)
2.7 小結(28)
第3章 51單片機開發(fā)板介紹(29)
3.1 最小系統(tǒng)(29)
3.2 電源系統(tǒng)(31)
3.3 外圍器件與接口(32)
3.4 小結(33)
第4章 51單片機LED燈控制(34)
4.1 LED工作原理(34)
4.2 I/O寄存器控制(36)
4.3 流程圖(39)
4.4 程序設計(39)
4.4.1 C51基礎(39)
4.4.2 LED燈亮滅的C51程序(41)
4.5 編寫/編譯/調試(41)
4.5.1 編寫(42)
4.5.2 編譯(44)
4.5.3 調試(45)
4.6 燒寫(47)
4.7 小結(48)
第5章 51單片機控制數碼管(49)
5.1 數碼管工作原理(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)顯示實現(55)
5.3.1 流程圖(55)
5.3.2 程序設計(56)
5.3.3 燒寫(56)
5.4 動態(tài)顯示實現(57)
5.4.1 流程圖(57)
5.4.2 程序設計(57)
5.4.3 燒寫(58)
5.5 小結(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 獨立按鍵功能實現(63)
6.3.1 流程圖(63)
6.3.2 程序設計(63)
6.3.3 燒寫(64)
6.4 矩陣鍵盤功能實現(64)
6.4.1 流程圖(65)
6.4.2 程序設計(66)
6.4.3 燒寫(68)
6.5 小結(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 中斷的技術優(yōu)勢(72)
7.2 中斷寄存器控制(72)
7.2.1 中斷允許控制寄存器IE(73)
7.2.2 中斷優(yōu)先控制寄存器IP(74)
7.2.3 定時器/計數器控制寄存器TCON(75)
7.3 流程圖(76)
7.4 程序設計(76)
7.4.1 中斷服務函數寫法(76)
7.4.2 C51程序(77)
7.4.3 由匯編程序看程序運行過程(77)
7.5 燒寫(79)
7.6 小結(80)
第8章 51單片機定時器(81)
8.1 定時器工作原理(81)
8.1.1 定時/計數兩種模式(81)
8.1.2 定時器的工作過程(82)
8.2 相關寄存器控制(83)
8.2.1 工作方式寄存器TMOD(84)
8.2.2 定時器/計數器控制寄存器TCON(85)
8.2.3 定時器T0/T1的高/低8位TH0/TL0/TH1/TL1(86)
8.3 定時器功能實現(方式1)(86)
8.3.1 工作方式1 16位定時/計數器(86)
8.3.2 定時器的初始化(87)
8.3.3 流程圖(88)
8.3.4 程序設計(89)
8.3.5 調試(89)
8.3.6 燒寫(91)
8.4 定時器的其他工作方式(92)
8.4.1 工作方式0 13位定時/計數器(92)
8.4.2 工作方式2 自動重裝初值的8位定時/計數器(93)
8.4.3 工作方式3 將T0分成兩個獨立的8位定時/計數器(95)
8.5 小結(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 串口相關寄存器控制(101)
9.2.1 串行數據緩沖器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位數據的異步通信口(104)
9.3.3 工作方式2 11位數據的異步通信口(106)
9.3.4 工作方式3 11位數據的異步通信口(106)
9.4 波特率的計算(107)
9.4.1 串口4種工作方式下的波特率計算(107)
9.4.2 波特率計算方式舉例(107)
9.5 流程圖(107)
9.5.1 串口數據發(fā)送操作(107)
9.5.2 串口數據接收操作(108)
9.6 程序設計(108)
9.7 燒寫(110)
9.8 小結(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 程序設計(118)
10.5 燒寫(122)
10.6 小結(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 程序設計(127)
11.5 燒寫(131)
11.6 小結(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程序構成(142)
12.5.2 編寫Arduino程序三例(143)
12.6 小結(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ā)板外設接口(151)
13.6 小結(151)
第14章 Arduino數字輸入輸出接口(152)
14.1 數字接口工作原理(152)
14.1.1 數字接口數量與布局(152)
14.1.2 輸入或輸出模式設置(153)
14.1.3 數字接口功能函數(153)
14.2 數字輸出接口(154)
14.2.1 系統(tǒng)連接(154)
14.2.2 流程圖(155)
14.2.3 程序設計(155)
14.2.4 燒寫(156)
14.3 數字輸入接口(157)
14.3.1 系統(tǒng)連接(157)
14.3.2 流程圖(157)
14.3.3 程序設計(158)
14.3.4 燒寫(158)
14.4 小結(159)
第15章 Arduino模擬輸入輸出接口(160)
15.1 模擬接口工作原理(160)
15.1.1 模擬輸入接口(160)
15.1.2 模擬輸出接口(161)
15.1.3 模擬接口位置(161)
15.1.4 模擬輸入接口的相關函數(162)
15.1.5 模擬輸出接口的相關函數(163)
15.2 模擬輸入接口(163)
15.2.1 系統(tǒng)連接(163)
15.2.2 流程圖(164)
15.2.3 程序設計(164)
15.2.4 燒寫(165)
15.3 模擬輸入Constrain函數(165)
15.3.1 限制輸入數據范圍(165)
15.3.2 映射輸入數值(166)
15.4 map函數(167)
15.4.1 系統(tǒng)連接(167)
15.4.2 流程圖(167)
15.4.3 程序設計(167)
15.4.4 燒寫(169)
15.5 模擬輸出接口(169)
15.5.1 流程圖(169)
15.5.2 程序設計(169)
15.5.3 燒寫(170)
15.6 小結(170)
第16章 Arduino串口通信(171)
16.1 工作原理(171)
16.1.1 Arduino串口引腳(171)
16.1.2 Serial庫函數(172)
16.2 流程圖(173)
16.3 程序設計(173)
16.4 小結(174)
第17章 基于Arduino的串口RGB迷你燈(175)
17.1 RGB-LED工作原理(175)
17.2 系統(tǒng)連接(175)
17.3 流程圖(176)
17.4 程序設計(177)
17.5 燒寫(178)
17.6 小結(179)
第18章 基于Arduino的溫濕度計(180)
18.1 DHT11傳感器工作原理(180)
18.2 系統(tǒng)連接(182)
18.3 流程圖(183)
18.4 程序設計(184)
18.5 燒寫(187)
18.6 小結(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 程序設計(190)
19.5 燒寫(191)
19.6 小結(192)
第20章 基于Arduino的重力感應聯機互動游戲設備(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 程序設計(197)
20.5 燒寫(199)
20.6 小結(200)
第21章 基于Arduino的WiFi小車(201)
21.1 工作原理(201)
21.1.1 WiFi小車結構(201)
21.1.2 ESP8266 WiFi模塊(201)
21.1.3 L298N電機驅動模塊(202)
21.2 系統(tǒng)連接(203)
21.3 流程圖(204)
21.4 程序設計(204)
21.4.1 ESP8266調試2