本書通過典型、實(shí)用的操作項(xiàng)目講解單片機(jī)開發(fā)工具、單片機(jī)編程基礎(chǔ)、單片機(jī)硬件基礎(chǔ)、知識競賽數(shù)字搶答器、數(shù)字電子時鐘、多功能數(shù)字頻率計(jì)、手持GPS定位器,使讀者初步建立對單片機(jī)的整體認(rèn)知,然后帶領(lǐng)讀者對操作結(jié)果及出現(xiàn)的問題進(jìn)行討論、分析、研究,進(jìn)而得出結(jié)論。這樣有利于讀者在“做”中“學(xué)”,漸進(jìn)式地理解知識點(diǎn),逐步提高自身的單片機(jī)開發(fā)能力。希望讀者通過學(xué)習(xí)本書,能夠根據(jù)不同型號單片機(jī)及單片機(jī)系統(tǒng)的開發(fā)要求,獨(dú)立完成單片機(jī)系統(tǒng)的設(shè)計(jì)與開發(fā)。
本書可作為高校電子信息技術(shù)、電子工程技術(shù)或電氣自動化等相關(guān)專業(yè)及職業(yè)學(xué)校、培訓(xùn)機(jī)構(gòu)的嵌入式開發(fā)、單片機(jī)開發(fā)課程的教材,也可供有一定編程基礎(chǔ)的單片機(jī)學(xué)習(xí)者、對單片機(jī)開發(fā)感興趣的愛好者自學(xué)。
1.由淺入深,便于理解
通過實(shí)用的項(xiàng)目開發(fā)講解,使讀者初步建立感觀認(rèn)識,然后對操作結(jié)果及出現(xiàn)的問題進(jìn)行討論、分析、研究,并得出結(jié)論,讓讀者在做中學(xué),漸進(jìn)式加深理解和鞏固知識點(diǎn),逐步提高自身的單片機(jī)開發(fā)水平。使得讀者通過本書的學(xué)習(xí)能夠獨(dú)立完成單片機(jī)系統(tǒng)開發(fā)。
2.內(nèi)容豐富,參考性強(qiáng)
知識點(diǎn)介紹細(xì)致,剖析每個概念,加深讀者理解。涉及知識面廣泛,可隨查隨用,適合作為單片機(jī)系統(tǒng)開發(fā)的參考用書。
3.項(xiàng)目多,實(shí)踐性強(qiáng)
基于項(xiàng)目實(shí)踐的方式講解單片機(jī)內(nèi)部資源應(yīng)用方法及外部資源擴(kuò)展原理與實(shí)踐,力求讓讀者在實(shí)際項(xiàng)目開發(fā)中能夠快速上手。
郭學(xué)提:2008年畢業(yè)于江西科技師范學(xué)院(今江西科技師范大學(xué)),畢業(yè)后一直從事嵌入式系統(tǒng)開發(fā)及教學(xué)相關(guān)的工作,擁有多年的嵌入式產(chǎn)品開發(fā)及設(shè)計(jì)經(jīng)驗(yàn)。曾在江西省電子信息工程學(xué)校擔(dān)任電子系單片機(jī)實(shí)訓(xùn)講師;在深圳某職業(yè)培訓(xùn)機(jī)構(gòu)擔(dān)任嵌入式開發(fā)講師。現(xiàn)就職于深圳鼎然信息科技有限公司并擔(dān)任高級嵌入式開發(fā)工程師一職。先后發(fā)表論文、文章16篇。申請5項(xiàng)發(fā)明、實(shí)用新型、外觀專利。
目錄
第1章 單片機(jī)開發(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)建應(yīng)用程序 10
1.2.3 調(diào)試工程 16
1.2.4 創(chuàng)建“Hello World”項(xiàng)目 17
1.3 小結(jié) 18
1.4 習(xí)題 19
第2章 單片機(jī)編程基礎(chǔ) 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í)際參數(shù) 22
2.1.5 函數(shù)的形參和實(shí)參的特點(diǎn) 23
2.1.6 函數(shù)的返回值 23
2.2 函數(shù)的調(diào)用 24
2.2.1 函數(shù)調(diào)用的一般形式 24
2.2.2 函數(shù)調(diào)用需要注意的事項(xiàng) 25
2.2.3 函數(shù)的嵌套調(diào)用 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 字符串和字符串結(jié)束標(biāo)志 31
2.4.5 字符串處理函數(shù) 31
2.5 指針概述 33
2.5.1 什么是指針 33
2.5.2 指針變量的類型說明 34
2.5.3 指針變量的賦值 34
2.5.4 指針變量的運(yùn)算 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 結(jié)構(gòu)體 41
2.8.1 結(jié)構(gòu)體的定義 41
2.8.2 結(jié)構(gòu)體類型的說明 42
2.8.3 結(jié)構(gòu)體變量成員的表示 43
2.8.4 結(jié)構(gòu)體變量的賦值 43
2.8.5 結(jié)構(gòu)體變量的初始化 44
2.9 結(jié)構(gòu)體指針變量 46
2.9.1 結(jié)構(gòu)體指針變量概述 46
2.9.2 結(jié)構(gòu)體指針變量的定義 46
2.9.3 結(jié)構(gòu)體指針變量的引用 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 枚舉變量應(yīng)用舉例 49
2.12 自定義類型 50
2.13 小結(jié) 50
2.14 習(xí)題 51
第3章 單片機(jī)硬件基礎(chǔ) 53
3.1 單片機(jī)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 定時器/計(jì)數(shù)器 55
3.2.1 定時器/計(jì)數(shù)器概述 55
3.2.2 定時器/計(jì)數(shù)器結(jié)構(gòu) 56
3.2.3 與定時器/計(jì)數(shù)器控制相關(guān)的寄存器 56
3.2.4 工作方式0 58
3.2.5 工作方式1 59
3.2.6 工作方式2 59
3.2.7 工作方式3 59
3.3 單片機(jī)串行口 60
3.3.1 串行口概述 60
3.3.2 串行口結(jié)構(gòu) 60
3.3.3 與串行口相關(guān)的寄存器 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 單片機(jī)中斷概述 67
3.4.2 中斷結(jié)構(gòu) 69
3.4.3 與中斷相關(guān)的寄存器 69
3.4.4 中斷的使用方法 71
3.5 綜合應(yīng)用 72
3.5.1 基于CD4094的四位數(shù)碼管驅(qū)動電路 72
3.5.2 單片機(jī)與PC通信 74
3.6 小結(jié) 78
3.7 習(xí)題 78
第4章 知識競賽數(shù)字搶答器 79
4.1 數(shù)碼管驅(qū)動 79
4.1.1 數(shù)碼管分類 79
4.1.2 數(shù)碼管驅(qū)動方式 79
4.1.3 數(shù)碼管字符編碼 80
4.1.4 數(shù)碼管靜態(tài)驅(qū)動 82
4.1.5 數(shù)碼管動態(tài)驅(qū)動 83
4.2 鍵盤接口技術(shù) 85
4.2.1 獨(dú)立式開關(guān)按鍵 85
4.2.2 開關(guān)按鍵的去抖動措施 86
4.2.3 按鍵檢測 86
4.2.4 矩陣鍵盤原理 89
4.2.5 矩陣鍵盤檢測 89
4.3 搶答器硬件設(shè)計(jì) 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 搶答器軟件設(shè)計(jì) 99
4.4.1 軟件架構(gòu) 100
4.4.2 系統(tǒng)初始化 100
4.4.3 硬件中斷服務(wù) 101
4.4.4 外部通信接口 103
4.4.5 應(yīng)用程序 104
4.4.6 相關(guān)數(shù)據(jù)結(jié)構(gòu)定義 106
4.5 小結(jié) 108
4.6 習(xí)題 108
第5章 數(shù)字電子時鐘 109
5.1 單總線 109
5.1.1 單總線的結(jié)構(gòu)原理 109
5.1.2 DS18B20概述 110
5.2 I2C總線 114
5.2.1 I2C總線的特點(diǎn) 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ù)字電子時鐘硬件設(shè)計(jì) 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ù)字電子時鐘軟件設(shè)計(jì) 132
5.5.1 軟件架構(gòu) 133
5.5.2 系統(tǒng)初始化 133
5.5.3 硬件中斷服務(wù) 134
5.5.4 I2C總線驅(qū)動 135
5.5.5 基于單總線的溫濕度接口 139
5.5.6 硬件接口 140
5.5.7 外部通信接口 144
5.5.8 應(yīng)用程序 144
5.5.9 相關(guān)數(shù)據(jù)結(jié)構(gòu)定義 149
5.6 小結(jié) 151
5.7 習(xí)題 151
第6章 多功能數(shù)字頻率計(jì) 152
6.1 多功能數(shù)字頻率計(jì)硬件設(shè)計(jì) 152
6.1.1 主控系統(tǒng) 152
6.1.2 設(shè)置電路 153
6.1.3 顯示模塊 153
6.1.4 聲音提示電路 154
6.1.5 通信電路 154
6.1.6 信號處理電路 154
6.1.7 信號分頻電路 156
6.2 多功能數(shù)字頻率計(jì)軟件設(shè)計(jì) 159
6.2.1 軟件架構(gòu) 159
6.2.2 系統(tǒng)初始化 159
6.2.3 硬件中斷服務(wù) 160
6.2.4 硬件接口 161
6.2.5 外部通信和系統(tǒng)調(diào)試接口 163
6.2.6 應(yīng)用程序 164
6.2.7 相關(guān)數(shù)據(jù)結(jié)構(gòu)定義 168
6.3 小結(jié) 169
6.4 習(xí)題 169
第7章 手持GPS定位器 170
7.1 AT89S51單片機(jī)存儲器擴(kuò)展基礎(chǔ) 170
7.1.1 存儲器分類 170
7.1.2 AT89S51單片機(jī)擴(kuò)展系統(tǒng) 171
7.2 SPI總線 177
7.2.1 SPI總線的結(jié)構(gòu)原理 177
7.2.2 SPI總線的數(shù)據(jù)傳輸 177
7.2.3 SPI總線的接口 178
7.2.4 X25045概述 178
7.3 手持GPS定位器硬件設(shè)計(jì) 182
7.3.1 主控系統(tǒng) 183
7.3.2 顯示模塊 183
7.3.3 聲音提示電路 184
7.3.4 通信電路 184
7.3.5 擴(kuò)展SRAM電路 184
7.3.6 串行口復(fù)用電路 186
7.3.7 地址選擇電路 187
7.3.8 Flash存儲電路 187
7.3.9 GPS模塊電路 188
7.3.10 3.3V電源電路 189
7.4 手持GPS定位器軟件設(shè)計(jì) 190
7.4.1 軟件架構(gòu) 190
7.4.2 系統(tǒng)初始化 190
7.4.3 硬件中斷服務(wù) 191
7.4.4 硬件接口 194
7.4.5 外部通信和系統(tǒng)調(diào)試接口 196
7.4.6 應(yīng)用程序 196
7.4.7 相關(guān)數(shù)據(jù)結(jié)構(gòu)定義 208
7.5 小結(jié) 210
7.6 習(xí)題 210
附錄A ASCII字符集 211
附錄B 8051單片機(jī)指令表 213
附錄C Keil C51常用庫函數(shù)原型 216