51單片機(jī)c語言實(shí)例_第1頁
51單片機(jī)c語言實(shí)例_第2頁
51單片機(jī)c語言實(shí)例_第3頁
51單片機(jī)c語言實(shí)例_第4頁
51單片機(jī)c語言實(shí)例_第5頁
已閱讀5頁,還剩48頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、函數(shù)的使用和熟悉* */學(xué)習(xí)單片機(jī)100例目錄目錄錯(cuò)誤!未定義書簽*誤!未定義書簽。實(shí)例3:用單片機(jī)控制第一個(gè)燈亮錯(cuò)誤!未定義書簽。實(shí)例4:用單片機(jī)控制一個(gè)燈閃爍:認(rèn)識(shí)單片機(jī)的工作頻率錯(cuò)誤!未定義書簽。實(shí)例5:將P1口狀態(tài)分別送入P0、P2、P3口:認(rèn)識(shí)I/O口的引腳功能錯(cuò)誤!未定義書簽。實(shí)例6:使用P3口流水點(diǎn)亮8位LED錯(cuò)誤!未定義書簽。實(shí)例7:通過對P3口地址的操作流水點(diǎn)亮8位LED錯(cuò)誤!未定義書簽。實(shí)例8:用不同數(shù)據(jù)類型控制燈閃爍時(shí)間錯(cuò)誤!未定義書簽。實(shí)例9:用P0口、P1口分別顯示加法和減法運(yùn)算結(jié)果.錯(cuò)誤!未定義書簽。實(shí)例10:用PRP1口顯示乘法運(yùn)算結(jié)果錯(cuò)誤!未定義書簽。實(shí)例11:

2、用P1、P0口顯示除法運(yùn)算結(jié)果錯(cuò)誤!未定義書簽。實(shí)例12:用自增運(yùn)算控制P0口8位LED流水花樣錯(cuò)誤!未定義書簽。實(shí)例13:用P0口顯示邏輯"與"運(yùn)算結(jié)果錯(cuò)誤!未定義書簽。實(shí)例14:用P0口顯示條件運(yùn)算結(jié)果錯(cuò)誤!未定義書簽。實(shí)例15:用P0口顯示按位"異或”運(yùn)算結(jié)果錯(cuò)誤!未定義書簽。實(shí)例16:用P0顯示左移運(yùn)算結(jié)果錯(cuò)誤!未定義書簽。實(shí)例17:"萬能邏輯電路”實(shí)驗(yàn)錯(cuò)誤!未定義書簽。實(shí)例18:用右移運(yùn)算流水點(diǎn)亮P1口8位LED錯(cuò)誤!未定義書簽。實(shí)例19:用if語句控制P0口8位LED的流水方向錯(cuò)誤!未定義書簽。實(shí)例20:用swtich語句的控制P0口8位LE

3、D的點(diǎn)亮狀態(tài).錯(cuò)誤!未定義書簽。實(shí)例21:用for語句控制蜂鳴器鳴笛次數(shù)錯(cuò)誤!未定義書簽。實(shí)例22:用while語句控制LED錯(cuò)誤!未定義書簽。實(shí)例23:用do-while語句控制P0口8位LEM水點(diǎn)亮.錯(cuò)誤!未定義書簽。實(shí)例24:用字符型數(shù)組控制P0口8位LED流水點(diǎn)亮錯(cuò)誤!未定義書簽。實(shí)例25:用P0口顯示字符串常量錯(cuò)誤!未定義書簽。實(shí)例26:用P0口顯示指針運(yùn)算結(jié)果錯(cuò)誤!未定義書簽。實(shí)例27:用指針數(shù)組控制P0口8位LED流水點(diǎn)亮錯(cuò)誤!未定義書簽。實(shí)例28:用數(shù)組的指針控制P0口8位LED流水點(diǎn)亮.錯(cuò)誤!未定義書簽。實(shí)例29:用P0、P1口顯示整型函數(shù)返回值錯(cuò)誤!未定義書簽。實(shí)例30:用

