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