十天學(xué)會(huì)單片機(jī)實(shí)例100_第1頁
十天學(xué)會(huì)單片機(jī)實(shí)例100_第2頁
十天學(xué)會(huì)單片機(jī)實(shí)例100_第3頁
十天學(xué)會(huì)單片機(jī)實(shí)例100_第4頁
十天學(xué)會(huì)單片機(jī)實(shí)例100_第5頁
已閱讀5頁,還剩395頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 目錄目錄1函數(shù)的使用和熟悉3實(shí)例3:用單片機(jī)控制第一個(gè)燈亮3實(shí)例4:用單片機(jī)控制一個(gè)燈閃爍:認(rèn)識(shí)單片機(jī)的工作頻率4實(shí)例5:將 P1口狀態(tài)分別送入P0、P2、P3口:認(rèn)識(shí)I/O口的引腳功能4實(shí)例6:使用P3口流水點(diǎn)亮8位LED5實(shí)例7:通過對(duì)P3口地址的操作流水點(diǎn)亮8位LED6實(shí)例8:用不同數(shù)據(jù)類型控制燈閃爍時(shí)間7實(shí)例9:用P0口、P1 口分別顯示加法和減法運(yùn)算結(jié)果8實(shí)例10:用P0、P1口顯示乘法運(yùn)算結(jié)果8實(shí)例11:用P1、P0口顯示除法運(yùn)算結(jié)果9實(shí)例12:用自增運(yùn)算控制P0口8位LED流水花樣9實(shí)例13:用P0口顯示邏輯"與"運(yùn)算結(jié)果10實(shí)例14:用P0口顯示條件運(yùn)算結(jié)

2、果10實(shí)例15:用P0口顯示按位"異或"運(yùn)算結(jié)果10實(shí)例16:用P0顯示左移運(yùn)算結(jié)果10實(shí)例17:"萬能邏輯電路"實(shí)驗(yàn)11實(shí)例18:用右移運(yùn)算流水點(diǎn)亮P1口8位LED11實(shí)例19:用if語句控制P0口8位LED的流水方向12實(shí)例20:用swtich語句的控制P0口8位LED的點(diǎn)亮狀態(tài)12實(shí)例21:用for語句控制蜂鳴器鳴笛次數(shù)13實(shí)例22:用while語句控制LED14實(shí)例23:用do-while語句控制P0口8位LED流水點(diǎn)亮15實(shí)例24:用字符型數(shù)組控制P0口8位LED流水點(diǎn)亮16實(shí)例25:用P0口顯示字符串常量17實(shí)例26:用P0 口顯示指針運(yùn)算結(jié)

3、果18實(shí)例27:用指針數(shù)組控制P0口8位LED流水點(diǎn)亮18實(shí)例28:用數(shù)組的指針控制P0 口8 位LED流水點(diǎn)亮19實(shí)例29:用P0 、P1口顯示整型函數(shù)返回值20實(shí)例30:用有參函數(shù)控制P0口8位LED流水速度20實(shí)例31:用數(shù)組作函數(shù)參數(shù)控制流水花樣21實(shí)例32:用指針作函數(shù)參數(shù)控制P0口8位LED流水點(diǎn)亮22實(shí)例33:用函數(shù)型指針控制P1口燈花樣23實(shí)例34:用指針數(shù)組作為函數(shù)的參數(shù)顯示多個(gè)字符串24實(shí)例35:字符函數(shù)ctype.h應(yīng)用舉例25實(shí)例36:部函數(shù)intrins.h應(yīng)用舉例26實(shí)例37:標(biāo)準(zhǔn)函數(shù)stdlib.h應(yīng)用舉例26實(shí)例38:字符串函數(shù)string.h應(yīng)用舉例27實(shí)例3

4、9:宏定義應(yīng)用舉例227實(shí)例40:宏定義應(yīng)用舉例228實(shí)例41:宏定義應(yīng)用舉例328中斷、定時(shí)器29實(shí)例42:用定時(shí)器T0查詢方式P2口8位控制LED閃爍29實(shí)例43:用定時(shí)器T1查詢方式控制單片機(jī)發(fā)出1KHz音頻29實(shí)例44:將計(jì)數(shù)器T0計(jì)數(shù)的結(jié)果送P1口8位LED顯示30實(shí)例45:用定時(shí)器T0的中斷控制1位LED閃爍31實(shí)例46:用定時(shí)器T0的中斷實(shí)現(xiàn)長(zhǎng)時(shí)間定時(shí)31實(shí)例47:用定時(shí)器T1中斷控制兩個(gè)LED以不同周期閃爍32實(shí)例48:用計(jì)數(shù)器T1的中斷控制蜂鳴器發(fā)出1KHz音頻33實(shí)例49:用定時(shí)器T0的中斷實(shí)現(xiàn)"渴望"主題曲的播放34實(shí)例50-1:輸出50個(gè)矩形脈沖37

