本書在引導(dǎo)讀者認(rèn)識(shí)C51單片機(jī)基本結(jié)構(gòu)基礎(chǔ)上,以C語(yǔ)言為設(shè)計(jì)語(yǔ)言,通過(guò)60個(gè)案例、詳細(xì)的源代碼介紹了C51單片機(jī)程序開發(fā)的各項(xiàng)細(xì)節(jié),包括單片機(jī)應(yīng)用系統(tǒng)仿真開發(fā)、接口應(yīng)用技術(shù)、中斷系統(tǒng)與定時(shí)/計(jì)數(shù)器設(shè)計(jì)、串行接口技術(shù)等。程序代碼經(jīng)典,可移植性強(qiáng):大部分代碼寫成傻瓜式,對(duì)C51單片機(jī)可直接套用,也容易移植到AVR、PIC等單片機(jī)中去,節(jié)省了開發(fā)時(shí)間。全書案例豐富,程序代碼可靠,并可以在相應(yīng)的平臺(tái)下載,幫助單片機(jī)開發(fā)人員、電子愛好者以及從事智能電子產(chǎn)品開發(fā)的人員快速入門,并迅速提高開發(fā)能力。
《51單片機(jī)C語(yǔ)言開發(fā)教程》
1.注重實(shí)用:提供源程序代碼,每個(gè)開發(fā)環(huán)節(jié)通過(guò)58個(gè)案例詳細(xì)說(shuō)明。
2.程序代碼經(jīng)典,可移植性強(qiáng):大部分代碼寫成傻瓜式,對(duì)C51單片機(jī)可直接套用,也容易移植到AVR、PIC等單片機(jī)中去,節(jié)省了開發(fā)時(shí)間。
3 在相應(yīng)課程平臺(tái)讀者可以通過(guò)視頻、電子資源學(xué)習(xí)。
對(duì)于剛接觸單片機(jī)的學(xué)習(xí)者,似乎都很迷茫,C語(yǔ)言、匯編語(yǔ)言、電路、開發(fā)板,不知道從哪兒開始學(xué)起。其實(shí)在學(xué)習(xí)單片機(jī)原理與應(yīng)用系統(tǒng)開發(fā)時(shí),只有在學(xué)習(xí)一些理論知識(shí)的基礎(chǔ)上,多閱讀單片機(jī)應(yīng)用系統(tǒng)開發(fā)案例,注重單片機(jī)應(yīng)用系統(tǒng)開發(fā)實(shí)踐訓(xùn)練,才能透徹地理解和掌握單片機(jī)結(jié)構(gòu)與原理,才能更快更好地掌握單片機(jī)應(yīng)用知識(shí)和單片機(jī)應(yīng)用系統(tǒng)開發(fā)技能。本書結(jié)合筆者多年的教學(xué)和實(shí)踐經(jīng)驗(yàn),根據(jù)案例閱讀與實(shí)踐訓(xùn)練在學(xué)習(xí)單片機(jī)應(yīng)用系統(tǒng)開發(fā)過(guò)程中的重要性,用C語(yǔ)言為編程語(yǔ)言,由易到難,循序漸進(jìn)地講述51單片機(jī)的硬件結(jié)構(gòu)和功能應(yīng)用,以及C語(yǔ)言為51單片機(jī)編程的方法。全書具有以下特點(diǎn):一、內(nèi)容全面,既有基礎(chǔ)知識(shí)介紹,又重視開發(fā)技能、技巧的說(shuō)明,初學(xué)者可以掌握全面的硬件原理和編程技巧,建立比較完善的知識(shí)體系。二、案例豐富,源代碼可靠,講解循序漸進(jìn),詳細(xì)生動(dòng),為讀者打好基礎(chǔ),增強(qiáng)學(xué)習(xí)興趣和信心。三、相應(yīng)課程平臺(tái)幫讀者答疑解惑,讀者可以少走彎路,快速入門。筆者基于世界大學(xué)城平臺(tái)創(chuàng)建了一個(gè)自助學(xué)習(xí)空間,有豐富的學(xué)習(xí)資源和教學(xué)課件等,課程空間鏈接:http://www.worlduc.com/SpaceShow/Index.aspx?uid=359771。本書由劉理云編著,祖國(guó)建審稿。在編寫本書過(guò)程中,參閱了許多文獻(xiàn)資料,在此謹(jǐn)向各位作者表示誠(chéng)摯的感謝。單片機(jī)和電子技術(shù)的知識(shí)發(fā)展迅猛,涉及的應(yīng)用面廣,知識(shí)更新快,加上筆著者水平有限,雖經(jīng)努力,但書中仍難免有不足之處,懇請(qǐng)廣大讀者指正。劉理云
第1章C51單片機(jī)基本結(jié)構(gòu)與最小應(yīng)用系統(tǒng)1
1.151單片機(jī)的基本結(jié)構(gòu)1
1.1.151單片機(jī)內(nèi)部的邏輯結(jié)構(gòu)1
1.1.2CPU2
1.1.3存儲(chǔ)器2
1.1.4可編程并行I/O端口9
1.1.5時(shí)鐘電路與復(fù)位電路10
1.251單片機(jī)引腳功能及最小應(yīng)用系統(tǒng)13
1.2.151單片機(jī)引腳功能13
1.2.251單片機(jī)最小應(yīng)用系統(tǒng)14
案例1:?jiǎn)纹瑱C(jī)最小系統(tǒng)的制作15
第2章C51程序設(shè)計(jì)16
2.1C語(yǔ)言的特點(diǎn)16
2.2C語(yǔ)言程序的格式和特點(diǎn)19
2.3數(shù)據(jù)類型與存儲(chǔ)區(qū)域的使用21
2.3.1C語(yǔ)言的數(shù)據(jù)類型21
2.3.2C51新增數(shù)據(jù)類型與存儲(chǔ)區(qū)域的使用23
2.4運(yùn)算符與表達(dá)式28
2.4.1算術(shù)運(yùn)算符與算術(shù)表達(dá)式29
2.4.2賦值運(yùn)算符和賦值表達(dá)式30
2.4.3關(guān)系運(yùn)算符和關(guān)系表達(dá)式33
2.4.4邏輯運(yùn)算符和邏輯表達(dá)式33
2.5指針與絕對(duì)地址訪問(wèn)35
2.5.1指針35
2.5.2絕對(duì)地址的訪問(wèn)38
2.6控制語(yǔ)句與程序設(shè)計(jì)39
2.6.1C語(yǔ)言語(yǔ)句概述39
2.6.2賦值語(yǔ)句40
2.6.3if語(yǔ)句40
2.6.4switch語(yǔ)句43
2.6.5goto語(yǔ)句以及用goto語(yǔ)句構(gòu)成循環(huán)45
2.6.6while語(yǔ)句與do-while語(yǔ)句46
2.6.7for語(yǔ)句48
2.6.8break語(yǔ)句和continue語(yǔ)句49
2.7位運(yùn)算49
2.8數(shù)組53
2.9函數(shù)55
2.9.1函數(shù)定義的一般形式57
2.9.2函數(shù)參數(shù)和函數(shù)的值58
2.9.3函數(shù)的調(diào)用61
2.9.4局部變量和全局變量67
2.9.5內(nèi)部函數(shù)和外部函數(shù)71
案例1:用單片機(jī)控制一個(gè)燈閃爍72
案例2:?jiǎn)纹瑱C(jī)控制發(fā)光二極管流水燈的設(shè)計(jì)73
案例3:通過(guò)對(duì)P1口地址的操作流水點(diǎn)亮8位LED73
案例4:用P0口、P1口分別顯示加法和減法運(yùn)算結(jié)果75
案例5:用P0、P1口顯示乘法運(yùn)算結(jié)果76
案例6:用P1、P0口顯示除法運(yùn)算結(jié)果76
案例7:用自增運(yùn)算控制P1口8位LED流水花樣77
案例8:用P1口顯示邏輯與運(yùn)算結(jié)果77
案例9:用P1口顯示按位異或運(yùn)算結(jié)果78
案例10:用P1顯示左移運(yùn)算結(jié)果78
案例11:用右移(或左移)運(yùn)算流水點(diǎn)亮P1口8位LED78
案例12:用if語(yǔ)句控制P1口8位LED的流水方向80
案例13:用swtich語(yǔ)句的控制P1口8位LED的點(diǎn)亮狀態(tài)81
案例14:用for語(yǔ)句控制蜂鳴器鳴笛次數(shù)83
案例15:用while語(yǔ)句控制LED84
案例16:用do-while語(yǔ)句控制P1口8位LED流水點(diǎn)亮85
案例17:用數(shù)組控制P1口8位LED流水點(diǎn)亮86
案例18:用P0、P1口顯示整型函數(shù)返回值87
案例19:用有參函數(shù)控制P1口8位LED流水速度88
案例20:基于延時(shí)程序?qū)崿F(xiàn)的音樂(lè)播放器89
第3章單片機(jī)應(yīng)用系統(tǒng)仿真開發(fā)工具的使用91
3.1KeilC51的使用方法與程序燒寫91
3.1.1Keil軟件的安裝91
3.1.2工程的創(chuàng)建92
3.1.3編寫程序95
3.1.4程序燒寫100
3.1.5工程軟件仿真102
3.1.6存儲(chǔ)空間資源的查看與修改104
3.1.7變量的查看與修改106
3.1.8外圍設(shè)備的操作106
3.2ProteusISIS的使用106
3.2.1ProteusISIS的編輯界面107
3.2.2設(shè)計(jì)電路原理圖109
3.2.3電路測(cè)試和材料清單115
3.2.4ISIS的單片機(jī)應(yīng)用系統(tǒng)仿真基本方法115
案例1:Keil軟件的使用方法及程序燒寫117
案例2:簡(jiǎn)易十字路口交通信號(hào)燈控制(用Proteus軟件仿真)118
第4章C51單片機(jī)簡(jiǎn)單接口應(yīng)用技術(shù)121
4.1開關(guān)量接口121
4.1.1開關(guān)量輸入接口122
4.1.2鍵盤接口124
4.1.3開關(guān)量輸出接口128
4.2顯示接口129
4.2.1LED顯示接口130
4.2.2LED數(shù)碼管點(diǎn)陣顯示器133
4.2.3LCD液晶顯示接口137
案例1:無(wú)軟件消抖的獨(dú)立式按鍵輸入顯示148
案例2:軟件消抖的獨(dú)立式按鍵輸入顯示149
案例3:開關(guān)控制LED149
案例4:繼電器控制照明設(shè)備150
案例5:按鍵狀態(tài)顯示151
案例6:按鍵控制彩燈的設(shè)計(jì)152
案例7:按鍵控制數(shù)碼管加1減1顯示155
案例8:?jiǎn)沃粩?shù)碼管顯示0~9157
案例9:8只數(shù)碼管動(dòng)態(tài)顯示數(shù)字158
案例10:步進(jìn)電機(jī)驅(qū)動(dòng)控制設(shè)計(jì)160
案例11:數(shù)碼管顯示44矩陣鍵盤按鍵號(hào)161
案例12:點(diǎn)陣顯示屏的應(yīng)用設(shè)計(jì)164
案例13:?jiǎn)纹瑱C(jī)控制LCD(1602)顯示電路及程序設(shè)計(jì)186
案例14:?jiǎn)纹瑱C(jī)控制LCD(12864)顯示電路及程序設(shè)計(jì)189
案例15:電子數(shù)字密碼鎖204
第5章C51單片機(jī)中斷系統(tǒng)與定時(shí)/計(jì)數(shù)器214
5.1中斷系統(tǒng)214
5.1.1中斷概述214
5.1.2中斷系統(tǒng)的結(jié)構(gòu)及其工作原理215
5.1.3中斷處理過(guò)程218
5.1.4中斷服務(wù)函數(shù)219
5.1.5中斷系統(tǒng)的應(yīng)用221
5.2定時(shí)/計(jì)數(shù)器223
5.2.1定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)及其工作原理224
5.2.2定時(shí)/計(jì)數(shù)器的控制224
5.2.3定時(shí)/計(jì)數(shù)器的工作方式及其應(yīng)用226
5.2.4借用定時(shí)器溢出中斷擴(kuò)展外部中斷源231
案例1:中斷控制LED顯示變化232
案例2:中斷次數(shù)統(tǒng)計(jì)233
案例3:簡(jiǎn)易搶答器的設(shè)計(jì)235
案例4:定時(shí)器控制單只LED閃爍240
案例5:基于定時(shí)/計(jì)數(shù)器控制的流水燈242
案例6:用定時(shí)器中斷實(shí)現(xiàn)1000000s內(nèi)計(jì)時(shí)243
案例7:倒計(jì)時(shí)秒表設(shè)計(jì)245
案例8:紅外檢測(cè)模擬啤酒生產(chǎn)計(jì)數(shù)器設(shè)計(jì)248
案例9:電烤爐智能溫度控制電路及程序設(shè)計(jì)252
案例10:按鍵控制定時(shí)器選播多段音樂(lè)253
案例11:反應(yīng)時(shí)間測(cè)試儀256
案例12:脈寬測(cè)量?jī)x的設(shè)計(jì)262
案例13:頻率計(jì)的設(shè)計(jì)266
案例14:看門狗269
第6章C51單片機(jī)應(yīng)用系統(tǒng)擴(kuò)展274
6.1C51單片機(jī)的三總線結(jié)構(gòu)274
6.2存儲(chǔ)器的擴(kuò)展275
6.2.1程序存儲(chǔ)器的擴(kuò)展275
6.2.2數(shù)據(jù)存儲(chǔ)器的擴(kuò)展275
6.2.3數(shù)據(jù)存儲(chǔ)器擴(kuò)展舉例277
6.2.4I/O接口電路280
6.3模擬量輸入輸出接口技術(shù)281
6.3.1D/A轉(zhuǎn)換器與單片機(jī)的接口設(shè)計(jì)282
6.3.2A/D轉(zhuǎn)換器與單片機(jī)的接口設(shè)計(jì)285
案例1:ADC0809數(shù)模轉(zhuǎn)換與顯示287
案例2:基于ADC0832的數(shù)字電壓表289
第7章串行接口293
7.1串行口通信概念293
7.251單片機(jī)串行接口的結(jié)構(gòu)與控制295
7.3串行接口的工作方式296
7.4串行接口的初始化298
7.5串行接口的異步通信應(yīng)用299
7.6串行口擴(kuò)展305
案例1:串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù)307
案例2:并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)309
案例3:甲機(jī)通過(guò)串口控制乙機(jī)LED310
案例4:?jiǎn)纹瑱C(jī)間雙向通信313
案例5:?jiǎn)纹瑱C(jī)向主機(jī)發(fā)送字符串317
案例6:?jiǎn)纹瑱C(jī)與PC機(jī)通信319
第8章綜合案例323
8.1單片機(jī)應(yīng)用系統(tǒng)的抗干擾設(shè)計(jì)323
8.1.1硬件抗干擾設(shè)計(jì)323
8.1.2軟件抗干擾設(shè)計(jì)325
8.2DS18B20數(shù)字溫度計(jì)的設(shè)計(jì)326
8.2.1功能要求326
8.2.2設(shè)計(jì)方案選擇326
8.2.3DS18B20的性能特點(diǎn)和內(nèi)部結(jié)構(gòu)327
8.2.4DS18B20的測(cè)溫原理329
8.2.5DS18B20的各條ROM命令和接口程序設(shè)計(jì)330
8.2.6系統(tǒng)硬件電路的設(shè)計(jì)331
8.2.7系統(tǒng)軟件的設(shè)計(jì)333
8.2.8調(diào)試及性能分析334
8.2.9源程序清單335
附錄ASCII碼表339
參考文獻(xiàn)341