4、有參函數(shù)控制P0口8位LED流水速度錯(cuò)誤!未定義書簽。實(shí)例31:用數(shù)組作函數(shù)參數(shù)控制流水花樣錯(cuò)誤!未定義書簽。實(shí)例32:用指針作函數(shù)參數(shù)控制P0口8位LED流水點(diǎn)亮.錯(cuò)誤!未定義書簽。實(shí)例33:用函數(shù)型指針控制P1口燈花樣錯(cuò)誤!未定義書簽。實(shí)例34:用指針數(shù)組作為函數(shù)的參數(shù)顯示多個(gè)字符串.錯(cuò)誤!未定義書簽。實(shí)例35:字符函數(shù)ctype.h應(yīng)用舉例錯(cuò)誤!未定義書簽。實(shí)例36:內(nèi)部函數(shù)intrins.h應(yīng)用舉例錯(cuò)誤!未定義書簽。實(shí)例37:標(biāo)準(zhǔn)函數(shù)stdlib.h應(yīng)用舉例錯(cuò)誤!未定義書簽。實(shí)例38:字符串函數(shù)string.h應(yīng)用舉例錯(cuò)誤!未定義書簽。實(shí)例39:宏定義應(yīng)用舉例2錯(cuò)誤!未定義書簽實(shí)例40

5、:宏定義應(yīng)用舉例2錯(cuò)誤!未定義書簽實(shí)例41:宏定義應(yīng)用舉例3錯(cuò)誤!未定義書簽中斷、定時(shí)器*中斷、定時(shí)器* *中斷、定時(shí)器* 中斷、定時(shí)器* */錯(cuò)誤!未定義書*數(shù)碼管顯示*數(shù)碼管顯示*數(shù)碼管顯示 *碼管顯示*/書簽。實(shí)例60:用LED數(shù)碼顯示數(shù)字5錯(cuò)誤!未定義錯(cuò)誤!未定義書簽。實(shí)例61:用LED數(shù)碼顯示器循環(huán)顯示數(shù)字09錯(cuò)誤!未定義書簽實(shí)例42:用定時(shí)器T0查詢方式P2口8位控制LED閃爍.錯(cuò)誤!未定義書簽實(shí)例43:用定時(shí)器T1查詢方式控制單片機(jī)發(fā)出1KHz音頻錯(cuò)誤!未定義書簽實(shí)例44:將計(jì)數(shù)器T0計(jì)數(shù)的結(jié)果送P1口8位LED顯示.錯(cuò)誤!未定義書簽實(shí)例45:用定時(shí)器T0的中斷控制1位LED閃爍

6、錯(cuò)誤!未定義書簽實(shí)例46:用定時(shí)器T0的中斷實(shí)現(xiàn)長時(shí)間定時(shí)錯(cuò)誤!未定義書簽實(shí)例47:用定時(shí)器T1中斷控制兩個(gè)LED以不同周期閃爍.錯(cuò)誤!未定義書簽實(shí)例48:用計(jì)數(shù)器T1的中斷控制蜂鳴器發(fā)出1KHz音頻錯(cuò)誤!未定義書簽實(shí)例49:用定時(shí)器T0的中斷實(shí)現(xiàn)“渴望”主題曲的播放錯(cuò)誤!未定義書簽實(shí)例50-1:輸出50個(gè)矩形脈沖錯(cuò)誤!未定義書簽實(shí)例50-2:計(jì)數(shù)器T0統(tǒng)計(jì)外部脈沖數(shù)錯(cuò)誤!未定義書簽實(shí)例51-2:定時(shí)器T0的模式2測量正脈沖寬度錯(cuò)誤!未定義書簽實(shí)例52:用定時(shí)器T0控制輸出高低寬度不同的矩形波錯(cuò)誤!未定義書簽實(shí)例53:用外中斷0的中斷方式進(jìn)行數(shù)據(jù)采集錯(cuò)誤!未定義書簽實(shí)例54-1:輸出負(fù)脈寬為2

7、00微秒的方波錯(cuò)誤!未定義書簽實(shí)例54-2:測量負(fù)脈沖寬度錯(cuò)誤!未定義書簽實(shí)例55:方式0控制流水燈循環(huán)點(diǎn)亮錯(cuò)誤!未定義書簽實(shí)例56-1:數(shù)據(jù)發(fā)送程序錯(cuò)誤!未定義書簽實(shí)例56-2:數(shù)據(jù)接收程序錯(cuò)誤!未定義書簽實(shí)例57-1:數(shù)據(jù)發(fā)送程序錯(cuò)誤!未定義書簽實(shí)例57-2:數(shù)據(jù)接收程序錯(cuò)誤!未定義書簽實(shí)例58:單片機(jī)向PC發(fā)送數(shù)據(jù)錯(cuò)誤!未定義書簽實(shí)例59:單片機(jī)接收PC發(fā)出的數(shù)據(jù)錯(cuò)誤!未定義書簽*實(shí)例62:用數(shù)碼管慢速動(dòng)態(tài)掃描顯示數(shù)字"1234"錯(cuò)誤!未定義書簽實(shí)例63:用LED數(shù)碼顯示器偽靜態(tài)顯示數(shù)字1234錯(cuò)誤!未定義書簽實(shí)例64:用數(shù)碼管顯示動(dòng)態(tài)檢測結(jié)果錯(cuò)誤!未定義書簽實(shí)例65