5、實(shí)例50-2:計(jì)數(shù)器T0統(tǒng)計(jì)外部脈沖數(shù)37實(shí)例51-2:定時(shí)器T0的模式2測(cè)量正脈沖寬度38實(shí)例52:用定時(shí)器T0控制輸出高低寬度不同的矩形波39實(shí)例53:用外中斷0的中斷方式進(jìn)行數(shù)據(jù)采集40實(shí)例54-1:輸出負(fù)脈寬為200微秒的方波40實(shí)例54-2:測(cè)量負(fù)脈沖寬度41實(shí)例55:方式0控制流水燈循環(huán)點(diǎn)亮42實(shí)例56-1:數(shù)據(jù)發(fā)送程序43實(shí)例56-2:數(shù)據(jù)接收程序44實(shí)例57-1:數(shù)據(jù)發(fā)送程序45實(shí)例57-2:數(shù)據(jù)接收程序46實(shí)例58:?jiǎn)纹瑱C(jī)向PC發(fā)送數(shù)據(jù)47實(shí)例59:?jiǎn)纹瑱C(jī)接收PC發(fā)出的數(shù)據(jù)48數(shù)碼管顯示49實(shí)例60:用LED數(shù)碼顯示數(shù)字549實(shí)例61:用LED數(shù)碼顯示器循環(huán)顯示數(shù)字0949實(shí)

6、例62:用數(shù)碼管慢速動(dòng)態(tài)掃描顯示數(shù)字"1234"50實(shí)例63:用LED數(shù)碼顯示器偽靜態(tài)顯示數(shù)字123450實(shí)例64:用數(shù)碼管顯示動(dòng)態(tài)檢測(cè)結(jié)果51實(shí)例65:數(shù)碼秒表設(shè)計(jì)53實(shí)例66:數(shù)碼時(shí)鐘設(shè)計(jì)55實(shí)例67:用LED數(shù)碼管顯示計(jì)數(shù)器T0的計(jì)數(shù)值58實(shí)例68:靜態(tài)顯示數(shù)字“59”59鍵盤控制60實(shí)例69:無軟件消抖的獨(dú)立式鍵盤輸入實(shí)驗(yàn)60實(shí)例70:軟件消抖的獨(dú)立式鍵盤輸入實(shí)驗(yàn)60實(shí)例71:CPU控制的獨(dú)立式鍵盤掃描實(shí)驗(yàn)61實(shí)例72:定時(shí)器中斷控制的獨(dú)立式鍵盤掃描實(shí)驗(yàn)64實(shí)例73:獨(dú)立式鍵盤控制的4級(jí)變速流水燈67實(shí)例74:獨(dú)立式鍵盤的按鍵功能擴(kuò)展:"以一當(dāng)四"

7、;69實(shí)例75:獨(dú)立式鍵盤調(diào)時(shí)的數(shù)碼時(shí)鐘實(shí)驗(yàn)71實(shí)例76:獨(dú)立式鍵盤控制步進(jìn)電機(jī)實(shí)驗(yàn)75實(shí)例77:矩陣式鍵盤按鍵值的數(shù)碼管顯示實(shí)驗(yàn)78實(shí)例78:矩陣式鍵盤按鍵音80實(shí)例79:簡(jiǎn)易電子琴82實(shí)例80:矩陣式鍵盤實(shí)現(xiàn)的電子密碼鎖88液晶顯示LCD91實(shí)例81:用LCD顯示字符'A'91實(shí)例82:用LCD循環(huán)右移顯示"Welcome to China"94實(shí)例83:用LCD顯示適時(shí)檢測(cè)結(jié)果98實(shí)例84:液晶時(shí)鐘設(shè)計(jì)102一些芯片的使用*24c02 DS18B20 X5045 ADC0832 DAC0832 DS1302 紅外遙控108實(shí)例85:將數(shù)據(jù)"0

