內容簡介
本書以“
基礎、實用”為原則,通過基礎知識與大量實例結合的形式,詳細介紹了單片機C語言套用開發的各種方法和技巧。全書分為12章,前6章講述單片機概述硬體結構、指令系統、
C語言程式設計基礎、常用開發工具、C語言與彙編混合編程等知識;後6章重點介紹單片機軟硬體開發流程、常用單元模組設計、套用系統設計實例、擴展設計、系統設計經驗總結以及RTX51
實時作業系統等內容。讀者通過學習,可以快速入門和提高。
本書語言簡潔,內容安排
從零開始、由淺入深、循序漸進。實例典型豐富,代表性和指導性強,涵蓋了單片機C語言開發的大多數套用領域和開發技術。同時本書對程式開發的關鍵細節做了深入解釋,程式代碼進行詳細注釋,利於讀者掌握牢固、學懂學透,達到舉一反三的效果。
本書附有
光碟,其中包括豐富的硬體原理圖和程式源
代碼,方便讀者學習和參考。本書適合從事單片機系統開發的初級設計人員,以及
計算機、
電子信息及相關專業的在校大學生使用。
前言
1971年微處理器研製成功不久,就出現了
單片微型計算機(即單片機)技術。隨著科學技術的日新月異,單片機從一開始的8位單片機發展到現在的16位、32位等諸多系列。單片機種類很多,常見的有51系列、AVR系列、PIC系列等。其中,51系列單片機由於其靈活方便、價格便宜的優點,成為工程套用最廣泛的單片機,是大學裡電子、自動化及相關專業的必修課。至今為止,其他任何一個單片機系列都無法與其媲美。
單片機系統的開發是
硬體、
軟體相結合的過程,技術性較強。要完成單片機系統的開發,用戶需要了解單片機的硬體結構、指令系統、C語言編程,掌握單片機開發工具,學習基本模組與綜合系統的設計方法,包括擴展設計等內容。目前市場上關於單片機入門學習的書,要么內容不夠全面、要么實用性不強,或者就是結構不合理、講解方式不易學等,因此本書安排
從零開始、由簡到難,詳細深入介紹單片機C語言套用開發的各種方法和技巧。
本書內容
本書以“基礎、實用”為原則,通過基礎知識與大量實例結合的形式,詳細介紹了單片機C語言套用開發的各種方法和技巧。本書共分為12章,主要內容安排如下圖所示。
光碟介紹
本書附光碟1張,包括豐富的硬體原理圖和程式原始碼,方便讀者學習和參考。本書適合從事單片機系統開發的初級設計人員,以及計算機、電子信息及相關專業的在校大學生使用。
1.光碟的組成內容
該光碟包括2部分內容:“第9章的程式代碼和電路原理圖”、“部分插圖”。其中:
“程式代碼和電路圖”資料夾裡面內容為各實例章節的程式原始碼,以及相應的電路原理圖(由Protel 99
軟體製成,讀者需要安裝此軟體來打開)。
“部分插圖”資料夾裡面內容為第9章、第10章的插圖,為BMP格式。
2.光碟的使用說明
光碟裡面的程式需要採用C語言的編譯軟體打開閱讀,也可以使用“UltraEdit”等軟體打開閱讀或者編輯。
3.系統要求
作業系統推薦為Windows 2000或者Windows XP系統,但不能是Linux或者UNIX系統。
本書特色
與同類51單片機相比,本書具有以下特色。
內容系統、全面,基礎知識、開發工具和大量實例結合介紹,實踐和套用性強。
內容從零開始、循序漸進,概念和設計思想講解透徹,代碼注釋詳細深入,便於讀者舉一反三。
光碟中包含了豐富的實例硬體原理圖和程式原始碼,讀者稍加修改,便可套用於實際的工作中或者完成自己的課題設計。
致謝
本書主要由郭惠、吳迅編寫,參加編寫的人員還有:廖日坤、
金鎮、李寧宇、黃小惠、廖濟林、龐麗梅、邱遠彬、黃桂群、劉偉捷、黃乘傳、黃小歡、李彥超、付軍鵬、張廣安、
張洪波、賈素龍、李焱冰、
王艷波、
張劍等人,他們在資料收集、整理和技術支持方面做了大量的工作,在此一併向他們表示感謝!
作品目錄
基礎篇 51單片機
第1章 單片機概述 1
1.1 單片機的發展歷史 1
1.2 單片機現狀與趨勢 2
1.3 單片機系統分類 4
1.3.1 MCS-51單片機 5
1.3.2 AVR單片機 5
1.3.3 PIC單片機 6
1.4 單片機系統功能及套用 7
1.4.1 單片機系統硬體開發原理 7
1.4.2 單片機系統軟體開發原理 8
1.4.3 單片機系統套用領域 9
1.5 本章總結 10
1.6 思考與練習題 10
第2章 51單片機的硬體結構 11
2.1 引腳及其功能 11
2.2 內部結構 13
2.2.1 功能模組 13
2.2.2 CPU 13
2.2.3 並行I/O連線埠 15
2.2.4 存儲器結構 17
2.2.5 定時/計數器 21
2.2.6 串列口 26
2.2.7 中斷系統 32
2.3 本章總結 34
2.4 思考與練習題 34
第3章 51單片機工作方式和指令系統 36
3.1 單片機的工作方式 36
3.1.1 復位方式 36
3.1.2 程式執行方式 37
3.1.3 低功耗方式 38
3.1.4 編程方式 39
3.2 單片機指令系統簡介 40
3.3 單片機的定址方式 41
3.4 單片機的指令格式與符號 44
3.4.1 指令格式 44
3.4.2 符號說明 57
3.5 本章總結 61
3.6 思考與練習題 61
進階篇 C語言開發
第4章 C語言程式設計基礎 63
4.2 運算符與表達式 63
4.2.1 運算符分類與優先權 64
4.2.2 算術運算符與表達式 64
4.2.3 關係運算符與表達式 65
4.2.4 邏輯運算符與表達式 65
4.2.5 位操作運算符與表達式 66
4.2.6 賦值運算符與表達式 66
4.3 數據類型 67
4.4 變數與常量 70
4.5.2 指針 78
4.6 結構變數 82
4.6.1 結構類型及變數的定義 82
4.6.2 結構類型變數的使用 84
4.7 共用體 86
4.8 枚舉 88
4.9 程式結構與函式 89
4.9.1 程式結構 89
4.9.2 函式 90
4.10.1 選擇語句 98
4.10.2 循環語句 101
4.10.3 轉移語句 104
4.11 本章總結 105
4.12 思考與練習題 106
第5章 單片機常用開發工具 107
5.1 編程器概述 107
5.2 編程器的安裝與使用舉例 108
5.3 仿真器 111
5.3.1 仿真器概述 111
5.3.2 仿真器安裝和使用舉例 112
5.4.1 Keil 8051 C
編譯器簡介 116
5.4.3 Keil dScope 仿真調試 123
5.5 本章總結 129
5.6 思考練習題 129
第6章 C語言與彙編語言
混合編程 130
6.1 單片機彙編程式設計 130
6.2 彙編與C語言混合編程技術 134
6.2.1 函式名轉換規則 134
6.2.2 函式及相關段的命名規則 135
6.2.3 參數傳遞規則 136
6.2.5 變數地址設定 138
6.2.7 內聯彙編代碼 144
6.2.8 仿真多級中斷 147
6.2.9 時序問題 148
6.3 C語言與彙編語言
混合編程實例 152
6.4 本章總結 156
6.5 思考與練習題 157
實踐篇 常用模組
第7章 單片機軟硬體開發流程 158
7.1 單片機系統設計分析 158
7.3 單片機硬體開發流程 167
7.4 本章總結 170
7.5 思考與練習題 170
第8章 單片機常用單元模組
設計與實例 171
8.1 鍵盤輸入單元模組 171
8.1.1 行列式鍵盤 171
8.1.2 鍵識別方法 172
8.1.3 鍵識別法舉例 173
8.1.4 程式代碼與注釋 176
8.2 數碼顯示單元模組 178
8.2.1 如何驅動8段數碼管 178
8.2.2 8段數碼管動態顯示舉例 179
8.2.3 程式代碼與注釋 182
8.3 液晶顯示單元模組 182
8.3.1 液晶模組分類 183
8.3.2 液晶模組的電源設計 184
8.3.3 如何顯示液晶模組 186
8.3.4 液晶顯示模組舉例 188
8.3.5 程式代碼及注釋 189
8.4 數學運算 196
8.4.1 限幅濾波算法 197
8.4.2 中值濾波算法 197
8.4.3 算術平均濾波算法 198
8.4.4 加權平均濾波算法 199
8.4.5 滑動平均濾波算法 199
8.5 中斷單元模組 200
8.5.1 中斷概念 200
8.5.2 MCS-51單片機的中斷系統 201
8.5.3 中斷回響的條件、過程與時間 204
8.5.4 中斷請求的撤銷 205
8.5.5 中斷編程舉例 206
8.5.6 程式代碼及注釋 207
8.6.1
定時器與計數器的結構及工作原理 209
8.6.2
定時器與計數器的方式暫存器和控制暫存器 210
8.6.5 程式代碼與注釋 216
8.7 ROM/RAM存儲模組 217
8.7.1 存儲器概述 217
8.7.4 存儲器的擴展套用舉例 227
8.8 A/D轉換模組 230
8.8.2 典型A/D轉換器晶片ADC0809簡介 230
8.8.3 MCS-51單片機與ADC0809的接口 233
8.8.4 A/D轉換套用舉例 235
8.8.5 程式代碼及注釋 236
8.9 D/A轉換模組 237
8.9.2 典型D/A轉換器晶片DAC0832簡介 238
8.9.3 MCS-51單片機與DAC0832的接口 239
8.9.4 D/A轉換套用舉例 241
8.9.5 程式代碼及注釋 242
8.11 串列通信接口模組 248
8.11.1 單片機串列通信的原理 249
8.11.2 單片機串列通信舉例 251
8.11.3 程式代碼及注釋 253
8.12 本章總結 255
實戰篇 套用系統設計
9.1 步進電機控制系統的設計 256
9.1.1 實例說明 256
9.1.2 設計思路分析 257
9.1.3 硬體電路設計 262
9.1.5 實例總結 269
9.2 基於H6152的智慧卡
9.2 讀寫系統設計 270
9.2.1 實例說明 270
9.2.2 設計思路分析 271
9.2.3 硬體電路設計 274
9.2.5 實例總結 291
9.3 SPI匯流排通信系統設計 291
9.3.1 實例說明 291
9.3.2 設計思路分析 292
9.3.3 硬體電路設計 294
9.3.5 實例總結 299
提高篇 擴展與經驗
10.1 匯流排的擴展設計 300
10.2 存儲器的擴展設計 305
10.2.1 程式存儲器的擴展設計 306
10.2.2 數據存儲器的擴展設計 309
10.3 接口的擴展設計 313
10.3.1 擴展串列I/O口 313
10.3.2 擴展並行I/O口 316
10.4 本章總結 322
10.5 思考與練習題 322
第11章 單片機C語言設計
經驗歸納 323
11.1 系統方案的選擇 323
11.2 硬體系統的穩定性 324
11.3 編程技巧與程式最佳化 325
11.3.1 編程技巧 325
11.3.2 程式最佳化 328
11.4 系統抗干擾處理 328
11.4.1 系統硬體抗干擾設計 328
11.5 本章總結 331
12.1 RTX51概述 332
12.1.1 RTX51入門知識 332
12.1.2 單任務程式 333
12.1.3 時間片輪轉程式 333
12.1.4 用RTX51進行循環調度 334
12.1.5 RTX51事件 335
12.1.6 編譯和連線 337
12.2 系統要求和任務定義 339
12.3 建立RTX51 Tiny
應用程式 343
12.3.1 RTX51 Tiny配置 343
12.3.2 RTX51 Tiny程式的
12.3.2 編譯和連線 345
12.3.3 最佳化RTX51 Tiny程式 345
12.4 RTX51 Tiny系統函式詳解 345
12.5 堆疊處理與系統調試 352
12.5.1 堆疊管理 352
12.5.2 用dScope-51進行調試 352
12.6 RTX51系統套用實例 353
12.6.1 RTX_EX1:第一個RTX51程式 354
12.6.2 RTX_EX2:一個簡單的RTX51
應用程式 355
12.6.3 TRAFFIC:交通燈控制器 357
12.7 本章總結 371
附錄A 全書練習題答案 372
附錄B 單片機斷電保護方法歸納 379