版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
目錄
實(shí)例3:用單片機(jī)控制第一個(gè)燈亮.........................................3
實(shí)例4:用單片機(jī)控制一個(gè)燈閃爍:認(rèn)識(shí)單片機(jī)的工作頻率.................3
實(shí)例5:將P1口狀態(tài)分別送入PO、P2、P3□:認(rèn)識(shí)I/O口的引腳功能.....4
實(shí)例6:使用P3口流水點(diǎn)亮8位LED....................................4
實(shí)例7:通過(guò)對(duì)P3□地址的操作流水點(diǎn)亮8位LED........................5
實(shí)例8:用不同數(shù)據(jù)類型控制燈閃爍時(shí)間...................................6
實(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é)果......................................10
實(shí)例15:用P0□顯示按位"異或"運(yùn)算結(jié)果................................10
實(shí)例16:用P0顯示左移運(yùn)算結(jié)果........................................10
實(shí)例17:"萬(wàn)能邏輯電路"實(shí)驗(yàn)...........................................11
實(shí)例18:用右移運(yùn)算流水點(diǎn)亮P1口8位LED............................11
實(shí)例19:用if語(yǔ)句控制P0口8位LED的流水方向........................12
實(shí)例20:用swtich語(yǔ)句的控制P0口8位LED的點(diǎn)亮狀態(tài).................12
實(shí)例21:用for語(yǔ)句控制蜂鳴器鳴笛次數(shù)................................14
實(shí)例22:用whiIe語(yǔ)句控制LED.......................................15
實(shí)例23:用do-whiIe語(yǔ)句控制P0口8位LED流水點(diǎn)亮...................16
實(shí)例24:用字符型數(shù)組控制P0口8位LED流水點(diǎn)亮.......................16
實(shí)例25:用P0□顯示字符串常量.......................................17
實(shí)例26:用P0口顯示指針運(yùn)算結(jié)果......................................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流水速度.........................21
實(shí)例31:用數(shù)組作函數(shù)參數(shù)控制流水花樣................................22
實(shí)例32:用指針作函數(shù)參數(shù)控制P0口8位LED流水點(diǎn)亮..................23
實(shí)例33:用函數(shù)型指針控制P1□燈花樣.................................24
實(shí)例34:用指針數(shù)組作為函數(shù)的參數(shù)顯示多個(gè)字符串.....................25
實(shí)例35:字符函數(shù)ctype.h應(yīng)用舉例.....................................26
實(shí)例36:內(nèi)部函數(shù)intrins.h應(yīng)用舉例...................................27
實(shí)例37:標(biāo)準(zhǔn)函數(shù)stdIib.h應(yīng)用舉例....................................27
實(shí)例38:字符串函數(shù)string,h應(yīng)用舉例.................................28
實(shí)例39:宏定義應(yīng)用舉例2...........................................28
實(shí)例40:宏定義應(yīng)用舉例2...........................................29
實(shí)例41:宏定義應(yīng)用舉例3...........................................29
實(shí)例42:用定時(shí)器T0查詢方式P2口8位控制LED閃爍...................30
實(shí)例43:用定時(shí)器T1查詢方式控制單片機(jī)發(fā)出1KHz音頻.................31
實(shí)例44:將計(jì)數(shù)器T0計(jì)數(shù)的結(jié)果送P1口8位LED顯示...................31
實(shí)例45:用定時(shí)器TO的中斷控制1位LED閃爍...........................32
實(shí)例46:用定時(shí)器TO的中斷實(shí)現(xiàn)長(zhǎng)時(shí)間定時(shí).............................33
實(shí)例47:用定時(shí)器T1中斷控制兩個(gè)LED以不同周期閃爍..................34
實(shí)例48:用計(jì)數(shù)器T1的中斷控制蜂鳴器發(fā)出1KHz音頻...................35
實(shí)例49:用定時(shí)器TO的中斷實(shí)現(xiàn)"渴望"主題曲的播放....................35
實(shí)例50-1:輸出50個(gè)矩形脈沖..........................................38
實(shí)例50-2:計(jì)數(shù)器T0統(tǒng)計(jì)外部脈沖數(shù)....................................39
實(shí)例51-2:定時(shí)器T0的模式2測(cè)量正脈沖寬度...........................40
實(shí)例52:用定時(shí)器T0控制輸出高低寬度不同的矩形波....................40
實(shí)例53:用外中斷0的中斷方式進(jìn)行數(shù)據(jù)采集............................41
實(shí)例547:榆出負(fù)脈寬為200微秒的方波................................42
實(shí)例54-2:測(cè)量負(fù)脈沖寬度.............................................43
實(shí)例55:方式0控制流水燈循環(huán)點(diǎn)亮.....................................44
實(shí)例56-1:數(shù)據(jù)發(fā)送程序................................................45
實(shí)例56-2:數(shù)據(jù)接妝程序................................................46
實(shí)例57-1:數(shù)據(jù)發(fā)送程序................................................47
實(shí)例57-2:數(shù)據(jù)接收程序................................................48
實(shí)例58:單片機(jī)向PC發(fā)送數(shù)據(jù)..........................................49
實(shí)例59:單片機(jī)接收PC發(fā)出的數(shù)據(jù)......................................50
實(shí)例60:用LED數(shù)碼顯示數(shù)字5.......................................51
實(shí)例61:用LED數(shù)碼顯示器循環(huán)顯示數(shù)字。?9...........................51
實(shí)例62:用數(shù)碼管慢速動(dòng)態(tài)掃描顯示數(shù)字"1234”........................52
實(shí)例63:用LED數(shù)碼顯示器偽靜態(tài)顯示數(shù)字1234.......................53
實(shí)例64:用數(shù)碼管顯示動(dòng)態(tài)檢測(cè)結(jié)果.....................................54
實(shí)例65:數(shù)碼秒表設(shè)計(jì)..................................................56
實(shí)例66:數(shù)碼時(shí)鐘設(shè)計(jì)..................................................57
實(shí)例67:用LED數(shù)碼管顯示計(jì)數(shù)器T0的計(jì)數(shù)值...........................61
實(shí)例68:靜態(tài)顯示數(shù)字“59”........................................62
實(shí)例69:無(wú)軟件消抖的獨(dú)立式鍵盤(pán)輸入實(shí)驗(yàn)..............................63
實(shí)例70:軟件消抖的獨(dú)立式鍵盤(pán)輸入實(shí)驗(yàn)................................63
實(shí)例71:CPU控制的獨(dú)立式鍵盤(pán)掃描實(shí)驗(yàn).................................64
實(shí)例72:定時(shí)器中斷控制的獨(dú)立式鍵盤(pán)掃描實(shí)驗(yàn)..........................67
實(shí)例73:獨(dú)立式鍵盤(pán)控制的4級(jí)變速流水燈..............................70
實(shí)例74:獨(dú)立式鍵盤(pán)的按鍵功能擴(kuò)展:"以一當(dāng)四”........................72
實(shí)例75:獨(dú)立式鍵盤(pán)調(diào)時(shí)的數(shù)碼時(shí)鐘實(shí)驗(yàn)................................74
實(shí)例76:獨(dú)立式鍵盤(pán)控制步進(jìn)電機(jī)實(shí)驗(yàn)...................................78
實(shí)例77:矩陣式鍵盤(pán)按鍵值的數(shù)碼管顯示實(shí)驗(yàn)............................81
實(shí)例78:矩陣式鍵盤(pán)按鍵音.............................................84
實(shí)例79:簡(jiǎn)易電子琴....................................................85
實(shí)例80:矩陣式鍵盤(pán)實(shí)現(xiàn)的電子密碼鎖...................................91
實(shí)例81:用LCD顯示字符'A'.........................................95
實(shí)例82:用LCD循環(huán)右移顯示"WelcometoChina"......................98
實(shí)例83:用LCD顯示適時(shí)檢測(cè)結(jié)果......................................102
實(shí)例84:液晶時(shí)鐘設(shè)計(jì).................................................106
實(shí)例85:將數(shù)據(jù)"OxOf"寫(xiě)入AT24co2再讀出送P1口顯示.................112
實(shí)例86:將按鍵次數(shù)寫(xiě)入AT24co2,再讀出并用1602LCD顯示.............116
實(shí)例87:對(duì)I2C總線上掛接多個(gè)AT24co2的讀寫(xiě)操作....................124
實(shí)例88:基于AT24co2的多機(jī)通信讀取程序...........................129
實(shí)例88:基于AT24C02的多機(jī)通信寫(xiě)入程序............................133
實(shí)例90:DS18B20溫度檢測(cè)及其液晶顯示................................144
實(shí)例91:將數(shù)據(jù)"Oxaa"寫(xiě)入X5045再讀出送P1口顯示...................153
實(shí)例92:將流水燈控制碼寫(xiě)入X5045并讀出送P1口顯示.................157
實(shí)例93:對(duì)SPI總線上掛接多個(gè)X5045的讀寫(xiě)操作.......................161
實(shí)例94:基于ADC0832的數(shù)字電壓表....................................165
實(shí)例95:用DAC0832產(chǎn)生鋸齒波電壓....................................171
實(shí)例96:用P1口顯示紅外遙控器的按鍵值..............................172
實(shí)例97:用紅外遙控器控制繼電器......................................174
實(shí)例98:基于DS1302的日歷時(shí)鐘.......................................177
實(shí)例99:單片機(jī)數(shù)據(jù)發(fā)送程序..........................................186
實(shí)例100:電機(jī)轉(zhuǎn)速表設(shè)計(jì)..............................................187
模擬霍爾脈沖...........................................................192
/*函數(shù)的使用和熟悉*/
〃實(shí)例3:用單片機(jī)控制第一個(gè)燈亮
#include<reg51.h>〃包含51單片機(jī)寄存器定義的頭文件
voidmain(void)
{
while(1)〃無(wú)限循環(huán)
P1=0xfe;//P1=11111110B,即P1.0輸出低電平
)
〃實(shí)例4:用單片機(jī)控制一個(gè)燈閃爍:認(rèn)識(shí)單片機(jī)的工作頻率
#include<reg51.h>//包含單片機(jī)寄存器的頭文件
函數(shù)功能:延時(shí)一段時(shí)間
voiddeIay(void)//兩個(gè)void意思分別為無(wú)需返回值,沒(méi)有參數(shù)傳遞
(
unsignedinti;//定義無(wú)符號(hào)整數(shù),最大取值范圍65535
for(i=0;i<20000;i++)//做20000次空循環(huán)
;//什么也不做,等待一個(gè)機(jī)器周期
1
函數(shù)功能:主函數(shù)(C語(yǔ)言規(guī)定必須有也只能有1個(gè)主函數(shù))
voidmain(void)
(
while(1)//無(wú)限循環(huán)
(
P1=0xfe;//P1=11111110B,P1.0輸出低電平
deIay();//延時(shí)一■段時(shí)間
P1=0xff;//P1=11111111B,P1.0輸出高電平
delay0;//延時(shí)一段時(shí)間
)
}
〃實(shí)例5:將P1□狀態(tài)分別送入PO、P2、P3□:認(rèn)識(shí)I/O口的
引腳功能
#incIude<reg51.h>//包含單片機(jī)寄存器的頭文件
函數(shù)功能:主函數(shù)(C語(yǔ)言規(guī)定必須有也只能有1個(gè)主函數(shù))
voidmain(void)
{
while(1)〃無(wú)限循環(huán)
(
P1=0xff;//P1=11111111,熄滅LED
PO=P1;//將P1口狀態(tài)送入PO口
P2=P1;//將P1口狀態(tài)送入P2口
P3=P1;//將P1口狀態(tài)送入P3口
〃實(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;//第二個(gè)燈亮
deIay0;//調(diào)用延時(shí)函數(shù)
P3=0xfb;//第三個(gè)燈亮
delay();//調(diào)用延時(shí)函數(shù)
P3=0xf7;//第四個(gè)燈亮
deIay();//調(diào)用延時(shí)函數(shù)
P3=0xef;//第五個(gè)燈亮
delayO;//調(diào)用延時(shí)函數(shù)
P3=0xdf;//第六個(gè)燈亮
delayO;//調(diào)用延時(shí)函數(shù)
P3=0xbf;//第七個(gè)燈亮
delayO;//調(diào)用延時(shí)函數(shù)
P3=0x7f;//第八個(gè)燈亮
deIay();//調(diào)用延時(shí)函數(shù)
}
//實(shí)例7:通過(guò)對(duì)P3□地址的操作流水點(diǎn)亮8位LED
#incIude<reg51.h>//包含單片機(jī)寄存器的頭文件
sfrx=0xb0;//P3□在存儲(chǔ)器中的地址是bOH,通過(guò)sfr可定義8051內(nèi)核單
片機(jī)
〃的所有內(nèi)部8位特殊功能寄存器,對(duì)地址x的操作也就是對(duì)P1
口的操作
函數(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è)燈亮
deIay();//調(diào)用延時(shí)函數(shù)
x=0xfd;//第二個(gè)燈亮
deIay();//調(diào)用延時(shí)函數(shù)
x=0xfb;//第三個(gè)燈亮
deIay0;//調(diào)用延時(shí)函數(shù)
x=0xf7;//第四個(gè)燈亮
deIay0;//調(diào)用延時(shí)函數(shù)
x=0xef;〃第五個(gè)燈亮
deIay();//調(diào)用延時(shí)函數(shù)
x=0xdf;//第六個(gè)燈亮
deIay();//調(diào)用延時(shí)函數(shù)
x=0xbf;//第七個(gè)燈亮
deIay();//調(diào)用延時(shí)函數(shù)
x=0x7f;//第八個(gè)燈亮
deIay();//調(diào)用延時(shí)函數(shù)
)
}
〃實(shí)例8:用不同數(shù)據(jù)類型控制燈閃爍時(shí)間
#include<reg51.h>//包含單片機(jī)寄存器的頭文件
函數(shù)功能:用整形數(shù)據(jù)延時(shí)一段時(shí)間
voidint_delay(void)〃延時(shí)一?段較長(zhǎng)的時(shí)間
{
unsignedintm;//定義無(wú)符號(hào)整形變量,雙字節(jié)數(shù)據(jù),值域?yàn)??65535
for(m=0;m<36000;m++)
;//空操作
}
函數(shù)功能:用字符型數(shù)據(jù)延時(shí)一段時(shí)間
voidchar_deIay(void)//延時(shí)一段較短的時(shí)間
(
unsignedchari,j;〃定義無(wú)符號(hào)字符型變量,單字節(jié)數(shù)據(jù),值域0?255
for(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_deIay0;//延時(shí)一段較長(zhǎng)的時(shí)間
P1=0xff;//熄滅
int_deIay0;〃延時(shí)一段較長(zhǎng)的時(shí)間
}
for(i=0;i<3;i++)
(
P1=0xef;//P1.4口的燈點(diǎn)亮
char_delay0;//延時(shí)一段較長(zhǎng)的時(shí)間
P1=0xff;//熄滅
char_deIay();//延時(shí)一段較長(zhǎng)的時(shí)間
}
}
}
〃實(shí)例9:用「0口、P1口分別顯示加法和減法運(yùn)算結(jié)果
#include<reg51.h>
voidmain(void)
{
unsignedcharm,n;
m=43;//即十進(jìn)制數(shù)2x16+11=43
n=60;//即十進(jìn)制數(shù)3x16+12=60
P1=m+n;//P1=103=01100111,結(jié)果P1.3、P1.4、P1.7口的燈被點(diǎn)亮
P0=n-m;//P0=17=00010001,結(jié)果P0.0、P0.4的燈被熄滅
//實(shí)例10:用P0、P1口顯示乘法運(yùn)算結(jié)果
#include<reg51.h>//包含單片機(jī)寄存器的頭文件
voidmain(void)
{
unsignedcharm,n;
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+HO
〃兩邊同除以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.(HnP1.4tr
滅,其余亮
P0=s%256;//低8位送P0口,P3=192=cOH=11000000B,P3.1,P3.6,P3.7
口滅,其余亮
}
//實(shí)例11:用P1、P0口顯示除法運(yùn)算結(jié)果
#incIude<reg51.h>//包含單片機(jī)寄存器的頭文件
voidmain(void)
(
P1=36/5;//求整數(shù)
P0=((36%5)*10)/5;//求小數(shù)
while(1)
;//無(wú)限循環(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ù)功能:主函數(shù)
voidmain(void)
(
unsignedchari;
for(i=0;i<255;i++)//注意i的值不能超過(guò)255
(
P0=i;〃將i的值送POD
deIay();//調(diào)用延時(shí)函數(shù)
}
}
〃實(shí)例13:用P0□顯示邏輯"與"運(yùn)算結(jié)果
#include<reg51.h>〃包含單片機(jī)寄存器的頭文件
voidmain(void)
(
PO=(4>0)&&(9>0xab);〃將邏輯運(yùn)算結(jié)果送PO口
while(1)
;〃設(shè)置無(wú)限循環(huán),防止程序“跑飛”
//實(shí)例14:用P0口顯示條件運(yùn)算結(jié)果
#include<reg51.h>//包含單片機(jī)寄存器的頭文件
voidmain(void)
(
P0=(8>4)?8:4;〃將條件運(yùn)算結(jié)果送PO口,P0=8=00001000B
while(1)
;〃設(shè)置無(wú)限循環(huán),防止程序“跑飛”
〃實(shí)例15:用P0□顯示按位"異或"運(yùn)算結(jié)果
#include<reg51.h>//包含單片機(jī)寄存器的頭文件
voidmain(void)
(
P0=0xa2-0x3c;〃將條件運(yùn)算結(jié)果送PO口,PO二8二00001000B
while(1)
;〃設(shè)置無(wú)限循環(huán),防止程序“跑飛”
//實(shí)例16:用P0顯示左移運(yùn)算結(jié)果
#incIude<reg51.h>//包含單片機(jī)寄存器的頭文件
voidmain(void)
(
P0=0x3b?2;〃將左移運(yùn)算結(jié)果送PO口,P0=11101100B=0xec
while(1)
〃無(wú)限循環(huán),防止程序“跑飛”
}
//實(shí)例17:“萬(wàn)能邏輯電路"實(shí)驗(yàn)
#include<reg51.h>〃包含單片機(jī)寄存器的頭文件
sbitF=Pr4;〃將F位定義為P1.4
sbitX=Pr5;〃將X位定義為P1.5
sbit丫=P1%;//將丫位定義為P1.6
sbitZ=P「7;〃將Z位定義為P1.7
voidmain(void)
while(1)
F=((?X)&Y)|Z;//將邏輯運(yùn)算結(jié)果賦給F
}
}
//實(shí)例18:用右移運(yùn)算流水點(diǎn)亮P1口8位LED
#incIude<reg51.h>〃包含單片機(jī)寄存器的頭文件
函數(shù)功能:延時(shí)一段時(shí)間
voiddeIay(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ù)為8
(
P1=P1?1;〃每次循環(huán)P1的各二進(jìn)位右移1位,高位補(bǔ)0
deIay();//調(diào)用延時(shí)函數(shù)
〃實(shí)例19:用if語(yǔ)句控制P0口8位LED的流水方向
#incIude<reg51.h>//包含單片機(jī)寄存器的頭文件
sbitSkP1-4;〃將S1位定義為P1.4
sbitS2=P「5;〃將S2位定義為P1.5
函數(shù)功能:主函數(shù)
voidmain(void)
while(1)
{
if(S1==0)〃如果按鍵S1按下
P0=0x0f;//PO口高四位LED點(diǎn)亮
if(S2==0)〃如果按鍵S2按下
P0=0xf0;//PO口低四位LED點(diǎn)亮
//實(shí)例20:用swtich語(yǔ)句的控制P0口8位LED的點(diǎn)亮狀態(tài)
#include<reg51.h>//包含單片機(jī)寄存器的頭文件
sbitS1=P1"4;〃將S1位定義為P1.4
函數(shù)功能:延時(shí)一段時(shí)間
voiddeIay(void)
unsignedintn;
for(n=0;n<10000;n++)
)
函數(shù)功能:主函數(shù)
voidmain(void)
(
unsignedchari;
i=0;〃將i初始化為0
while(1)
{
if(S1==0)//如果S1鍵按下
{
deIay0;//延時(shí)一■段時(shí)間
if(S1==0)〃如果再次檢測(cè)到S1鍵按下
i++;//i自增1
if(i=9)//如果i=9,重新將其置為1
i=1;
)
switch(i)//使用多分支選擇語(yǔ)句
case1:P0=0xfe;//第一個(gè)LED亮
break;
case2: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亮
break;
case7:P0=0xbf;//第七個(gè)LED亮
break;
case8:P0=0x7f;//第八個(gè)LED亮
break;
default://缺省值,關(guān)閉所有LED
P0=0xff;
}
}
}
//實(shí)例21:用for語(yǔ)句控制蜂鳴器鳴笛次數(shù)
#incIude<reg51.h>〃包含單片機(jī)寄存器的頭文件
sbitsound=P3-7;//將sound位定義為P3.7
函數(shù)功能:延時(shí)形成1600Hz音頻
voiddelay1600(void)
(
unsignedcharn;
for(n=0;n<100;n++)
)
函數(shù)功能:延時(shí)形成800Hz音頻
voiddelay800(void)
(
unsignedcharn;
for(n=0;n<200;n++)
}
函數(shù)功能:主函數(shù)
voidmain(void)
(
unsignedinti;
while(1)
(
for(i=0;i<830;i++)
(
sound=0;//P3.7輸出低電平
deIay1600();
sound=1;//P3.7輸出高電平
deIay1600();
}
for(i=0;i<200;i++)
sound=0;//P3.7輸出低電平
delay800();
sound=1;//P3.7輸出高電平
delay800();
}
}
}
//實(shí)例22:用whiIe語(yǔ)句控制LED
#incIude<reg51.h>//包含單片機(jī)寄存器的頭文件
函數(shù)功能:延時(shí)約60ms(3*100*200=60000us)
voiddelay60ms(void)
(
unsignedcharm,n;
for(m=0;m<100;m++)
for(n=0;n<200;n++)
1
函數(shù)功能:主函數(shù)
voidmain(void)
//無(wú)限循環(huán)
i=0;//將i初始化為0
while(i<Oxff)〃當(dāng)i小于Oxff(255)時(shí)執(zhí)行循環(huán)體
(
P0=i;〃將i送P0口顯示
deIay60ms();〃延時(shí)
i++;//i自增1
}
}
}
//實(shí)例23:用do-whiIe語(yǔ)句控制P0口8位LED流水點(diǎn)亮
#incIude<reg51.h>〃包含單片機(jī)寄存器的頭文件
函數(shù)功能:延時(shí)約60ms(3*100*200=60000RS)
voiddelay60ms(void)
(
unsignedcharm,n;
for(m=0;m<100;m++)
for(n=0;n<200;n++)
1
函數(shù)功能:主函數(shù)
voidmain(void)
(
do
(
P0=0xfe;〃第一個(gè)LED亮
deIay60ms();
P0=0xfd;//第二個(gè)LED亮
deIay60ms();
P0=0xfb;//第三個(gè)LED亮
deIay60ms();
P0=0xf7;//第四個(gè)LED亮
deIay60ms();
P0=0xef;〃第五個(gè)LED亮
deIay60ms();
P0=0xdf;//第六個(gè)LED亮
deIay60ms();
deIay60ms();
P0=0xbf;//第七個(gè)LED亮
deIay60ms();
P0=0x7f;//第八個(gè)LED亮
deIay60ms();
}while(1);〃無(wú)限循環(huán),使8位LED循環(huán)流水點(diǎn)亮
}
//實(shí)例24:用字符型數(shù)組控制P0口8位LED流水點(diǎn)亮
#incIude<reg51.h>〃包含單片機(jī)寄存器的頭文件
函數(shù)功能:延時(shí)約60ms(3*100*200=60000ps)
voiddeIay60ms(void)
(
unsignedcharm,n;
for(m=0;m<100;m++)
for(n=0;n<200;n++)
)
函數(shù)功能:主函數(shù)
voidmain(void)
{
unsignedchari;
unsignedcharcodeTab[]={0xfe,Oxfd,Oxfb,0xf7,Oxef,Oxdf,Oxbf,0x7f};
〃定義無(wú)符號(hào)字符型數(shù)組
while(1)
(
for(i=0;i<8;i++)
(
P0=Tab[i];〃依次引用數(shù)組元素,并將其送P0口顯示
deIay60ms();//調(diào)用延時(shí)函數(shù)
)
}
)
//實(shí)例25:用P0口顯示字符串常量
#include<reg51.h>//包含單片機(jī)寄存器的頭文件
函數(shù)功能:延時(shí)約150ms(3*200*250=150000us=150ms
voiddeIay150ms(void)
(
unsignedcharm,n;
for(m=0;m<200;m++)
for(n=0;n<250;n++)
)
函數(shù)功能:主函數(shù)
voidmain(void)
unsignedcharstr[]={"Now,Temperatureis:"!;//將字符串賦給字符型
全部元素賦值
unsignedchari;
while(1)
(
i=0;//將i初始化為0,從第一個(gè)元素開(kāi)始顯示
while(str[i]!='\0')//只要沒(méi)有顯示到結(jié)束標(biāo)志‘\0'
(
P0=str[i];//將第i個(gè)字符送到P0口顯示
deIay150ms();//調(diào)用150ms延時(shí)函數(shù)
i++;//指向下一個(gè)待顯字符
〃實(shí)例26:用P0口顯示指針運(yùn)算結(jié)果
#include<reg51.h>
voidmain(void)
unsignedchar*p1,*p2;//定義無(wú)符號(hào)字符型指針變量p1,p2
unsignedchari,j;//定義無(wú)符號(hào)字符型數(shù)據(jù)
i=25;〃給i賦初值25
j=15;
pk&i;//使指針變量指向i,對(duì)指針初始化
p2=&j;//使指針變量指向j,對(duì)指針初始化
P0=*p1+*p2;//*p1+*p2相當(dāng)于i+j,所以P0=25+15=40=0x28
〃則P0=00101000B,結(jié)果P0.3、P0.5引腳LED熄滅,其余點(diǎn)亮
while(1)
//無(wú)限循環(huán),防止程序“跑飛”
//實(shí)例27:用指針數(shù)組控制P0口8位LED流水點(diǎn)亮
#incIude<reg51.h>
函數(shù)功能:延時(shí)約150ms(3*200*250=150000us=150ms
voiddeIay150ms(void)
(
unsignedcharm,n;
for(m=0;m<200;m++)
for(n=O;n<250;n++)
)
函數(shù)功能:主函數(shù)
voidmain(void)
{
unsignedcharcodeTab[]={Oxfe,Oxfd,Oxfb,0xf7,Oxef,Oxdf,Oxbf,0x7f};
unsignedchar
*p[]={&Tab[0],&Tab[1],&Tab[2],&Tab[3],&Tab[4],&Tab[5],
&Tab[6],&Tab[7]};
unsignedchari;〃定義無(wú)符號(hào)字符型數(shù)據(jù)
while(1)
{
for(i=0;i<8;i++)
(
PO=*p[i];
deIay150ms();
}
}
)
//實(shí)例28:用數(shù)組的指針控制P0口8位LED流水點(diǎn)亮
#include<reg51.h>
函數(shù)功能:延時(shí)約150ms(3*200*250=150000RS=150ms
voiddeIay150ms(void)
unsignedcharm,n;
for(m=0;m<200;m++)
for(n=0;n<250;n++)
)
函數(shù)功能:主函數(shù)
voidmain(void)
(
unsignedchari;
unsignedcharTab[]={0xFF,OxFE,OxFD,OxFB,0xF7,OxEF,OxDF,OxBF,
0x7F,OxBF,OxDF,OxEF,0xF7,OxFB,OxFD,OxFE,
OxFE,OxFC,OxFB,OxFO,OxEO,OxCO,0x80,0x00,
0xE7,OxDB,OxBD,0x7E,0x3C,0x18,0x00,0x81,
0xC3,0xE7,0x7E,OxBD,OxDB,0xE7,OxBD,OxDB};
//流水燈控制碼
unsignedchar*p;//定義無(wú)符號(hào)字符型指針
p=Tab;〃將數(shù)組首地址存入指針p
while(1)
(
for(i=0;i<32;i++)〃共32個(gè)流水燈控制碼
{
PO=*(p+i);//*(p+i)的值等于a[i]
deIay150ms();//調(diào)用150ms延時(shí)函數(shù)
)
)
}
〃實(shí)例29:用PO、P1□顯示整型函數(shù)返回值
#include<reg51.h>
函數(shù)功能:計(jì)算兩個(gè)無(wú)符號(hào)整數(shù)的和
unsignedintsum(inta,intb)
{
unsignedints;
s=a+b;
return(s);
}
函數(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(mz:0;m<x;m++)
for(n=0;n<200;n++)
}
函數(shù)功能:主函數(shù)
voidmain(void)
(
unsignedchari;
unsignedcharcode
Tab[]={0xFE,OxFD,OxFB,0xF7,OxEF,OxDF,OxBF,0x7F);
//流水燈控制碼
while(1)
(
//快速流水點(diǎn)亮LED
for(i=0;i<8;i++)〃共8個(gè)流水燈控制碼
{
P0=Tab[i];
deIay(100);//延時(shí)約60ms,(3*100*200=60000us)
)
//慢速流水點(diǎn)亮LED
for(i=0;i<8;i++)〃共8個(gè)流水燈控制碼
{
PO=Tab[i];
deIay(250);〃延時(shí)約150ms,(3*250*200=150000ns)
)
}
}
〃實(shí)例31:用數(shù)組作函數(shù)參數(shù)控制流水花樣
#incIude<reg51.h>
函數(shù)功能:延時(shí)約150ms
voiddelay(void)
(
unsignedcharm,n;
for(m=0;m<200;m++)
for(n=0;n<250;n++)
)
函數(shù)功能:流水點(diǎn)亮P0口8位LED
voidIed_fIow(unsignedchara[8])
{
unsignedchari;
for(i=0;i<8;i++)
(
P0=a[i];
delay();
)
}
函數(shù)功能:主函數(shù)
voidmain(void)
(
unsignedcharcode
Tab[]={0xFE,OxFD,OxFB,0xF7,OxEF,OxDF,OxBF,0x7F);
//流水燈控制碼
Ied_fIow(Tab);
}
//實(shí)例32:用指針作函數(shù)參數(shù)控制P0口8位LED流水點(diǎn)亮
#include<reg51.h>
函數(shù)功能:延時(shí)約150ms
voiddelay(void)
(
unsignedcharm,n;
for(m=0;m<200;m++)
for(n=0;n<250;n++)
}
函數(shù)功能:流水點(diǎn)亮P0口8位LED
voidIed_fIow(unsignedchar*p)//形參為無(wú)符號(hào)字符型指針
(
unsignedchari;
while(1)
(
i=o;〃將i置為o,指向數(shù)組第一個(gè)元素
while(*(p+i)!='\0')〃只栗沒(méi)有指向數(shù)組的結(jié)束標(biāo)志
(
P0=*(p+i);〃取的指針?biāo)缸兞?數(shù)組元素)的值,送P0D
deIay();//調(diào)用延時(shí)函數(shù)
i++;〃指向下一個(gè)數(shù)組元素
)
)
}
函數(shù)功能:主函數(shù)
voidmain(void)
unsignedcharcodeTab[]={OxFE,OxFD,OxFB,0xF7,OxEF,OxDF,OxBF,0x7F,
0x7F,OxBF,OxDF,OxEF,0xF7,OxFB,OxFD,OxFE,
OxFF,OxFE,OxFC,OxFB,OxFO,OxEO,OxCO,0x80,
0x00,0xE7,OxDB,OxBD,0x7E,OxFF,OxFF,0x3C,
0x18,0x0,0x81,0xC3,0xE7,OxFF,
OxFF,0x7E};
〃流水燈控制碼
unsignedchar*pointer;
pointer=Tab;
Ied_flow(pointer);
//實(shí)例33:用函數(shù)型指針控制P1口燈花樣
#incIude<reg51.h>//包含51單片機(jī)寄存器定義的頭文件
unsignedcharcodeTab[]={OxFE,OxFD,OxFB,0xF7,OxEF,OxDF,OxBF,0x7F};
〃流水燈控制碼,該數(shù)組被定義為全局變量
函數(shù)功能:延時(shí)約150ms
voiddelay(void)
(
unsignedcharm,n;
for(m=0;m<200;m++)
for(n=0;n<250;n++)
}
函數(shù)功能:流水燈左移
voidIed_fIow(void)
{
unsignedchari;
for(i=0;i<8;i++)〃8位控制碼
PO=Tab[i];
delay();
)
}
函數(shù)功能:主函數(shù)
voidmain(void)
(
void(*p)(void);//定義函數(shù)型指針,所指函數(shù)無(wú)參數(shù),無(wú)返回值
p=led_flow;〃將函數(shù)的入口地址賦給函數(shù)型指針p
while(1)
(*p)0;//通過(guò)函數(shù)的指針p調(diào)用函數(shù)led_flow()
〃實(shí)例34:用指針數(shù)組作為函數(shù)的參數(shù)顯示多個(gè)字符串
#incIude<reg51.h>//包含51單片機(jī)寄存器定義的頭文件
unsignedcharcodestr1[]="TemperatureistestedbyDS18B20";〃C語(yǔ)言
中,字符串是作為字符數(shù)組來(lái)處理的
unsignedcharcodestr2[]="Nowtemperatureis:";//所以,字符串的
名字就是字符串的首地址
unsignedcharcodestr3[]="TheSystermisdesignedbyZhangSan";
unsignedcharcodestr4[]="Thedateis2008-9-30";
unsignedchar*p[]={str1,str2,str3,str4};//定義p[4]為指向4個(gè)字符串
的字符型指針數(shù)組
函數(shù)功能:延時(shí)約150ms
voiddelay(void)
(
unsignedcharm,n;
for(m=0;m<200;m++)
for(n=0;n<250;n++)
)
函數(shù)功能:流水點(diǎn)亮POD8位LED
voidIed_dispIay(unsignedchar*x[])//形參必須為指針數(shù)組
unsignedchari,j;
for(i=0;i<4;i++)〃有4個(gè)字符串要顯示
(
j=0;//指向待顯字符串的第0號(hào)元素
while(*(x[i]+j)!=''0')//只要第i個(gè)字符串的第j號(hào)元素不是結(jié)束
標(biāo)心
(
PO=*(x[i]+j);〃取得該元素值送到P0口顯示
delay();//調(diào)用延時(shí)函數(shù)
j++;〃指向下一個(gè)元素
}
)
)
函數(shù)功能:主函數(shù)
voidmain(void)
(
unsignedchari;
while(1)
(
for(i=0;i<4;i++)
led_display(p);〃將指針數(shù)組名作實(shí)際參數(shù)傳遞
}
)
〃實(shí)例35:字符函數(shù)ctype.h應(yīng)用舉例
#incIude<reg51.h>//包含51單片機(jī)寄存器定義的頭文件
#incIude<ctype.h>
voidmain(void)
(
while(1)
(
P3=isalpha('_')?0xf0:0x0f;〃條件運(yùn)算,若是英文字母,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024建筑設(shè)計(jì)工程合同范本
- 2024年公園景觀亮化施工合同
- 2024-2025學(xué)年新教材高中政治第三單元全面依法治國(guó)第八課第1課時(shí)法治國(guó)家作業(yè)含解析新人教版必修3
- 統(tǒng)考版2025屆高考物理二輪復(fù)習(xí)小題提升精練23電磁感應(yīng)中的圖象與電路問(wèn)題含解析
- 2024-2025學(xué)年高中數(shù)學(xué)第2章數(shù)列2.4第2課時(shí)等比數(shù)列的性質(zhì)學(xué)案含解析新人教A版必修5
- 2024-2025學(xué)年高中歷史第六單元現(xiàn)代中國(guó)的政治建設(shè)與祖國(guó)統(tǒng)一第20課新中國(guó)的民主政治建設(shè)課時(shí)作業(yè)含解析新人教版必修1
- 2024年居間服務(wù)合同藍(lán)本:行業(yè)規(guī)范實(shí)踐指南
- 朝陽(yáng)小區(qū)買(mǎi)賣(mài)房屋合同三篇
- 2024年委托代建合同協(xié)議
- 2024年工程分包財(cái)務(wù)結(jié)算
- 高中歷史學(xué)習(xí)方法指導(dǎo)課件
- 音樂(lè)秋天多么美-課件完整版
- 德語(yǔ)語(yǔ)音課件
- 物業(yè)管理組織機(jī)構(gòu)框架圖
- 復(fù)合材料 第八章 先進(jìn)復(fù)合材料課件
- 《素描與色彩》課程標(biāo)準(zhǔn)(中職)
- 六年級(jí)美術(shù)上冊(cè)第13課生活與科幻課件1浙美版
- 暮光之城 英文介紹
- 限度樣品一覽表
- 人教版七年級(jí)上冊(cè)生物312種子植物說(shuō)課課件(共22張)
- 生物安全手冊(cè)
評(píng)論
0/150
提交評(píng)論