8、x0f"寫入AT24C02再讀出送P1口顯示108實(shí)例86:將按鍵次數(shù)寫入AT24C02,再讀出并用1602LCD顯示112實(shí)例87:對(duì)I2C總線上掛接多個(gè)AT24C02的讀寫操作119實(shí)例88:基于AT24C02的多機(jī)通信讀取程序125實(shí)例88:基于AT24C02的多機(jī)通信寫入程序129實(shí)例90:DS18B20溫度檢測(cè)與其液晶顯示140實(shí)例91:將數(shù)據(jù)"0xaa"寫入X5045再讀出送P1口顯示148實(shí)例92:將流水燈控制碼寫入X5045并讀出送P1口顯示152實(shí)例93:對(duì)SPI總線上掛接多個(gè)X5045的讀寫操作156實(shí)例94:基于ADC0832的數(shù)字電壓表16

9、0實(shí)例95:用DAC0832產(chǎn)生鋸齒波電壓166實(shí)例96:用P1口顯示紅外遙控器的按鍵值166實(shí)例97:用紅外遙控器控制繼電器169實(shí)例98:基于DS1302的日歷時(shí)鐘171實(shí)例99:?jiǎn)纹瑱C(jī)數(shù)據(jù)發(fā)送程序180實(shí)例100:電機(jī)轉(zhuǎn)速表設(shè)計(jì)181/模擬霍爾脈沖186函數(shù)的使用和熟悉實(shí)例3:用單片機(jī)控制第一個(gè)燈亮#include<reg51.h> /包含51單片機(jī)寄存器定義的頭文件void main(void) P1=0xfe; /P1=1111 1110B,即P1.0輸出低電平 實(shí)例4:用單片機(jī)控制一個(gè)燈閃爍:認(rèn)識(shí)單片機(jī)的工作頻率#include<reg51.h> /包含單片

10、機(jī)寄存器的頭文件/*函數(shù)功能:延時(shí)一段時(shí)間*/void delay(void) /兩個(gè)void意思分別為無需返回值,沒有參數(shù)傳遞 unsigned int i; /定義無符號(hào)整數(shù),最大取值圍65535 for(i=0;i<20000;i+) /做20000次空循環(huán) ; /什么也不做,等待一個(gè)機(jī)器周期/*函數(shù)功能:主函數(shù) (C語言規(guī)定必須有也只能有1個(gè)主函數(shù))*/void main(void) while(1) /無限循環(huán) P1=0xfe; /P1=1111 1110B, P1.0輸出低電平 delay(); /延時(shí)一段時(shí)間 P1=0xff; /P1=1111 1111B, P1.0輸出高

11、電平 delay(); /延時(shí)一段時(shí)間 實(shí)例5:將 P1口狀態(tài)分別送入P0、P2、P3口:認(rèn)識(shí)I/O口的引腳功能#include<reg51.h> /包含單片機(jī)寄存器的頭文件/*函數(shù)功能:主函數(shù) (C語言規(guī)定必須有也只能有1個(gè)主函數(shù))*/void main(void) while(1) /無限循環(huán) P1=0xff;/ P1=1111 1111B,熄滅LED P0=P1;/ 將 P1口狀態(tài)送入P0口 P2=P1; / 將 P1口狀態(tài)送入P2口 P3=P1; / 將 P1口狀態(tài)送入P3口 實(shí)例6:使用P3口流水點(diǎn)亮8位LED#include<reg51.h> /包含單片機(jī)寄

12、存器的頭文件/*函數(shù)功能:延時(shí)一段時(shí)間*/void delay(void) unsigned char i,j; for(i=0;i<250;i+) for(j=0;j<250;j+) ; /*函數(shù)功能:主函數(shù) */void main(void) while(1) P3=0xfe; /第一個(gè)燈亮 delay(); /調(diào)用延時(shí)函數(shù) P3=0xfd; /第二個(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ù)

13、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:通過對(duì)P3口地址的操作流水點(diǎn)亮8位LED#include<reg51.h> /包含單片機(jī)寄存器的頭文件sfr x=0xb0; /P3口在存儲(chǔ)器中的地址是b0H, 通過sfr可定義8051核單片機(jī) /的所有部8位特殊功能寄存器,對(duì)地址x的操作也就是對(duì)P1口的操作/*函數(shù)功能:延時(shí)一段時(shí)間*/void delay(void) unsigned char i,j; for(i=0;i<

