本書圍繞著 51 內(nèi)核單片機的硬件結(jié)構(gòu)、 C 語言編程技巧和應用系統(tǒng)開發(fā), 采用任務驅(qū)動與項目實訓的方式, 以理論夠用、 注重應用為原則,激發(fā)學生的學習興趣, 逐步提高學生的單片機外圍接口電路設計和編寫程序的邏輯思維能力。 本書的實訓項目由簡單的如何點亮 LED 燈項目開始,引導讀者入門, 逐步擴展知識面, 逐步增加項目難度, 使讀者積累項目開發(fā)的經(jīng)驗, 提高實踐動手能力、 分析與解決問題的能力, 掌握單片機系統(tǒng)開發(fā)技能。
本書層次結(jié)構(gòu)合理, 敘述簡明易懂, 參編人員有著多年的實際項目開發(fā)經(jīng)驗。 本書項目來自科研、 競賽、 教學實踐等, 實用性強, 提供實訓項目代碼, 還可以提供配套的單片機開發(fā)板。
本書可作為高等院校電子信息、 計算機、 電氣工程、 自動化、 機電一體化、 儀器儀表等專業(yè)的單片機課程教材, 也適合于單片機初學者和從事單片機應用的工程技術(shù)人員參考。 本書還可以作為電子設計競賽、 藍橋杯電子類等比賽的培訓教材。
單片機是工科類本科生教學的主要學科基礎課之一, 是電子信息工程、 通信工程、電氣工程、 自動化、 計算機等專業(yè)的一門重要的專業(yè)基礎課。
目前, 在市場上的眾多產(chǎn)品中均能看到單片機的身影。 單片機以其高性價比、 高速度、 體積小、 可重復編程和方便功能擴展等優(yōu)點, 在實踐中得到了廣泛應用。 目前, 51單片機 C 語言 ( 簡稱 C51 語言) 的使用越來越廣泛, 大有取代匯編語言的趨勢。 學習并熟練掌握 C51 語言, 對于單片機的系統(tǒng)設計和程序開發(fā)都非常有用。
本書為 “福建省本科高校重大教育教學改革研究項目 ( FBJG20170332) 、 泉州市高等學校中青年學科 ( 專業(yè)) 帶頭人培養(yǎng)計劃、 福建省本科高校重大教育教學改革研究項目 ( JZ160227) 、 閩南理工學院校級應用型課程改革項目” 的研究成果。 本書特色如下:
1. 內(nèi)容全面, 由淺入深
本書涵蓋了 C51 語言程序設計所需掌握的各方面知識點。 首先詳細介紹了 51 系列單片機的基礎知識, 包括集成開發(fā)環(huán)境和開發(fā)流程。 然后對 C51 語言程序設計基礎知識點結(jié)合實例進行全面詳細的介紹, 包括數(shù)據(jù)類型與結(jié)構(gòu)、 函數(shù)、 存儲結(jié)構(gòu)等內(nèi)容。 接著對 C51 語言的程序設計方式進行了詳細的講解, 包括定時計數(shù)器、 中斷設計、 串行接口設計等內(nèi)容。 最后介紹了電子設計各個領域具有代表性的案例, 包括鍵盤設計、 總線接口、 單片機通信, 以及 A /D 轉(zhuǎn)換等方面的內(nèi)容。 最后設計了一個完整的綜合應用實例。
2. 結(jié)合實例, 強化理解
本書在介紹每個相關知識點的同時, 均給出了其在程序設計中的編程示例, 每個例子都可以執(zhí)行, 讀者可以在學習獨立知識點的同時, 根據(jù)應用示例舉一反三, 快速掌握相應知識點在整個程序設計系統(tǒng)中的實際應用。
3. 聯(lián)系硬件, 切合需求
本書不僅介紹 51 單片機的 C 語言, 還對單片機的硬件資源, 以及如何使用 C51 語言來編程控制單片機的各種片上資源進行了詳細介紹, 主要包括單片機定時器/計數(shù)器、中斷、 USART 串行通信接口、 EEPROM、 SPI 串行通信接口、 PWM 脈寬調(diào)制和 A /D轉(zhuǎn)換。
4. 案例豐富, 分析全面
本書案例豐富, 基本上涵蓋了電子設計的各個領域, 如鍵盤接口、 RS - 232 通信、SPI 總線、 掉電參數(shù)保護、 電動機控制、 電壓檢測等。 本書對每一個案例都詳細介紹了相關的背景知識、 硬件知識、 電路設計、 程序設計, 以及擴展思考等內(nèi)容, 并對整體程序代碼按功能分塊進行詳細的注釋, 更加易于讀者理解。本書由鄭洪慶、 安玲玲、 程蔚擔任主編, 鄭洪慶負責統(tǒng)稿。 蔡凡編寫第 1 章,黃毓芯編寫第 5、 8 章, 章玲編寫第 6、 7 章, 陳雙燕編寫第 9 章, 林木泉編寫第 10、 16章, 程蔚編寫第 12、 13 章, 湯巧治編寫第 11 章, 安玲玲編寫第 14、 15 章, 其余內(nèi)容由鄭洪慶編寫。
由于編者水平有限, 書中肯定存在錯誤和不足之處, 敬請各位同仁不吝批評指正。編 者
前言
第 1 章 單片機入門———基礎必備
知識 1
1.1 單片機概述 1
1.1.1 什么是單片機? 1
1.1.2 單片機應用領域 2
1.1.3 如何學好單片機 3
1.2 數(shù)制與編碼 3
1.2.1 數(shù)制 3
1.2.2 數(shù)制之間的轉(zhuǎn)換 4
1.2.3 常用的編碼 5
1.3 微型計算機的基本組成和工作過程 6
1.3.1 基本組成 6
1.3.2 指令、 程序與編程語言 7
1.3.3 工作過程 8
1.4 開發(fā)軟件環(huán)境搭建 9
1.5 開發(fā)板功能簡介 13
本章小結(jié) 14
實訓項目 14
第 2 章 點亮 LED 燈———Keil 軟件與
單片機 I /O 15
2.1 Keil μVision4 使用方法 15
2.1.1 Keil μVision4 工作界面 15
2.1.2 Keil 工程的建立 15
2.2 單片機最小系統(tǒng) 20
2.2.1 電源 20
2.2.2 復位電路 21
2.2.3 晶振 21
2.3 時鐘周期、 機器周期和指令周期 22
2.4 點亮 LED 燈 23
2.4.1 LED ( 發(fā)光二極管) 23
2.4.2 特殊功能寄存器和位定義 23
2.4.3 編寫程序 25
2.5 程序下載 26
2.6 74HC573 鎖存器 29
2.7 74HC02 或非門 30
2.8 74HC138 三八譯碼器 31
2.9 單片機資源擴展方式 34
本章小結(jié) 36
實訓項目 36
第 3 章 經(jīng)典再現(xiàn)———C 語言基礎 37
3.1 C51 程序開發(fā) 37
3.1.1 采用 C51 的優(yōu)點 37
3.1.2 C51 程序開發(fā)過程 37
3.1.3 C51 程序結(jié)構(gòu) 37
3.2 C51 語言的數(shù)據(jù)類型 38
3.3 C51 語言的運算符 39
3.4 C51 語言的控制語句 41
3.4.1 if 語句 41
3.4.2 switch 語句 44
3.4.3 while 語句 46
3.4.4 for 語句 48
3.4.5 中斷語句 break /continue 51
3.5 C51 函數(shù) 53
3.5.1 函數(shù)定義 54
3.5.2 函數(shù)的調(diào)用 54
3.5.3 中斷服務函數(shù) 55
3.6 程序劃分為多個文件 57
3.6.1 共享宏定義和類型定義 57
3.6.2 共享函數(shù)原型 57
3.6.3 共享變量聲明 58
3.6.4 保護頭文件 58
本章小結(jié) 58
實訓項目 59
第 4 章 流水燈實現(xiàn)———C51 編程 60
4.1 設計思路 60
4.2 軟件延時 61
4.3 程序?qū)崿F(xiàn) 62
本章小結(jié) 64
實訓項目 64
第 5 章 計數(shù)器———數(shù)碼管顯示與
獨立按鍵 65
5.1 數(shù)碼管的顯示原理 65
5.2 數(shù)碼管的真值表與靜態(tài)顯示 66
5.3 獨立按鍵檢測 68
5.4 計數(shù)器實現(xiàn) 70
5.5 數(shù)碼管動態(tài)顯示 72
5.5.1 C 語言數(shù)組回顧 72
5.5.2 動態(tài)顯示原理 73
5.5.3 程序?qū)崿F(xiàn) 74
5.5.4 數(shù)碼管顯示消隱 75
本章小結(jié) 76
實訓項目 76
第 6 章 數(shù)字秒表———中斷系統(tǒng)及
定時器 77
6.1 中斷系統(tǒng) 77
6.2 中斷系統(tǒng)處理過程 78
6.2.1 51 內(nèi)核單片機的中斷結(jié)構(gòu) 78
6.2.2 單片機的中斷源 78
6.2.3 中斷響應及處理過程 81
6.3 定時器的結(jié)構(gòu)和工作原理 83
6.4 定時器的寄存器 84
6.4.1 T0、 T1 的方式寄存器 TMOD 84
6.4.2 T0、 T1 的控制寄存器 TCON 87
6.5 定時器的應用 87
本章小結(jié) 91
實訓項目 92
第 7 章 頻率計———定時器進階 93
7.1 NE555 93
7.2 方波頻率的測量 94
7.3 定時器計數(shù)模式 95
7.4 頻率計實現(xiàn) 95
本章小結(jié) 99
實訓項目 99
第 8 章 簡易加法計算器———矩陣按鍵與
函數(shù)進階 100
8.1 函數(shù)的調(diào)用 100
8.2 形參與實參 103
8.3 矩陣按鍵掃描 104
8.3.1 按鍵消抖 104
8.3.2 矩陣按鍵的識別與編碼 105
8.4 簡易加法計算器的實現(xiàn) 108
本章小結(jié) 114
實訓項目 115
第 9 章 知識沉淀———交通燈設計和
PWM 控制 116
9.1 交通燈實現(xiàn) 116
9.1.1 設計要求 116
9.1.2 硬件電路分析 116
9.1.3 程序設計 119
9.2 PWM 基礎知識 123
9.3 直流電動機 PWM 調(diào)速 123
9.3.1 直流電動機簡介 123
9.3.2 直流電動機恒速運行 124
9.3.3 直流電動機調(diào)速 127
9.4 PWM 調(diào)光 129
本章小結(jié) 132
實訓項目 132
第 10 章 數(shù)據(jù)傳輸———串口通信 133
10.1 串口通信基礎 133
10.1.1 基本通信方式及特點 133
10.1.2 串行通信數(shù)據(jù)傳送方式 133
10.1.3 串行通信的傳輸方向 134
10.1.4 串行通信的傳輸速率 134
10.2 單片機與 PC 常見通信接口 135
10.3 串口結(jié)構(gòu)與工作原理 137
10.4 波特率與定時器 138
10.5 編程與實現(xiàn) 139
10.6 ASCII 碼 142
本章小結(jié) 143
實訓項目 143
第 11 章 溫度計———DS18B20 溫度
傳感器應用 144
11.1 DS18B20 溫度傳感器介紹 144
11.1.1 DS18B20 主要特性 144
11.1.2 DS18B20 應用電路原理圖 145
11.2 DS18B20 工作原理 147
11.2.1 DS18B20 的通信協(xié)議 147
11.2.2 DS18B20 單總線通信過程 151
11.3 DS18B20 應用實例 152
11.3.1 DS18B20 的測溫與顯示———整數(shù)
顯示 152
11.3.2 DS18B20 的測溫與顯示———帶 1 位
小數(shù)顯示 156
本章小結(jié) 158
實訓項目 158
第12 章 記錄開機次數(shù)———IIC 總線與
EEPROM ( AT24C02) 應用 159
12.1 IIC 總線基礎 159
12.2 IIC 尋址模式 161
12.3 IIC 總線時序模擬 162
12.4 AT24C02 操作 ( 寫和讀操作) 165
12.5 記錄開機次數(shù)實現(xiàn) 167
本章小結(jié) 170
實訓項目 171
第 13 章 光照強度檢測———A /D 與 D /A
( PCF8591 應用) 172
13.1 A /D 和 D /A