單片機最小系統(tǒng)設(shè)計.ppt_第1頁
單片機最小系統(tǒng)設(shè)計.ppt_第2頁
單片機最小系統(tǒng)設(shè)計.ppt_第3頁
單片機最小系統(tǒng)設(shè)計.ppt_第4頁
單片機最小系統(tǒng)設(shè)計.ppt_第5頁
已閱讀5頁,還剩118頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機最小系統(tǒng)設(shè)計,熟悉單片機基本工作條件;熟悉單片機外 圍電路的設(shè)計及軟件編程方法。,第一節(jié) 51單片機基本工作條件,一、電源電路(+5V),第一節(jié) 51單片機基本工作條件,二、時鐘電路 時鐘電路為整個單片機系統(tǒng)產(chǎn)生時間基準(zhǔn)。是單片機系統(tǒng)必須的部分。,第一節(jié) 51單片機基本工作條件,三、復(fù)位電路,復(fù)位電路是單片機系統(tǒng)必須的,用來為單片機提供 正確的復(fù)位信號。,四、ISP下載電路,第二節(jié) 單片機系統(tǒng)設(shè)計,一、LED顯示電路 1、設(shè)計任務(wù):在 P0.0端口上接一個發(fā)光二極管 L1,使 L1在不停地一亮一滅,一亮一滅的時間間隔為 0.2秒。,第二節(jié) 單片機系統(tǒng)設(shè)計,2、源程序 (1)、設(shè)計流程圖,

2、第二節(jié) 單片機系統(tǒng)設(shè)計,(2)、匯編源程序 ORG 00H START:CLR P0.0 LCALL DELAY SETB P0.0 LCALL DELAY LJMP START DELAY:MOV R5, #20 ;延時子程序,延時 0.2秒 D1:MOV R6, #20 D2: MOV R7,#248 DJNZ R7, $ DJNZ R6, D2 DJNZ R5, D1 RET END,第二節(jié) 單片機系統(tǒng)設(shè)計,(3)、C語言 #include sbit L1=P00; void delay02s(void) /延時 0.2秒子程序 unsigned char i,j,k; for(i=20

3、;i0;i-) for(j=20;j0;j-) for(k=248;k0;k-); void main(void) while(1) L1=0; delay02s(); L1=1; delay02s(); ,第二節(jié) 單片機系統(tǒng)設(shè)計,二、流水燈 1、設(shè)計任務(wù): 設(shè)計P0口讓8個LED間隔1S從右至左依次閃爍。 2、源程序 (1)、匯編語言 ORG 00H START: MOV R2,#8 MOV A,#0FEH SETB C LOOP: MOV P1,A LCALL DELAY RLC A,第二節(jié) 單片機系統(tǒng)設(shè)計,DJNZ R2, LOOP MOV R2,#8 LOOP1: MOV P1,A L

4、CALL DELAY RRC A DJNZ R2, LOOP1 LJMP START DELAY: MOV R5,#20 ; D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END,第二節(jié) 單片機系統(tǒng)設(shè)計,(2)、C語言 #include reg51.h #include intrins.h #define uchar unsigned char #define uint unsigned int void mDelay(unsigned int Delay) unsigned int i; for(;Del

5、ay0;Delay-) for(i=0;i124;i+) ; void main() unsigned char OutData=0 xfe; for(;) P0=OutData; OutData=_crol_(OutData,1); /循環(huán)左移 mDelay(1000); /*延時1000 毫秒*/ ,第二節(jié) 單片機系統(tǒng)設(shè)計,三、模擬開關(guān)燈 1、設(shè)計任務(wù): 監(jiān)視開關(guān)K1(接在P3.7 端口上),用發(fā)光二極管L1(接在單片機P0.0 端口上)顯示開關(guān)狀態(tài),如果開關(guān)合上,L1 亮,開關(guān)打開,L1 熄滅。,第二節(jié) 單片機系統(tǒng)設(shè)計,2、電路原理,第二節(jié) 單片機系統(tǒng)設(shè)計,3、匯編源程序,ORG 00H

