本書為51單片機編程,內(nèi)容包括51單片機學(xué)習(xí)環(huán)境搭建、單片機C語言編程、單片機硬件原理、單片機接口技術(shù)和應(yīng)用實例等,既有電子愛好者關(guān)心的內(nèi)容,也有工程設(shè)計應(yīng)用方面的內(nèi)容。本書內(nèi)容講解和制作實例都以宏晶科技的STC8系統(tǒng)單片機為例,實例內(nèi)容有難有易、涵蓋面廣。
本書可供電子愛好者、單片機初學(xué)者和電子技術(shù)相關(guān)專業(yè)學(xué)生閱讀,也可作為單片機研發(fā)工程師和嵌入式軟件工程師的參考書。
51單片機是對兼容英特爾8051指令系統(tǒng)的單片機的統(tǒng)稱,學(xué)習(xí)資源豐富,應(yīng)用范圍廣泛,是單片機初學(xué)者的。51單片機使用的KeilC編程軟件有支持32位單片機的版本,學(xué)會51單片機后能比較輕松進階32位單片機的學(xué)習(xí)。
STC8系列單片機是宏晶科技設(shè)計的51系列單片機,不需要外部晶振和外部復(fù)位,具有寬電壓(1.9~5.5V)、抗干擾能力強、比傳統(tǒng)51單片機快約12倍等特點,擁有豐富的數(shù)字外設(shè)(串口、定時器、PWM以及I2C、SPI)接口和模擬外設(shè)(ADC、比較器)接口,有較大容量的RAM存儲器、Flash存儲器和EEPROM存儲器。
全書共分為9章,各章內(nèi)容安排如下。
第1章為51單片機學(xué)習(xí)路線。講解了單片機基本工作原理和入門學(xué)習(xí)方法以及注意事項,說明如何搭建學(xué)習(xí)環(huán)境,如何安裝使用C語言編程軟件和程序下載軟件。
第2章為51單片機C語言編程。包括數(shù)的進制、數(shù)據(jù)基本類型、數(shù)據(jù)構(gòu)造類型、運算符、選擇語句和循環(huán)語句等基礎(chǔ)知識。KeilC軟件應(yīng)用重點講解程序的基本構(gòu)成、常用的內(nèi)部函數(shù)庫以及程序的調(diào)試方法。常用算法講解了通信數(shù)據(jù)校驗、頻譜分析FFT、自動控制PID。
第3章為STC8單片機硬件結(jié)構(gòu)。包括時鐘、中斷、存儲器、I/O口、定時器/計數(shù)器、比較器、ADC模數(shù)轉(zhuǎn)換和PWM定時等功能,通過實例程序掌握如何通過特殊寄存器驅(qū)動單片機硬件,實現(xiàn)輸入檢測、輸出控制和通信等功能。
第4章為51單片機通信接口。講解了STC8系列單片機的串口、I2C和SPI通信接口工作原理和應(yīng)用實例。
第5章為單片機硬件接口擴展和外部數(shù)據(jù)存儲擴展。硬件接口包括開關(guān)量輸入輸出和模擬量輸入輸出外部電路,單片機通過硬件接口擴展采集信息、控制外部設(shè)備工作。外部數(shù)據(jù)存儲擴展包括TF卡和U盤的數(shù)據(jù)讀寫操作。
第6章為單片機與功能模塊配合應(yīng)用。單片機設(shè)計產(chǎn)品時可以直接選用現(xiàn)有功能模塊,能在很大程度上降低電路設(shè)計難度,提高產(chǎn)品設(shè)計效率。
第7章為以太網(wǎng)通信。講解了以太網(wǎng)控制器W5500和DM9000A的單片機控制方法,介紹了TCP/IP通信基本知識和TCP/IP簡易協(xié)議棧的實現(xiàn)方法。
第8章為無線通信。單片機通過串口連接各種無線模塊,實現(xiàn)藍牙、WiFi、GPRS、窄帶物聯(lián)網(wǎng)NB-IoT和長距離無線LoRa等無線通信。
第9章為電子愛好者工具DIY實例。包括可調(diào)直流穩(wěn)壓電源和白光烙鐵控制器以及USB接口虛擬萬用表,其中USB接口虛擬萬用表能測量交直流電壓和電流、電阻、電容及二極管壓降。
由于水平有限,書中不足之處在所難免,懇請廣大讀者批評指正。
編著者
第1章 51單片機學(xué)習(xí)路線 001
1.1 單片機學(xué)習(xí)環(huán)境搭建 001
1.1.1 編程軟件KeilC 001
1.1.2 程序下載軟件STC-ISP 003
1.1.3 STC8單片機學(xué)習(xí)板 006
1.1.4 第一個測試程序 006
1.2 單片機基本知識 014
1.2.1 C語言基本概念 014
1.2.2 單片機硬件基本原理 016
1.2.3 軟、硬件接口-特殊功能寄存器 019
1.3 單片機學(xué)習(xí)進階 022
1.3.1 單片機學(xué)習(xí)的幾個階段 022
1.3.2 單片機項目開發(fā)流程 023
第2章 51單片機C語言編程 024
2.1 編程基礎(chǔ) 024
2.1.1 數(shù)的進制 024
2.1.2 常量和變量 025
2.1.3 數(shù)據(jù)的基本類型 027
2.1.4 數(shù)據(jù)的構(gòu)造類型 028
2.1.5 運算符 031
2.1.6 條件語句 034
2.1.7 開關(guān)語句 035
2.1.8 循環(huán)語句 035
2.1.9 注釋語句 037
2.2 KeilC軟件應(yīng)用 037
2.2.1 基本C程序結(jié)構(gòu) 037
2.2.2 復(fù)雜C程序結(jié)構(gòu) 040
2.2.3 Keil C51常用函數(shù)庫 041
2.2.4 程序調(diào)試 045
2.3 常用算法 046
2.3.1 通信數(shù)據(jù)校驗 046
2.3.2 頻譜分析FFT 048
2.3.3 自動控制PID 050
第3章 STC8單片機硬件結(jié)構(gòu) 052
3.1 時鐘 052
3.1.1 時鐘控制 052
3.1.2 系統(tǒng)復(fù)位 054
3.1.3 看門狗復(fù)位 054
3.1.4 省電模式 055
3.2 中斷 057
3.2.1 中斷基礎(chǔ)知識 057
3.2.2 STC8系列單片機中斷列表 058
3.2.3 中斷相關(guān)寄存器 059
3.3 存儲器 062
3.3.1 程序存儲器 062
3.3.2 數(shù)據(jù)存儲器 062
3.3.3 EEPROM 063
3.4 I/O口 065
3.4.1 I/O口結(jié)構(gòu) 065
3.4.2 I/O口模式配置 067
3.4.3 流水燈控制實例 067
3.5 定時器/計數(shù)器 069
3.5.1 定時器/計數(shù)器工作模式 069
3.5.2 定時器相關(guān)寄存器配置 071
3.5.3 LED數(shù)碼管驅(qū)動示例 074
3.6 比較器 077
3.6.1 比較器功能說明 077
3.6.2 比較器相關(guān)寄存器配置 077
3.6.3 比較器中斷功能測試 078
3.7 ADC模數(shù)轉(zhuǎn)換 080
3.7.1 A/D轉(zhuǎn)換器 080
3.7.2 ADC相關(guān)寄存器配置 081
3.7.3 直流電壓測量示例 082
3.8 PWM定時器 084
3.8.1 PWM功能簡介 084
3.8.2 用PWM實現(xiàn)16位DAC(數(shù)模轉(zhuǎn)換) 084
第4章 51單片機通信接口 087
4.1 串口通信 087
4.1.1 串口通信基本原理 087
4.1.2 串口相關(guān)寄存器配置 088
4.1.3 串口通信示例 090
4.2 I2C通信 093
4.2.1 I2C通信基本原理 093
4.2.2 I2C總線相關(guān)寄存器配置 093
4.2.3 LM75A測溫實例 096
4.3 SPI通信 102
4.3.1 SPI通信基本原理 102
4.3.2 SPI相關(guān)寄存器配置 104
4.3.3 K型熱電偶測溫實例 104
第5章 單片機硬件接口擴展和外部存儲擴展 110
5.1 開關(guān)量輸入/輸出 110
5.1.1 開關(guān)量輸入 110
5.1.2 開關(guān)量輸出 114
5.1.3 開關(guān)量數(shù)量擴展 116
5.2 模擬量輸入/輸出 119
5.2.1 模擬量輸入轉(zhuǎn)換 119
5.2.2 外接AD轉(zhuǎn)換電路 122
5.2.3 外接DA轉(zhuǎn)換電路 124
5.2.4 電子秤電路應(yīng)用實例 127
5.3 PWM功能應(yīng)用 129
5.3.1 轉(zhuǎn)速測量 129
5.3.2 DC 4~20mA信號輸出調(diào)試工具 131
5.4 數(shù)據(jù)存儲 141
5.4.1 TF卡 141
5.4.2 U盤 149
第6章 單片機與功能模塊配合應(yīng)用 154
6.1 串口接口模塊 154
6.1.1 NFC模塊PN532 154
6.1.2 GPS模塊ATGM336H 158
6.1.3 紅外體溫計模塊GY-614V 161
6.1.4 紅外點陣測溫MLX90640模塊 163
6.2 其他接口模塊 170
6.2.1 加速度傳感器MMA7361 170
6.2.2 鉑電阻測溫MAX31865 171
6.2.3 超聲波測距模塊JSN-SR04T 176
第7章 以太網(wǎng)通信 178
7.1 W5500網(wǎng)絡(luò)通信 178
7.1.1 W5500簡介 178
7.1.2 W5500驅(qū)動程序 180
7.1.3 TCP-Server通信測試 188
7.1.4 TCP-Client通信測試 191
7.1.5 UDP通信測試 192
7.2 DM9000A網(wǎng)絡(luò)通信 195
7.2.1 DM9000A簡介 195
7.2.2 DM9000A驅(qū)動程序 200
7.2.3 以太網(wǎng)幀格式 203
7.2.4 軟件TCP/IP協(xié)議棧 206
7.2.5 網(wǎng)絡(luò)通信編程 213
第8章 無線通信 218
8.1 藍牙遙控實例 218
8.1.1 電路設(shè)計 218
8.1.2 單片機編程 219
8.1.3 手機編程 221
8.2 WiFi遙控實例 229
8.2.1 電路設(shè)計 229
8.2.2 單片機編程 230
8.2.3 手機編程 231
8.3 GPRS遙控實例 234
8.3.1 電路設(shè)計 234
8.3.2 單片機編程 235
8.3.3 手機遙控 237
8.4 無線通信網(wǎng)絡(luò)簡介 238
8.4.1 無線通信網(wǎng)絡(luò)應(yīng)用 238
8.4.2 長距離無線通信LoRa 238
8.4.3 窄帶物聯(lián)網(wǎng)NB-IoT 239
第9章 電子愛好者工具DIY實例 241
9.1 可調(diào)直流穩(wěn)壓電源和白光烙鐵控制器 241
9.1.1 電路設(shè)計 241
9.1.2 人機接口—串口觸摸屏 243
9.1.3 單片機編程 245
9.2 USB接口虛擬萬用表 250
9.2.1 電路設(shè)計 250
9.2.2 單片機C51編程 252
9.2.3 Android手機編程 260
參考文獻 268