《單片機原理及應用系統(tǒng)設計》課件第8章_第1頁
《單片機原理及應用系統(tǒng)設計》課件第8章_第2頁
《單片機原理及應用系統(tǒng)設計》課件第8章_第3頁
《單片機原理及應用系統(tǒng)設計》課件第8章_第4頁
《單片機原理及應用系統(tǒng)設計》課件第8章_第5頁
已閱讀5頁,還剩91頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

實驗1閃爍燈

實驗2模擬開關(guān)燈

實驗3多路開關(guān)狀態(tài)指示

實驗4廣告燈設計

實驗5廣告燈(利用取表方式)

實驗6報警器

實驗7I/O并行口直接驅(qū)動LED顯示

實驗8按鍵識別方法之一

實驗900~99計數(shù)器

實驗10動態(tài)數(shù)碼顯示技術(shù)第八章單片機應用實驗

1.實驗目的

2.實驗設備

3.實驗原理

(1)延時程序的設計方法。圖8-1所示石英晶體的晶振頻率為12MHz,因此,1個機器周期為1μs。實驗1閃爍燈機器周期微秒

MOVR6,#202個2

D1:

MOVR7,#2482個2

2+2×248=49820×498

DJNZR7,$2個2×248

+2+40

DJNZR6,D12個2×20=40

=10002

因此,上面的延時程序時間為10.002ms。

由以上可知,當R6=10、R7=248時,延時5ms;當R6=20、R7=248時,延時10ms。以此為基本的計時單位,如本實驗要求0.2s=200ms,10ms×R5=200ms,則R5=20,那么延時子程序如下:

DELAY:MOVR5,#20

D1:

MOVR6,#20

D2:MOVR7,#248

DJNZR7,$

DJNZR6,D2

DJNZR5,D1

RET

(2)輸出控制。如圖8-1所示,當P1.0端口輸出高電平,即P1.0=1時,根據(jù)發(fā)光二極管的單向?qū)щ娦钥芍?這時發(fā)光二極管L1熄滅;當P1.0端口輸出低電平,即P1.0=0時,發(fā)光二極管L1亮;我們可以使用SETB

P1.0指令使P1.0端口輸出高電平,使用CLR

P1.0指令使P1.0端口輸出低電平。圖8-1

4.實驗線路(見圖8-1)

5.實驗步驟

把“單片機系統(tǒng)”區(qū)域中的P1.0端口用導線連接到“8路發(fā)光二極管指示模塊”區(qū)域中的L1端口上。

6.程序框圖與參考程序

(1)程序框圖如圖8-2所示。圖8-2

(2)參考程序。

①匯編程序如下:

ORG0

START:CLRP1.0

LCALLDELAY

SETBP1.0

LCALLDELAY

LJMPSTART

DELAY:MOVR5,#20;延時子程序,延時0.2s

D1: MOVR6,#20

D2: MOVR7,#248

DJNZR7,$

DJNZR6,D2

DJNZR5,D1

RET

END②C語言源程序如下:

#include〈AT89X51.H〉

sbitL1=P1^0;

voiddelay02s(void)//延時0.2s子程序

{

unsignedchari,j,k;

for(i=20;i>0;i--)

for(j=20;j>0;j--)

for(k=248;k>0;k--);

}voidmain(void)

{

while(1)

{

L1=0;

delay02s();

L1=1;

delay02s();

}

}

1.實驗目的

2.實驗設備

3.實驗原理

(1)開關(guān)狀態(tài)的檢測過程。

(2)輸出控制。

4.實驗線路(見圖8-3)實驗2模擬開關(guān)燈圖8-3

5.實驗步驟

(1)把“單片機系統(tǒng)”區(qū)域中的P1.0端口用導線連接到“8路發(fā)光二極管指示模塊”區(qū)域中的L1端口上;

(2)把“單片機系統(tǒng)”區(qū)域中的P3.0端口用導線連接到“8路撥動開關(guān)”區(qū)域中的S1端口上。

