內容簡介
本書完整展現了一個51單片機工程師成長的經歷。51單片機共有21個特殊功能暫存器,而需要重點掌握的只有6個(需要熟練掌握對其位的操作),因而學習單片機其實很簡單:學會6個暫存器就學會了單片機程式設計。這樣如果一天掌握一個暫存器,那么6天就能學會單片機。
目錄
第1篇 入 門 篇
第1章 走近單片機 2
1.1 我們身邊的單片機 2
1.2 認識單片機 5
1.3 了解51單片機 8
1.3.1 51單片機的由來 8
1.3.2 51單片機的特點 9
1.3.3 51單片機的代表AT89C51 10
第2章 練練我們的刀和劍:Proteus、Keil C51 13
2.1 Proteus介紹 13
2.1.1 安裝Proteus 13
2.1.2 運行Proteus 15
2.1.3 學用Proteus 17
2.2 Keil C51介紹 22
2.2.1 安裝Keil C51 22
2.2.2 運行Keil C51 23
2.2.3 學用Keil C51 27
2.3 刀劍合併 31
2.3.1 安裝VDM51.DLL 31
2.3.2 設定Keil C51和Proteus 33
2.3.3 聯合調試 37
第3章 讓你的單片機眨眨眼睛 42
3.1 我們的第一個單片機程式 42
3.1.1 先畫出我們要用的電路 42
3.1.2 用程式點亮我們的燈 47
3.1.3 分析代碼 52
3.2 不僅僅是讓它亮起來 55
3.2.1 怎么讓發亮的燈閃爍呢 55
3.2.2 代碼分析 56
3.2.3 調試分析 57
3.2.4 最佳化程式 58
3.3 做些程式的改動 60
3.3.1 改動延時時間 60
3.3.2 做個眾人皆知的跑馬燈 60
3.4 能不能連點花樣呢 64
3.4.1 想想你能畫什麼 64
3.4.2 用代碼顯示數字 65
第4章 讓數字顯示出來 66
4.1 引入數碼管的概念 66
4.1.1 數碼管介紹 66
4.1.2 寫段程式讓它亮起來 67
4.1.3 數碼管的驅動方式 69
4.2 多顯示幾個數字看看 70
4.2.1 電路實現 70
4.2.2 程式實現 72
4.2.3 你的眼睛欺騙了你 73
4.3 仿真萬年曆 75
4.3.1 電路實現 75
4.3.2 程式實現 76
4.3.3 最佳化程式 77
第5章 用按鍵告訴單片機你想做什麼 83
5.1 能不能讓閃爍的燈停下來 83
5.1.1 讓跑馬燈停下來 83
5.1.2 認識我們用的按鍵 86
5.2 如何實現軟體消抖 87
5.3 如何實現按鍵的復用 90
第6章 如何實時控制單片機 97
6.1 中斷的引入 97
6.1.1 中斷允許暫存器IE 97
6.1.2 定時/計數器控制暫存器TCON 98
6.1.3 中斷操作流程 99
6.2 原來按鍵還可以這樣用 100
6.2.1 寫個程式實現按鍵的中斷 100
6.2.2 不同的觸發方式 104
6.3 中斷的優先權 106
6.3.1 中斷優先權 106
6.3.2 了解更多中斷的概念 107
6.3.3 比較4個I/O口 108
第7章 讓定時更精確 110
7.1 定時/計數器概念 110
7.1.1 T0、T1介紹 110
7.1.2 複習暫存器IE、TCON、IP 110
7.1.3 介紹幾個專用暫存器 111
7.2 工作方式0的套用 112
7.3 工作方式1的套用 116
7.4 工作方式2的套用 119
7.5 工作方式3的套用 121
7.6 計數器介紹 124
第8章 單片機與外界的 聯繫——串口通信 128
8.1 串口通信的概念 128
8.2 先試試如何傳送 129
8.2.1 與串口通信有關的暫存器 129
8.2.2 先寫個示例程式 132
8.2.3 補充一點51單片機的串口知識 135
8.3 收發都能實現 138
8.3.1 將Proteus中的串口連線到硬體上 138
8.3.2 實現串口收發通信 143
8.3.3 用中斷的方式實現串口收發 146
第9章 讓單片機“響”起來 149
9.1 單片機還會響呢 149
9.1.1 了解一下蜂鳴器 149
9.1.2 寫個程式讓它響起來 149
9.2 用定時器模擬門鈴 152
9.3 用蜂鳴器演奏曲子 155
9.4 重新認識AT89C51 158
9.4.1 AT89C51的總體認識 158
9.4.2 AT89C51的引腳 160
9.4.3 有關AT89C51的暫存器 161
第2篇 提 高 篇
第10章 再說數碼管 168
10.1 使用擴展晶片驅動數碼管 168
10.1.1 認識擴展晶片74LS138 169
10.1.2 74LS138的套用 170
10.1.3 套用74HC154 172
10.1.4 有關解碼器 174
10.2 顯示解碼器 175
10.2.1 顯示解碼器74LS48 175
10.2.2 顯示解碼器的套用 176
第11章 按鍵多了怎么辦 180
11.1 看一個密碼鍵盤 180
11.1.1 矩陣鍵盤的實現 180
11.1.2 矩陣按鍵的掃描 181
11.2 是否可以擴展呢 185
11.2.1 了解編碼器 185
11.2.2 套用編碼器74LS148 187
第12章 深入串口通信 190
12.1 通信協定的引入 190
12.1.1 協定制定 190
12.1.2 樣例實現 191
12.2 讓單片機和PC真正通信 202
12.2.1 新建一個VC工程 202
12.2.2 添加VC控制項 203
12.2.3 添加控制項到界面 204
12.2.4 添加變數、完成代碼編寫 207
12.2.5 運行、調試 214
第13章 I2C匯流排及其套用 217
13.1 I2C匯流排介紹 217
13.1.1 初步了解I2C匯流排 217
13.1.2 I2C匯流排上的信號 218
13.2 認識E2PROM 24C02 222
13.2.1 認識AT24C02 222
13.2.2 AT24C02的操作地址 222
13.2.3 AT24C02的讀/寫操作 224
13.3 寫一個I2C通信的例子 226
第14章 SPI匯流排及其套用 236
14.1 SPI匯流排介紹 236
14.2 一款SPI接口的E2PROM 237
14.2.1 認識25AA040 238
14.2.2 25AA040的工作原理 239
14.3 套用25AA040 247
第15章 A/D轉換、D/A轉換 256
15.1 了解A/D轉換器的相關知識 256
15.1.1 A/D轉換器的分類 256
15.1.2 A/D轉換器的主要技術指標 257
15.2 看兩個A/D轉換器的例子 258
15.2.1 了解ADC0809 258
15.2.2 套用ADC0808 260
15.2.3 了解ADC0832 264
15.2.4 套用ADC0832 267
15.3 再看看D/A轉換器 271
15.3.1 了解D/A轉換器 271
15.3.2 D/A轉換器的主要技術指標 272
15.3.3 了解DAC0832 273
15.3.4 套用DAC0832 276
第16章 LCD顯示 279
16.1 先認識LED點陣屏 279
16.1.1 有關LED點陣屏 279
16.1.2 LED點陣的套用 280
16.2 使用字元LCD 283
16.2.1 了解LCD 283
16.2.2 認識LCD1602 284
16.2.3 LCD1602的指令說明 285
16.2.4 使用LCD1602 290
16.3 使用LCD12864 293
16.3.1 認識HDG12864L-6 294
16.3.2 HDG12864L-6指令說明 296
16.3.3 LCD12864的並行套用 307
16.3.4 LCD12864的串列套用 314
第3篇 應 用 篇
第17章 簡易萬年曆 324
17.1 電路設計 324
17.2 認識時鐘晶片DS1302 326
17.3 系統設計 332
第18章 溫度自動控制系統 348
18.1 系統模型 348
18.2 分析電路 350
18.2.1 電路分解 350
18.2.2 認識DS18B20 353
18.2.3 了解液晶AMPIRE128×64 364
18.3 系統設計 368
18.3.1 嵌入式系統設計 368
18.3.2 PC端軟體設計 379
附錄A AT89C51特殊功能暫存器速查表 384
附錄B Proteus 7.5元件庫分類表 386
附錄C 書籍、網站推薦 394
參考文獻 395
結束語 396