14、;250;i+) for(j=0;j<250;j+) ; /利用循環(huán)等待若干機(jī)器周期,從而延時(shí)一段時(shí)間 /*函數(shù)功能:主函數(shù) */void main(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=0xf7; /第四個(gè)燈亮 delay(); /調(diào)用延時(shí)函數(shù)x=0xef; /第五個(gè)燈亮 delay(); /調(diào)用延時(shí)函數(shù)x=0xdf; /第六個(gè)燈亮 delay(); /調(diào)用延時(shí)函數(shù)x=0xbf; /第七個(gè)燈亮 del

15、ay(); /調(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í)間*/void int_delay(void) /延時(shí)一段較長(zhǎng)的時(shí)間 unsigned int m; /定義無符號(hào)整形變量,雙字節(jié)數(shù)據(jù),值域?yàn)?65535 for(m=0;m<36000;m+) ; /空操作 /*函數(shù)功能:用字符型數(shù)據(jù)延時(shí)一段時(shí)間*/void char_delay(void) /延時(shí)一段較短的時(shí)間 unsigned char i,j; /定

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

17、 char_delay(); /延時(shí)一段較長(zhǎng)的時(shí)間 實(shí)例9:用P0口、P1 口分別顯示加法和減法運(yùn)算結(jié)果#include<reg51.h>void main(void) unsigned char m,n; m=43; /即十進(jìn)制數(shù)2x16+11=43 n=60; /即十進(jìn)制數(shù)3x16+12=60 P1=m+n; /P1=103=0110 0111B,結(jié)果P1.3、P1.4、P1.7 口的燈被點(diǎn)亮 P0=n-m; /P0=17=0001 0001B,結(jié)果P0.0、P0.4的燈被熄滅 實(shí)例10:用P0、P1口顯示乘法運(yùn)算結(jié)果#include<reg51.h> /包含單片機(jī)

18、寄存器的頭文件void main(void) unsigned char m,n; unsigned int s; 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;

19、 /高8位送P1口 ,P1=17=11H=0001 0001B, P1.0和P1.4口滅,其余亮 P0=s%256; /低8位送P0口 , P3=192=c0H=1100 0000B,P3.1,P3.6,P3.7口滅,其余亮實(shí)例11:用P1、P0口顯示除法運(yùn)算結(jié)果#include<reg51.h> /包含單片機(jī)寄存器的頭文件void main(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ī)

20、寄存器的頭文件/*函數(shù)功能:延時(shí)一段時(shí)間*/void delay(void) unsigned int i; for(i=0;i<20000;i+) ;/*函數(shù)功能:主函數(shù)*/void main(void) unsigned char i; for(i=0;i<255;i+) /注意i的值不能超過255 P0=i; /將i的值送P0口 delay(); /調(diào)用延時(shí)函數(shù)實(shí)例13:用P0口顯示邏輯"與"運(yùn)算結(jié)果#include<reg51.h> /包含單片機(jī)寄存器的頭文件void main(void) P0=(4>0)&&(9>

21、;0xab);/將邏輯運(yùn)算結(jié)果送P0口 while(1) ; /設(shè)置無限循環(huán),防止程序“跑飛”實(shí)例14:用P0口顯示條件運(yùn)算結(jié)果#include<reg51.h> /包含單片機(jī)寄存器的頭文件void main(void) P0=(8>4)?8:4;/將條件運(yùn)算結(jié)果送P0口,P0=8=0000 1000B while(1) ; /設(shè)置無限循環(huán),防止程序“跑飛”實(shí)例15:用P0口顯示按位"異或"運(yùn)算結(jié)果#include<reg51.h> /包含單片機(jī)寄存器的頭文件void main(void) P0=0xa20x3c;/將條件運(yùn)算結(jié)果送P0口,P0

22、=8=0000 1000B while(1) ; /設(shè)置無限循環(huán),防止程序“跑飛”實(shí)例16:用P0顯示左移運(yùn)算結(jié)果#include<reg51.h> /包含單片機(jī)寄存器的頭文件void main(void) P0=0x3b<<2;/將左移運(yùn)算結(jié)果送P0口,P0=1110 1100B=0xec while(1) ; /無限循環(huán),防止程序“跑飛”實(shí)例17:"萬能邏輯電路"實(shí)驗(yàn)#include<reg51.h> /包含單片機(jī)寄存器的頭文件sbit F=P14; /將F位定義為 P1.4sbit X=P15; /將X位定義為 P1.5sbit Y