6、 START: JB P3.7, LIG CLR P0.0 SJMP START LIG: SETB P0.0 SJMP START END,第二節(jié) 單片機系統(tǒng)設(shè)計,4、C語言源程序 #include sbit K1=P37; sbit L1=P00; void main(void) while(1) if(K1=0) L1=0; else L1=1; ,第二節(jié) 單片機系統(tǒng)設(shè)計,四、多路開關(guān)狀態(tài)指示 1、設(shè)計任務(wù): AT89S51 單片機的P0.0P0.3 接四個發(fā)光二 極管L1L4,P3.4P3.7 接了四個開關(guān)S5 S20,編程將開關(guān)的狀態(tài)反映到發(fā)光二極管。 (開關(guān)閉合,對應(yīng)的燈亮,開關(guān)斷

7、開,對應(yīng)的燈滅)。,第二節(jié) 單片機系統(tǒng)設(shè)計,2、電路原理,第二節(jié) 單片機系統(tǒng)設(shè)計,3、匯編源程序 ORG 00H START: JB P3.4, NEXT1 CLR P0.0 SJMP NEX1 NEXT1: SETB P0.0 NEX1: JB P3.5,NEXT2 CLR P0.1 SJMP NEX2 NEXT2: SETB P0.1 NEX2: JB P3.6,NEXT3 CLR P0.2 SJMP NEX3 NEXT3: SETB P0.2 NEX3: JB P3.7,NEXT4 CLR P0.3 SJMP NEX4 NEXT4: SETB P0.3 NEX4: SJMP START

8、END,第二節(jié) 單片機系統(tǒng)設(shè)計,4、C語言 #include void main(void) while(1) if(P3_4=0) P0_0=0; else P0_0=1; if(P3_5=0) P0_1=0; else P0_1=1; if(P3_6=0) P0_2=0; elseP0_2=1; if(P3_7=0) P0_3=0; elseP0_3=1; ,第二節(jié) 單片機系統(tǒng)設(shè)計,五、廣告燈的設(shè)計 1、設(shè)計任務(wù): 利用取表的方法,使端口P0 做單一燈的變化:左 移2 次,右移2 次,閃爍2 次(延時的時間0.2秒),第二節(jié) 單片機系統(tǒng)設(shè)計,2、電路原理,第二節(jié) 單片機系統(tǒng)設(shè)計,3、匯編源

9、程序 ORG 0 START: MOV DPTR,#TABLE LOOP: CLR A MOVC A, A+DPTR CJNE A,#01H,LOOP1 LJMP START LOOP1: MOV P0, A MOV R3, #20 LCALL DELAY INC DPTR LJMP LOOP DELAY: MOV R4,#20 D1: MOV R5,#248 DJNZ R5,$ DJNZ R4,D1 DJNZ R3,DELAY,第二節(jié) 單片機系統(tǒng)設(shè)計,RET TABLE: DB 0FEH,0FDH,0FBH,0F7H DB 0EFH,0DFH,0BFH,07FH DB 0FEH,0FDH,0

10、FBH,0F7H DB 0EFH,0DFH,0BFH,07FH DB 07FH,0BFH,0DFH,0EFH DB 0F7H,0FBH,0FDH,0FEH DB 07FH,0BFH,0DFH,0EFH DB 0F7H,0FBH,0FDH,0FEH DB 00H, 0FFH,00H, 0FFH DB 01H END,第二節(jié) 單片機系統(tǒng)設(shè)計,4、C語言 #include unsigned char code table=0 xfe,0 xfd,0 xfb,0 xf7, 0 xef,0 xdf,0 xbf,0 x7f, 0 xfe,0 xfd,0 xfb,0 xf7, 0 xef,0 xdf,0 x

11、bf,0 x7f, 0 x7f,0 xbf,0 xdf,0 xef, 0 xf7,0 xfb,0 xfd,0 xfe, 0 x7f,0 xbf,0 xdf,0 xef, 0 xf7,0 xfb,0 xfd,0 xfe, 0 x00,0 xff,0 x00,0 xff, 0 x01; unsigned char i; void delay(void),第二節(jié) 單片機系統(tǒng)設(shè)計, unsigned char m,n,s; for(m=20;m0;m-) for(n=20;n0;n-) for(s=248;s0;s-); void main(void) while(1) if(tablei!=0 x0

12、1) P1=tablei; i+; delay(); else i=0; ,第二節(jié) 單片機系統(tǒng)設(shè)計,六、按鍵識別方法 1、設(shè)計任務(wù): 每按下一次開關(guān)S20,計數(shù)值加1,通過AT89S51 單片機的P0 端口的P0.0 到P0.7 顯示出其的二進制計數(shù)值。 2、電路原理,第二節(jié) 單片機系統(tǒng)設(shè)計,第二節(jié) 單片機系統(tǒng)設(shè)計,3、源程序 (1)、匯編語言 ORG 0 START: MOV R1,#00H ;初始化R1為0,表示從0開始計數(shù) MOV A,R1 ; CPL A ;取反指令 MOV P0,A ;送出P1端口由發(fā)光二極管顯示 REL: JB P3.7,REL ;判斷SP1是否按下 LCALL D

