第1章51單片機的內部模塊 11.151單片機及其應用系統概述 1
1.1.151單片機應用系統的構成和設計流程 2
1.1.2“最小”51單片機應用系統 4
1.251單片機內部模塊的基礎應用 5
1.2.1內部模塊基礎 5
1.2.2并行I/O模塊 6
1.2.3定時計數器模塊 7
1.2.4中斷系統和外部中斷模塊 13
1.2.5串行通信模塊 18
1.351單片機內部模塊的高級應用 24
1.3.1使用定時計數器擴展外部中斷 24
1.3.2使用I/O端口模擬串行通信端口 25
1.3.3串行通信模塊的波特率自適應 29
1.3.4使用軟件擴展多級中斷應用 32
1.3.5定時計數器的可控PWM輸出 36
第2章51單片機的常用算法和函數模塊 39
2.151單片機的庫函數基礎 39
2.1.1函數庫和頭文件分類 39
2.1.2自定義庫 40
2.1.3庫函數的使用 41
2.251單片機常用函數模塊 41
2.2.1內部函數_crol_() 41
2.2.2內部函數_nop_() 42
2.2.3輸入/輸出函數putchar() 44
2.2.4輸入/輸出函數printf() 45
2.2.5隨機數生成函數rand()和srand() 48
2.351單片機的常用算法模塊 52
2.3.1統計字節中1的個數 52
2.3.2軟件延時/定時 53
2.3.3排序算法 53
第3章擴展51單片機外圍模塊的方法 55
3.1地址—數據總線擴展 55
3.2串行通信模塊擴展 58
3.3I2C總線擴展 58
3.3.1I2C總線基礎 58
3.3.2I2C總線接口擴展的驅動庫函數 61
3.4SPI總線擴展 67
3.4.1SPI總線基礎 67
3.4.2SPI總線接口擴展的驅動庫函數 69
3.51-wire總線擴展 70
3.5.11-wire總線擴展原理 70
3.5.21-wire總線擴展的驅動庫函數 72
第4章51單片機的I/O引腳模塊 75
4.1譯碼器模塊 75
4.1.1譯碼器模塊的應用場合 75
4.1.2譯碼器模塊的應用基礎 76
4.1.3譯碼器模塊的應用實例——簡易流水燈 78
4.2鎖存器模塊 79
4.2.1鎖存器模塊的應用場合 80
4.2.2鎖存器模塊的應用基礎 80
4.2.3鎖存器模塊的應用實例——秒表 82
4.3三態門模塊 84
4.3.1三態門模塊的應用場合 84
4.3.2三態門模塊的應用基礎 84
4.3.3三態門模塊的應用實例——地址輸入 86
4.4串行輸入并行輸出模塊 88
4.4.1串行輸入并行輸出模塊的應用場合 88
4.4.2串行輸入并行輸出模塊的應用基礎 88
4.4.3串行輸入并行輸出模塊的應用實例——秒計時 90
4.5并行輸入串行輸出模塊 93
4.5.1并行輸入串行輸出模塊的應用場合 93
4.5.2并行輸入串行輸出模塊的應用基礎 93
4.5.3并行輸入串行輸出模塊的應用實例——讀取撥碼開關狀態 95
4.6可編程I/O擴展芯片Intel8255 96
4.6.1可編程I/O擴展芯片Intel8255的應用場合 96
4.6.2可編程I/O擴展芯片Intel8255的應用基礎 97
4.6.3可編程I/O擴展芯片Intel8255的應用實例——擴展輸入/輸出 100
4.7I/O引腳模塊的應用實例——電子抽獎系統 102
4.7.1電子抽獎系統的需求分析 103
4.7.2電子抽獎系統的電路設計 103
4.7.3電子抽獎系統的應用代碼 105
第5章51單片機的用戶輸入通道模塊 111
5.1獨立按鍵 111
5.1.1獨立按鍵的應用場合 111
5.1.2獨立按鍵的應用基礎 112
5.1.3獨立按鍵的應用實例——加減計數 113
5.2撥碼開關 116
5.2.1撥碼開關的應用場合 116
5.2.2撥碼開關的應用基礎 117
5.2.3撥碼開關的應用實例——開關狀態顯示 118
5.3行列掃描鍵盤 120
5.3.1行列掃描鍵盤的應用場合 121
5.3.2行列掃描鍵盤的應用基礎 121
5.3.3行列掃描鍵盤的應用實例 123
5.4PS/2鍵盤 126
5.4.1PS/2鍵盤的應用場合 126
5.4.2PS/2鍵盤的應用基礎 126
5.4.3PS/2鍵盤的應用實例——掃描碼輸出 130
5.5用戶輸入模塊的應用實例——帶計時功能的計算器 137
5.5.1計算器的需求分析 138
5.5.2計算器的電路設計 139
5.5.3計算器的應用代碼 140
第6章51單片機的LED顯示模塊 151
6.1發光二極管 151
6.1.1發光二極管的應用場合 151
6.1.2發光二極管的應用基礎 152
6.1.3發光二極管的應用實例——流水燈 153
6.2單位數碼管 155
6.2.1單位數碼管的應用場合 155
6.2.2單位數碼管的應用基礎 155
6.2.3單位數碼管的應用實例——“流水數字”顯示 159
6.3多位數碼管 161
6.3.1多位數碼管的應用場合 161
6.3.2多位數碼管的應用基礎 161
6.3.3多位數碼管的應用實例——移動數字效果顯示 165
6.4數碼管驅動芯片MAX7219 167
6.4.1數碼管驅動芯片MAX7219的應用場合 167
6.4.2數碼管驅動芯片MAX7219的應用基礎 168
6.4.3數碼管驅動芯片MAX7219的應用實例——當前日期顯示 175
6.5數碼管和鍵盤驅動芯片CH452 176
6.5.1數碼管和鍵盤驅動芯片CH452的應用場合 176
6.5.2數碼管和鍵盤驅動芯片CH452的應用基礎 176
6.5.3數碼管和鍵盤驅動芯片CH452的應用實例——串口數據顯示和按鍵狀態返回 190
6.6LED顯示模塊的應用實例——簡易頻率計 193
6.6.1簡易頻率計的需求分析 193
6.6.2簡易頻率計的電路設計 195
6.6.3簡易頻率計的應用代碼 196
第7章51單片機的液晶顯示模塊 201
7.1數字字符液晶1602 201
7.1.1數字字符液晶1602的應用場合 201
7.1.2數字字符液晶1602的應用基礎 202
7.1.3數字字符液晶1602的應用實例——字符串顯示 208
7.2漢字圖形液晶12864 208
7.2.1漢字圖形液晶12864的應用場合 208
7.2.2漢字圖形液晶12864的應用基礎 209
7.2.3漢字圖形液晶12864的應用實例——混合顯示 215
7.3點陣顯示模塊 221
7.3.1點陣顯示模塊的應用場合 221
7.3.2點陣顯示模塊的應用基礎 221
7.3.3點陣顯示模塊的應用實例——“流水字符”顯示 224
7.4帶字庫的漢字圖形液晶12864 227
7.4.1帶字庫的漢字圖形液晶12864的應用場合 227
7.4.2帶字庫的漢字圖形液晶12864的應用基礎 228
7.4.3帶字庫的漢字圖形液晶12864的應用實例——顯示串口接收數據和圖形 238
7.5液晶顯示模塊的應用實例——俄羅斯方塊 242
7.5.1俄羅斯方塊的需求分析 242
7.5.2俄羅斯方塊的電路設計 244
7.5.3俄羅斯方塊的應用代碼 245
第8章51單片機的語音和打印輸出模塊 259
8.1蜂鳴器 259
8.1.1蜂鳴器的應用場合 259
8.1.2蜂鳴器的應用基礎 260
8.1.3蜂鳴器的應用實例——按鍵提示音 262
8.2錄放音芯片 264
8.2.1錄放音芯片的應用場合 264
8.2.2錄放音芯片的應用基礎 264
8.2.3錄放音芯片的應用實例——錄放操作 268
8.3文本語言芯片 271
8.3.1文本語音芯片的應用場合 271
8.3.2文本語音芯片的應用基礎 271
8.3.3文本語音芯片的應用實例——來電提示音 279
8.4打印機模塊 281
8.4.1打印機模塊的應用場合 281
8.4.2打印機模塊的應用基礎 281
8.4.3打印機模塊的應用實例——溫度打印輸出 285
8.5語音和打印輸出的應用實例——簡易電子琴 288
8.5.1簡易電子琴的需求分析 288
8.5.2簡易電子琴的電路設計 290
8.5.3簡易電子琴的應用代碼 291
第9章51單片機的驅動和執行機構 297
9.1三極管 297
9.1.1三極管的應用場合 297
9.1.2三極管的應用基礎 298
9.1.3三極管的應用實例——大功率燈泡閃爍 299
9.2達林頓管 300
9.2.1達林頓管的應用場合 300
9.2.2達林頓管的應用基礎 300
9.2.3達林頓管的應用實例——發光二極管流水點亮 302
9.3光電隔離器 302
9.3.1光電隔離器的應用場合 303
9.3.2光電隔離器的應用基礎 304
9.3.3光電隔離器的應用實例 306
9.4直流電動機 306
9.4.1直流電動機的應用場合 306
9.4.2直流電動機的應用基礎 306
9.4.3直流電動機的應用實例——串口控制直流電動機轉動 309
9.5步進電動機 312
9.5.1步進電動機的應用場合 312
9.5.2步進電動機的應用基礎 312
9.5.3步進電動機的應用實例——串口控制步進電動機轉動 317
9.6步進電動機驅動模塊 321
9.6.1步進電動機驅動模塊的應用場合 321
9.6.2步進電動機驅動模塊的應用基礎 321
9.6.3步進電動機驅動模塊的應用實例——按鍵控制步進電動機轉動 323
9.7繼電器 326
9.7.1繼電器的應用場合 327
9.7.2繼電器的應用基礎 327
9.7.3繼電器的應用實例——繼電器控制 329
9.8驅動和執行機構的應用實例——天車控制系統 332
9.8.1天車控制系統的需求分析 332
9.8.2天車控制系統的電路設計 333
9.8.3天車控制系統的應用代碼 335
第10章51單片機的A/D模塊 339
10.1A/D模塊基礎 339
10.1.1A/D變換的過程 340
10.1.2A/D變換的應用電路構成 342
10.1.3A/D變換的保持電路 343
10.1.4A/D芯片的分類 343
10.1.5A/D芯片的選擇 343
10.1.6A/D芯片對電源的需求 345
10.28位并行8通道A/D芯片 345
10.2.1ADC0809的應用基礎 345
10.2.2ADC0809的應用實例——串口輸出ADC0809多通道模擬信號采集 353
10.312位并行8通道A/D芯片 356
10.3.1MAX197的應用基礎 356
10.3.2MAX197的應用實例——串口輸出MAX197多通道模擬信號采集 360
10.412位串行多通道A/D芯片 363
10.4.1TLC2543的應用基礎 364
10.4.2TLC2543的應用實例——串口輸出TLC2543多通道模擬信號采集 369
10.5I2C接口高精度A/D芯片 371
10.5.1ADS1100的應用基礎 371
10.5.2ADS1100的應用實例 380
10.616位串行接口多通道A/D芯片 380
10.6.1AD977A的應用基礎 380
10.6.2AD977A的應用實例 388
10.7A/D模塊的應用實例——太陽能電池監控模塊 388
10.7.1太陽能電池監控模塊的需求分析 388
10.7.2太陽能電池監控模塊的電路設計 389
10.7.3太陽能電池監控模塊的應用代碼 393
第11章51單片機的D/A模塊 407
11.1D/A模塊基礎 407
11.1.1D/A轉換的過程 407
11.1.2D/A芯片的分類 409
11.1.3D/A芯片的選擇 409
11.1.4D/A芯片對電源的需求 410
11.28位并行D/A芯片 411
11.2.1DAC0832的應用基礎 411
11.2.2DAC0832的應用實例——模擬波形輸出 416
11.38位串行D/A芯片 420
11.3.1MAX517的應用基礎 420
11.3.2MAX517的應用實例——輸出正弦波 422
11.410位串行D/A芯片 424
11.4.1TLC5615的應用基礎 424
11.4.2TLC5615的應用實例——輸出鋸齒波 427
11.512位并行D/A芯片 428
11.5.1MAX527的應用基礎 428
11.5.2MAX527的應用實例 433
11.616位串行D/A芯片 433
11.6.1MAX541的應用基礎 433
11.6.2MAX541的應用實例 436
11.7串行A/D和D/A芯片 436
11.7.1PCF8591的應用基礎 437
11.7.2PCF8591的應用實例——AD模擬量采集和DA模擬量輸出 440
11.8信號發生器芯片MAX038 441
11.8.1MAX038的應用基礎 441
11.8.2MAX038的應用實例 444
11.9D/A模塊的應用實例——簡易波形發生器 444
11.9.1簡易波形發生器的需求分析 444
11.9.2簡易波形發生器的電路設計 445
11.9.3簡易波形發生器的應用代碼 446
第12章51單片機的時鐘傳感器模塊 451
12.151單片機應用系統中的時鐘信息獲取 451
12.2內部定時計數器 452
12.3并行總線接口時鐘模塊 453
12.3.1DS12C887的應用基礎 453
12.3.2DS12C887的應用實例——路燈自動開關控制 461
12.4I2C總線接口時鐘模塊 463
12.4.1PCF8563的應用基礎 464
12.4.2PCF8563的應用實例 472
12.5SPI總線接口時鐘模塊 474
12.5.1DS1302的應用基礎 474
12.5.2DS1302的應用實例——時鐘信息讀取 479
12.6時鐘傳感器模塊的應用實例——簡單數字時鐘 481
12.6.1簡單數字時鐘的需求分析 481
12.6.2簡單數字時鐘的電路設計 482
12.6.3簡單數字時鐘的應用代碼 483
第13章51單片機的溫度傳感器模塊 485
13.151單片機應用系統中的溫度信息獲取 485
13.21-wire總線接口溫度模塊 486
13.2.1DS18B20的應用基礎 487
13.2.2DS18B20的應用實例——DS18B20溫度數據采集 492
13.3I2C總線接口溫度模塊 494
13.3.1DS1621的應用基礎 494
13.3.2DS1621的應用實例——DS1621溫度數據采集 498
13.4SPI總線接口溫度模塊 500
13.4.1TC77的應用基礎 500
13.4.2TC77的應用實例 504
13.5溫度傳感器模塊的應用實例——多點溫度采集系統 504
13.5.1多點溫度采集系統的需求分析 505
13.5.2多點溫度采集系統的電路設計 506
13.5.3多點溫度采集系統的應用代碼 507
第14章51單片機的常用其他傳感器模塊 515
14.1溫度傳感器 515
14.1.1SHT75的應用基礎 515
14.1.2SHT75的應用實例——SHT75濕度和溫度數據采集 523
14.2壓力傳感器 525
14.2.1MPX4115的應用基礎 525
14.2.2MPX4115的應用實例 527
14.3定位傳感器 527
14.3.1數字羅盤基礎 527
14.3.2GPS模塊基礎 528
14.3.3NMEA-1083規范 528
14.4數字羅盤傳感器 532
14.4.1HMR3000的應用基礎 532
14.4.2HMR3000的應用實例——航向、俯仰、橫滾數據采集 535
14.5GPS傳感器 537
14.5.1GARMIN25LP的應用基礎 537
14.5.2GARMIN25LP的應用實例——GPS地理信息采集 541
14.6傾角傳感器 545
14.6.1TS1120的應用基礎 546
14.6.2TS1120的應用實例 548
14.7超聲距離傳感器 548
14.7.1HC-SR04的應用基礎 549
14.7.2HC-SR04的應用實例——距離測量 551
14.8傳感器模塊的應用實例——手持傾角儀 554
14.8.1手持傾角儀的需求分析 554
14.8.2手持傾角儀的電路設計 554
14.8.3手持傾角儀的應用代碼 556
第15章51單片機的有線通信模塊 567
15.151單片機的有線通信模塊設計概述 567
15.2RS-232協議芯片 568
15.2.1MAX232的應用基礎 568
15.2.2MAX232的應用實例 571
15.3RS-485協議芯片 572
15.3.1MAX485的應用基礎 572
15.3.2MAX485的應用實例——51單片機和PC進行遠程數據交換 574
15.4RS-422協議芯片 576
15.4.1MAX491的應用基礎 576
15.4.2MAX491的應用實例 579
15.5高速光電隔離芯片 579
15.5.16N137的應用基礎 580
15.5.26N137的應用實例 582
15.6CAN總線芯片 583
15.6.1SJA1000的應用基礎 583
15.6.2SJA1000的應用實例——串口CAN總線橋 588
15.7電力線總線芯片 592
15.7.1SSCP300的應用基礎 593
15.7.2SSCP300的應用實例——SSCP300數據發送和接收 597
15.8USB通信橋芯片 600
15.8.1CP2102的應用基礎 600
15.8.2CP2102的應用實例 605
15.951單片機應用系統的通信模型和通信協議設計 605
15.9.151單片機應用系統的通信模型 606
15.9.251單片機應用系統的通信協議設計 606
15.10有線通信模塊的應用實例——遠程倉庫溫度監測系統 607
15.10.1遠程倉庫濕度監測系統的需求分析 607
15.10.2遠程倉庫濕度監測系統的電路設計 608
15.10.3遠程倉庫濕度監測系統的應用代碼 609
第16章51單片機的無線通信模塊 613
16.151單片機的無線通信模塊設計概述 613
16.2紅外芯片 613
16.2.1紅外芯片的應用基礎 614
16.2.2紅外芯片的應用實例——紅外按鍵信息解析 621
16.3433MHz無線通信模塊 623
16.3.1無線通信模塊的應用基礎 623
16.3.2無線通信模塊的應用實例——PTR8000串口通信橋 633
第17章51單片機的小容量存儲模塊 637
17.1外部單口RAM芯片 637
17.1.16264的應用基礎 638
17.1.26264的應用實例——外部大容量RAM的使用 641
17.2外部雙口RAM芯片 643
17.2.1IDT7132的應用基礎 643
17.2.2IDT7132的應用實例——使用雙口RAM進行雙機通信 647
17.3外部ROM芯片 649
17.3.12716的應用基礎 649
17.3.22716的應用實例 651
17.4FIFO芯片 651
17.4.1CY7C419的應用基礎 651
17.4.2CY7C419的應用實例——使用FIFO存放臨時數據 654
17.5I2C總線接口的E2PROM芯片 657
17.5.1AT24系列芯片的應用基礎 658
17.5.2AT24系列芯片的應用實例——使用AT24C04存放用戶數據 665
17.6SPI總線接口的E2PROM芯片 668
17.6.193系列芯片的應用基礎 668
17.6.293系列芯片的應用實例——使用93C46存放用戶數據 674
17.7接觸式加密智能卡 677
17.7.1接觸式智能卡基礎 677
17.7.2SLE4442接觸式加密卡的應用基礎 679
17.7.3SLE4442的應用實例——SLE4442卡的讀寫 690
17.8非接觸式智能卡 693
17.8.1非接觸式智能卡基礎 693
17.8.2非接觸式智能卡讀寫模塊的應用基礎 697
17.8.3非接觸式智能卡讀寫模塊的應用實例 709
第18章51單片機的大容量存儲模塊 711
18.1Flash芯片 711
18.1.1Flash芯片的應用基礎 711
18.1.2Flash的應用實例——K9F5608芯片的應用 717
18.2U盤讀寫芯片 717
18.2.1CH376的應用基礎 717
18.2.2CH376的應用實例——U盤讀寫 741
18.3SD卡 745
18.3.1SD卡的應用基礎 745
18.3.2SD卡的應用實例 756