23、=P16; /將Y位定義為 P1.6sbit Z=P17; /將Z位定義為 P1.7void main(void) while(1) F=(X)&Y)|Z; /將邏輯運(yùn)算結(jié)果賦給F ; 實(shí)例18:用右移運(yùn)算流水點(diǎn)亮P1口8位LED#include<reg51.h> /包含單片機(jī)寄存器的頭文件/*函數(shù)功能:延時(shí)一段時(shí)間*/void delay(void) unsigned int n; for(n=0;n<30000;n+) ;/*函數(shù)功能:主函數(shù)*/void main(void) unsigned char i; while(1) P1=0xff;delay();fo

24、r(i=0;i<8;i+)/設(shè)置循環(huán)次數(shù)為8 P1=P1>>1; /每次循環(huán)P1的各二進(jìn)位右移1位,高位補(bǔ)0delay(); /調(diào)用延時(shí)函數(shù) 實(shí)例19:用if語句控制P0口8位LED的流水方向#include<reg51.h> /包含單片機(jī)寄存器的頭文件sbit S1=P14; /將S1位定義為P1.4sbit S2=P15; /將S2位定義為P1.5/*函數(shù)功能:主函數(shù)*/void main(void) while(1) if(S1=0) /如果按鍵S1按下 P0=0x0f; /P0口高四位LED點(diǎn)亮 if(S2=0) /如果按鍵S2按下 P0=0xf0; /P

25、0口低四位LED點(diǎn)亮 實(shí)例20:用swtich語句的控制P0口8位LED的點(diǎn)亮狀態(tài)#include<reg51.h> /包含單片機(jī)寄存器的頭文件sbit S1=P14; /將S1位定義為P1.4/*函數(shù)功能:延時(shí)一段時(shí)間*/void delay(void) unsigned int n; for(n=0;n<10000;n+) ;/*函數(shù)功能:主函數(shù)*/void main(void) unsigned char i;i=0; /將i初始化為0while(1) if(S1=0) /如果S1鍵按下 delay(); /延時(shí)一段時(shí)間 if(S1=0) /如果再次檢測(cè)到S1鍵按下 i

26、+; /i自增1 if(i=9) /如果i=9,重新將其置為1 i=1; switch(i) /使用多分支選擇語句 case 1: P0=0xfe; /第一個(gè)LED亮break;case 2: P0=0xfd; /第二個(gè)LED亮 break;case 3:P0=0xfb; /第三個(gè)LED亮 break;case 4:P0=0xf7; /第四個(gè)LED亮 break;case 5:P0=0xef; /第五個(gè)LED亮 break;case 6:P0=0xdf; /第六個(gè)LED亮 break;case 7:P0=0xbf; /第七個(gè)LED亮 break;case 8:P0=0x7f; /第八個(gè)LED亮

27、 break;default: /缺省值,關(guān)閉所有LED P0=0xff; 實(shí)例21:用for語句控制蜂鳴器鳴笛次數(shù)#include<reg51.h> /包含單片機(jī)寄存器的頭文件sbit sound=P37; /將sound位定義為P3.7/*函數(shù)功能:延時(shí)形成1600Hz音頻*/void delay1600(void) unsigned char n; for(n=0;n<100;n+) ;/*函數(shù)功能:延時(shí)形成800Hz音頻*/void delay800(void) unsigned char n; for(n=0;n<200;n+) ;/*函數(shù)功能:主函數(shù)*/vo

28、id main(void) unsigned int i;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ī)寄存器的頭文件/*函數(shù)功能:延時(shí)約60ms (3*100*200=60000s)*/

29、void delay60ms(void) unsigned char m,n;for(m=0;m<100;m+) for(n=0;n<200;n+) ;/*函數(shù)功能:主函數(shù)*/void main(void) unsigned char i;while(1) /無限循環(huán) i=0; /將i初始化為0 while(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ī)寄存器的

30、頭文件/*函數(shù)功能:延時(shí)約60ms (3*100*200=60000s)*/void delay60ms(void) unsigned char m,n; for(m=0;m<100;m+) for(n=0;n<200;n+) ;/*函數(shù)功能:主函數(shù)*/void main(void) do P0=0xfe; /第一個(gè)LED亮delay60ms(); P0=0xfd; /第二個(gè)LED亮delay60ms();P0=0xfb; /第三個(gè)LED亮delay60ms();P0=0xf7; /第四個(gè)LED亮delay60ms();P0=0xef; /第五個(gè)LED亮delay60ms();P0