13、ELAY10MS ;若按下,則延時10ms左右 JB P3.7,REL ;再判斷SP1是否真得按下 INC R1 ;若真得按下,則進行按鍵處理,使 MOV A,R1 ;計數(shù)內(nèi)容加1,并送出P1端口由 CPL A ;發(fā)光二極管顯示 MOV P0,A ; JNB P3.7,$ ;等待SP1釋放 SJMP REL ;繼續(xù)對K1按鍵掃描 DELAY10MS: MOV R6,#20 ;延時10ms子程序 L1: MOV R7,#248 DJNZ R7,$ DJNZ R6,L1 RET END,第二節(jié) 單片機系統(tǒng)設(shè)計,(2)、C語言,#include unsigned char count; void d

14、elay10ms(void) unsigned char i,j; for(i=250;i0;i-) for(j=248;j0;j-); void main(void) while(1) if(P3_7=0) delay10ms(); if(P3_7=0) ,第二節(jié) 單片機系統(tǒng)設(shè)計,count+; if(count=256) count=0; P0=count; while(P3_7=0); ,第二節(jié) 單片機系統(tǒng)設(shè)計,七、流水燈定時器 1、設(shè)計任務(wù): 隔1S,通過AT89S51 單片機的P0.0 端口的LED閃亮。 2、電路原理,第二節(jié) 單片機系統(tǒng)設(shè)計,第二節(jié) 單片機系統(tǒng)設(shè)計,C程序設(shè)計 #i

15、nclude #define uchar unsigned char #define uint unsigned int sbit d1=P00; uchar tt; void main() uchar temp=0 xfe; tt=0; TMOD=0 x10; TH1=(65536-50000)/256; TL1=(65536-50000)%256; EA=1; ET1=1; TR1=1;,第二節(jié) 單片機系統(tǒng)設(shè)計,while(1) if(tt=20) tt=0; d1=!d1; void ex() interrupt 3 TH1=(65536-50000)/256; TL1=(65536-5

16、0000)%256; tt+; ,第二節(jié) 單片機系統(tǒng)設(shè)計,八、LED顯示 1、設(shè)計任務(wù): 利用AT89S51 單片機的P0 端口的P0.0P0.7 連接到一個共陰數(shù)碼管的ah 的筆段上,數(shù)碼管的公共端接地。在數(shù)碼管上循環(huán)顯示09 數(shù)字,時間間隔0.2 秒。,2.系統(tǒng)工作原理 數(shù)碼管由8個發(fā)光二極管構(gòu)成,可以用來顯示數(shù)字、字符等,它在家電及工業(yè)控制中有著很廣泛的應(yīng)用,例如用來顯示溫度、數(shù)量、重量、日期、時間等,具有顯示醒目、直觀的有點,如圖2.3所示。,圖2.3 數(shù)碼管實物圖,【項目實踐】,數(shù)碼管實際上是由7個發(fā)光管組成“8”字形構(gòu)成的,加上小數(shù)點就是8個。這些段分別由字母a、b、c、d、e、f

17、、g、dp來表示。當(dāng)數(shù)碼管特定的段加上電壓后,這些特定的段就會發(fā)亮,以形成我們眼睛看到的字樣。例如:顯示一個“3”字,那么應(yīng)當(dāng)是a亮、b亮、c亮、d亮、e不亮、f不亮、g亮、dp不亮。數(shù)碼管的內(nèi)部結(jié)構(gòu)如圖2.4所示,其中COM引腳為公共端,用來控制數(shù)碼管顯示的打開或關(guān)閉,即起到“使能”作用。 根據(jù)公共端接法的不同,數(shù)碼管又分為共陰極和共陽極兩種結(jié)構(gòu),分別如圖2.4(b)和圖 2.4(c)所示。 共陽極就是將8個LED的陽極連接到一起組成公共端COM,接正極,當(dāng)相應(yīng)字段為低電平“0”時,可以點亮該字段;當(dāng)相應(yīng)字段為高電平“1”時,該字段不亮。 共陰極就是將8個LED的陰極連接到一起組成公共端CO

