




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、這是大三上學(xué)期學(xué)單片機(jī)做的所有實(shí)驗(yàn)題,是全部編程試驗(yàn)箱通過的。總結(jié)下,記得條條大道通羅馬,不要拘泥于一種方式,僅供參考呀實(shí)驗(yàn)一 單片機(jī)實(shí)驗(yàn)設(shè)備的使用及簡(jiǎn)單程序的運(yùn)行、調(diào)試一、實(shí)驗(yàn)?zāi)康耐ㄟ^一簡(jiǎn)單的實(shí)驗(yàn)掌握:1. 掌握PL2303驅(qū)動(dòng)的安裝,掌握Keil3開發(fā)環(huán)境的安裝、設(shè)置和基本使用;2. 掌握項(xiàng)目、文件的建立方法、程序的下載以及寄存器、存儲(chǔ)器內(nèi)容的查看方法;3. 掌握程序的執(zhí)行及斷點(diǎn)設(shè)置方法。二、實(shí)驗(yàn)設(shè)備單片機(jī)實(shí)驗(yàn)箱一臺(tái);PC機(jī)一臺(tái);USB下載線一根。三、實(shí)驗(yàn)內(nèi)容通過了解P1口的開關(guān)控制電路和P0的LED電路,編寫基本輸入輸出實(shí)驗(yàn)程序。實(shí)驗(yàn)內(nèi)容為設(shè)置P1為輸入口,P0口為輸出口,將P1口的開關(guān)
2、狀態(tài)發(fā)送到P0口,讓燈亮滅,將P1的電平狀態(tài)通過P0口的LED的亮滅表示出來。四、實(shí)驗(yàn)步驟讀懂電路原理圖如圖1-1和圖1-2所示:,插上USB連接線,將電源選擇撥碼開關(guān)撥至“USB供電”,將示例程序進(jìn)行編譯、裝載、下載,下載時(shí)將撥碼開關(guān)S44撥至“開”狀態(tài),撥動(dòng)撥碼開關(guān)S31S38的開關(guān)狀態(tài),觀察實(shí)驗(yàn)現(xiàn)象,實(shí)驗(yàn)電路原理圖圖1-1LED接口電路圖1-2撥碼開關(guān)電路圖五、示例程序程序清單如下:#include void main(void) / 程序主函數(shù)while(1) / 循環(huán)用于實(shí)時(shí)掃描IO狀態(tài)P0=P1; / 將P1口的數(shù)據(jù)發(fā)送給P0口六、實(shí)驗(yàn)注意事項(xiàng)1.在輸入程序時(shí),其中的字母、符號(hào)均須
3、在英文方式下進(jìn)行。2.特殊功能寄存器中的字母必須要大寫,如若將示例程序中的P0寫成p0,程序?qū)⑻崾境鲥e(cuò)。實(shí)驗(yàn)二 流水燈實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?、掌握單片機(jī)實(shí)驗(yàn)箱的使用方法與程序調(diào)試技巧;2、學(xué)會(huì)使用51系列單片機(jī)I/O的基本輸入輸出功能。二、實(shí)驗(yàn)設(shè)備單片機(jī)實(shí)驗(yàn)箱一臺(tái);PC機(jī)一臺(tái);USB下載線一根。三、實(shí)驗(yàn)內(nèi)容設(shè)定P1口為8位輸入口,P0口為8位輸出口,實(shí)驗(yàn)電路原理圖參考實(shí)驗(yàn)一。在8個(gè)輸入開關(guān)(S31S38)中,本實(shí)驗(yàn)只要求用兩個(gè)兩關(guān)為:S31和S32,當(dāng)S31為高電平時(shí),P0口所接的發(fā)光二極管(D19D26)以一定的速度自左至右循環(huán)點(diǎn)亮8次,當(dāng)S31為低電平時(shí),發(fā)光二極管僅D19點(diǎn)亮;當(dāng)S32為高電
4、平時(shí),P0口所接的發(fā)光二極管(D19D26)以一定的速度自右至左循環(huán)點(diǎn)亮8次,當(dāng)S32為低電平時(shí),發(fā)光二極管僅D19點(diǎn)亮。請(qǐng)編寫程序并完成調(diào)試。四、實(shí)驗(yàn)步驟1自行編寫程序,將實(shí)驗(yàn)箱電源開關(guān)撥至USB供電,并將撥碼開關(guān)總開關(guān)S44撥至“開”狀態(tài)。2下載程序并運(yùn)行程序,改變開關(guān)狀態(tài),觀察發(fā)光二極管顯示結(jié)果。五、思考題1撥動(dòng)8個(gè)輸入開關(guān)(S31S38),把8位數(shù)據(jù)送到P1口,CPU從P1口讀入8個(gè)開關(guān)(S31S38)的狀態(tài)數(shù)據(jù),任意使用其中的兩個(gè)開關(guān)控制P0口發(fā)光二極管(D19D26)自左至右、自右至左、自中間至兩邊、自兩邊至中間不斷循環(huán)點(diǎn)亮。請(qǐng)編寫程序并調(diào)試。28個(gè)撥碼開關(guān)(S31S38)實(shí)現(xiàn)對(duì)P
5、0口發(fā)光二極管的亮度控制。依次撥上開關(guān)S31、S32S38,發(fā)光二極管由暗變亮;依次撥下開關(guān)S38、S37S31,發(fā)光二極管由亮變暗。分析:本題存在一定的矛盾與歧義,首先是“一定的速度自左至右循環(huán)點(diǎn)亮8次”,8次是一個(gè)燈亮算一次還是led燈走一個(gè)流程算一次?再者,當(dāng)兩個(gè)燈都為高電平時(shí),一個(gè)自右向左一個(gè)自左向右具有不可協(xié)調(diào)性。為了方便實(shí)驗(yàn)展示,我們?cè)O(shè)置了兩個(gè)標(biāo)志位flag1和flag2。是移位寄存器,其中包含_crol_,_cror_,_irol_,irol_等移位函數(shù),_crol_指char型數(shù)左移(left),以此類推。實(shí)驗(yàn)程序代碼: #include #include #define uc
6、har unsigned char #define d1 255 sbit S31=P10; sbit S32=P11; sbit D19=P00; void delay(uchar d) uchar b;while(-d)for(b=255;b0;b-) _nop_(); void main() uchar sel,i,k1=1,k2=1;while(1)if(S31=0) D19=0; if(S32=1& k1) sel=0xfe; for(i=0;i8;i+) P0=sel; delay(d1); sel=_crol_(sel,1); k1=0;k2=1; if(S32=0) D19=0
7、; if(S31=1& k2) sel=0xfe; for(i=0;i8;i+) P0=sel; delay(d1); sel=_cror_(sel,1); k2=0; k1=0; 本實(shí)驗(yàn)也可不使用移位寄存器,改用數(shù)組char code table=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f用for循環(huán),把值依次;賦值給P0口,進(jìn)行流水燈顯示。思考題1代碼: #include #include #define uchar unsigned char #define d1 255 /宏定義 void delay(uchar d) uchar b;while(-
8、d)for(b=255;b0;b-) _nop_(); /空操作 void main() uchar temp,sel; while(1)temp=p1&0xff; /檢測(cè)按鍵 switch(temp) case 0xff:/左移 sel=0xfe; for(i=0;i8;i+) P0=sel; delay(d1); sel=_crol_(sel,1); break;case 0xfe:/右移 sel=0xfe; for(i=0;i8;i+) P0=sel; delay(d1); sel=_cror_(sel,1); break; case 0xfd: /兩邊向中間 P0=0x7e;delay
9、(d1);P0=0xbd;delay(d1);P0=0xdb;delay(d1);P0=0xe7;delay(d1);break; case 0xfb: /中間向兩邊 P0=0xe7;delay(d1);P0=0xdb;delay(d1);P0=0xbd;delay(d1);P0=0x7e;delay(d1);break;default:break; 實(shí)驗(yàn)三 報(bào)警產(chǎn)生器一、實(shí)驗(yàn)?zāi)康?、掌握單片機(jī)實(shí)驗(yàn)箱的使用方法與程序調(diào)試技巧;2、學(xué)會(huì)使用51系列單片機(jī)I/O的基本輸入輸出功能及相應(yīng)的驅(qū)動(dòng)模塊的設(shè)計(jì)。二、實(shí)驗(yàn)設(shè)備單片機(jī)實(shí)驗(yàn)箱一臺(tái);PC機(jī)一臺(tái);USB下載線一根。三、實(shí)驗(yàn)內(nèi)容用P1.0輸出1KHz和
10、500Hz的音頻信號(hào)驅(qū)動(dòng)揚(yáng)聲器,作報(bào)警信號(hào),要求1KHz信號(hào)響100ms,500Hz信號(hào)響200ms,交替進(jìn)行,由開關(guān)K1控制輸出與否,當(dāng)開關(guān)合上響報(bào)警信號(hào),當(dāng)開關(guān)斷開報(bào)警信號(hào)停止,請(qǐng)按流程圖編出程序,流程圖中的開關(guān)K1為實(shí)驗(yàn)一原理圖中的S38。開關(guān)K1按下即S38為高電平,開關(guān)K1未按下即S38為低電平。圖3-1所示為蜂鳴器驅(qū)動(dòng)電路,圖3-2所示為程序流程圖。圖3-1蜂鳴器接口電路圖3-2 程序流程圖四、實(shí)驗(yàn)步驟1.信號(hào)產(chǎn)生的方法:500Hz信號(hào)周期為2ms,信號(hào)電平為每1ms變反1次;1KHz的信號(hào)周期為1ms,信號(hào)電平每500us變反1次。2. 編寫程序,將實(shí)驗(yàn)箱電源開關(guān)撥至USB供電,
11、并將撥碼開關(guān)總開關(guān)S44撥至“關(guān)”狀態(tài)。3. 下載程序并運(yùn)行程序,將蜂鳴器開關(guān)S1打開,控制蜂鳴器發(fā)聲。五、思考題1簡(jiǎn)述你在本次實(shí)驗(yàn)中遇到過哪些問題?這些問題是怎樣解決的?有何收獲和體會(huì)?2. 本實(shí)驗(yàn)的硬件通過編程可以演奏出悅耳的樂曲、可以實(shí)現(xiàn)報(bào)警聲、門鈴聲音。現(xiàn)要求單片機(jī)產(chǎn)生“嘀、嘀、”報(bào)警聲從P1.0端口輸出,產(chǎn)生頻率為1KHz。當(dāng)1KHZ方波從P1.0輸出0.2秒,接著0.2秒從P1.0輸出電平信號(hào),如此循環(huán)下去時(shí),就形成所需的報(bào)警聲了。請(qǐng)有興趣的同學(xué)編程調(diào)試。程序代碼: #include #include #define uint unsigned int sbit S38=P17;
12、sbit BUZZ=P10; void delay() uchar b;for(b=63;b0;b-) /調(diào)用一次約為500us _nop_(); void main() while(1) uint FLAG=1,i; while(S38=1)/按鍵按下 if(FLAG) for(i=0;i200;i+) /500hz BUZZ=BUZZ;delay();delay(); FLAG=FLAG; else for(i=0;i200;i+) /1000hz BUZZ=BUZZ;delay(); FLAG=FLAG; 思考題2代碼: #include #include #define uchar u
13、nsigned char sbit S38=P17; sbit BUZZ=P10; void delay() uchar b; for(b=63;b0;b-) _nop_(); void main() while(1) uchar i; while(S38=1) for(i=0;i0;i-) /延時(shí)0.2s delay(); 實(shí)驗(yàn)四 外部中斷實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?、學(xué)習(xí)外部中斷技術(shù)的基本使用方法2、中斷處理的編程方法。二、實(shí)驗(yàn)設(shè)備單片機(jī)實(shí)驗(yàn)箱一臺(tái);PC機(jī)一臺(tái);USB下載線一根。三、實(shí)驗(yàn)內(nèi)容單片機(jī)外部中斷0(P3.2)已與獨(dú)立式鍵盤中S27連接,外部中斷1(P3.3)已與S28連接,要求在無外部中斷
14、時(shí)最右一位發(fā)光二極管(D26)點(diǎn)亮。請(qǐng)編程實(shí)現(xiàn):當(dāng)S27按下,外部中斷0請(qǐng)求中斷,控制發(fā)光二極管左移;當(dāng)S28按下,外部中斷1請(qǐng)求中斷,控制發(fā)光二極管閃爍。(要求外部中斷1優(yōu)先級(jí)高于外部中斷0)。單片機(jī)與發(fā)光二極管的連續(xù)見實(shí)驗(yàn)一原理圖,獨(dú)立式鍵盤原理圖如圖4-1所示。4-1 獨(dú)立式鍵盤原理圖四、思考題151單片機(jī)的中斷系統(tǒng)由哪幾個(gè)特殊功能寄存器組成? 2中斷函數(shù)與函數(shù)調(diào)用有何不同? 3MCS-51單片機(jī)若要把外部中斷源擴(kuò)充為6個(gè),另采用哪些方法?如何確定其優(yōu)先級(jí)? 程序代碼:#include#includesbit D26=P07;void delay() int a,b; for(a=120
15、;a0;a-) for(b=110;b0;b-); void main() IT0=0; IT1=0; EX0=1; EX1=1; EA=1; PX0=0; PX1=1; while(1) D26=0; void int1(void) interrupt 2 using 1 P0=0x00; delay(); P0=0xff; delay();void int0(void) interrupt 0 using 0int sel,i; sel=0xfe; for(i=0;i8;i+) P0=sel;delay();sel=_crol_(sel,1);仿真圖:實(shí)驗(yàn)五 數(shù)碼管實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?、學(xué)習(xí)
16、并掌握74HC573鎖存器的使用方法;2、學(xué)會(huì)使用8段共陰極數(shù)碼管的動(dòng)態(tài)顯示方法。二、實(shí)驗(yàn)設(shè)備單片機(jī)實(shí)驗(yàn)箱一臺(tái);PC機(jī)一臺(tái);USB下載線一根。三、實(shí)驗(yàn)內(nèi)容通過編程,實(shí)現(xiàn)8段數(shù)碼管的動(dòng)態(tài)掃描顯示,要求8個(gè)數(shù)碼管從左到右分別顯示“1”、“2”、“3”、“4”、“A”、“b”、“C”、“d”。數(shù)碼管接口電路如圖5-1所示:圖5-1數(shù)碼管接口電路原理圖四、思考題1何謂數(shù)碼管的動(dòng)態(tài)顯示,其原理是什么?2簡(jiǎn)述鎖存器的工作原理,在本實(shí)驗(yàn)中具有什么作用?程序代碼:#includesbit wela=P37;sbit dula=P36;char code t8=0x06,0x5b,0x4f,0x66,0x77,
17、0x7c,0x39,0x5e;char code t18=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe;void delayms(char xms)char a,b;for(a=xms;a0;a-)for(b=125;b0;b-);void main()char i; while(1) for(i=0;i8;i+) dula=1; wela=0; P0=ti; dula=0; wela=1; P0=t1i; delayms(10); P0=0XFF; 仿真圖:實(shí)驗(yàn)六 定時(shí)器/計(jì)數(shù)器實(shí)驗(yàn)(一)一、實(shí)驗(yàn)?zāi)康恼莆諉纹瑱C(jī)定時(shí)器和定時(shí)中斷的編程方法。二、實(shí)驗(yàn)設(shè)備單片機(jī)實(shí)
18、驗(yàn)箱一臺(tái);PC機(jī)一臺(tái);USB下載線一根。三、實(shí)驗(yàn)內(nèi)容編寫實(shí)驗(yàn)程序,實(shí)現(xiàn)59秒倒計(jì)時(shí)功能,初始狀態(tài)數(shù)碼管最后兩位顯示數(shù)字“59”,要求定時(shí)器0每10ms產(chǎn)生一次中斷,在定時(shí)中斷服務(wù)程序里進(jìn)行計(jì)數(shù),計(jì)數(shù)滿一秒,數(shù)碼管顯示相應(yīng)減1,倒計(jì)時(shí)結(jié)束時(shí),數(shù)碼管顯示“00”,并以周期1秒進(jìn)行閃爍,單片機(jī)與數(shù)碼管接口電路原理圖見實(shí)驗(yàn)五中圖5-1所示。四、思考題1畫出主程序和定時(shí)中斷流程圖;2實(shí)驗(yàn)中有何故障、問題出現(xiàn),是否得到解決?如何解決的?程序代碼:#includesbit wela=P37;sbit dula=P36;char code table10=0x3f,0x06,0x5b,0x4f,0x66,0x
19、6d,0x7d,0x07,0x7f,0x6f;char numd=59,num;void delayms(char xms)char a,b;for(a=xms;a0;a-)for(b=125;b0;b-);void display()char shi,ge;shi=numd/10;ge=numd%10;dula=1; wela=0; P0=tableshi;dula=0; wela=1; P0=0xfe; delayms(10); P0=0XFF;dula=1; wela=0; P0=tablege;dula=0; wela=1; P0=0xfd; delayms(10); P0=0XFF;
20、void main() char flag=1; TMOD=0X01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; ET0=1; EA=1; while(1) if(num=100) num=0;if(numd)numd-;else if(flag)flag=0; elseflag=1; if(flag)display(); void timer0() interrupt 1TH0=(65536-50000)/256; TL0=(65536-50000)%256;num+;本實(shí)驗(yàn)巧用標(biāo)志位,老師都夸我邏輯好仿真圖:實(shí)驗(yàn)七 定時(shí)器/計(jì)
21、數(shù)器實(shí)驗(yàn)(二)一、實(shí)驗(yàn)?zāi)康?、掌握單片機(jī)定時(shí)器/計(jì)數(shù)器的工作方式和編程原理;2、掌握外部脈沖計(jì)數(shù)方法。二、實(shí)驗(yàn)設(shè)備及器材單片機(jī)實(shí)驗(yàn)箱一臺(tái);PC機(jī)一臺(tái);USB下載線一根。三、實(shí)驗(yàn)內(nèi)容單片機(jī)的定時(shí)器/計(jì)數(shù)器就是一個(gè)16位二進(jìn)制加法計(jì)數(shù)器,當(dāng)選擇計(jì)數(shù)模式時(shí),計(jì)數(shù)脈沖來自于外部引腳P3.4(T0),P3.5(T1),因此,只需要初始化時(shí)將計(jì)數(shù)寄存器清零,啟動(dòng)計(jì)數(shù)器,然后讀取計(jì)數(shù)寄存器的數(shù)值即可知外部脈沖個(gè)數(shù)。編寫程序?qū)崿F(xiàn)對(duì)T0引腳輸入的外部脈沖進(jìn)行計(jì)數(shù),并在數(shù)碼管上顯示計(jì)數(shù)結(jié)果。外部脈沖由獨(dú)立按鍵S29產(chǎn)生,要求S29每按一次,產(chǎn)生一個(gè)脈沖,數(shù)碼管顯示的數(shù)字加1。畫出程序流程圖,編寫程序,并下載調(diào)試。
22、獨(dú)立式按鍵原理圖見實(shí)驗(yàn)四中圖4-1所示,單片機(jī)與數(shù)碼管接口電路原理圖見實(shí)驗(yàn)五中圖5-1所示。四、思考題1、按鍵的抖動(dòng)對(duì)本實(shí)驗(yàn)有何影響?如何消除?2、請(qǐng)?jiān)O(shè)計(jì)程序,實(shí)現(xiàn)每當(dāng)外部脈沖計(jì)數(shù)達(dá)到5個(gè)時(shí),數(shù)碼管顯示的數(shù)字加1。程序代碼:#includesbit t0=P34;sbit wela=P37;sbit dula=P36;char code table10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;char code t5=0xef,0xf7,0xfb,0xfd,0xfe;char numd;void delayms(char xms)ch
23、ar a,b;for(a=xms;a0;a-)for(b=125;b0;b-);void display() char num4,i; num0=numd%10; num1=numd%100/10; num2=numd%1000/100; num3=numd/1000%10; num4=numd/10000; for(i=0;i5;i+) wela=0;dula=1; P0=tablenumi; wela=1; dula=0; P0=ti; delayms(10); P0=0xff; void main() TMOD=0X05; TL0=0; TH0=0; TR0=1; ET0=1; EA=1
24、; while(1) numd=TL0; display(); 思考題2部分,只要在主函數(shù)while(1)循環(huán)中,把numd=TL0;改為numd=TL0/5;即可。本實(shí)驗(yàn)計(jì)數(shù)的上限是65535,到達(dá)65535次自動(dòng)歸0。仿真圖:本題的抖動(dòng)問題,是用硬件消除的,在軟件部分不顯示。之前不知道可以不去抖動(dòng),軟件試了很多次都不成功。老師后來說軟件是沒法弄的,總覺得是可以的,你可以試試。實(shí)驗(yàn)八 串口通信實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?、掌握串行口的工作方式及其設(shè)置;2、掌握串行口工作方式1的應(yīng)用;3、掌握串行口的波特率設(shè)置。二、實(shí)驗(yàn)設(shè)備及器材單片機(jī)實(shí)驗(yàn)箱一臺(tái);PC機(jī)一臺(tái);USB下載線一根。三、實(shí)驗(yàn)內(nèi)容自行編制程:要
25、求利用PL2303實(shí)現(xiàn)51單片機(jī)串口通信,51單片機(jī)發(fā)送數(shù)據(jù),利用串口調(diào)試助手接收并查看數(shù)據(jù),串口通信原理圖如圖7-1所示,PL2003實(shí)現(xiàn)串口轉(zhuǎn)USB原理圖如圖7-2所示。(1)51單片機(jī)發(fā)送十六進(jìn)制“5A”到PC機(jī);(2)51單片機(jī)發(fā)送字符串“0123456789”到PC機(jī)。圖7-1 單片機(jī)與PC機(jī)串行通信原理圖圖7-2 串口轉(zhuǎn)USB原理圖四、思考題1.串行通信中波特率是如何進(jìn)行設(shè)置的?2.串行通信4種方式有何區(qū)別?3.設(shè)計(jì)程序?qū)崿F(xiàn)PC機(jī)發(fā)送數(shù)據(jù),51單片機(jī)接收數(shù)據(jù),并將接收的數(shù)發(fā)送至P0口。實(shí)驗(yàn)1程序代碼:#includevoid main() char message=0x5a; TM
26、OD=0X20;TH1=0XFD;TL1=0XFD;TR1=1;REN=1;SM0=0;SM1=1;EA=1;ES=1; while(1) SBUF=message; while(!TI); TI=0; 實(shí)驗(yàn)2程序代碼:#includevoid main() char message=0123456789,i; TMOD=0X20; TH1=0XFD; TL1=0XFD; TR1=1; SM0=0; /串口工作方式選擇位10位異步收發(fā),波特率由定時(shí)器1控制 SM1=1; REN=1; /允許串口接收位 EA=1; ES=1; while(1) i=0; while(messagei!=0)SB
27、UF=messagei;while(!TI);TI=0;i+; 代碼中,char message=0123456789不可改為char code message=0,1,2,3,4,5,6,7,8,9;否則不可使用while(messagei!=0)判斷。思考題代碼:#includechar date,flag;void init() TMOD=0X20; TH1=1; TL1=1; TR1=1; SM0=0; SM1=1; REN=1; EA=1; ES=1;void main() init(); while(1) if(flag) SBUF=date; while(!TI); TI=0;
28、P0=date; void chuankou() interrupt4RI=0;date=SBUF;flag=1;實(shí)驗(yàn)九 8255接口擴(kuò)展(一)一、實(shí)驗(yàn)?zāi)康恼莆諉纹瑱C(jī)外部擴(kuò)展接口技術(shù),熟悉8255的擴(kuò)展方法及其性能。二、實(shí)驗(yàn)設(shè)備及器材單片機(jī)實(shí)驗(yàn)箱一臺(tái);PC機(jī)一臺(tái);USB下載線一根。三、實(shí)驗(yàn)內(nèi)容及步驟(1)自行編制程序:要求用8255的PA口接按鍵作輸入口,PB口接發(fā)光二極管作輸出口;從PA口讀取輸入的按鍵狀態(tài)送到PB口以發(fā)光二極管顯示。(2)自行編制程序:要求用8255的B口做輸出口,控制八位發(fā)光二極管的亮、滅,使發(fā)光二極管從左向右移位點(diǎn)亮,再?gòu)挠蚁蜃笠莆稽c(diǎn)亮。(3)請(qǐng)?jiān)趯?shí)驗(yàn)箱上用8255實(shí)現(xiàn)
29、以下功能:8255 B、C口輸出方波,即在8255的B、C口可觀察發(fā)光二極管的閃爍變化。圖9-1 8255接口擴(kuò)展原理圖四、思考題1.8255的功能是什么?2. 如何計(jì)算8255的端口地址?實(shí)驗(yàn)1程序代碼:#include #include#define PA XBYTE0xbcff#define PB XBYTE0xbd0f#define PC XBYTE0xbeff#define COM8255 XBYTE0xbfffvoid delayms(int a)int n,m;for (n=a;n-;n0) for (m=125;m0;m-);void main()COM8255=0x90;wh
30、ile(1)PB=PA;delayms(100);實(shí)驗(yàn)2代碼:#include #include#define PA XBYTE0xbcff#define PB XBYTE0xbdff#define PC XBYTE0xbeff#define COM8255 XBYTE0xbfff char code table=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;void delayms(int a)int n,m;for (n=a;n-;n0) for (m=110;m-;m0);void main()char i;COM8255=0x80;while(1)fo
31、r(i=0;i=0;i-) PB=tablei; delayms(100);實(shí)驗(yàn)3代碼:#include #include#define PA XBYTE0xbcff#define PB XBYTE0xbdff#define PC XBYTE0xbeff#define COM8255 XBYTE0xbfffvoid delayms(int a)int n,m;for (n=a;n-;n0) for (m=110;m-;m0);void main() COM8255=0x80; while(1)PB=0x00; PC=0x00;delayms(50);PB=0XFF;PC=0XFF;delaym
32、s(50); 實(shí)驗(yàn)十 8255接口擴(kuò)展(二)一、實(shí)驗(yàn)?zāi)康恼莆湛删幊蘄/O接口芯片8255的接口原理,熟悉對(duì)8255初始化編程和輸入、輸出軟件的設(shè)計(jì)方法。二、實(shí)驗(yàn)設(shè)備單片機(jī)實(shí)驗(yàn)箱一臺(tái);PC機(jī)一臺(tái);USB下載線一根。三、實(shí)驗(yàn)內(nèi)容自行編制程序用8255實(shí)現(xiàn)交通紅綠燈的控制。其控制要求如下:(a)初始狀態(tài)全為紅燈。(b)南北紅燈亮并維持25s。在南北紅燈亮的同時(shí),東西綠燈也亮,并維持20s。到20s時(shí),東西綠燈閃亮,閃亮3s后熄滅,在東西綠燈熄滅時(shí),東西黃燈亮,并維持2s。到2s時(shí),東西黃燈熄滅,東西紅燈亮。與此同時(shí),南北紅燈熄滅,南北綠燈亮。(c)東西紅燈亮維持30s。南北綠燈亮維持25s,然后閃亮
33、3s再熄滅。同時(shí)南北黃燈亮,維持2s后熄滅,這時(shí)南北紅燈亮,東西綠燈亮。(d)周而復(fù)始。其時(shí)序如圖10-1所示。實(shí)驗(yàn)原理圖見實(shí)驗(yàn)九中的圖9-1。 圖10-1交通燈控制時(shí)序圖五、思考題1.8255的功能是什么?2. 如何計(jì)算8255的端口地址?本題試驗(yàn)箱沒有方向設(shè)置,故而編程時(shí)忽略了方向方面的設(shè)置。PC口接的led燈依次為紅、綠、黃(還有一個(gè)燈顏色忘記了,)然后又是紅、綠、黃這個(gè)程序主函數(shù)while(1)部分設(shè)置的非常好,簡(jiǎn)潔明了。我看過別人寫的麻煩的。實(shí)驗(yàn)代碼:#include#include#define PC XBYTE0xbeff#define COM8255 XBYTE0xbfff#d
34、efine uint unsigned int#define uchar unsigned charint num;void delayms(uint xms)/延時(shí)函數(shù) uint a,b; for(a=xms;a0;a-) for(b=125;b0;b-);void main() TMOD=0X01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; ET0=1; EA=1; COM8255=0x80; PC=0X3F;/初始紅燈 while(1) while(num=400) /紅綠20sPC=0X4b;num=0;while(num
35、=60) /綠閃爍3s,紅亮 PC=0X6f; delayms(100); PC=0X4b; delayms(100);num=0;while(num=40) /紅黃2sPC=0X27;num=0;while(num=500) /紅綠25sPC=0x4b;num=0;while(num=60) /綠閃爍3s,紅亮PC=0x6f;delayms(100);PC=0x4b;delayms(100);num=0;while(num=40) /紅黃2s PC=0X27; void timer0() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%2
36、56;num+;實(shí)驗(yàn)十一 矩陣鍵盤識(shí)別實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康模?)掌握44矩陣鍵盤的工作原理和鍵盤的掃描方式。(1)掌握鍵盤的去抖方法和鍵盤應(yīng)用程序的設(shè)計(jì)。二、實(shí)驗(yàn)設(shè)備單片機(jī)實(shí)驗(yàn)箱一臺(tái);PC機(jī)一臺(tái);USB下載線一根。三、實(shí)驗(yàn)內(nèi)容自行編制程序,用51單片機(jī)實(shí)現(xiàn)44矩陣鍵盤掃描,采用線反轉(zhuǎn)法;并實(shí)現(xiàn)當(dāng)S11按下時(shí)在數(shù)碼管上顯值“0”,當(dāng)S12按下時(shí)在數(shù)碼管上顯值“1”,即依次將S11至S26按下,在數(shù)碼管上依次顯示十六進(jìn)制數(shù)“0-F”,矩陣鍵盤原理圖如圖11-1所示。單片機(jī)與數(shù)碼管接口電路原理圖見實(shí)驗(yàn)五中圖5-1所示。圖11-1矩陣鍵盤接口電路四、思考題1畫出所編程序的流程圖;2若要實(shí)現(xiàn)24矩陣鍵盤,軟
37、硬件作如何修改。3實(shí)驗(yàn)中有何故障、問題出現(xiàn),是否得到解決?如何解決的?實(shí)驗(yàn)代碼:#include#define uchar unsigned char#define uint unsigned intsbit dula=P36;sbit wela=P37;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void delayms(uchar xms) uchar a,b;for(a=xms;a0;a-)for(b=125;b0;b-); void display(uchar a) dula=1;/wela=0; P0=tablea; dula=0; /wela=1;/ P0=0xfe; /delayms(10); / P0=0xff;uchar fun()uchar number,temp;P2 = 0xfe;temp = P2;temp = temp&0xf0;while(temp!=0xf
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 吉林女子學(xué)校面試真題及答案
- 《設(shè)計(jì)元素與視覺美》課件
- 《中式點(diǎn)心制作工藝》課件
- 臨床高血壓全周期管理指南
- 《分子生物學(xué)實(shí)驗(yàn)技術(shù)》課件
- 外貿(mào)員薪資技巧培訓(xùn)課件
- 胸椎骨折內(nèi)固定技術(shù)課件
- (07臨床本科)系統(tǒng)解剖學(xué)標(biāo)本考試
- -內(nèi)能與熱機(jī)復(fù)習(xí)
- 專題08 自然災(zāi)害和地理信息技術(shù)- 2025年十年高考地理真題分項(xiàng)匯編(解析卷)
- RFJ05-2009-DQ人民防空工程電氣大樣圖集
- 畢業(yè)設(shè)計(jì)(論文)-純電動(dòng)汽車電池管理系統(tǒng)(bms)管理資料
- 醫(yī)療機(jī)構(gòu)消毒技術(shù)規(guī)范(2023年版)
- 中國(guó)古代文學(xué)史 馬工程課件(下)10第七編明代文學(xué) 第九章 晚明詩(shī)文
- GB/T 7600-2014運(yùn)行中變壓器油和汽輪機(jī)油水分含量測(cè)定法(庫(kù)侖法)
- 農(nóng)戶貸款管理辦法銀監(jiān)發(fā)〔2012〕50號(hào)
- 兒科-補(bǔ)液-液體療法課件
- 優(yōu)生優(yōu)育TORCH檢測(cè)臨床意義與臨床咨詢課件
- 《踏雪尋梅》合唱譜
- 醫(yī)院感染臺(tái)賬【范本模板】
- 高等數(shù)學(xué)上冊(cè)ppt課件完整版
評(píng)論
0/150
提交評(píng)論