入門(mén)學(xué)習(xí)單片機(jī)時(shí),是選擇開(kāi)發(fā)較為復(fù)雜,但功能豐富的32 位單片機(jī),如GD32 或STM32,還是選擇開(kāi)發(fā)更為簡(jiǎn)單,但功能有限的8 位單片機(jī),如51 單片機(jī)?不少初學(xué)者會(huì)有這樣的困惑。
對(duì)于初學(xué)者而言,要想精通32 位單片機(jī)開(kāi)發(fā),需要掌握復(fù)雜的外設(shè)、眾多的寄存器及寄存器與應(yīng)用層之間的固件庫(kù)等知識(shí)。這些概念很容易讓初學(xué)者望而生畏,而51 單片機(jī)的內(nèi)部結(jié)構(gòu)、功能和使用方法都相對(duì)簡(jiǎn)單。如果初學(xué)者在學(xué)習(xí)32 位單片機(jī)之前,先學(xué)習(xí)8 位單片機(jī),不僅可以降低單片機(jī)的學(xué)習(xí)門(mén)檻,而且更容易提高學(xué)習(xí)單片機(jī)的興趣。
51 單片機(jī)誕生于1981 年,在過(guò)去40 多年間,不僅沒(méi)有銷聲匿跡,反而日久彌新。雖然業(yè)界主流的單片機(jī)已經(jīng)由8 位轉(zhuǎn)變?yōu)?2 位,但是51 單片機(jī)在產(chǎn)品開(kāi)發(fā)中仍然有著重要的地位。近年來(lái),仍有廠商在8051 內(nèi)核上添加新的功能,推出基于8051 內(nèi)核的新產(chǎn)品。
在新型微處理器運(yùn)行速度越來(lái)越快、片上功能越來(lái)越豐富的今天,51 單片機(jī)這位“元老”在微控制器領(lǐng)域仍占有一席之地。在一些需要低成本、低功耗、對(duì)可靠性要求高的系統(tǒng)中,仍能見(jiàn)到51 單片機(jī)的身影,其經(jīng)典地位毋庸置疑。
那么如何學(xué)習(xí)51 單片機(jī)呢?目前,市面上的51 單片機(jī)教材種類繁多,內(nèi)容從理論到實(shí)戰(zhàn),從硬件到軟件,從匯編到C 語(yǔ)言,從仿真到開(kāi)發(fā)板實(shí)操,比比皆是。網(wǎng)絡(luò)上也有許多優(yōu)質(zhì)的視頻教程,關(guān)于51 單片機(jī)的開(kāi)發(fā)教程及使用技巧,前人之述備矣。然而,繁雜紛擾的信息容易讓初學(xué)者在浩瀚的書(shū)海中迷失方向,不知從何入手;也有初學(xué)者會(huì)在一個(gè)知識(shí)點(diǎn)上“越陷越深”,無(wú)法把握前行的方向,躊躇不前。誠(chéng)然,知識(shí)的廣度與深度都很重要,刻苦鉆研的精神也值得贊賞,但是,選擇往往比努力更重要。選擇一本合適的工具書(shū)籍,往往能夠幫助讀者事半功倍地入門(mén)51 單片機(jī)開(kāi)發(fā)。
本書(shū)專為單片機(jī)初學(xué)者打造,以“快速入門(mén)”為前提,旨在為初學(xué)者提供一條入門(mén)單片機(jī)的新路徑。書(shū)中所有的知識(shí)點(diǎn)都經(jīng)過(guò)精煉,由淺入深,并通過(guò)淺顯易懂的描述來(lái)介紹51 單片機(jī)的相關(guān)概念。除基礎(chǔ)知識(shí)外,本書(shū)還提供了選讀內(nèi)容,滿足不同層次讀者的學(xué)習(xí)需求。希望讀者在閱讀本書(shū)后能熟悉51 單片機(jī)的開(kāi)發(fā)環(huán)境,獨(dú)立完成51 單片機(jī)程序的編寫(xiě),并提高對(duì)單片機(jī)開(kāi)發(fā)的興趣。衷心希望本書(shū)能幫助讀者在學(xué)習(xí)單片機(jī)的過(guò)程中少走一些彎路,帶領(lǐng)讀者走進(jìn)精彩紛呈的單片機(jī)世界。
潘志銘和董磊策劃了本書(shū)的編寫(xiě)思路,指導(dǎo)全書(shū)的編寫(xiě),對(duì)全書(shū)進(jìn)行統(tǒng)稿;李健輝、張博和郭文波在教材編寫(xiě)、例程設(shè)計(jì)和文字校對(duì)方面做了大量的工作。本書(shū)配套的51 核心板和例程由深圳市樂(lè)育科技有限公司開(kāi)發(fā),深圳市樂(lè)育科技有限公司還參與了本書(shū)的編寫(xiě)。清華大學(xué)出版社王定編輯為本書(shū)的出版做了大量的編輯和校審工作。特別感謝深圳大學(xué)電子與信息工程學(xué)院、深圳大學(xué)生物醫(yī)學(xué)工程學(xué)院、西安交通大學(xué)生命科學(xué)與技術(shù)學(xué)院、深圳市樂(lè)育科技有限公司和清華大學(xué)出版社的大力支持,在此一并致以衷心的感謝!
由于編者水平有限,書(shū)中難免有不成熟與疏漏之處,懇請(qǐng)讀者批評(píng)指正。若讀者在閱讀本書(shū)時(shí)遇到問(wèn)題,或需要獲取相關(guān)資料,可通過(guò)郵箱ExcEngineer@163.com 與編者聯(lián)系。
本書(shū)提供教學(xué)課件,讀者可掃下列二維碼下載。
教學(xué)課件
編 者
2023 年2 月
第1 章 STC89 C52RC 開(kāi)發(fā)平臺(tái)和
工具 1
1.1 初識(shí)單片機(jī)2
1.1.1 單片機(jī)的概念2
1.1.2 常見(jiàn)的51 單片機(jī)種類2
1.1.3 STC 單片機(jī)的命名規(guī)則3
1.2 STC89 C52RC 介紹4
1.2.1 結(jié)構(gòu)框架4
1.2.2 引腳功能5
1.2.3 *存儲(chǔ)結(jié)構(gòu)7
1.3 *51 核心板最小系統(tǒng)電路
介紹 10
1.3.1 電源電路 10
1.3.2 時(shí)鐘電路 11
1.3.3 復(fù)位電路 12
1.4 搭建開(kāi)發(fā)環(huán)境 13
1.4.1 本書(shū)資料包 13
1.4.2 Keil C51 的安裝及設(shè)置 13
1.4.3 STC-ISP 程序下載環(huán)境配置 18
思考題 21
應(yīng)用實(shí)踐 21
第2 章 C51 程序設(shè)計(jì)基礎(chǔ)22
2.1 C51 程序的基本組成部分 23
2.1.1 包含頭文件 23
2.1.2 主函數(shù) 23
2.1.3 標(biāo)識(shí)符與關(guān)鍵字 24
2.1.4 程序注釋 24
2.1.5 其他規(guī)范24
2.2 C51 數(shù)據(jù)類型 25
2.2.1 基本數(shù)據(jù)類型25
2.2.2 擴(kuò)展數(shù)據(jù)類型26
2.3 C51 變量與常量 26
2.3.1 變量27
2.3.2 常量29
2.4 C51 運(yùn)算符 29
2.4.1 算術(shù)運(yùn)算符29
2.4.2 關(guān)系運(yùn)算符30
2.4.3 邏輯運(yùn)算符30
2.4.4 位運(yùn)算符31
2.5 C51 程序結(jié)構(gòu) 31
2.5.1 順序結(jié)構(gòu)32
2.5.2 選擇結(jié)構(gòu)32
2.5.3 循環(huán)結(jié)構(gòu)35
2.6 C51 函數(shù) 38
2.6.1 函數(shù)的定義38
2.6.2 函數(shù)的聲明39
2.6.3 函數(shù)的參數(shù)39
2.6.4 函數(shù)的返回值39
2.6.5 函數(shù)的調(diào)用39
2.6.6 內(nèi)部函數(shù)40
2.6.7 函數(shù)的命名規(guī)范41
2.7 C51 數(shù)組 41
2.7.1 數(shù)組的定義41
2.7.2 數(shù)組的初始化41
2.7.3 數(shù)組元素的引用41
2.7.4 *二維數(shù)組 42
2.7.5 字符串?dāng)?shù)組 42
2.7.6 數(shù)組的命名規(guī)范 43
2.8 *C51 指針 43
2.8.1 指針變量的定義和使用 44
2.8.2 指針變量的注意事項(xiàng) 45
2.8.3 指針與數(shù)組 45
2.9 Keil 編輯和編譯及程序下載 46
2.9.1 新建Keil 工程 46
2.9.2 新建并添加main.c 文件 48
2.9.3 配置工程 49
2.9.4 編寫(xiě)程序代碼 49
2.9.5 程序編譯 50
2.9.6 STC-ISP 程序下載 51
思考題 53
應(yīng)用實(shí)踐 53
第3 章 LED 流水燈 54
3.1 LED 燈的工作原理 55
3.2 I/O 引腳部分寄存器 55
3.3 I/O 引腳控制的方法 56
3.3.1 字節(jié)操作 56
3.3.2 位操作 57
3.4 *I/O 引腳的內(nèi)部結(jié)構(gòu) 57
3.4.1 P0 組I/O 引腳 57
3.4.2 P1 組I/O 引腳 59
3.4.3 P2 組I/O 引腳 60
3.4.4 P3 組I/O 引腳 61
3.5 實(shí)例與代碼解析 62
3.5.1 位操作控制流水燈 63
3.5.2 字節(jié)操作控制流水燈 66
思考題 67
應(yīng)用實(shí)踐 68
第4 章 獨(dú)立按鍵輸入 69
4.1 按鍵檢測(cè)原理 70
4.2 按鍵軟件去抖原理 70
4.3 實(shí)例與代碼解析 72
思考題 75
應(yīng)用實(shí)踐 75
第5 章 蜂鳴器 76
5.1 蜂鳴器介紹 77
5.2 蜂鳴器的工作原理 77
5.3 實(shí)例與代碼解析 78
思考題 80
應(yīng)用實(shí)踐 80
第6 章 數(shù)碼管顯示 82
6.1 數(shù)碼管介紹 83
6.2 數(shù)碼管的工作原理 85
6.3 數(shù)碼管靜態(tài)顯示 86
6.4 數(shù)碼管動(dòng)態(tài)顯示 86
6.5 實(shí)例與代碼解析 87
思考題 90
應(yīng)用實(shí)踐 91
第7 章 外部中斷 92
7.1 中斷的概念 93
7.2 中斷系統(tǒng)框架 94
7.2.1 中斷源94
7.2.2 中斷觸發(fā)條件95
7.2.3 中斷請(qǐng)求標(biāo)志97
7.2.4 中斷允許控制98
7.2.5 中斷優(yōu)先級(jí)99
7.2.6 中斷處理101
7.3 實(shí)例與代碼解析103
思考題105
應(yīng)用實(shí)踐105
第8 章 定時(shí)器/計(jì)數(shù)器107
8.1 機(jī)器周期與時(shí)鐘周期108
8.2 定時(shí)器/計(jì)數(shù)器的工作原理108
8.3 定時(shí)器/計(jì)數(shù)器系統(tǒng)框架110
8.3.1 定時(shí)/計(jì)數(shù)功能的選擇 110
8.3.2 定時(shí)器/計(jì)數(shù)器的運(yùn)行控制 111
8.3.3 工作模式與計(jì)數(shù)初值 112
8.3.4 定時(shí)器/計(jì)數(shù)器中斷 114
8.4 實(shí)例與代碼解析117
8.4.1 計(jì)數(shù)器控制LED 燈 117
8.4.2 定時(shí)器控制LED 燈 120
思考題123
應(yīng)用實(shí)踐123
第9 章 PWM 與呼吸燈124
9.1 PWM 基本參數(shù)125
9.1.1 電平標(biāo)準(zhǔn) 125
9.1.2 周期和頻率 125
9.1.3 占空比 125
9.2 PWM 控制LED 亮度的
原理126
9.3 PWM 輸出原理126
9.3.1 輸出PWM 信號(hào) 126
9.3.2 按照規(guī)律調(diào)節(jié)PWM 占空比 127
9.4 實(shí)例與代碼解析129
思考題133
應(yīng)用實(shí)踐133
第10 章 串口通信134
10.1 通信協(xié)議介紹135
10.1.1 并行通信和串行通信 135
10.1.2 單工、半雙工和全雙工
數(shù)據(jù)傳輸 136
10.2 串口通信協(xié)議介紹136
10.2.1 UART 物理層 137
10.2.2 UART 數(shù)據(jù)幀格式 137
10.2.3 UART 傳輸速率 138
10.2.4 UART 通信實(shí)例 138
10.3 UART 電路原理圖139
10.4 串口中斷140
10.4.1 串口中斷請(qǐng)求標(biāo)志位140
10.4.2 串口中斷允許控制位141
10.4.3 *串口中斷優(yōu)先級(jí)
控制位141
10.5 串口工作模式142
10.5.1 *工作模式0 143
10.5.2 工作模式1143
10.5.3 *工作模式2 147
10.5.4 *工作模式3 149
10.6 實(shí)例與代碼解析149
思考題155
應(yīng)用實(shí)踐155
第11 章 看門(mén)狗157
11.1 復(fù)位方法158
11.1.1 外部RST 引腳復(fù)位158
11.1.2 軟件復(fù)位158
11.1.3 通電/關(guān)電復(fù)位159
11.1.4 看門(mén)狗復(fù)位159
11.2 看門(mén)狗相關(guān)寄存器159
11.3 看門(mén)狗溢出時(shí)間160
11.4 看門(mén)狗喂狗操作161
11.5 實(shí)例與代碼解析161
思考題164
應(yīng)用實(shí)踐165
第12 章 內(nèi)部Flash 讀寫(xiě)166
12.1 ISP 與IAP167
12.2 內(nèi)部Flash 存儲(chǔ)結(jié)構(gòu)167
12.3 IAP 讀寫(xiě)與擦除Flash 的
方法168
12.3.1 讀取操作169
12.3.2 擦除操作170
12.3.3 寫(xiě)入操作171
12.4 Flash 讀寫(xiě)注意事項(xiàng)172
12.5 實(shí)例與代碼解析173
思考題181
應(yīng)用實(shí)踐181
附錄182
附錄A 數(shù)制及轉(zhuǎn)換方法183
附錄B 邏輯門(mén)表示符號(hào)185
附錄C 常用寄存器及部分位的
解釋說(shuō)明186
附錄D 51 核心板電路圖191
參考文獻(xiàn)192