8、:數(shù)碼秒表設(shè)計(jì)錯(cuò)誤!未定義書簽實(shí)例66:數(shù)碼時(shí)鐘設(shè)計(jì)錯(cuò)誤!未定義書簽實(shí)例67:用LED數(shù)碼管顯示計(jì)數(shù)器T0的計(jì)數(shù)值錯(cuò)誤!未定義書簽實(shí)例68:靜態(tài)顯示數(shù)字“59”錯(cuò)誤!未定義書簽*鍵盤控制*鍵盤控制* *鍵盤控制*/實(shí)例69:無軟件消抖的獨(dú)立式鍵盤輸入實(shí)驗(yàn).實(shí)例70:軟件消抖的獨(dú)立式鍵盤輸入實(shí)驗(yàn)實(shí)例71:CPU控制的獨(dú)立式鍵盤掃描實(shí)驗(yàn)實(shí)例72:定時(shí)器中斷控制的獨(dú)立式鍵盤掃描實(shí)驗(yàn)實(shí)例73:獨(dú)立式鍵盤控制的4級(jí)變速流水燈.實(shí)例74:獨(dú)立式鍵盤的按鍵功能擴(kuò)展:”以一當(dāng)四實(shí)例75:獨(dú)立式鍵盤調(diào)時(shí)的數(shù)碼時(shí)鐘實(shí)驗(yàn)實(shí)例76:獨(dú)立式鍵盤控制步進(jìn)電機(jī)實(shí)驗(yàn)實(shí)例77:矩陣式鍵盤按鍵值的數(shù)碼管顯示實(shí)驗(yàn)實(shí)例78:矩陣式鍵

9、盤按鍵音實(shí)例79:簡易電子琴錯(cuò)誤!未定義書簽錯(cuò)誤!未定義書簽。錯(cuò)誤!未定義書簽。錯(cuò)誤!未定義書簽。錯(cuò)誤!未定義書簽。錯(cuò)誤!未定義書簽。錯(cuò)誤!未定義書簽。錯(cuò)誤!未定義書簽。錯(cuò)誤!未定義書簽。錯(cuò)誤!未定義書簽。錯(cuò)誤!未定義書簽。錯(cuò)誤!未定義書簽。錯(cuò)誤!未定義書簽。鍵盤控制*實(shí)例80:矩陣式鍵盤實(shí)現(xiàn)的電子密碼鎖*/錯(cuò)誤!未定義*液晶顯示lcd*液晶顯示LCD*液晶顯示LCD*液晶顯示LCD*液晶顯示LCD*液晶顯示LCD*書簽。實(shí)例81:用LCD顯示字符'A'錯(cuò)誤!未定義書簽實(shí)例82:用LCD循環(huán)右移顯示"WelcometoChina"錯(cuò)誤!未定義書簽實(shí)例83:用

10、LCD顯示適時(shí)檢測結(jié)果錯(cuò)誤!未定義書簽實(shí)例84:液晶時(shí)鐘設(shè)計(jì)錯(cuò)誤!未定義書簽*芯片的使用*24c02DS18B20X5045ADC0832DAC0832DS1302紅外遙*/ .錯(cuò)誤!未定義書簽實(shí)例85:將數(shù)據(jù)"0x0f"寫入AT24C02再讀出送P1口顯示.錯(cuò)誤!未定義書簽。實(shí)例86:將按鍵次數(shù)寫入AT24C0Z再讀出并用1602LCD顯示錯(cuò)誤!未定義書簽實(shí)例87:對I2C總線上掛接多個(gè)AT24C02的讀寫操作錯(cuò)誤!未定義書簽實(shí)例88:基于AT24C02的多機(jī)通信讀取程序錯(cuò)誤!未定義書簽實(shí)例88:基于AT24C02的多機(jī)通信寫入程序錯(cuò)誤!未定義書簽實(shí)例90:DS18B20

