本書以STC89C52(AT89S52)為例,介紹了51單片機的結構和特點、入門和提高所需的C語言知識,單片機常用內部和外部資源的使用,以及使用C語言編程解決實際問題的方法和技巧。所有內容圍繞著密切聯(lián)系實際的典型應用示例進行和展開;充分考慮了初學者的特點,對程序可能的疑難點進行了詳細解釋。
何應俊。中學高級教師、家用電子產品維修技師、制冷設備維修技師、宜昌市國家職業(yè)技能鑒定注冊考評員;寫作方向:電子技術;主要作品有:《圖解電子元器件即學即用》,電子工業(yè)出版社,2012年12月。
目 錄
第1篇 入 門 篇
第1章 學習單片機的必備基礎 (2)
1.1 單片機的基本知識 (2)
1.1.1 單片機的結構 (2)
1.1.2 單片機封裝示例 (3)
1.1.3 單片機的應用場合 (4)
1.1.4 單片機控制系統(tǒng)的基本結構 (4)
1.1.5 單片機控制系統(tǒng)的開發(fā)過程 (5)
1.2 51單片機的引腳 (5)
1.2.1 51單片機的引腳功能 (5)
1.2.2 TTL電平和COMS電平的概念 (7)
1.3 單片機的最小系統(tǒng) (8)
1.3.1 直流供電 (8)
1.3.2 時鐘電路 (8)
1.3.3 復位電路 (9)
1.4 數(shù)制及相互轉換簡介 (10)
1.4.1 十進制數(shù) (10)
1.4.2 二進制數(shù) (10)
1.4.3 十六進制數(shù) (10)
1.4.4 八進制數(shù) (11)
1.4.5 各種數(shù)制之間相互轉換的方法 (11)
1.5 搭建51單片機開發(fā)環(huán)境 (13)
1.5.1 搭建硬件系統(tǒng) (13)
1.5.2 搭建軟件開發(fā)環(huán)境(Keil ?Vision) (17)
1.5.3 Keil ?Vision4的最基本應用―第一個C51工程 (17)
第2章 入門關―花樣流水燈的實現(xiàn) (28)
2.1 花樣流水燈電路精講 (28)
2.1.1 花樣流水燈原理圖 (28)
2.1.2 單片機控制花樣流水燈的工作原理 (30)
2.2 本章相關的C51語言知識精講 (31)
2.2.1 C51的函數(shù)簡介 (31)
2.2.2 數(shù)據類型 (33)
2.2.3 常量 (34)
2.2.4 變量 (35)
2.2.5 標識符和關鍵字 (37)
2.2.6 單片機C語言程序的基本結構 (38)
2.2.7 算術運算符和算術表達式 (38)
2.2.8 關系運算符和關系表達式 (39)
2.2.9 自增減運算符 (40)
2.2.10 單片機的周期 (40)
2.2.11 while循環(huán)語句和for循環(huán)語句 (40)
2.2.12 不帶參數(shù)和帶參數(shù)函數(shù)的聲明、定義和調用 (43)
2.3 使用“位操作”控制流水燈 (45)
2.3.1 編程思路 (45)
2.3.2 參考程序及解釋 (45)
2.3.3 觀察效果 (46)
2.4 使用字節(jié)控制(即并行I/O口控制)流水燈 (46)
2.4.1 編程思路 (46)
2.4.2 參考程序及解釋 (47)
2.5 使用移位運算符控制流水燈 (47)
2.5.1 邏輯運算符和位運算符 (47)
2.5.2 使用移位運算符控制流水燈的編程示例 (49)
2.6 使用庫函數(shù)實現(xiàn)流水燈 (50)
2.6.1 循環(huán)移位函數(shù) (50)
2.6.2 使用循環(huán)移位函數(shù)實現(xiàn)流水燈 (51)
2.7 使用條件語句實現(xiàn)流水燈 (52)
2.7.1 條件語句 (52)
2.7.2 使用if語句實現(xiàn)流水燈 (53)
2.8 使用switch語句控制流水燈 (54)
2.8.1 switch語句介紹 (54)
2.8.2 使用switch語句控制流水燈的編程示例 (55)
2.9 使用數(shù)組控制流水燈 (56)
2.9.1 C51語言的數(shù)組 (56)
2.9.2 使用數(shù)組控制流水燈的編程示例 (57)
2.10 使用指針實現(xiàn)流水燈 (58)
2.10.1 指針的概念和用法 (58)
2.10.2 使用指針實現(xiàn)流水燈的編程示例 (59)
第2篇 常用資源使用
第3章 按鍵和單片機對燈和電機等器件的控制 (62)
3.1 獨立按鍵的原理及應用 (62)
3.1.1 常見的輕觸按鍵的實物 (62)
3.1.2 輕觸按鍵的通、斷過程及消抖 (63)
3.1.3 實現(xiàn)按鍵給單片機傳指令的硬件結構 (64)
3.1.4 獨立按鍵的典型應用示例──按鍵控制蜂鳴器鳴響 (65)
3.2 矩陣按鍵的應用 (68)
3.2.1 矩陣按鍵的原理和硬件設計 (68)
3.2.2 矩陣鍵盤的典型編程方法―掃描法和利用二維數(shù)組存儲鍵值 (69)
3.3 按鍵和單片機控制電機的運行狀態(tài) (74)
3.3.1 按鈕控制直流電機和交流電機的啟動和停止 (74)
3.3.2 按鍵控制交流電機的順序啟動 (76)
3.3.3 按鍵控制電機的正反轉 (80)
3.3.4 直流電機的PWM調速 (82)
3.4 開關與燈的靈活控制 (84)
3.4.1 鈕子開關控制單片機實現(xiàn)停電自鎖與來電提示 (85)
3.4.2 按鍵和單片機控制燈 (86)
第4章 單片機的中斷系統(tǒng)及應用示例 (88)
4.1 單片機的中斷系統(tǒng) (88)
4.1.1 中斷的基本概念 (88)
4.1.2 中斷優(yōu)先級和中斷嵌套 (90)
4.1.3 應用中斷需要設置的4個寄存器 (91)
4.1.4 中斷服務程序的寫法(格式) (94)
4.2 定時器T0和T1的工作方式1 (94)
4.2.1 單片機的幾個周期 (94)
4.2.2 定時器的工作方式1工作過程詳解 (94)
4.2.3 定時器T0和T1的工作方式1應用示例 (95)
4.3 外部中斷的應用 (96)
4.3.1 低電平觸發(fā)外部中斷的應用示例 (96)
4.3.2 下降沿觸發(fā)外部中斷的應用示例 (99)
第5章 數(shù)碼管的靜態(tài)顯示和動態(tài)顯示 (100)
5.1 數(shù)碼管的顯示原理 (100)
5.2 數(shù)碼管的靜態(tài)顯示 (102)
5.3 數(shù)碼管的動態(tài)顯示 (105)
5.3.1 典型數(shù)碼管顯示電路 (105)
5.3.2 數(shù)碼管動態(tài)顯示編程入門示例 (109)
5.4 使用數(shù)碼管實現(xiàn)24小時時鐘 (110)
5.4.1 任務書 (110)
5.4.2 典型程序示例及解釋 (111)
第6章 單片機的串行通信 (117)
6.1 RS-232串行通信的基礎知識 (117)
6.1.1 串行通信標準和串行通信接口 (117)
6.1.2 通信的幾個基本概念 (120)
6.1.3 RS-232串行通信的硬件連接 (121)
6.1.4 讀寫串口數(shù)據 (122)
6.1.5 串行控制與狀態(tài)寄存器 (123)
6.1.6 串口的工作方式 (123)
6.2 串口通信設置 (124)
6.2.1 計算機串口通信設置 (124)
6.2.2 單片機串口通信設置 (125)
6.3 單片機串口通信的基礎程序范例 (126)
6.4 串口通信應用示例(用串口校準時間的數(shù)字鐘) (127)
6.5 知識鏈接 (131)
6.5.1 字符型數(shù)據 (131)
6.5.2 單片機與單片機之間的通信 (132)
6.5.3 字符串數(shù)組 (132)
第7章 液晶顯示屏和OLED屏的使用 (133)
7.1 LCD1602的認識和使用 (133)
7.1.1 LCD1602的引腳功能及其和單片機的連接 (134)
7.1.2 LCD1602模塊的內部結構和工作原理 (135)
7.1.3 LCD1602的工作時序 (137)
7.1.4 LCD1602的指令說明 (138)
7.1.5 LCD1602的編程 (139)
7.2 不帶字庫LCD12864的使用 (142)
7.2.1 LCD12864的引腳說明 (142)
7.2.2 LCD12864的模塊介紹 (143)
7.2.3 不帶字庫LCD12864的讀寫時序 (144)
7.3 LCD12864的點陣結構 (145)
7.4 LCD12864的指令說明 (146)
7.5 LCD12864顯示字符的取模方法 (147)
7.6 LCD12864顯示信息操作示例 (147)
7.7 LCD12864的跨屏顯示 (151)
7.8 帶字庫LCD12864的顯示編程 (153)
7.8.1 帶字庫LCD12864簡介 (153)
7.8.2 帶字庫LCD12864的基本指令 (154)
7.8.3 漢字顯示坐標 (155)
7.8.4 帶字庫LCD12864顯示編程示例 (156)
7.9 OLED屏 (158)
7.9.1 OLED簡介 (158)
7.9.2 OLED屏的應用(模塊化編程示例) (160)
第8章 A/D與D/A的應用入門 (171)
8.1 任務書―溫度及電壓監(jiān)測儀 (171)
8.2 A/D轉換 (172)
8.2.1 A/D和D/A簡介 (172)
8.2.2 典型A/D芯片ADC0809介紹 (173)
8.2.3 ADC0809應用示例 (176)
8.3 LM35溫度傳感器的認識和使用 (177)
8.3.1 LM35的外形及特點 (177)
8.3.2 LM35的典型應用電路分析 (178)
8.3.3 LM35的應用電路連接及溫度轉換編程 (179)
8.4 電壓源 (179)
8.5 溫度及電壓監(jiān)測儀的程序代碼示例及分析 (180)
8.6 知識鏈接―D/A轉換芯片DAC0832及應用 (183)
8.6.1 DAC0832的內部結構和引腳功能 (183)
8.6.2 單片機實訓臺典型D/A模塊介紹 (184)
8.6.3 ADC0832采用I/O方式編程示例 (185)
8.6.4 ADC0832采用擴展地址方式編程示例 (186)
第3篇 綜合應用―實踐篇
第9章 步進電機的控制 (190)
9.1 步進電機的基礎知識 (190)
9.2 步進電機的參數(shù) (192)
9.3 步進電機的驅動及精確定位系統(tǒng)示例 (193)
9.3.1 步進電機及驅動器 (193)
9.3.2 步進電機的位移裝置及保護裝置 (194)
9.4 單片機實訓臺的典型步進電機模塊 (196)
9.5 步進電機的控制示例 (197)
9.5.1 步進電機模塊游標的歸零 (197)
9.5.2 步進電機的定位 (198)
9.6 典型訓練任務―自動流水線系統(tǒng) (200)
第10章 DS18B20溫度傳感器及智能換氣扇 (203)
10.1 智能換氣扇任務書 (203)
10.2 智能換氣扇實現(xiàn)思路 (205)
10.3 DS18B20溫度傳感器 (206)
10.3.1 DS18B20簡介 (206)
10.3.2 DS18B20的控制方法 (209)
10.4 模擬智能換氣扇的程序代碼示例及講解 (213)
第11章 電子密碼鎖 (液晶、矩陣鍵盤的綜合應用) (223)
11.1 電子密碼鎖簡介 (223)
11.2 電子密碼鎖的實現(xiàn) (225)
11.2.1 硬件接線及編程思路和技巧 (225)
11.2.2 程序代碼示例及講析 (226)
11.3 典型訓練任務 (240)
任務一 增設控制鍵 (240)
任務二 自動點焊機控制系統(tǒng)的實現(xiàn) (240)
附錄 (242)
附錄A C51中的關鍵字 (242)
附錄B ASCII碼表 (244)
附錄C C語言知識補充 (247)