6.程序框圖與參考程序

(1)程序框圖如圖8-4所示。圖8-4

(2)參考程序。

①匯編源程序如下:

ORG00H

START:JBP3.0,LIG

CLRP1.0

SJMPSTART

LIG:

SETBP1.0

SJMPSTART

ENDA②C語言源程序如下:

#include〈AT89X51.H〉

sbitK1=P3^0;

sbitL1=P1^0;

voidmain(void)

{

while(1)

{

if(K1==0)

{

L1=0;//燈亮

}

else

{

L1=1;//燈滅

}

}

}

1.實驗目的

2.實驗設備

3.程序原理

(1)開關(guān)狀態(tài)檢測。

(2)輸出控制。

4.實驗線路(見圖8-5)實驗3多路開關(guān)狀態(tài)指示圖8-5

5.實驗步驟

(1)把“單片機系統(tǒng)”區(qū)域中的P1.0~P1.3用導線連接到“8路發(fā)光二極管指示模塊”區(qū)域中的L1~L4端口上;

(2)把“單片機系統(tǒng)”區(qū)域中的P1.4~P1.7用導線連接到“8路撥動開關(guān)”區(qū)域中的S1~S4端口上。

6.程序框圖與參考程序

(1)程序框圖如圖8-6所示。圖8-6

(2)參考程序。

方法一:

①匯編源程序如下:

ORG00H

START:

MOVA,P1

ANLA,#0F0H

RRA

RRA

RRA

RRA

XORA,#0F0H

MOVP1,A

SJMPSTART

END②C語言源程序如下:

#include〈AT89X51.H〉

unsignedchartemp;

voidmain(void)

{

while(1)

{

temp=P1>>4;

temp=temp|0xf0;

P1=temp;

}

}方法二:

①匯編源程序如下:

ORG00H

START:

JBP1.4,NEXT1

CLRP1.0

SJMPNEX1

NEXT1:

SETBP1.0

NEX1:

JBP1.5,NEXT2

CLRP1.1

SJMPNEX2

NEXT2:

SETBP1.1

NEX2:

JBP1.6,NEXT3

CLRP1.2

SJMPNEX3 NEXT3:SETBP1.2

NEX3:

JBP1.7,NEXT4

CLRP1.3

SJMPNEX4

NEXT4:SETBP1.3

NEX4:SJMPSTART

END②C語言源程序如下:

#include〈AT89X51.H〉

voidmain(void)

{

while(1)

{

if(P1_4==0)

{

P1_0=0;

}

else{

P1_0=1;

}

if(P1_5==0)

{

P1_1=0;

}

else

{

P1_1=1;

}

if(P1_6==0)

{

P1_2=0;

}

else

{

P1_2=1;

}

if(P1_7==0)

{

P1_3=0;

}

else

{

P1_3=1;

}

}

}

1.實驗目的

(1)了解單片機最小系統(tǒng);

(2)熟悉并掌握P1口的使用方法;

(3)學習單片機實驗系統(tǒng)的使用方法和程序的調(diào)試方法。

2.實驗設備

單片機最小系統(tǒng)試驗箱,導線若干,計算機。實驗4廣告燈設計

3.實驗原理

我們可以通過執(zhí)行輸出端口指令MOV

P1,A或MOV

P1,#DATA,即可達到輸出控制的動作。

每次送出的數(shù)據(jù)不同,具體的數(shù)據(jù)如表所示。

4.實驗步驟

把“單片機系統(tǒng)”區(qū)域中的P1.0~P1.7用8芯排線連接到“8路發(fā)光二極管指示模塊”區(qū)域中的L1~L8端口上,要求:P1.0對應著L1,P1.1對應著L2,…,P1.7對應著L8。

5.實驗線路(見圖8-7)圖8-7

6.程序框圖和參考程序

(1)程序框圖如圖8-8所示。圖8-8

(2)參考程序。

①匯編源程序如下:

ORG0

START:MOVR2,#8

MOVA,#0FEH

