內容簡介
《STC15增強型8051單片機C語言編程與套用》詳細介紹了宏晶科技有限公司研發的 STC15系列新型 Flash 8051單片機的基本組成、性能特點及套用方法,基於 Flash存儲器的 ISP在系統中編程和 IAP在套用中編程的相關技術。結合流行的Keil C51編譯器環境,對 STC15系列單片機採用 C語言進行編程套用,充分發揮 C51技術優勢,全面地展現 STC15系列單片機的本身特色,如片內晶體振盪器時鐘調整,將晶片配置成為具有仿真功能的單片機,Keil uVision4環境下線上仿真調試,1T單周期指令高速執行, I2C、SPI、ADC等片內資源,以及多種片外擴展套用,為讀者快速上手提供方便。
《STC15增強型8051單片機C語言編程與套用》的特點是強調先進性和實用性,給出了大量套用實例,包括原理電路圖及使用說明,並帶有 1張光碟,其中包括 Keil公司提供的 C51全功能評估軟體包與各章中列出的全部程式代碼。
《STC15增強型8051單片機C語言編程與套用》適合從事單片機套用系統開發研製的廣大工程技術人員閱讀,也可以作為高等院校相關專業學生的教學參考書。
目錄
第1章 STC15系列單片機基礎 1
1.1 STC15F2K60S2單片機性能特點 1
1.1.1 主要特性 1
1.1.2 體系結構 2
1.1.3 引腳功能 2
1.2 STC15F2K60S2單片機的存儲器結構 4
1.3 STC15F2K60S2單片機的時鐘與復位 8
1.3.1 時鐘 8
1.3.2 復位 9
1.3.3 看門狗電路 10
1.4 STC15F2K60S2單片機存儲器的使用 11
1.4.2 片內擴展XRAM存儲器 12
1.4.3 片內數據Flash存儲器(EEPROM) 13
1.5 STC15F2K60S2單片機的並行
I/O連線埠 14
1.5.1 並行I/O連線埠工作模式 14
1.5.2 並行I/O連線埠使用注意事項 15
1.6 Keil C51開發工具 16
1.7 STC15單片機的C語言編程與調試 17
第2章Keil C51程式設計基礎 26
2.1 標識符與關鍵字 26
2.2 C51程式設計的基本語法 28
2.2.1 C51程式的一般結構 28
2.2.2 數據類型 29
2.2.3 用typedef重新定義數據類型 31
2.2.4 常量、變數及其存儲模式 32
2.2.5 運算符與表達式 34
2.3 C51程式的基本語句 38
2.3.1 表達式語句 38
2.3.2 複合語句 39
2.3.3 條件語句 39
2.3.4 開關語句 40
2.3.5 循環語句 40
2.3.6 goto、break、continue語句 41
2.3.7 返回語句 41
2.4 函式 42
2.4.1 函式的定義與調用 42
2.4.2 定義中斷服務函式與暫存器組 44
2.5 數組 45
2.5.1 數組的定義與引用 45
2.5.2 數組名作為函式的參數 47
2.5.3 數組與存儲器空間 50
2.6 指針 50
2.6.1 指針與地址 51
2.6.2 指針變數的定義 51
2.6.3 指針變數的引用 52
2.6.4 指針變數作為函式的參數 53
2.6.5 用指針引用數組元素 54
2.6.6 字元數組指針 55
2.6.7 指針的地址計算 56
2.7 函式型指針 57
2.8 返回指針型數據的函式 59
2.9 指針數組與指針型指針 60
2.9.1 指針數組 60
2.9.2 指針型指針 62
2.9.3 抽象型指針 64
2.10 結構體、聯合體與枚舉 65
2.10.1 結構體變數的定義與引用 65
2.10.2 結構體數組 67
2.10.3 結構體指針 68
2.10.4 將結構體作為函式的參數 69
2.10.5 將結構體指針作為函式的參數 71
2.11 聯合體變數的定義與引用 72
2.12 枚舉變數的定義與引用 75
第3章Keil C51編譯器對ANSI C的擴展 78
3.1 存儲器類型與編譯模式 78
3.2 C51數據在記憶體中的存儲格式 79
3.3 一般指針與基於存儲器的指針及其轉換 80
3.4 C51編譯器對ANSI C函式的擴展 82
3.4.1 C51編譯器支持的函式定義的一般形式 82
3.4.2 堆疊及函式的參數傳遞 82
3.4.3 函式的編譯模式 83
3.4.4 暫存器組切換 83
3.4.5 中斷函式 84
3.4.6 再入函式 84
3.5 目標代碼的段管理 85
3.5.1 全局變數 85
3.5.2 函式和局部變數 86
3.6 啟動代碼 87
3.7 與彙編語言程式的接口 88
3.8 絕對地址訪問 93
3.8.1 採用擴展關鍵字_at_或指針定義變數的絕對地址 93
3.8.2 採用預定義宏指定變數的絕對地址 94
3.9 Keil C51庫函式 95
3.9.1 本徵庫函式 95
3.9.2 字元判斷轉換庫函式 95
3.9.3 輸入/輸出庫函式 96
3.9.4 字元串處理庫函式 97
3.9.5 類型轉換及記憶體分配庫函式 99
3.9.6 數學計算庫函式 100
第4章 STC15單片機片內資源套用編程 101
4.1 編寫C51應用程式的基本原則 101
4.2 C51套用中的一些常見問題與解決方法 102
4.3 中斷系統套用編程 104
4.3.1 中斷系統結構 104
4.3.3 中斷套用編程 108
4.4 定時器/計數器套用編程 111
4.4.1 定時器/計數器邏輯結構 111
4.4.2 與定時器/計數器相關的特殊功能暫存器 112
4.4.3 定時器方式套用編程 113
4.4.4 計數器方式套用編程 117
4.4.5 可程式時鐘輸出 118
4.4.6 利用定時器產生音樂 119
4.5 串列口套用編程 123
4.5.1 串列口的工作方式 124
4.5.3 串列口的串/並轉換方式套用編程 127
4.5.4 串列口的通信方式套用編程 130
4.6.1 A/D轉換器的邏輯結構 142
4.6.2 與A/D轉換器相關的特殊功能暫存器 143
4.6.3 A/D轉換器套用編程 144
4.7 片內PCA模組套用編程 146
4.7.1 PCA模組的邏輯結構 146
4.7.2 與PCA模組相關的特殊功能暫存器 147
4.7.3 PCA模組的工作模式 149
4.7.4 PCA模組套用編程 154
4.8 SPI同步串列接口套用編程 158
4.8.1 SPI接口的邏輯結構 158
4.8.2 與SPI接口相關的特殊功能暫存器 159
4.8.3 SPI接口的通信方式及數據格式 161
4.8.4 SPI接口套用編程 163
4.9 STC15F2K60S2單片機的低功耗設計 167
4.9.1 慢速工作模式 168
4.9.2 空閒與掉電工作模式 168
第5章 STC15單片機片外擴展套用編程 174
5.1.1 I/O連線埠驅動LED數碼管套用編程 175
5.1.2 單個74HC595驅動多位LED數碼管套用編程 176
5.1.3 8位共陰極LED數碼管驅動器MAX7219套用編程 179
5.2 非編碼鍵盤接口套用編程 185
5.2.1 採用I/O連線埠實現的
矩陣鍵盤接口套用編程 185
5.2.2 採用片內ADC實現的鍵盤接口套用編程 187
5.3.1 點陣字元型LCD模組簡介 191
5.3.2 點陣字元型LCD與單片機的直接接口套用編程 196
5.3.3 點陣字元型LCD與單片機的間接接口套用編程 199
5.3.4 點陣字元型LCD的4位數據匯流排接口套用編程 202
5.4 無字型檔12864點陣圖型LCD模組接口套用編程 205
5.5 帶字型檔12864點陣圖型LCD模組接口套用編程 212
5.5.2 帶字型檔12864液晶模組串列接口套用編程 221
5.6 內置T6963C的點陣圖型LCD模組接口套用編程 225
5.7 DAC轉換接口套用編程 235
5.7.1 DAC0832轉換接口套用編程 235
5.7.2 DAC1208與單片機的接口方法 239
5.7.3 串列接口DAC晶片TLC5615套用編程 241
5.8 ADC轉換接口套用編程 244
5.8.1 ADC0809轉換接口套用編程 244
5.8.2 ICL7135轉換接口套用編程 248
5.8.3 串列接口ADC晶片TLC549套用編程 252
5.9 單片機I2C匯流排擴展套用編程 255
5.9.1 I2C匯流排簡介 255
5.9.2 I2C匯流排通用驅動程式 259
5.9.3 I2C接口器件24C04的讀寫程式 261
5.9.4 I2C接口A/D-D/A轉換晶片PCF8591套用編程 265
5.9.5 I2C接口時鐘晶片PCF8563套用編程 276
第6章 STC15單片機綜合套用編程實例 287
6.1 有關C51編程的若干實際套用技巧 287
6.2 C51與彙編語言混和編程及生成套用庫檔案 293
6.2.1 C51與彙編語言混合編程 293
6.2.2 在Vision4中生成套用庫檔案 298
6.3 可調數字鐘 299
6.3.1 功能要求 299
6.3.2 硬體電路設計 299
6.3.3 軟體程式設計 300
6.4 紅外遙控系統設計 302
6.4.1 功能要求 302
6.4.2 硬體電路設計 302
6.4.3 軟體程式設計 303
6.5 PWM脈寬調製系統設計 313
6.5.1 功能要求 313
6.5.2 硬體電路設計 313
6.5.3 軟體程式設計 314
6.6.1 功能要求 323
6.6.2 硬體電路設計 323
6.6.3 軟體程式設計 323
6.7 簡易電子琴設計 326
6.7.1 功能要求 326
6.7.2 硬體電路設計 326
6.7.3 軟體程式設計 327
6.8 DTMF傳送/接收系統設計 331
6.8.1 功能要求 331
6.8.2 硬體電路設計 332
6.8.3 軟體程式設計 335
6.9.1 功能要求 346
6.9.2 硬體電路設計 346
6.9.3 軟體程式設計 349
6.10 電子密碼鎖設計 360
6.10.1 功能要求 360
6.10.2 硬體電路設計 361
6.10.3 軟體程式設計 361
6.11 DS18B20多點溫度監測系統設計 376
6.11.1 功能要求 376
6.11.2 硬體電路設計 376
6.11.3 軟體程式設計 380
6.12 STH11數字溫-濕度測量系統設計 388
6.12.1 功能要求 388
6.12.2 硬體電路設計 388
6.12.3 軟體程式設計 392
6.13 單片機SD卡讀/寫接口設計 397
6.13.1 功能要求 397
6.13.2 硬體電路設計 397
6.13.3 軟體程式設計 399
附錄A STC15F2K60S2單片機指令表 404
附錄B STC_ISP軟體工具簡介 410
附錄C STC單片機編程下載工具U7/U7-S簡介 413
參考文獻 415
前言
8051單片機是國內外工業測量控制領域內使用極為廣泛的一類 8位
微控制器,它在一塊晶片上同時集成了 CPU、ROM、RAM及多種外圍功能接口,具有體積小、價格低、功能強、可靠性高、使用方便靈活等特點。以單片機為核心設計各種智慧型化電子設備,周期短、成本低,易於更新換代,維修方便,已成為電子設計中最為普遍的套用手段。世界上許多大半導體廠商,如 Atmel、Analog Device、Infineon、NXP、TI、SiLAB等公司都推出了各具特色的 8051系列單片機。中國深圳宏晶科技有限公司研發的 STC系列增強型 8051單片機,是中國本土單片機領域內的佼佼者,其最新推出的 STC15系列單片機不僅在指令系統上與標準 8051核心完全兼容,而且在內部功能上進行了增強,增加了許多新的內部集成功能部件,如片內 ADC、PWM、I2C、SPI、大規模片內 Flash和 XRAM存儲器等,同時還增加了 ISP在系統編程、 IAP在套用編程和線上仿真調試功能,為單片機開發套用提供了更為方便的手段。另外 STC系列單片機還具有一定的價格優勢,無論是在校大學生學習單片機原理知識,還是從事單片機套用開發的科技人員製作實際硬體系統,利用 STC系列單片機都可以獲得事半功倍的效果。
早期單片機套用開發大多採用彙編語言編程,由於彙編語言是一種直接針對硬體的機器語言,其編程效率不高,而且程式不易移植和維護。世界上許多軟體公司都致力於單片機高級語言編譯器的開發研究,使用戶得以從煩瑣的彙編語言中解脫了出來。 C語言是一種特別適合於開發單片機的高級語言,它既能直接操作機器硬體,又可以以類似自然語言的方式編寫程式,可以極大提高編程效率,同時降低軟體的維護成本。德國 Keil公司在開發單片機 C語言編譯器方面取得了極大的成功,從編譯器、調試器、
實時作業系統到集成開發環境,全面支持 8051及其眾多的派生系列單片機, Keil C51被公認為是一種最有效的單片機 C語言開發工具。
本書全面介紹 STC15系列增強型 8051單片機功能特點,以及採用 Keil C51進行單片機開發套用的具體方法,力求先進性和實用性,並給出了大量具體套用實例。全書共 6章,第 1章闡述 STC15系列單片機基礎,詳細介紹 STC15F2K60S2單片機性能特點、
存儲器結構、片內外存儲器的使用、時鐘與復位、並行 I/O連線埠工作模式,以及採用 Keil C51開發 STC15系列單片機的基本方法等。第 2章闡述 Keil C51程式設計基礎,詳細介紹 C51程式設計的語法、基本語句、函式、數組與指針等。第 3章闡述 Keil C51編譯器對 ANSI C的擴展,介紹存儲器類型與編譯模式、 C51數據在記憶體中的存儲格式、目標代碼的段管理、與彙編語言程式的接口、絕對地址訪問及 Keil C51庫函式等。第 4章闡述 STC15單片機片內資源套用編程,介紹 C51編程的基本原則、常見問題與解決方法,給出了中斷系統、定時器 /計數器、串列口、片內 A/D轉換器、片內 PCA模組、SPI同步串列接口、單片機的低功耗設計等資源的具體套用實例。第 5章闡述 STC15單片機片外擴展套用編程,給出了
LED數碼管、非編碼矩陣鍵盤、點陣字元型 LCD、帶字型檔與無字型檔點陣圖型 LCD、D/A及 A/D轉換接口,以及 I2C匯流排擴展等具體套用實例。第 6章闡述 STC15單片機綜合套用編程實例,介紹 C51編程的若干實際套用技巧, C51與彙編語言混和編程,以及套用庫檔案的生成方法,給出了可調數字鐘、紅外
遙控系統、PWM脈寬調製系統、點陣 LED顯示屏、簡易電子琴、 DTMF收/發系統、帶農曆的電子萬年曆、
電子密碼鎖、 DS18B20多點溫度監測系統、 STH11數字溫-濕度測量系統、單片機 SD卡讀/寫接口等大量綜合套用實例。
為幫助讀者更好地學習和掌握 STC15系列單片機的 C語言套用編程方法,本書帶有 1張光碟,其中包含 Keil公司全功能 C51評估軟體包與本書各章所有範例的程式原始碼。
本書在出版過程中得到深圳宏晶科技有限公司的熱情支持,宏晶科技有限公司總經理姚永平先生提供了 STC15單片機測試樣片,電子工業出版社的孫學瑛和陳曉猛編輯提出了許多寶貴意見,彭秀華、徐陽、范林、鄭玉章、李濤、楊振、肖恩凱等參加了本書的編寫工作,在此一併表示衷心感謝。由於作者水平有限,書中難免會有錯誤和不妥之處,懇請廣大讀者批評指正,讀者可通過電子郵件直接與作者聯繫。