《51單片機C語言應(yīng)用與開發(fā)》以51系列單片機為主,從應(yīng)用角度出發(fā)介紹單片機的基本工作原理、內(nèi)部資源的使用及C5l程序設(shè)計的基本方法等相關(guān)知識。以ELITE-Ⅲ開發(fā)板為基礎(chǔ),介紹了單片機的系統(tǒng)擴展、接口技術(shù)及應(yīng)用系統(tǒng)的開發(fā)過程、編程方法,最后以實際項目為基礎(chǔ),介紹了LTPA245熱敏打印機驅(qū)動系統(tǒng)、熱球子宮內(nèi)膜治療儀控制系統(tǒng)及移動基站動力環(huán)境監(jiān)控系統(tǒng)等項目的軟、硬件設(shè)計方法!51單片機C語言應(yīng)用與開發(fā)》摒棄了以學(xué)科體系為主線的編排方式,通過大量的實例,使讀者能快速、有效地掌握用c51語言開發(fā)51單片機應(yīng)用系統(tǒng)的方法和流程,真正做到對相關(guān)知識的融會貫通。
《51單片機C語言應(yīng)用與開發(fā)》適合高等院校計算機、自動化、電子信息等相關(guān)專業(yè)的學(xué)生學(xué)習(xí),同時也可供從事單片機開發(fā)的工程設(shè)計人員參考使用。
本書強調(diào)以實際開發(fā)板為學(xué)習(xí)平臺,以應(yīng)用為目的,簡化既抽象、又乏味的單片機內(nèi)部原理介紹,摒棄復(fù)雜、難懂的匯編語言學(xué)習(xí),代之以易學(xué)、易用且功能性、結(jié)構(gòu)性和可移植性都很強的C語言作為編程語言,很大程度上提高了單片機應(yīng)用系統(tǒng)的學(xué)習(xí)和開發(fā)效率。書中包含了大量51系列單片機應(yīng)用系統(tǒng)的電路原理圖和程序代碼,內(nèi)容覆蓋面廣,許多實例可直接移植到新的設(shè)計項目中使用。
單片微型計算機(single chip Microcomputer,SCM)簡稱為單片機,是嵌入式系統(tǒng)的重要組成部分。由于最早是為工業(yè)控制設(shè)計,因而也稱作微控制器(Micro Controller Unit,MCU)。近年來,單片機以其高可靠性、高性價比的優(yōu)勢,在工業(yè)控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)、智能化儀器儀表、辦公自動化等諸多領(lǐng)域得到極為廣泛的應(yīng)用。早期的單片機只能用匯編語言編程,編寫的程序復(fù)雜、難懂,而且硬件相關(guān)性很高,要求開發(fā)人員或?qū)W習(xí)者能清楚知道相關(guān)芯片的內(nèi)部結(jié)構(gòu),尤其是寄存器結(jié)構(gòu)和存儲空間的分配等,這些都限制了單片機應(yīng)用知識的推廣。隨著單片機C語言編譯器的出現(xiàn),那些硬件基礎(chǔ)知識相對缺乏的設(shè)計人員設(shè)計單片機應(yīng)用系統(tǒng)的大門也隨之打開;诖耍緯訣LITE-Ⅲ開發(fā)板為背景,由淺入深講述了單片機應(yīng)用系統(tǒng)設(shè)計和開發(fā)的全部過程,并用大量的案例來滿足不同讀者的需求。
本書強調(diào)以實際開發(fā)板為學(xué)習(xí)平臺,以應(yīng)用為目的,簡化既抽象、又乏味的單片機內(nèi)部原理介紹,摒棄復(fù)雜、難懂的匯編語言學(xué)習(xí),代之以易學(xué)、易用且功能性、結(jié)構(gòu)性和可移植性都很強的C語言作為編程語言,很大程度上提高了單片機應(yīng)用系統(tǒng)的學(xué)習(xí)和開發(fā)效率。書中包含了大量51系列單片機應(yīng)用系統(tǒng)的電路原理圖和程序代碼,內(nèi)容覆蓋面廣,許多實例可直接移植到新的設(shè)計項目中使用。
第1章 51單片機的基礎(chǔ)知識1
1.1 51系列單片機的基本結(jié)構(gòu)1
1.1.1 8051單片機的硬件組成及內(nèi)部結(jié)構(gòu)1
1.1.2 8051單片機的引腳功能2
1.1.3 8051單片機的CPU4
1.2 8051單片機的存儲器組織6
1.2.1 存儲器組織6
1.2.2 特殊功能寄存器8
1.3 單片機最小系統(tǒng)9
1.3.1 復(fù)位及復(fù)位電路9
1.3.2 時鐘電路10
1.3.3 8051單片機的最小系統(tǒng)11
第2章 C51程序設(shè)計12
2.1 Keil C5112
2.2 C51的數(shù)據(jù)類型13
2.2.1 常量15
2.2.2 變量17
2.2.3 數(shù)組19
2.2.4 指針21
2.2.5 結(jié)構(gòu)與聯(lián)合25
2.3 運算符與表達式27
2.4 流程控制語句29
2.4.1 條件語句29
2.4.2 while語句30
2.4.3 dowhile循環(huán)語句31
2.4.4 for循環(huán)31
2.4.5 switch語句32
2.4.6 break語句與continue語句33
2.4.7 返回語句return33
2.5 函數(shù)34
2.5.1 函數(shù)的定義34
2.5.2 函數(shù)調(diào)用34
2.5.3 中斷服務(wù)函數(shù)35
2.6 編譯預(yù)處理37
2.6.1 宏定義“#define”指令37
2.6.2 文件包含#include指令39
2.7 C語言和匯編語言混合編程40
第3章 51單片機的內(nèi)部資源44
3.1 并行I/O口44
3.2 中斷系統(tǒng)45
3.2.1 概述45
3.2.2 中斷控制寄存器46
3.2.3 C51編寫中斷服務(wù)程序47
3.2.4 外部中斷的擴充48
3.3 定時/計數(shù)器50
3.3.1 工作方式50
3.3.2 定時/計數(shù)器控制寄存器51
3.3.3 定時/計數(shù)器的初始化52
3.4 串行通信53
3.4.1 串行接口的工作方式53
3.4.2 串行接口控制寄存器54
3.4.3 串行接口應(yīng)用56
第4章 Keil C51集成開發(fā)環(huán)境59
4.1 Keil C51的安裝59
4.2 μVision3集成開發(fā)環(huán)境62
4.2.1 μVision3簡介62
4.2.2 開發(fā)環(huán)境的配置63
4.3 μVision3的欄目和窗口64
4.4 創(chuàng)建項目68
4.5 簡單程序的調(diào)試69
4.6 代碼優(yōu)化70
4.7 使用技巧70
4.8 Keil C編譯器常見警告與錯誤信息的解決方法71
第5章 ELITEIII開發(fā)板簡介74
5.1 ELITEIII硬件資源74
5.2 單片機在系統(tǒng)編程76
5.2.1 AT89S系列單片機76
5.2.2 Winbond78E系列單片機80
5.2.3 STC89C系列單片機82
第6章 ELITEIII開發(fā)應(yīng)用實例87
6.1 流水燈控制系統(tǒng)設(shè)計87
6.1.1 流水燈的硬件電路87
6.1.2 流水燈軟件設(shè)計89
6.1.3 利用定時器中斷產(chǎn)生延時93
6.2 I/O口的高級應(yīng)用95
6.2.1 數(shù)碼管顯示器95
6.2.2 鍵盤接口100
6.2.3 簡易電子鐘設(shè)計107
6.3 點陣顯示設(shè)計112
6.3.1 8×8點陣顯示設(shè)計112
6.3.2 16×16動態(tài)點陣顯示119
6.4 步進電機控制123
6.4.1 步進電機123
6.4.2 步進電機驅(qū)動系統(tǒng)126
6.4.3 簡單步進電機控制程序127
6.5 A/D轉(zhuǎn)換設(shè)計131
6.5.1 A/D轉(zhuǎn)換器的基本原理131
6.5.2 并行接口A/D轉(zhuǎn)換器133
6.6 單片機串行通信138
6.6.1 串行通信的基礎(chǔ)知識138
6.6.2 單片機與PC機的通信142
6.6.3 單片機之間的通信149
6.7 I2C總線技術(shù)150
6.7.1 I2C總線151
6.7.2 串行EEPROM AT24C02155
6.8 特殊總線串行通信157
6.8.1 數(shù)字溫度傳感器DS18B20157
6.8.2 時鐘芯片DS1302166
第7章 LTPA245熱敏打印機驅(qū)動設(shè)計172
7.1 熱敏打印機的工作原理172
7.1.1 熱敏打印機結(jié)構(gòu)原理172
7.1.2 熱敏打印機設(shè)計中需要注意的問題173
7.2 熱敏打印機LTPA245173
7.3 步進電機的驅(qū)動176
7.4 單片機資源分配178
7.5 系統(tǒng)硬件設(shè)計180
7.6 系統(tǒng)軟件183
第8章 熱球子宮內(nèi)膜治療儀控制系統(tǒng)194
8.1 系統(tǒng)硬件組成及工作原理194
8.1.1 系統(tǒng)結(jié)構(gòu)及工作原理194
8.1.2 電源模塊195
8.1.3 系統(tǒng)復(fù)位及低電壓檢測電路196
8.1.4 A/D轉(zhuǎn)換模塊198
8.1.5 信號放大及調(diào)理電路201
8.1.6 球囊加熱器故障檢測電路202
8.2 單片機資源的分配203
8.3 系統(tǒng)軟件204
第9章 移動基站動力環(huán)境監(jiān)控系統(tǒng)214
9.1 系統(tǒng)總體設(shè)計方案214
9.1.1 需求分析214
9.1.2 總體方案設(shè)計216
9.2 硬件電路設(shè)計219
9.2.1 系統(tǒng)硬件結(jié)構(gòu)219
9.2.2 主控CPU的外圍電路220
9.2.3 開關(guān)量I/O接口擴展電路225
9.2.4 串行通信擴展227
9.2.5 存儲器的擴展232
9.2.6 模擬量的采集233
9.2.7 系統(tǒng)電源電路236
9.3 系統(tǒng)軟件237
9.3.1 主CPU資源分配237
9.3.2 主CPU的部分函數(shù)238
參考文獻244
動態(tài)掃描顯示是單片機應(yīng)用系統(tǒng)中最常見的顯示方法之一,是把所有顯示器8個字段a~h的各同名端并聯(lián)在一起,并把它們接到字段碼I/0輸出口上。為了防止各個顯示器同時顯示同一個字符,各顯示器的公共端并不接到電源或地,而是接到另一組控制信號,即位輸出口上。在動態(tài)掃描顯示方式下,一組數(shù)碼管顯示器需要兩組信號來控制:一組是字段碼輸出口輸出的字形代碼,用來控制顯示的字符形狀;另一組是位輸出口輸出的控制信號,用于控制哪一位顯示器工作,也稱為位碼。在兩組信號的共同控制下,可以按順序一位一位地輪流點亮每個顯示器,顯示各自的字符,以實現(xiàn)數(shù)碼管的動態(tài)掃描顯示。由于LED具有余輝特性及人眼的視覺殘留現(xiàn)象,盡管各位顯示器實際上是分時斷續(xù)顯示,但只要選取適當(dāng)?shù)膾呙桀l率,給人眼的感覺就會是連續(xù)穩(wěn)定的顯示,不會察覺到閃爍現(xiàn)象。