11、溫度檢測及其液晶顯示錯(cuò)誤!未定義書簽實(shí)例91:將數(shù)據(jù)"0xaa”寫入X5045再讀出送P1口顯示.錯(cuò)誤!未定義書簽實(shí)例92:將流水燈控制碼寫入X5045并讀出送P1口顯示.錯(cuò)誤!未定義書簽實(shí)例93:對SPI總線上掛接多個(gè)X5045的讀寫操作錯(cuò)誤!未定義書簽實(shí)例94:基于ADC0832的數(shù)字電壓表錯(cuò)誤!未定義書簽實(shí)例95:用DAC0832產(chǎn)生鋸齒波電壓錯(cuò)誤!未定義書簽實(shí)例96:用P1口顯示紅外遙控器的按鍵值錯(cuò)誤!未定義書簽實(shí)例97:用紅外遙控器控制繼電器錯(cuò)誤!未定義書簽實(shí)例98:基于DS1302的日歷時(shí)鐘錯(cuò)誤!未定義書簽實(shí)例99:單片機(jī)數(shù)據(jù)發(fā)送程序錯(cuò)誤!未定義書簽實(shí)例100:電機(jī)轉(zhuǎn)速表

12、設(shè)計(jì)錯(cuò)誤!未定義書簽?zāi)M霍爾脈沖錯(cuò)誤!未定義書簽。1mmmm*數(shù)的使用和熟悉*/實(shí)例3:用單片機(jī)控制第一個(gè)燈亮#include<reg51.h>包含51單片機(jī)寄存器定義的頭文件voidmain(void)P1=0xfe;/P1=11111110B即P1.0輸出低電平/實(shí)例4:用單片機(jī)控制一個(gè)燈閃爍:認(rèn)識(shí)單片機(jī)的工作頻率#include<reg51.h>/包含單片機(jī)寄存器的頭文件/*函數(shù)功能:延時(shí)一段時(shí)間*/voiddelay(void)兩個(gè)void意思分別為無需返回值,沒有參數(shù)傳遞unsignedinti;/定義無符號(hào)整數(shù),最大取值范圍65535for(i=0;i<

13、;20000;i+)/做20000次空循環(huán);/什么也不做,等待一個(gè)機(jī)器周期/*函數(shù)功能:主函數(shù)(C語言規(guī)定必須有也只能有1個(gè)主函數(shù))*/voidmain(void)while(1)無限循環(huán)P1=0xfe;/P1=11111110B,P1.0輸出低電平delay();延時(shí)一段時(shí)間P1=0xff;/P1=11111111B,P1.0輸出高電平delay();/延時(shí)一段時(shí)間/實(shí)例5:將P1口狀態(tài)分別送入P0、P2、P3口:認(rèn)識(shí)I/O口的引腳功能#include<reg51.h>/包含單片機(jī)寄存器的頭文件I*函數(shù)功能:主函數(shù)(C語言規(guī)定必須有也只能有1個(gè)主函數(shù))*/voidmain(voi

14、d)while(1)無限循環(huán)P1=0xff;/P1=11111111B熄滅LEDpo=pi;/將P1口狀態(tài)送入ponP2=P1;/將P1P2nP3=P1;/將P1口狀態(tài)送入P3n/實(shí)例6:使用P3口流水點(diǎn)亮8位LED#include<reg51.h>/包含單片機(jī)寄存器的頭文件/*函數(shù)功能:延時(shí)一段時(shí)間*/voiddelay(void)unsignedchari,j;for(i=0;i<250;i+)for(j=0;j<250;j+);/*函數(shù)功能:主函數(shù)*voidmain(void)while(1)P3=0xfe;/第一個(gè)燈亮delay();調(diào)用延時(shí)函數(shù)P3=0xfd;

15、第二個(gè)燈亮delay();調(diào)用延時(shí)函數(shù)P3=0xfb;/第三個(gè)燈亮delay();調(diào)用延時(shí)函數(shù)P3=0xf7;第四個(gè)燈亮delay();調(diào)用延時(shí)函數(shù)P3=0xef;/第五個(gè)燈亮delay();調(diào)用延時(shí)函數(shù)P3=0xdf;/第六個(gè)燈亮delay();調(diào)用延時(shí)函數(shù)P3=0xbf;/第七個(gè)燈亮delay();調(diào)用延時(shí)函數(shù)P3=0x7f;/第八個(gè)燈亮delay();調(diào)用延時(shí)函數(shù)/實(shí)例7:通過對P3口地址的操作流水點(diǎn)亮8位LED#include<reg51.h>/包含單片機(jī)寄存器的頭文件sfrx=0xb0;/P3口在存儲(chǔ)器中的地址是b0H,通過sfr可定義8051內(nèi)核單片機(jī)的所有內(nèi)部8位特殊