SETBC

LOOP:

MOVP1,A

LCALLDELAY

RLCA

DJNZR2,LOOP

MOVR2,#8 LOOP1:

MOVP1,A

LCALLDELAY

RRCA

DJNZR2,LOOP1

LJMPSTART

DELAY:MOVR5,#20;

D1:

MOVR6,#20

D2:

MOVR7,#248

DJNZR7,$

DJNZR6,D2

DJNZR5,D1

RET

END②C語言源程序如下:

#include〈AT89X51.H〉

unsignedchari;

unsignedchartemp;

unsignedchara,b;

voiddelay(void)

{

unsignedcharm,n,s;

for(m=20;m>0;m--)

for(n=20;n>0;n--)

for(s=248;s>0;s--);

}voidmain(void)

{

while(1)

{

temp=0xfe;

P1=temp;

delay();

for(i=1;i<8;i++)

{

a=temp<<i;

b=temp>>(8-i);

P1=a|b;

delay();

}

for(i=1;i<8;i++)

{

a=temp>>i;

b=temp<<(8-i);

P1=a|b;

delay();

}

}

}

1.實驗目的

(1)了解單片機最小系統(tǒng):

(2)熟悉并掌握P1口的使用方法;

(3)學習單片機實驗系統(tǒng)的使用方法和程序的調(diào)試方法。

2.實驗設備

單片機最小系統(tǒng)試驗箱,導線若干,計算機。

3.實驗原理實驗5廣告燈(利用取表方式)

4.實驗線路(見圖8-9)

圖8-9

5.實驗步驟

把“單片機系統(tǒng)”區(qū)域中的P1.0~P1.7用8芯排線連接到“8路發(fā)光二極管指示模塊”區(qū)域中的L1~L8端口上,要求:P1.0對應著L1,P1.1對應著L2,…,P1.7對應著L8。

6.程序框圖與參考程序

(1)程序框圖如圖8-10所示。圖8-10

(2)參考程序。

①匯編源程序如下:

ORG0

START:MOVDPTR,#TABLE

LOOP:CLRA

MOVCA,@A+DPTR

CJNEA,#01H,LOOP1

JMPSTART

LOOP1:MOVP1,A

MOVR3,#20

LCALLDELAY

INCDPTR

JMPLOOP

DELAY:MOVR4,#20

D1:

MOVR5,#248

DJNZR5,$

DJNZR4,D1

DJNZR3,DELAY

RET TABLE:DB0FEH,0FDH,0FBH,0F7H

DB0EFH,0DFH,0BFH,07FH

DB0FEH,0FDH,0FBH,0F7H

DB0EFH,0DFH,0BFH,07FH

DB07FH,0BFH,0DFH,0EFH

DB0F7H,0FBH,0FDH,0FEH

DB07FH,0BFH,0DFH,0EFH

DB0F7H,0FBH,0FDH,0FEH

DB00H,0FFH,00H,0FFH

DB01H

END②C語言源程序如下:

#include〈AT89X51.H〉

unsignedcharcodetable[]={0xfe,0xfd,0xfb,0xf7,

0xef,0xdf,0xbf,0x7f,

0xfe,0xfd,0xfb,0xf7,

0xef,0xdf,0xbf,0x7f,

0x7f,0xbf,0xdf,0xef,

0xf7,0xfb,0xfd,0xfe,

0x7f,0xbf,0xdf,0xef,

0xf7,0xfb,0xfd,0xfe,

0x00,0xff,0x00,0xff,

0x01};

unsignedchari;voiddelay(void)

{

unsignedcharm,n,s;

for(m=20;m>0;m--)

for(n=20;n>0;n--)

for(s=248;s>0;s--);

}

voidmain(void)

{

while(1)

{

if(table[i]!=0x01)

{

P1=table[i];

i++;

delay();

}

else

{

i=0;

}

}

}

1.實驗目的

利用開關(guān)控制報警器,當開關(guān)閉合報警信號報警,當開關(guān)斷開告警信號停止,并編寫程序。