18、M,接負極,當(dāng)相應(yīng)字段為高電平“1”時,可以點亮該字段;當(dāng)相應(yīng)字段為低電平“0”時,該字段不亮。,【項目實踐】,圖2.4 數(shù)碼管內(nèi)部結(jié)構(gòu)圖,【項目實踐】,表2.1 數(shù)碼管顯示數(shù)字的段碼表,【項目實踐】,第二節(jié) 單片機系統(tǒng)設(shè)計,3、電路原理,第二節(jié) 單片機系統(tǒng)設(shè)計,#include #define uchar unsigned char #include sbit we=P20; sbit du=P21; unsigned char code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66, 0 x6d,0 x7d,0 x07,0 x7f,0 x6f; unsigned

19、char dispcount; void delay02s(void) unsigned char i,j,k; for(i=10;i0;i-) for(j=200;j0;j-) for(k=248;k0;k-); void main(void) while(1) for(dispcount=0;dispcount10;dispcount+) we=1; P0=0 x00; we=0; du=1; P0=tabledispcount; du=0; delay02s(); ,第二節(jié) 單片機系統(tǒng)設(shè)計,九、0-9計數(shù)器 1、設(shè)計任務(wù): 利用AT89S51 單片機來制作一個手動計數(shù)器,在AT89S51

20、 單片機的P3.7 管腳接一個輕觸開關(guān),作為手動計數(shù)的按鈕,用單片機的P0.0P0.7 接一個共陰數(shù)碼管,作為09 計數(shù)的數(shù)顯示;,第二節(jié) 單片機系統(tǒng)設(shè)計,2、電路原理,第二節(jié) 單片機系統(tǒng)設(shè)計,3、源程序 (1)、匯編語言 ORG 0 START: MOV R1,#00H ;初始化R1為0, REL: JB P3.7,REL ;判斷SP1是否按下 LCALL DELAY ;若按下,則延時10ms左右 JB P3.7,REL ;再判斷SP1是否真得按下 MOV A,R1 MOV DPTR,#TABLE setb P2.0 MOV p0,#00h clr p2.0 MOVC A,A+DPTR MO

21、V P0,A INC R1,第二節(jié) 單片機系統(tǒng)設(shè)計,JNB P3.7,$ ;等待SP1釋放 CJNE R1,#10,REL SJMP START ;繼續(xù)對K1按鍵掃描 DELAY: MOV R6,#20 ;延時10ms子程序 L1: MOV R7,#248 DJNZ R7,$ DJNZ R6,L1 RET TABLE: DB 3FH,06H,5BH,4FH,66H,6DH DB 7DH,07H,7FH,6FH END,第二節(jié) 單片機系統(tǒng)設(shè)計,LCALL DELY10MS JB SP1,WAIT INC Count MOV A,Count CJNE A,#100,NEXT LJMP START

22、DELY10MS: MOV R6,#20 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END,第二節(jié) 單片機系統(tǒng)設(shè)計,(2)C語言 #include unsigned char count; unsigned char code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66, 0 x6d,0 x7d,0 x07,0 x7f,0 x6f; sbit d1=P20; void delay10ms(void) unsigned char

23、i,j; for(i=250;i0;i-) for(j=248;j0;j-); void main(void) while(1) if(P3_7=0) delay10ms(); if(P3_7=0),第二節(jié) 單片機系統(tǒng)設(shè)計,count+; if(count=10) count=0; d1=1; P0=0; d1=0; P0=tablecount; while(P3_7=0); ,第二節(jié) 單片機系統(tǒng)設(shè)計,十、LED動態(tài)顯示 1、設(shè)計任務(wù): 利用AT89S51 單片機來顯示12345678,用單片機的P0.0P0.7 接一個共陰數(shù)碼管。,第二節(jié) 單片機系統(tǒng)設(shè)計,2、電路原理,第二節(jié) 單片機系統(tǒng)設(shè)計