16、功能寄存器,對地址x的操作也就是對P1口的操作I*函數(shù)功能:延時(shí)一段時(shí)間*/voiddelay(void)unsignedchari,j;for(i=0;i<250;i+)for(j=0;j<250;j+);/利用循環(huán)等待若干機(jī)器周期,從而延時(shí)一段時(shí)間/*函數(shù)功能:主函數(shù)*/voidmain(void)while(1)x=0xfe;/第一個(gè)燈亮delay();調(diào)用延時(shí)函數(shù)x=0xfd;第二個(gè)燈亮delay();調(diào)用延時(shí)函數(shù)x=0xfb;/第三個(gè)燈亮delay();調(diào)用延時(shí)函數(shù)x=0x億第四個(gè)燈亮delay();調(diào)用延時(shí)函數(shù)x=0xef;/第五個(gè)燈亮delay();調(diào)用延時(shí)函數(shù)x=0

17、xdf;/第六個(gè)燈亮delay();調(diào)用延時(shí)函數(shù)x=0xbf;/第七個(gè)燈亮delay();調(diào)用延時(shí)函數(shù)x=0x7f;/第八個(gè)燈亮delay();調(diào)用延時(shí)函數(shù)/實(shí)例8:用不同數(shù)據(jù)類型控制燈閃爍時(shí)間#include<reg51.h>/包含單片機(jī)寄存器的頭文件/*函數(shù)功能:用整形數(shù)據(jù)延時(shí)一段時(shí)間*/voidint_delay(void)/延時(shí)一段較長的時(shí)間065535.unsignedintm;/定義無符號(hào)整形變量,雙字節(jié)數(shù)據(jù),值域?yàn)閒or(m=0;m<36000;m+);/空操作/*函數(shù)功能:用字符型數(shù)據(jù)延時(shí)一段時(shí)間*/voidchar_delay(void)/延時(shí)一段較短的時(shí)間

18、unsignedchari,j;定義無符號(hào)字符型變量,單字節(jié)數(shù)據(jù),值域0255for(i=0;i<200;i+)for(j=0;j<180;j+)/空操作/*函數(shù)功能:主函數(shù)*/voidmain(void)unsignedchari;while(1)for(i=0;i<3;i+)P1=0xfe;/P1.0口的燈點(diǎn)亮int_delay();/延時(shí)一段較長的時(shí)間P1=0xff;/熄滅int_delay();/延時(shí)一段較長的時(shí)間一for(i=0;i<3;i+)P1=0xef;/P1.4口的燈點(diǎn)亮char_delay();/延時(shí)段較長的時(shí)間P1=0xff;/熄滅char_del

19、ay();/延時(shí)段較長的時(shí)間/實(shí)例9:用P0口、P1口分別顯示加法和減法運(yùn)算結(jié)果#include<reg51.h>voidmain(void)unsignedcharm,n;m=43;即十進(jìn)制數(shù)2x16+11=43n=60;即十進(jìn)制數(shù)3x16+12=60P1=m+n;/P1=103=01100111B結(jié)果P13P14P1.7口的燈被點(diǎn)亮P0=n-m;/P0=17=00010001B結(jié)果P0.0、P0.4的燈被熄滅/實(shí)例10:用P0、P1口顯示乘法運(yùn)算結(jié)果#include<reg51.h>/包含單片機(jī)寄存器的頭文件voidmain(void)unsignedcharm,n

20、;unsignedints;m=64;n=71;s=m*n;/s=64*71=4544,需要16位二進(jìn)制數(shù)表示,高8位送P1口,低8位送P0口/由于4544=17*256+192=H3*16*16*16+H2*16*16+H1*16+H0兩邊同除以256,可得17+192/256=H3*16+H2+(H1*16+H0)/256因此,高8位16進(jìn)制數(shù)H3*16+H2必然等于17,即4544除以256的商/低8位16進(jìn)制數(shù)H1*16+H0必然等于192,即4544除以256的余數(shù)P1=s/256;/高8位送P1口,P1=17=11H=00010001B,P1.和P1.4口滅,其余亮P0=s%256