2.實驗設備

單片機最小系統(tǒng)試驗箱,導線若干,計算機。

3.實驗原理

500Hz音頻信號的周期為2ms,信號電平為每1ms變反1次;1kHz的信號周期為1ms,信號電平每500μs變反1次。實驗6報警器

4.實驗線路(見圖8-11)

圖8-11

5.實驗內(nèi)容與步驟

(1)把“單片機系統(tǒng)”區(qū)域中的P1.0端口用導線連接到“揚聲器模塊”區(qū)域中的MIC-IN端口上;

(2)把“單片機系統(tǒng)”區(qū)域中的P1.7/RD端口用導線連接到“8路撥動開關(guān)”區(qū)域中的S1端口上。

6.程序框圖與參考程序

(1)程序框圖如圖8-12所示。圖8-12

(2)參考程序。

①匯編源程序如下:

FLAG BIT00H

ORG00H

START:JBP1.7,START

JNBFLAG,NEXT

MOVR2,#200

DV:CPLP1.0

LCALLDELY500

LCALLDELY500

DJNZR2,DV

CPLFLAG NEXT: MOVR2,#200

DV1: CPLP1.0

LCALLDELY500

DJNZR2,DV1

CPLFLAG

SJMPSTART

DELY500:MOVR7,#250

LOOP: NOP

DJNZR7,LOOP

RET

END②C語言源程序如下:

#include〈AT89X51.H〉

#include〈INTRINS.H〉

bitflag;

unsignedcharcount;

voiddely500(void)

{

unsignedchari;

for(i=250;i>0;i--){

_nop_();

}

}

voidmain(void)

{

while(1)

{

if(P1_7==0)

{

for(count=200;count>0;count--){

P1_0=~P1_0;

dely500();

}

for(count=200;count>0;count--)

{

P1_0=~P1_0;

dely500();

dely500();

}

}

}

}

1.實驗目的

掌握LED數(shù)碼管的工作原理。

2.實驗設備

單片機最小系統(tǒng)實驗箱,計算機,導線若干。

實驗7I/O并行口直接驅(qū)動LED顯示

3.實驗原理

(1)LED數(shù)碼顯示原理。共陰極的字形碼見下表。

(2)由于顯示的數(shù)字0~9的字形碼沒有規(guī)律可循,只能采用查表的方式來完成我們所需的要求了。我們按數(shù)字0~9的順序,把每個數(shù)字的筆段代碼按順序排好,如下所示:

TABLE

DB

3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

4.實驗線路(見圖8-13)

圖8-13

5.實驗步驟與內(nèi)容

6.程序框圖與參考程序

(1)程序框圖如圖8-14所示。圖8-14

(2)參考程序:

①匯編源程序如下:

ORG0

START:MOVR1,#00H

NEXT:MOVA,R1

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVP0,A

LCALLDELAY

INCR1

CJNER1,#10,NEXT

LJMPSTART DELAY:MOVR5,#20

D2:MOVR6,#20

D1:MOVR7,#248

DJNZR7,$

DJNZR6,D1

DJNZR5,D2

RET

TABLE:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

END②C語言源程序如下:

#include〈AT89X51.H〉

unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f};

unsignedchardispcount;

voiddelay02s(void)

{

unsignedchari,j,k;

for(i=20;i>0;i--)

for(j=20;j>0;j--)

for(k=248;k>0;k--);

}voidmain(void)

{

while(1)

{

for(dispcount=0;dispcount<10;dispcount++)

{

P0=table[dispcount];

delay02s();

}

}

}

1.實驗目的

熟悉并掌握按鍵的工作原理及其編程方法。

2.實驗設備及器材

單片機最小系統(tǒng)實驗箱,計算機,導線若干。

3.實驗原理實驗8按鍵識別方法之一

4.實驗線路(見圖8-15)

圖8-15

5.實驗步驟與內(nèi)容

