本書通過典型、實用的操作項目講解單片機開發(fā)工具、單片機編程基礎、單片機硬件基礎、知識競賽數(shù)字搶答器、數(shù)字電子時鐘、多功能數(shù)字頻率計、手持GPS定位器,使讀者初步建立對單片機的整體認知,然后帶領讀者對操作結果及出現(xiàn)的問題進行討論、分析、研究,進而得出結論。這樣有利于讀者在“做”中“學”,漸進式地理解知識點,逐步提高自身的單片機開發(fā)能力。希望讀者通過學習本書,能夠根據(jù)不同型號單片機及單片機系統(tǒng)的開發(fā)要求,獨立完成單片機系統(tǒng)的設計與開發(fā)。
本書可作為高校電子信息技術、電子工程技術或電氣自動化等相關專業(yè)及職業(yè)學校、培訓機構的嵌入式開發(fā)、單片機開發(fā)課程的教材,也可供有一定編程基礎的單片機學習者、對單片機開發(fā)感興趣的愛好者自學。
1.由淺入深,便于理解
通過實用的項目開發(fā)講解,使讀者初步建立感觀認識,然后對操作結果及出現(xiàn)的問題進行討論、分析、研究,并得出結論,讓讀者在做中學,漸進式加深理解和鞏固知識點,逐步提高自身的單片機開發(fā)水平。使得讀者通過本書的學習能夠獨立完成單片機系統(tǒng)開發(fā)。
2.內(nèi)容豐富,參考性強
知識點介紹細致,剖析每個概念,加深讀者理解。涉及知識面廣泛,可隨查隨用,適合作為單片機系統(tǒng)開發(fā)的參考用書。
3.項目多,實踐性強
基于項目實踐的方式講解單片機內(nèi)部資源應用方法及外部資源擴展原理與實踐,力求讓讀者在實際項目開發(fā)中能夠快速上手。
郭學提:2008年畢業(yè)于江西科技師范學院(今江西科技師范大學),畢業(yè)后一直從事嵌入式系統(tǒng)開發(fā)及教學相關的工作,擁有多年的嵌入式產(chǎn)品開發(fā)及設計經(jīng)驗。曾在江西省電子信息工程學校擔任電子系單片機實訓講師;在深圳某職業(yè)培訓機構擔任嵌入式開發(fā)講師,F(xiàn)就職于深圳鼎然信息科技有限公司并擔任高級嵌入式開發(fā)工程師一職。先后發(fā)表論文、文章16篇。申請5項發(fā)明、實用新型、外觀專利。
目錄
第1章 單片機開發(fā)工具 1
1.1 UltraEdit 1
1.1.1 UltraEdit用戶界面 1
1.1.2 創(chuàng)建工程 5
1.1.3 新建文件 6
1.1.4 添加文件至工程 7
1.2 Keil 5集成開發(fā)環(huán)境 8
1.2.1 Keil 5簡介 8
1.2.2 創(chuàng)建應用程序 10
1.2.3 調試工程 16
1.2.4 創(chuàng)建“Hello World”項目 17
1.3 小結 18
1.4 習題 19
第2章 單片機編程基礎 20
2.1 函數(shù)概述 20
2.1.1 函數(shù)無參的一般形式 20
2.1.2 函數(shù)有參的一般形式 21
2.1.3 函數(shù)的形式參數(shù) 22
2.1.4 函數(shù)的實際參數(shù) 22
2.1.5 函數(shù)的形參和實參的特點 23
2.1.6 函數(shù)的返回值 23
2.2 函數(shù)的調用 24
2.2.1 函數(shù)調用的一般形式 24
2.2.2 函數(shù)調用需要注意的事項 25
2.2.3 函數(shù)的嵌套調用 25
2.3 數(shù)組概述 26
2.3.1 一維數(shù)組的定義 27
2.3.2 一維數(shù)組元素的引用 28
2.3.3 一維數(shù)組的初始化 28
2.3.4 二維數(shù)組的定義 29
2.3.5 二維數(shù)組元素的引用 29
2.3.6 二維數(shù)組的初始化 30
2.4 字符數(shù)組 31
2.4.1 字符數(shù)組的定義 31
2.4.2 字符數(shù)組的初始化 31
2.4.3 字符數(shù)組的引用 31
2.4.4 字符串和字符串結束標志 31
2.4.5 字符串處理函數(shù) 31
2.5 指針概述 33
2.5.1 什么是指針 33
2.5.2 指針變量的類型說明 34
2.5.3 指針變量的賦值 34
2.5.4 指針變量的運算 34
2.6 指針與數(shù)組 36
2.6.1 一維數(shù)組與指針 37
2.6.2 指針數(shù)組 38
2.7 指針與函數(shù) 38
2.7.1 函數(shù)指針 39
2.7.2 指針型函數(shù) 39
2.8 結構體 41
2.8.1 結構體的定義 41
2.8.2 結構體類型的說明 42
2.8.3 結構體變量成員的表示 43
2.8.4 結構體變量的賦值 43
2.8.5 結構體變量的初始化 44
2.9 結構體指針變量 46
2.9.1 結構體指針變量概述 46
2.9.2 結構體指針變量的定義 46
2.9.3 結構體指針變量的引用 47
2.10 聯(lián)合體 47
2.10.1 聯(lián)合體的定義 47
2.10.2 聯(lián)合體的使用 48
2.11 枚舉類型 49
2.11.1 枚舉類型聲明 49
2.11.2 枚舉變量的定義 49
2.11.3 枚舉變量應用舉例 49
2.12 自定義類型 50
2.13 小結 50
2.14 習題 51
第3章 單片機硬件基礎 53
3.1 單片機I/O口 53
3.1.1 P0口概述 53
3.1.2 P1口概述 53
3.1.3 P2口概述 54
3.1.4 P3口概述 54
3.2 定時器/計數(shù)器 55
3.2.1 定時器/計數(shù)器概述 55
3.2.2 定時器/計數(shù)器結構 56
3.2.3 與定時器/計數(shù)器控制相關的寄存器 56
3.2.4 工作方式0 58
3.2.5 工作方式1 59
3.2.6 工作方式2 59
3.2.7 工作方式3 59
3.3 單片機串行口 60
3.3.1 串行口概述 60
3.3.2 串行口結構 60
3.3.3 與串行口相關的寄存器 61
3.3.4 波特率 62
3.3.5 工作方式0 64
3.3.6 工作方式1 66
3.3.7 工作方式2、3 66
3.4 中斷 66
3.4.1 單片機中斷概述 67
3.4.2 中斷結構 69
3.4.3 與中斷相關的寄存器 69
3.4.4 中斷的使用方法 71
3.5 綜合應用 72
3.5.1 基于CD4094的四位數(shù)碼管驅動電路 72
3.5.2 單片機與PC通信 74
3.6 小結 78
3.7 習題 78
第4章 知識競賽數(shù)字搶答器 79
4.1 數(shù)碼管驅動 79
4.1.1 數(shù)碼管分類 79
4.1.2 數(shù)碼管驅動方式 79
4.1.3 數(shù)碼管字符編碼 80
4.1.4 數(shù)碼管靜態(tài)驅動 82
4.1.5 數(shù)碼管動態(tài)驅動 83
4.2 鍵盤接口技術 85
4.2.1 獨立式開關按鍵 85
4.2.2 開關按鍵的去抖動措施 86
4.2.3 按鍵檢測 86
4.2.4 矩陣鍵盤原理 89
4.2.5 矩陣鍵盤檢測 89
4.3 搶答器硬件設計 91
4.3.1 主控系統(tǒng) 92
4.3.2 顯示模塊 93
4.3.3 聲音提示電路 94
4.3.4 搶答電路 94
4.3.5 通信電路 96
4.4 搶答器軟件設計 99
4.4.1 軟件架構 100
4.4.2 系統(tǒng)初始化 100
4.4.3 硬件中斷服務 101
4.4.4 外部通信接口 103
4.4.5 應用程序 104
4.4.6 相關數(shù)據(jù)結構定義 106
4.5 小結 108
4.6 習題 108
第5章 數(shù)字電子時鐘 109
5.1 單總線 109
5.1.1 單總線的結構原理 109
5.1.2 DS18B20概述 110
5.2 I2C總線 114
5.2.1 I2C總線的特點 114
5.2.2 I2C總線的工作原理 114
5.2.3 I2C總線基本操作 115
5.2.4 PCF8563概述 116
5.3 LCD 121
5.3.1 LCD顯示器介紹 121
5.3.2 HD44780概述 122
5.4 數(shù)字電子時鐘硬件設計 126
5.4.1 主控系統(tǒng) 126
5.4.2 顯示模塊 127
5.4.3 聲音提示電路 129
5.4.4 日歷/時鐘電路 129
5.4.5 通信電路 129
5.4.6 溫濕度檢測電路 130
5.5 數(shù)字電子時鐘軟件設計 132
5.5.1 軟件架構 133
5.5.2 系統(tǒng)初始化 133
5.5.3 硬件中斷服務 134
5.5.4 I2C總線驅動 135
5.5.5 基于單總線的溫濕度接口 139
5.5.6 硬件接口 140
5.5.7 外部通信接口 144
5.5.8 應用程序 144
5.5.9 相關數(shù)據(jù)結構定義 149
5.6 小結 151
5.7 習題 151
第6章 多功能數(shù)字頻率計 152
6.1 多功能數(shù)字頻率計硬件設計 152
6.1.1 主控系統(tǒng) 152
6.1.2 設置電路 153
6.1.3 顯示模塊 153
6.1.4 聲音提示電路 154
6.1.5 通信電路 154
6.1.6 信號處理電路 154
6.1.7 信號分頻電路 156
6.2 多功能數(shù)字頻率計軟件設計 159
6.2.1 軟件架構 159
6.2.2 系統(tǒng)初始化 159
6.2.3 硬件中斷服務 160
6.2.4 硬件接口 161
6.2.5 外部通信和系統(tǒng)調試接口 163
6.2.6 應用程序 164
6.2.7 相關數(shù)據(jù)結構定義 168
6.3 小結 169
6.4 習題 169
第7章 手持GPS定位器 170
7.1 AT89S51單片機存儲器擴展基礎 170
7.1.1 存儲器分類 170
7.1.2 AT89S51單片機擴展系統(tǒng) 171
7.2 SPI總線 177
7.2.1 SPI總線的結構原理 177
7.2.2 SPI總線的數(shù)據(jù)傳輸 177
7.2.3 SPI總線的接口 178
7.2.4 X25045概述 178
7.3 手持GPS定位器硬件設計 182
7.3.1 主控系統(tǒng) 183
7.3.2 顯示模塊 183
7.3.3 聲音提示電路 184
7.3.4 通信電路 184
7.3.5 擴展SRAM電路 184
7.3.6 串行口復用電路 186
7.3.7 地址選擇電路 187
7.3.8 Flash存儲電路 187
7.3.9 GPS模塊電路 188
7.3.10 3.3V電源電路 189
7.4 手持GPS定位器軟件設計 190
7.4.1 軟件架構 190
7.4.2 系統(tǒng)初始化 190
7.4.3 硬件中斷服務 191
7.4.4 硬件接口 194
7.4.5 外部通信和系統(tǒng)調試接口 196
7.4.6 應用程序 196
7.4.7 相關數(shù)據(jù)結構定義 208
7.5 小結 210
7.6 習題 210
附錄A ASCII字符集 211
附錄B 8051單片機指令表 213
附錄C Keil C51常用庫函數(shù)原型 216