21、;低8位送P0口,P3=192=c0H=11000000B,P3.1,P3.6,P317滅,其余亮實(shí)例11:用P1、P0口顯示除法運(yùn)算結(jié)果#include<reg51.h>/包含單片機(jī)寄存器的頭文件voidmain(void)P1=36/5;求整數(shù)P0=(36%5)*10)/5;求小數(shù)while(1);無限循環(huán)防止程序“跑飛”實(shí)例12:用自增運(yùn)算控制P0口8位LED流水花樣#include<reg51.h>/包含單片機(jī)寄存器的頭文件/*函數(shù)功能:延時(shí)一段時(shí)間*/voiddelay(void)unsignedinti;for(i=0;i<20000;i+);/*函數(shù)

22、功能:kKi數(shù)*/voidmain(void)unsignedchari;for(i=0;i<255;i+)/注意i的值不能超過255P0=i;將i的值送P0口delay();調(diào)用延時(shí)函數(shù)實(shí)例13:用P0口顯示邏輯"與"運(yùn)算結(jié)果#include<reg51.h>/包含單片機(jī)寄存器的頭文件voidmain(void)P0=(4>0)&&(9>0xab);/W邏輯運(yùn)算結(jié)果送P0口while(1);設(shè)置無限循環(huán),防止程序“跑飛”實(shí)例14:用P0口顯示條件運(yùn)算結(jié)果#include<reg51.h>/包含單片機(jī)寄存器的頭文件v

23、oidmain(void)P0=(8>4)?8:4;/t件運(yùn)算結(jié)果送P0口,P0=8=00001000Bwhile(1);設(shè)置無限循環(huán),防止程序“跑飛”實(shí)例15:用P0口顯示按位"異或"運(yùn)算結(jié)果#include<reg51.h>/包含單片機(jī)寄存器的頭文件voidmain(void)P0=0xa2A0x3c;/4等條件運(yùn)算結(jié)果送P0口,P0=8=00001000Bwhile(1);設(shè)置無限循環(huán),防止程序“跑飛”實(shí)例16:用P0顯示左移運(yùn)算結(jié)果#include<reg51.h>/包含單片機(jī)寄存器的頭文件voidmain(void)P0=0x3b&l

24、t;<2;/W左移運(yùn)算結(jié)果送P0口,P0=11101100B=0xecwhile(1);無限循環(huán),防止程序“跑飛”/實(shí)例17:"萬能邏輯電路”實(shí)驗(yàn)#include<reg51.h>/包含單片機(jī)寄存器的頭文件sbit F=P1A4 sbit X=PW5 sbit Y=PW6 sbit Z=PW7/實(shí)例18:用右移運(yùn)算流水點(diǎn)亮P18 位 LED將F位定義為P1.4將X位定義為P1.5將Y位定義為P1.6將Z位定義為P1.7voidmain(void)while(1)F=(X)&Y)|Z;/陷邏輯運(yùn)算結(jié)果賦給F#include<reg51.h>/包含單

25、片機(jī)寄存器的頭文件I*函數(shù)功能:延時(shí)一段時(shí)間*/voiddelay(void)unsignedintn;for(n=0;n<30000;n+)/*函數(shù)功能:主函數(shù)*/voidmain(void)unsignedchari;while(1)P1=0xff;delay();for(i=0;i<8;i+)/設(shè)置循環(huán)次數(shù)為8P1=P1>>1;每次循環(huán)P1的各二進(jìn)位右移1delay();調(diào)用延時(shí)函數(shù)/實(shí)例19:用if語句控制P0口8位LED的流水方向#include<reg51.h>/包含單片機(jī)寄存器的頭文件sbitS1=P1A4;將S1位定義為P1.4sbitS2=

26、PW5;將S2位定義為P1.5/*函數(shù)功能:主函數(shù)*/voidmain(void)while(1)if(S1=0)如果按鍵S1按下P0=0x0f;/P0口高四位LED點(diǎn)亮if(S2=0)如果按鍵S2按下P0=0xf0;/P0口低四位LED點(diǎn)亮/實(shí)例20:用swtich語句的控制P0口8位LED的點(diǎn)亮狀態(tài)#include<reg51.h>/包含單片機(jī)寄存器的頭文件sbitS1=P1A4;將S1位定義為P1.4I*函數(shù)功能:延時(shí)一段時(shí)間*/voiddelay(void)unsignedintn;for(n=0;n<10000;n+)/*函數(shù)功能:主函數(shù)*/voidmain(voi