31、=0xdf; /第六個(gè)LED亮delay60ms();delay60ms();P0=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)*/void delay60ms(void) unsigned char m,n; for(m=0;m<100;m+) for(n=0;n<20

32、0;n+) ;/*函數(shù)功能:主函數(shù)*/void main(void) unsigned char i; unsigned char code Tab =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ī)寄存器的頭文件/*函數(shù)功能:延時(shí)約150ms (3*200*250=150 000s=150ms*

33、/void delay150ms(void) unsigned char m,n; for(m=0;m<200;m+) for(n=0;n<250;n+) ;/*函數(shù)功能:主函數(shù)*/void main(void) unsigned char str="Now,Temperature is :" /將字符串賦給字符型全部元素賦值 unsigned char i; while(1) i=0; /將i初始化為0,從第一個(gè)元素開始顯示 while(stri!='0') /只要沒有顯示到結(jié)束標(biāo)志'0' P0=stri; /將第i個(gè)字符送到P

34、0口顯示 delay150ms(); /調(diào)用150ms延時(shí)函數(shù) i+; /指向下一個(gè)待顯字符 實(shí)例26:用P0 口顯示指針運(yùn)算結(jié)果#include<reg51.h>void main(void) unsigned char *p1,*p2; /定義無符號(hào)字符型指針變量p1,p2 unsigned char i,j; /定義無符號(hào)字符型數(shù)據(jù) i=25; /給i賦初值25 j=15; p1=&i; /使指針變量指向i ,對(duì)指針初始化 p2=&j; /使指針變量指向j ,對(duì)指針初始化 P0=*p1+*p2; /*p1+*p2相當(dāng)于i+j,所以P0=25+15=40=0x2

35、8 /則P0=0010 1000B,結(jié)果P0.3、P0.5引腳LED熄滅,其余點(diǎn)亮 while(1) ; /無限循環(huán),防止程序“跑飛”實(shí)例27:用指針數(shù)組控制P0口8位LED流水點(diǎn)亮#include<reg51.h>/*函數(shù)功能:延時(shí)約150ms (3*200*250=150 000s=150ms*/void delay150ms(void) unsigned char m,n; for(m=0;m<200;m+) for(n=0;n<250;n+) ;/*函數(shù)功能:主函數(shù)*/void main(void) unsigned char code Tab=0xfe,0xf

36、d,0xfb,0xf7,0xef,0xdf,0xbf,0x7f; unsigned char *p =&Tab0,&Tab1,&Tab2,&Tab3,&Tab4,&Tab5, &Tab6,&Tab7; unsigned char i; /定義無符號(hào)字符型數(shù)據(jù) while(1) for(i=0;i<8;i+) P0=*pi;delay150ms(); 實(shí)例28:用數(shù)組的指針控制P0 口8 位LED流水點(diǎn)亮#include<reg51.h>/*函數(shù)功能:延時(shí)約150ms (3*200*250=150 000s=150

37、ms*/void delay150ms(void) unsigned char m,n; for(m=0;m<200;m+) for(n=0;n<250;n+) ;/*函數(shù)功能:主函數(shù)*/void main(void) unsigned char i; unsigned char Tab =0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF, 0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE, 0xFE,0xFC,0xFB,0xF0,0xE0,0xC0,0x80,0x00,0xE7,0xDB,0xBD,0x7E,0x3C,0

38、x18,0x00,0x81,0xC3,0xE7,0x7E,0xBD,0xDB,0xE7,0xBD,0xDB;/流水燈控制碼 unsigned char *p; /定義無符號(hào)字符型指針 p=Tab; /將數(shù)組首地址存入指針p while(1) for(i=0;i<32;i+) /共32個(gè)流水燈控制碼 P0=*(p+i); /*(p+i)的值等于aidelay150ms(); /調(diào)用150ms延時(shí)函數(shù) 實(shí)例29:用P0 、P1口顯示整型函數(shù)返回值#include<reg51.h>/*函數(shù)功能:計(jì)算兩個(gè)無符號(hào)整數(shù)的和*/unsigned int sum(int a,int b) unsigned int s; s=a+b; return (s);/*函數(shù)功能:主函數(shù)*/void main(void)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論