(1)把“單片機系統(tǒng)”區(qū)域中的P3.7/RD端口連接到“低脈沖鍵盤”區(qū)域中的SP1端口上。

(2)把“單片機系統(tǒng)”區(qū)域中的P1.0~P1.4端口用8芯排線連接到“8路發(fā)光二極管指示模塊”區(qū)域中的“L1~L8”端口上;要求:P1.0連接到L1,P1.1連接到L2,P1.2連接到L3,P1.3連接到L4。

每按下一次開關(guān)SP1,計數(shù)值加1,通過AT89S51單片機的P1端口的P1.0到P1.3顯示出其的二進制計數(shù)值。

6.程序框圖與參考程序

(1)程序框圖如圖8-16所示。圖8-16

(2)參考程序:

①匯編源程序如下:

ORG0

START:MOVR1,#00H ;初始化R7為0,表示從0開始計數(shù)

MOVA,R1 ;

CPLA ;取反指令

MOVP1,A ;送出P1端口由發(fā)光二極管顯示

REL: JNBP3.7,REL ;判斷SP1是否按下

LCALLDELAY10MS ;若按下,則延時10ms左右

JNBP3.7,REL ;再判斷SP1是否真得按下

INCR7 ;若真按下,則進行按鍵處理,使

MOVA,R7 ;計數(shù)內(nèi)容加1,并送出P1端口由

CPLA ;發(fā)光二極管顯示 MOVP1,A ;

JNBP3.7,$ ;等待SP1釋放

SJMPREL ;繼續(xù)對K1按鍵掃描

DELAY10MS:MOVR6,#20 ;延時10ms子程序

L1: MOVR7,#248

DJNZR7,$

DJNZR6,L1

RET

END②C語言源程序如下:

#include〈AT89X51.H〉

unsignedcharcount;

voiddelay10ms(void)

{

unsignedchari,j;

for(i=20;i>0;i--)

for(j=248;j>0;j--);

}voidmain(void)

{

while(1)

{

if(P3_7==0)

{

delay10ms();

if(P3_7==0)

{

count++;

if(count==16)

{

count=0;

}

P1=~count;

while(P3_7==0);

}

}

}

}

1.實驗目的

(1)熟悉并掌握數(shù)碼管動態(tài)掃描顯示及按鍵的工作原理;

(2)掌握簡單計數(shù)器的編程方法。

2.實驗設備及器材

單片機最小系統(tǒng)實驗箱,計算機,導線若干。

3.實驗原理實驗900~99計數(shù)器

4.實驗線路(見圖8-17)

圖8-17

5.實驗步驟與內(nèi)容

6.程序框圖和參考程序

(1)程序框圖如圖8-18所示。圖8-18(2)參考程序。

①匯編源程序如下:

Count EQU30H

SP1 BITP3.7

ORG0

START: MOVCount,#00H

NEXT: MOVA,Count

MOVB,#10

DIVAB

MOVDPTR,#TABLE

MOVCA,@A+DPTR MOVP0,A

MOVA,B

MOVCA,@A+DPTR

MOVP2,A

WT: JNBSP1,WT

WAIT: JBSP1,WAIT

LCALLDELY10MS

JBSP1,WAIT

INCCount

MOVA,Count

CJNEA,#100,NEXT

LJMPSTARTDELY10MS: MOVR6,#20

D1: MOVR7,#248

DJNZR7,$

DJNZR6,D1

RET

TABLE: DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,

7FH,6FH

END②C語言源程序如下:

#include〈AT89X51.H〉

unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f};

unsignedcharCount;

voiddelay10ms(void)

{

unsignedchari,j;

for(i=20;i>0;i--)

for(j=248;j>0;j--);

}voidmain(void)

{

Count=0;

P0=table[Count/10];

P2=table[Count%10];

while(1)

{

if(P3_7==0)

{

delay10ms();

if(P3_7==0)

{

Count++;

if(Count==100){

Count=0;

}

P0=table[Count/10];

P2

溫馨提示

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

評論

0/150

提交評論