27、d)unsignedchari;i=0;將i初始化為0while(1)if(S1=0)如果S1鍵按下delay();/延時(shí)一段時(shí)間if(S1=0)/如果再次檢測到S1鍵按下i+;/i自增1if(i=9)如果i=9,重新將其置為1i=1;switch(i)/使用多分支選擇語句case 1: P0=0xfe;第一個(gè)LED亮break;case 2: P0=0xfd;/第二個(gè)LED亮break;case3:P0=0xfb;第三個(gè)LED亮break;case4:P0=0xf7;第四個(gè)LED亮break;case5:P0=0xef;第五個(gè)LED亮break;case6:P0=0xdf;第六個(gè)LED亮br

28、eak;case7:P0=0xbf;/第七個(gè)LED亮break;case8:P0=0x7f;第八個(gè)LED亮break;default:缺省佰,關(guān)閉所有LEDP0=0xff;/實(shí)例21:用for語句控制蜂鳴器鳴笛次數(shù)#include<reg51.h>/包含單片機(jī)寄存器的頭文件sbitsound=P3A7;將sound位定義為P3.7I*函數(shù)功能:延時(shí)形成1600Hz音頻*/voiddelay1600(void)unsignedcharn;for(n=0;n<100;n+)I*函數(shù)功能:延時(shí)形成800Hz音頻*/voiddelay800(void)unsignedcharn;fo

29、r(n=0;n<200;n+)/*函數(shù)功能:主函數(shù)*/voidmain(void)unsignedinti;while(1)for(i=0;i<830;i+)sound=0;/P3.7輸出低電平delay1600();sound=1;/P3.7輸出高電平delay1600();for(i=0;i<200;i+)sound=0;/P3.7輸出低電平delay800();sound=1;/P3.7輸出高電平delay800();/實(shí)例22:用while語句才制LED#include<reg51.h>/包含單片機(jī)寄存器的頭文件I*函數(shù)功能:延時(shí)約60ms(310200=

30、60000s)*/voiddelay60ms(void)unsignedcharm,n;for(m=0;m<100;m+)for(n=0;n<200;n+)J/*函數(shù)功能:主函數(shù)*/voidmain(void)unsignedchari;while(1)無限循環(huán)i=0;將i初始化為0while(i<0xff)/當(dāng)i小于0xff(255)時(shí)執(zhí)行循環(huán)體P0=i;將i送P0口顯示delay60ms();延時(shí)i+;/i自增1/實(shí)例23:用do-while語句控制P0口8位LED流水點(diǎn)亮#include<reg51.h>/包含單片機(jī)寄存器的頭文件/*函數(shù)功能:延時(shí)約60ms

31、(3*100*200=60000s)*/voiddelay60ms(void)unsignedcharm,n;for(m=0;m<100;m+)for(n=0;n<200;n+)JI*函數(shù)功能:主函數(shù)*/voidmain(void)doP0=0xfe;/第一個(gè)LEDdelay60ms();P0=0xfd;第二個(gè)LED亮delay60ms();P0=0xfb;第三個(gè)LED亮delay60ms();P0=0x億第四個(gè)LED亮delay60ms();P0=0xef;/第五個(gè)LED亮delay60ms();P0=0xdf;第六個(gè)LED亮delay60ms();delay60ms();P0=

32、0xbf;第七個(gè)LED亮delay60ms();P0=0x7f;第八個(gè)LED亮delay60ms();while(1);無限循環(huán),使8位LED循環(huán)流水點(diǎn)亮/實(shí)例24:用字符型數(shù)組控制P0口8位LED流水點(diǎn)亮#include<reg51.h>/包含單片機(jī)寄存器的頭文件/*函數(shù)功能:延時(shí)約60ms(3*100*200=60000s)*/voiddelay60ms(void)unsignedcharm,n;for(m=0;m<100;m+)for(n=0;n<200;n+)/*函數(shù)功能:主函數(shù)*/voidmain(void)unsignedchari;unsignedchar

33、codeTab=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/定義無符號(hào)字符型數(shù)組while(1)for(i=0;i<8;i+)P0=Tabi;/依次引用數(shù)組元素,并將其送P0口顯示delay60ms();/調(diào)用延時(shí)函數(shù)/實(shí)例25:用P0口顯示字符串常量#include<reg51.h>/包含單片機(jī)寄存器的頭文件I*函數(shù)功能:延時(shí)約150ms(3*200*250=150000仙s=150ms*/voiddelay150ms(void)unsignedcharm,n;for(m=0;m<200;m+)for(n=0;n<250;n

