簡介
本書是普通高等教育“十一五”國家級規劃教材,以51系列單片機和C語言為基礎,全面系統地介紹單片機的C語言程式設計與套用的基本問題。本書主要內容包括:單片機的C語言概述,51系列單片機硬體與C語言編程基礎,P0~P3口輸入/輸出、中斷系統、定時器/計數器、串列口、並行擴展、串列擴展的C51編程,?Vision2與Proteus使用基礎等。本書提供大量實例及詳細說明與注釋,硬體設計實例均可在Keil和Proteus軟體平台上直接運行,每章後附本章小結、習題、實驗與設計等,提供電子課件、Proteus仿真電路及程式代碼、習題參考答案。
目錄
第1章 單片機的C語言概述 1
1.1 單片機的C語言 1
1.1.1 單片機的C語言(C51)的特點 1
1.1.2 單片機的C語言和標準C語言的
比較 2
1.1.3 單片機的C語言與彙編語言的優
勢對比 2
1.2 硬體及軟體環境 6
1.2.1 硬體環境 6
1.2.2 軟體環境 8
本章小結 8
習題 8
第2章 51系列單片機硬體及C51編程
基礎 9
2.1 51單片機的總體結構 9
2.1.1 內部結構 9
2.1.2 外部引腳說明 10
2.1.3 CPU的時序周期 13
2.2 51單片機的存儲器 14
2.2.1 程式存儲器 14
2.2.2 數據存儲器 15
2.2.3 特殊功能暫存器 17
2.3 C51語言的數據 20
2.3.1 常量 20
2.3.2 變數 22
2.4 C51語言對單片機主要資源的
控制 25
2.4.1 特殊功能暫存器的C51語言
定義 25
2.4.2 絕對地址的訪問 27
2.5 C51語言的基本運算與流程控制
語句 28
2.5.1 基本運算 28
2.5.2 分支判斷——if、switch語句 30
2.5.3 循環控制——while、for語句 32
2.5.4 break、continue、return和goto
語句 34
2.6 C51語言的數組、指針、函式 36
2.6.1 數組 36
2.6.2 指針 38
2.6.3 函式 39
2.7 C51語言的預處理命令及彙編語句
的嵌入 42
2.7.1 檔案包含、宏定義、條件編譯 42
2.7.2 C51中彙編語句的嵌入 44
2.8 C51程式 45
2.8.1 C51的程式結構 45
2.8.2 C51編程規範及注意事項 47
2.8.3 C51的標識符與關鍵字 48
本章小結 50
習題 50
第3章 P0~P3口輸入/輸出的C51編程 52
3.1 51單片機的P0~P3口基礎知識 52
3.1.1 P0~P3口結構 52
3.1.2 P0~P3口特點總結 53
3.2 輸出操作 54
3.2.1 基本輸出操作舉例——位元組輸出
與位輸出 54
3.2.2 擴展輸出操作舉例——流水燈與
霹靂燈 55
3.2.3 擴展輸出操作舉例——8段LED
數碼顯示器 57
3.3 輸入操作 62
3.3.1 閘刀型開關輸入信號 63
3.3.2 單個按鈕型開關輸入信號 64
3.3.3 多個按鈕型開關輸入信號——
鍵盤 66
3.4 實驗與設計 72
實驗1 閘刀型開關輸入/8段LED靜態
顯示輸出 72
實驗2 按鈕型開關輸入/8段LED靜態
顯示輸出 72
設計1:計時秒表的設計 74
設計2:模擬交通信號燈控制裝置的
設計 74
本章小結 74
習題 75
第4章 中斷系統的C51編程 76
4.1 中斷系統結構與中斷控制 76
4.1.1 中斷系統結構 76
4.1.2 特殊功能暫存器 77
4.2 中斷優先權與中斷函式 78
4.2.1 中斷優先權 78
4.2.2 中斷函式的結構形式 80
4.3 外部中斷源的C51編程 80
4.3.1 外部中斷源初始化 80
4.3.2 編程示例 81
4.4 實驗與設計 84
實驗1 按鈕型開關模擬外部中斷
實驗 84
實驗2 外部中斷優先權實驗 85
設計:計程車計價器里程計量裝置的
設計 87
本章小結 87
習題 88
第5章 定時器/計數器的C51編程 89
5.1 51單片機的定時器/計數器 89
5.1.1 結構 89
5.1.2 特殊功能暫存器 90
5.2 定時器/計數器工作模式 91
5.3 定時器/計數器的套用舉例 94
5.3.1 定時器/計數器的初始化 95
5.3.2 套用舉例 96
5.4 實驗與設計 102
實驗1 按鈕型開關模擬計數器實驗 102
實驗2 定時器實驗 103
設計1:計程車計價器里程計量裝置
的設計 104
設計2:計時鐘的設計(倒計時) 104
本章小結 104
習題 105
第6章 串列口的C51編程 106
6.1 51單片機串列口基礎知識 106
6.1.1 串列口的結構原理 106
6.1.2 串列口的套用控制 107
6.2 51單片機串列口的工作方式 108
6.2.1 串列口工作方式0 108
6.2.2 串列口工作方式1 112
6.2.3 串列口工作方式2 116
6.2.4 串列口工作方式3 119
6.3 51單片機串列口的套用舉例 122
6.3.1 串列口編程基礎 122
6.3.2 串列口套用舉例 124
6.4 實驗與設計 127
實驗1 串列口控制的流水燈實驗 127
實驗2 兩個單片機通信實驗 127
本章小結 129
習題 130
第7章 外部並行擴展的C51編程 131
7.1 51單片機並行I/O口擴展基礎 131
7.1.1 系統擴展匯流排結構圖 131
7.1.2 數據線、控制線的連線 132
7.1.3 解碼信號的形成——系統擴展
的定址 132
7.2 可程式的I/O接口晶片8255A的
C51編程 135
7.2.1 8255A簡介 135
7.2.2 利用8255A擴展並行的輸入/輸出
口示例 139
7.2.3 利用Intel 8255A作為8段LED
靜態顯示輸出口的示例 140
7.2.4 利用Intel 8255A作為8段LED
動態顯示輸出口的示例 141
7.3 D/A與A/D轉換器的C51編程 143
7.3.1 D/A轉換器基礎 143
7.3.2 8位並行D/A轉換器DAC0832 145
7.3.3 A/D轉換器基礎 150
7.3.4 8位並行A/D轉換器ADC0809 151
7.4 液晶顯示器的C51編程 155
7.4.1 字元型LCD1602液晶顯示模組
的C51編程 155
7.4.2 點陣式帶漢字型檔12864液晶顯示
模組接口技術 160
7.5 實驗與設計 168
實驗1 DAC0832單緩衝實驗 168
實驗2 ADC0809實驗 169
設計1:電子密碼鎖的設計 171
設計2:波形發生器的設計 171
本章小結 171
習題 172
第8章 外部串列擴展的C51編程 173
8.1 I2C匯流排器件的C51編程 173
8.1.1 認識I2C匯流排接口 173
8.1.2 I2C匯流排典型器件AT24C02
套用舉例 175
8.2 SPI匯流排器件的C51編程 180
8.2.1 認識SPI匯流排 181
8.2.2 SPI匯流排典型器件X25045套用
舉例 182
8.3 單匯流排的C51編程 186
8.3.1 認識單匯流排 186
8.3.2 單匯流排典型器件DS18B20套用
舉例 187
8.4 串列A/D接口晶片TLC2543的
C51編程 193
本章小結 196
習題 197
第9章 μVision2與Proteus使用基礎 198
9.1 μVision2集成開發環境 198
9.1.1 File、Edit和View選單 199
9.1.2 Project、Debug和Flash選單 201
9.1.3 Peripherals、Tools和Window
選單 202
9.2 用μVision2建立與調試工程 203
9.2.1 工程創建、設定、編譯與連結 203
9.2.2 用μVision2調試工程 207
9.2.3 C51程式調試舉例說明——
HELLO.C 211
9.2.4 Keil C51的調試技巧及舉例 213
9.3 Proteus快速入門 216
9.3.1 集成Proteus ISIS環境 216
9.3.2 電路原理圖設計 221
9.4 Proteus仿真工具介紹 226
9.4.1 探針 226
9.4.2 虛擬儀器 226
9.4.3 信號發生器 227
9.4.4 仿真圖表 227
9.5 Proteus軟體中的C51程式運行與
調試 228
9.5.1 驅動的安裝 228
9.5.2 Keil和Proteus的配置 228
9.5.3 Keil和Proteus的調試過程 229
本章小結 229
習題 230
附錄A ASCII碼字元表 231
附錄B 單片機套用資料查詢方法 232
附錄C Proteus常用分離器件名稱 233
參考文獻 234