本書以STC89C52(AT89S52)為例,介紹了51單片機(jī)的結(jié)構(gòu)和特點(diǎn)、入門和提高所需的C語言知識(shí),單片機(jī)常用內(nèi)部和外部資源的使用,以及使用C語言編程解決實(shí)際問題的方法和技巧。所有內(nèi)容圍繞著密切聯(lián)系實(shí)際的典型應(yīng)用示例進(jìn)行和展開;充分考慮了初學(xué)者的特點(diǎn),對(duì)程序可能的疑難點(diǎn)進(jìn)行了詳細(xì)解釋。
何應(yīng)俊。中學(xué)高級(jí)教師、家用電子產(chǎn)品維修技師、制冷設(shè)備維修技師、宜昌市國家職業(yè)技能鑒定注冊(cè)考評(píng)員;寫作方向:電子技術(shù);主要作品有:《圖解電子元器件即學(xué)即用》,電子工業(yè)出版社,2012年12月。
目 錄
第1篇 入 門 篇
第1章 學(xué)習(xí)單片機(jī)的必備基礎(chǔ) (2)
1.1 單片機(jī)的基本知識(shí) (2)
1.1.1 單片機(jī)的結(jié)構(gòu) (2)
1.1.2 單片機(jī)封裝示例 (3)
1.1.3 單片機(jī)的應(yīng)用場(chǎng)合 (4)
1.1.4 單片機(jī)控制系統(tǒng)的基本結(jié)構(gòu) (4)
1.1.5 單片機(jī)控制系統(tǒng)的開發(fā)過程 (5)
1.2 51單片機(jī)的引腳 (5)
1.2.1 51單片機(jī)的引腳功能 (5)
1.2.2 TTL電平和COMS電平的概念 (7)
1.3 單片機(jī)的最小系統(tǒng) (8)
1.3.1 直流供電 (8)
1.3.2 時(shí)鐘電路 (8)
1.3.3 復(fù)位電路 (9)
1.4 數(shù)制及相互轉(zhuǎn)換簡介 (10)
1.4.1 十進(jìn)制數(shù) (10)
1.4.2 二進(jìn)制數(shù) (10)
1.4.3 十六進(jìn)制數(shù) (10)
1.4.4 八進(jìn)制數(shù) (11)
1.4.5 各種數(shù)制之間相互轉(zhuǎn)換的方法 (11)
1.5 搭建51單片機(jī)開發(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)用―第一個(gè)C51工程 (17)
第2章 入門關(guān)―花樣流水燈的實(shí)現(xiàn) (28)
2.1 花樣流水燈電路精講 (28)
2.1.1 花樣流水燈原理圖 (28)
2.1.2 單片機(jī)控制花樣流水燈的工作原理 (30)
2.2 本章相關(guān)的C51語言知識(shí)精講 (31)
2.2.1 C51的函數(shù)簡介 (31)
2.2.2 數(shù)據(jù)類型 (33)
2.2.3 常量 (34)
2.2.4 變量 (35)
2.2.5 標(biāo)識(shí)符和關(guān)鍵字 (37)
2.2.6 單片機(jī)C語言程序的基本結(jié)構(gòu) (38)
2.2.7 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 (38)
2.2.8 關(guān)系運(yùn)算符和關(guān)系表達(dá)式 (39)
2.2.9 自增減運(yùn)算符 (40)
2.2.10 單片機(jī)的周期 (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 使用移位運(yùn)算符控制流水燈 (47)
2.5.1 邏輯運(yùn)算符和位運(yùn)算符 (47)
2.5.2 使用移位運(yùn)算符控制流水燈的編程示例 (49)
2.6 使用庫函數(shù)實(shí)現(xiàn)流水燈 (50)
2.6.1 循環(huán)移位函數(shù) (50)
2.6.2 使用循環(huán)移位函數(shù)實(shí)現(xiàn)流水燈 (51)
2.7 使用條件語句實(shí)現(xiàn)流水燈 (52)
2.7.1 條件語句 (52)
2.7.2 使用if語句實(shí)現(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 使用指針實(shí)現(xiàn)流水燈 (58)
2.10.1 指針的概念和用法 (58)
2.10.2 使用指針實(shí)現(xiàn)流水燈的編程示例 (59)
第2篇 常用資源使用
第3章 按鍵和單片機(jī)對(duì)燈和電機(jī)等器件的控制 (62)
3.1 獨(dú)立按鍵的原理及應(yīng)用 (62)
3.1.1 常見的輕觸按鍵的實(shí)物 (62)
3.1.2 輕觸按鍵的通、斷過程及消抖 (63)
3.1.3 實(shí)現(xiàn)按鍵給單片機(jī)傳指令的硬件結(jié)構(gòu) (64)
3.1.4 獨(dú)立按鍵的典型應(yīng)用示例──按鍵控制蜂鳴器鳴響 (65)
3.2 矩陣按鍵的應(yīng)用 (68)
3.2.1 矩陣按鍵的原理和硬件設(shè)計(jì) (68)
3.2.2 矩陣鍵盤的典型編程方法―掃描法和利用二維數(shù)組存儲(chǔ)鍵值 (69)
3.3 按鍵和單片機(jī)控制電機(jī)的運(yùn)行狀態(tài) (74)
3.3.1 按鈕控制直流電機(jī)和交流電機(jī)的啟動(dòng)和停止 (74)
3.3.2 按鍵控制交流電機(jī)的順序啟動(dòng) (76)
3.3.3 按鍵控制電機(jī)的正反轉(zhuǎn) (80)
3.3.4 直流電機(jī)的PWM調(diào)速 (82)
3.4 開關(guān)與燈的靈活控制 (84)
3.4.1 鈕子開關(guān)控制單片機(jī)實(shí)現(xiàn)停電自鎖與來電提示 (85)
3.4.2 按鍵和單片機(jī)控制燈 (86)
第4章 單片機(jī)的中斷系統(tǒng)及應(yīng)用示例 (88)
4.1 單片機(jī)的中斷系統(tǒng) (88)
4.1.1 中斷的基本概念 (88)
4.1.2 中斷優(yōu)先級(jí)和中斷嵌套 (90)
4.1.3 應(yīng)用中斷需要設(shè)置的4個(gè)寄存器 (91)
4.1.4 中斷服務(wù)程序的寫法(格式) (94)
4.2 定時(shí)器T0和T1的工作方式1 (94)
4.2.1 單片機(jī)的幾個(gè)周期 (94)
4.2.2 定時(shí)器的工作方式1工作過程詳解 (94)
4.2.3 定時(shí)器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)顯示和動(dòng)態(tài)顯示 (100)
5.1 數(shù)碼管的顯示原理 (100)
5.2 數(shù)碼管的靜態(tài)顯示 (102)
5.3 數(shù)碼管的動(dòng)態(tài)顯示 (105)
5.3.1 典型數(shù)碼管顯示電路 (105)
5.3.2 數(shù)碼管動(dòng)態(tài)顯示編程入門示例 (109)
5.4 使用數(shù)碼管實(shí)現(xiàn)24小時(shí)時(shí)鐘 (110)
5.4.1 任務(wù)書 (110)
5.4.2 典型程序示例及解釋 (111)
第6章 單片機(jī)的串行通信 (117)
6.1 RS-232串行通信的基礎(chǔ)知識(shí) (117)
6.1.1 串行通信標(biāo)準(zhǔn)和串行通信接口 (117)
6.1.2 通信的幾個(gè)基本概念 (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 計(jì)算機(jī)串口通信設(shè)置 (124)
6.2.2 單片機(jī)串口通信設(shè)置 (125)
6.3 單片機(jī)串口通信的基礎(chǔ)程序范例 (126)
6.4 串口通信應(yīng)用示例(用串口校準(zhǔn)時(shí)間的數(shù)字鐘) (127)
6.5 知識(shí)鏈接 (131)
6.5.1 字符型數(shù)據(jù) (131)
6.5.2 單片機(jī)與單片機(jī)之間的通信 (132)
6.5.3 字符串?dāng)?shù)組 (132)
第7章 液晶顯示屏和OLED屏的使用 (133)
7.1 LCD1602的認(rèn)識(shí)和使用 (133)
7.1.1 LCD1602的引腳功能及其和單片機(jī)的連接 (134)
7.1.2 LCD1602模塊的內(nèi)部結(jié)構(gòu)和工作原理 (135)
7.1.3 LCD1602的工作時(shí)序 (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的讀寫時(shí)序 (144)
7.3 LCD12864的點(diǎn)陣結(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 漢字顯示坐標(biāo) (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)測(cè)儀 (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溫度傳感器的認(rèn)識(shí)和使用 (177)
8.3.1 LM35的外形及特點(diǎn) (177)
8.3.2 LM35的典型應(yīng)用電路分析 (178)
8.3.3 LM35的應(yīng)用電路連接及溫度轉(zhuǎn)換編程 (179)
8.4 電壓源 (179)
8.5 溫度及電壓監(jiān)測(cè)儀的程序代碼示例及分析 (180)
8.6 知識(shí)鏈接―D/A轉(zhuǎn)換芯片DAC0832及應(yīng)用 (183)
8.6.1 DAC0832的內(nèi)部結(jié)構(gòu)和引腳功能 (183)
8.6.2 單片機(jī)實(shí)訓(xùn)臺(tái)典型D/A模塊介紹 (184)
8.6.3 ADC0832采用I/O方式編程示例 (185)
8.6.4 ADC0832采用擴(kuò)展地址方式編程示例 (186)
第3篇 綜合應(yīng)用―實(shí)踐篇
第9章 步進(jìn)電機(jī)的控制 (190)
9.1 步進(jìn)電機(jī)的基礎(chǔ)知識(shí) (190)
9.2 步進(jìn)電機(jī)的參數(shù) (192)
9.3 步進(jìn)電機(jī)的驅(qū)動(dòng)及精確定位系統(tǒng)示例 (193)
9.3.1 步進(jìn)電機(jī)及驅(qū)動(dòng)器 (193)
9.3.2 步進(jìn)電機(jī)的位移裝置及保護(hù)裝置 (194)
9.4 單片機(jī)實(shí)訓(xùn)臺(tái)的典型步進(jìn)電機(jī)模塊 (196)
9.5 步進(jìn)電機(jī)的控制示例 (197)
9.5.1 步進(jìn)電機(jī)模塊游標(biāo)的歸零 (197)
9.5.2 步進(jìn)電機(jī)的定位 (198)
9.6 典型訓(xùn)練任務(wù)―自動(dòng)流水線系統(tǒng) (200)
第10章 DS18B20溫度傳感器及智能換氣扇 (203)
10.1 智能換氣扇任務(wù)書 (203)
10.2 智能換氣扇實(shí)現(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 電子密碼鎖的實(shí)現(xiàn) (225)
11.2.1 硬件接線及編程思路和技巧 (225)
11.2.2 程序代碼示例及講析 (226)
11.3 典型訓(xùn)練任務(wù) (240)
任務(wù)一 增設(shè)控制鍵 (240)
任務(wù)二 自動(dòng)點(diǎn)焊機(jī)控制系統(tǒng)的實(shí)現(xiàn) (240)
附錄 (242)
附錄A C51中的關(guān)鍵字 (242)
附錄B ASCII碼表 (244)
附錄C C語言知識(shí)補(bǔ)充 (247)