24、,3、程序 #include sbit d1=P20; sbit d2=P21; unsigned char code tabledu=0 x3f,0 x06,0 x5b,0 x4f,0 x66, 0 x6d,0 x7d,0 x07; unsigned char code tablewe=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f; unsigned char dispcount; void delay02s(void) unsigned char i,j,k; for(i=10;i0;i-) for(j=10;j0;j-) for(k=10

25、;k0;k-); ,第二節(jié) 單片機系統(tǒng)設(shè)計,void main(void) while(1) for(dispcount=0;dispcount8;dispcount+) d1=1; P0=tablewedispcount; d1=0; d2=1; P0=tabledudispcount; d2=0; delay02s(); ,第二節(jié) 單片機系統(tǒng)設(shè)計,十、44 矩陣式鍵盤識別 1、設(shè)計任務(wù): 用AT89S51 的并行口P1 接44 矩陣鍵盤,以P1.0P1.3 作輸入線,以P1.4P1.7 作輸出線;在數(shù)碼管上顯示每個按鍵的“0F”序號。,第二節(jié) 單片機系統(tǒng)設(shè)計,2、電路原理,第二節(jié) 單片機系

26、統(tǒng)設(shè)計,3.程序,第二節(jié) 單片機系統(tǒng)設(shè)計,十一、 定時計數(shù)器T0 作定時應(yīng)用技術(shù) 1、設(shè)計任務(wù): 用AT89S51 的定時/計數(shù)器T0 產(chǎn)生2 秒鐘的定時,每當(dāng)2 秒定時到來時,更換指示燈閃爍,每個指示閃爍的頻率為0.2 秒,也就是說,開始L1 指示燈以0.2 秒的速率閃爍,當(dāng)2 秒定時到來之后,L2 開始以0.2 秒的速率閃爍,如此循環(huán)下去。0.2 秒的閃爍速率也由定時/計數(shù)器T0 來完成。,第二節(jié) 單片機系統(tǒng)設(shè)計,2、程序 #include unsigned char tcount2s; unsigned char tcount02s; unsigned char ID; void mai

27、n(void) TMOD=0 x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; ET0=1; EA=1; while(1); void t0(void) interrupt 1 using 0 tcount2s+; if(tcount2s=40) tcount2s=0; ID+; if(ID=4) ID=0; ,第二節(jié) 單片機系統(tǒng)設(shè)計,tcount02s+; if(tcount02s=4) tcount02s=0; switch(ID) case 0: P0_0=P0_0; break; case 1: P0_1=P0_1; b

28、reak; case 2: P0_2=P0_2; break; case 3: P0_3=P0_3; break; ,第二節(jié) 單片機系統(tǒng)設(shè)計,十二、A/D 轉(zhuǎn)換器基本應(yīng)用 1、設(shè)計任務(wù) 從ADC0804 的通道4輸入05V 之間的模擬量,通過ADC0804 轉(zhuǎn)換成數(shù)字量在數(shù)碼管上以十進制形成顯示出來。,第二節(jié) 單片機系統(tǒng)設(shè)計,2、電路原理:,第二節(jié) 單片機系統(tǒng)設(shè)計,第二節(jié) 單片機系統(tǒng)設(shè)計,3、源程序 (1)、匯編語言,第二節(jié) 單片機系統(tǒng)設(shè)計,(2)、C語言,第二節(jié) 單片機系統(tǒng)設(shè)計,十一、 1、設(shè)計任務(wù):,第二節(jié) 單片機系統(tǒng)設(shè)計,2、電路原理,第二節(jié) 單片機系統(tǒng)設(shè)計,3、源程序 (1)、匯編語言,第二節(jié) 單片機系統(tǒng)設(shè)計,(2)、C語言,第二節(jié) 單片機系統(tǒng)設(shè)計,十一、 1、設(shè)計任務(wù):,第二節(jié) 單片機系統(tǒng)設(shè)計,2、電路原理,第二節(jié) 單片機系統(tǒng)設(shè)計,3、源程序 (1)、匯編語言,第二節(jié) 單片機系統(tǒng)設(shè)計,(2)、C語言,第二節(jié) 單片機系統(tǒng)設(shè)計,十一、00-99計數(shù)器 1、設(shè)計任務(wù): 利用A

溫馨提示

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

最新文檔

評論

0/150

提交評論