本書以STC89C52(AT89S52)為例,介紹了51單片機的結(jié)構(gòu)和特點、入門和提高所需的C語言知識,單片機常用內(nèi)部和外部資源的使用,以及使用C語言編程解決實際問題的方法和技巧。所有內(nèi)容圍繞著密切聯(lián)系實際的典型應(yīng)用示例進行和展開;充分考慮了初學者的特點,對程序可能的疑難點進行了詳細解釋。
何應(yīng)俊。中學高級教師、家用電子產(chǎn)品維修技師、制冷設(shè)備維修技師、宜昌市國家職業(yè)技能鑒定注冊考評員;寫作方向:電子技術(shù);主要作品有:《圖解電子元器件即學即用》,電子工業(yè)出版社,2012年12月。
目 錄
第1篇 入 門 篇
第1章 學習單片機的必備基礎(chǔ) (2)
1.1 單片機的基本知識 (2)
1.1.1 單片機的結(jié)構(gòu) (2)
1.1.2 單片機封裝示例 (3)
1.1.3 單片機的應(yīng)用場合 (4)
1.1.4 單片機控制系統(tǒng)的基本結(jié)構(gòu) (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 復(fù)位電路 (9)
1.4 數(shù)制及相互轉(zhuǎn)換簡介 (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ù)制之間相互轉(zhuǎn)換的方法 (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的最基本應(yīng)用―第一個C51工程 (17)
第2章 入門關(guān)―花樣流水燈的實現(xiàn) (28)
2.1 花樣流水燈電路精講 (28)
2.1.1 花樣流水燈原理圖 (28)
2.1.2 單片機控制花樣流水燈的工作原理 (30)
2.2 本章相關(guān)的C51語言知識精講 (31)
2.2.1 C51的函數(shù)簡介 (31)
2.2.2 數(shù)據(jù)類型 (33)
2.2.3 常量 (34)
2.2.4 變量 (35)
2.2.5 標識符和關(guān)鍵字 (37)
2.2.6 單片機C語言程序的基本結(jié)構(gòu) (38)
2.2.7 算術(shù)運算符和算術(shù)表達式 (38)
2.2.8 關(guān)系運算符和關(guān)系表達式 (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ù)的聲明、定義和調(diào)用 (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 獨立按鍵的原理及應(yīng)用 (62)
3.1.1 常見的輕觸按鍵的實物 (62)
3.1.2 輕觸按鍵的通、斷過程及消抖 (63)
3.1.3 實現(xiàn)按鍵給單片機傳指令的硬件結(jié)構(gòu) (64)
3.1.4 獨立按鍵的典型應(yīng)用示例──按鍵控制蜂鳴器鳴響 (65)
3.2 矩陣按鍵的應(yīng)用 (68)
3.2.1 矩陣按鍵的原理和硬件設(shè)計 (68)
3.2.2 矩陣鍵盤的典型編程方法―掃描法和利用二維數(shù)組存儲鍵值 (69)
3.3 按鍵和單片機控制電機的運行狀態(tài) (74)
3.3.1 按鈕控制直流電機和交流電機的啟動和停止 (74)
3.3.2 按鍵控制交流電機的順序啟動 (76)
3.3.3 按鍵控制電機的正反轉(zhuǎn) (80)
3.3.4 直流電機的PWM調(diào)速 (82)
3.4 開關(guān)與燈的靈活控制 (84)
3.4.1 鈕子開關(guān)控制單片機實現(xiàn)停電自鎖與來電提示 (85)
3.4.2 按鍵和單片機控制燈 (86)
第4章 單片機的中斷系統(tǒng)及應(yīng)用示例 (88)
4.1 單片機的中斷系統(tǒng) (88)
4.1.1 中斷的基本概念 (88)
4.1.2 中斷優(yōu)先級和中斷嵌套 (90)
4.1.3 應(yīng)用中斷需要設(shè)置的4個寄存器 (91)
4.1.4 中斷服務(wù)程序的寫法(格式) (94)
4.2 定時器T0和T1的工作方式1 (94)
4.2.1 單片機的幾個周期 (94)
4.2.2 定時器的工作方式1工作過程詳解 (94)
4.2.3 定時器T0和T1的工作方式1應(yīng)用示例 (95)
4.3 外部中斷的應(yīng)用 (96)
4.3.1 低電平觸發(fā)外部中斷的應(yīng)用示例 (96)
4.3.2 下降沿觸發(fā)外部中斷的應(yīng)用示例 (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 任務(wù)書 (110)
5.4.2 典型程序示例及解釋 (111)
第6章 單片機的串行通信 (117)
6.1 RS-232串行通信的基礎(chǔ)知識 (117)
6.1.1 串行通信標準和串行通信接口 (117)
6.1.2 通信的幾個基本概念 (120)
6.1.3 RS-232串行通信的硬件連接 (121)
6.1.4 讀寫串口數(shù)據(jù) (122)
6.1.5 串行控制與狀態(tài)寄存器 (123)
6.1.6 串口的工作方式 (123)
6.2 串口通信設(shè)置 (124)
6.2.1 計算機串口通信設(shè)置 (124)
6.2.2 單片機串口通信設(shè)置 (125)
6.3 單片機串口通信的基礎(chǔ)程序范例 (126)
6.4 串口通信應(yīng)用示例(用串口校準時間的數(shù)字鐘) (127)
6.5 知識鏈接 (131)
6.5.1 字符型數(shù)據(jù) (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模塊的內(nèi)部結(jié)構(gòu)和工作原理 (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的點陣結(jié)構(gòu) (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屏的應(yīng)用(模塊化編程示例) (160)
第8章 A/D與D/A的應(yīng)用入門 (171)
8.1 任務(wù)書―溫度及電壓監(jiān)測儀 (171)
8.2 A/D轉(zhuǎn)換 (172)
8.2.1 A/D和D/A簡介 (172)
8.2.2 典型A/D芯片ADC0809介紹 (173)
8.2.3 ADC0809應(yīng)用示例 (176)
8.3 LM35溫度傳感器的認識和使用 (177)
8.3.1 LM35的外形及特點 (177)
8.3.2 LM35的典型應(yīng)用電路分析 (178)
8.3.3 LM35的應(yīng)用電路連接及溫度轉(zhuǎn)換編程 (179)
8.4 電壓源 (179)
8.5 溫度及電壓監(jiān)測儀的程序代碼示例及分析 (180)
8.6 知識鏈接―D/A轉(zhuǎn)換芯片DAC0832及應(yīng)用 (183)
8.6.1 DAC0832的內(nèi)部結(jié)構(gòu)和引腳功能 (183)
8.6.2 單片機實訓臺典型D/A模塊介紹 (184)
8.6.3 ADC0832采用I/O方式編程示例 (185)
8.6.4 ADC0832采用擴展地址方式編程示例 (186)
第3篇 綜合應(yīng)用―實踐篇
第9章 步進電機的控制 (190)
9.1 步進電機的基礎(chǔ)知識 (190)
9.2 步進電機的參數(shù) (192)
9.3 步進電機的驅(qū)動及精確定位系統(tǒng)示例 (193)
9.3.1 步進電機及驅(qū)動器 (193)
9.3.2 步進電機的位移裝置及保護裝置 (194)
9.4 單片機實訓臺的典型步進電機模塊 (196)
9.5 步進電機的控制示例 (197)
9.5.1 步進電機模塊游標的歸零 (197)
9.5.2 步進電機的定位 (198)
9.6 典型訓練任務(wù)―自動流水線系統(tǒng) (200)
第10章 DS18B20溫度傳感器及智能換氣扇 (203)
10.1 智能換氣扇任務(wù)書 (203)
10.2 智能換氣扇實現(xiàn)思路 (205)
10.3 DS18B20溫度傳感器 (206)
10.3.1 DS18B20簡介 (206)
10.3.2 DS18B20的控制方法 (209)
10.4 模擬智能換氣扇的程序代碼示例及講解 (213)
第11章 電子密碼鎖 (液晶、矩陣鍵盤的綜合應(yīng)用) (223)
11.1 電子密碼鎖簡介 (223)
11.2 電子密碼鎖的實現(xiàn) (225)
11.2.1 硬件接線及編程思路和技巧 (225)
11.2.2 程序代碼示例及講析 (226)
11.3 典型訓練任務(wù) (240)
任務(wù)一 增設(shè)控制鍵 (240)
任務(wù)二 自動點焊機控制系統(tǒng)的實現(xiàn) (240)
附錄 (242)
附錄A C51中的關(guān)鍵字 (242)
附錄B ASCII碼表 (244)
附錄C C語言知識補充 (247)