34、+)/*函數(shù)功能:主函數(shù)*/voidmain(void)unsignedcharstr="Now,Temperatureis:"/將字符串賦給字符型全部元素賦值unsignedchari;while(1)i=0;將i初始化為0,從第一個(gè)元素開始顯示while(stri!='0')/只要沒有顯示到結(jié)束標(biāo)志'0'P0=stri;將第i個(gè)字符送到P0口顯示delay150ms();/調(diào)用150ms延時(shí)函數(shù)i+;指向下一個(gè)待顯字符/實(shí)例26:用P0口顯示指針運(yùn)算結(jié)果#include<reg51.h>voidmain(void)unsign

35、edchar*p1,*p2;/定義無符號(hào)字符型指針變量p1,p2unsignedchari,j;/定義無符號(hào)字符型數(shù)據(jù)i=25;/給i賦初值25j=15;p1=&i;使指針變量指向i,對指針初始化p2=&j;使指針變量指向j,對指針初始化P0=*p1+*p2;/*p1+*p2相當(dāng)于i+j,所以P0=25+15=40=0x28/則P0=00101000B結(jié)果P03P0.5引腳LED熄滅,其余點(diǎn)亮while(1);無限循環(huán),防止程序“跑飛”/實(shí)例27:用指針數(shù)組控制P0口8位LED流水點(diǎn)亮#include<reg51.h>/*函數(shù)功能:延時(shí)約150ms(3*200*25

36、0=150000仙s=150ms*/voiddelay150ms(void)unsignedcharm,n;for(m=0;m<200;m+)for(n=0;n<250;n+)/*函數(shù)功能:主函數(shù)*/voidmain(void)unsignedcharcodeTab=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;unsignedchar*p=&Tab0,&Tab1,&Tab2,&Tab3,&Tab4,&Tab5,&Tab6,&Tab7;unsignedchari;/定義無符號(hào)字符型數(shù)據(jù)

37、while(1)for(i=0;i<8;i+)P0=*pi;delay150ms();/實(shí)例28:用數(shù)組的指針控制P0口8位LED流水點(diǎn)亮#include<reg51.h>I*函數(shù)功能:延時(shí)約150ms(3*200*250=150000仙s=150ms*/voiddelay150ms(void)unsignedcharm,n;for(m=0;m<200;m+)for(n=0;n<250;n+)/*函數(shù)功能:主函數(shù)*/voidmain(void)unsignedchari;unsignedcharTab=0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0

38、xDF,0xBF,0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFE,0xFC,0xFB,0xF0,0xE0,0xC0,0x80,0x00,0xE7,0xDB,0xBD,0x7E,0x3C,0x18,0x00,0x81,0xC3,0xE7,0x7E,0xBD,0xDB,0xE7,0xBD,0xDB;流水燈控制碼unsignedchar*p;/定義無符號(hào)字符型指針p=Tab;將數(shù)組首地址存入指針pwhile(1)for(i=0;i<32;i+)/共32個(gè)流水燈控制碼P0=*(p+i);/*(p+i)的值等于aidelay150ms();/調(diào)用150ms

39、延時(shí)函數(shù)/實(shí)例29:用P0、P1口顯示整型函數(shù)返回值#include<reg51.h>/*函數(shù)功能:計(jì)算兩個(gè)無符號(hào)整數(shù)的和*/unsignedintsum(inta,intb)unsignedints;s=a+b;return(s);I*函數(shù)功能:主函數(shù)*/*voidmain(void)unsignedz;z=sum(2008,2009);P1=z/256;取得z的高8位P0=z%256;/取得z的低8位while(1)/實(shí)例30:用有參函數(shù)控制P0口8位LED流水速度#include<reg51.h>/*函數(shù)功能:延時(shí)一段時(shí)間*/voiddelay(unsignedcharx)unsignedcharm,n;for(m=0;m<x;m+)for(n=0;n<200;n+)I*函數(shù)功能:主函數(shù)*/voidmain(void)unsignedchari;unsignedcharcodeTab=0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F;流水燈控制碼while(1)快速流水點(diǎn)亮LEDfor(i=0;i<8;i+)共8個(gè)流水燈控制碼P0=Tabi;delay(100);/延時(shí)約60ms,(3*100*200=60

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論