版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 甘肅省天水市清水縣多校聯(lián)考2025-2026學(xué)年高一上學(xué)期1月期末考試地理試卷(含答案)
- 2026屆高三生物二輪復(fù)習(xí)課件:選擇題強化練 4.遺傳的基本規(guī)律與伴性遺傳
- 化工企業(yè)冬季培訓(xùn)課件
- 鋼結(jié)構(gòu)綠色制造技術(shù)應(yīng)用
- 飛機結(jié)構(gòu)專業(yè)知識課件
- 2026安徽合肥工業(yè)大學(xué)管理學(xué)院管理學(xué)院醫(yī)療機器人與智慧醫(yī)療健康管理團隊科研助理招聘3人備考考試試題及答案解析
- 2026新疆前海集團有限責(zé)任公司招聘1人備考考試試題及答案解析
- 2026年上半年黑龍江事業(yè)單位聯(lián)考哈爾濱市招聘592人參考考試題庫及答案解析
- 2026江蘇蘇州人才發(fā)展有限公司招聘2人(一)備考考試題庫及答案解析
- 2026四川通發(fā)廣進人力資源管理咨詢有限公司AI數(shù)據(jù)標(biāo)注員(第三批)招聘備考考試題庫及答案解析
- 2025年立體倉庫維護服務(wù)合同
- BIM技術(shù)在建筑施工環(huán)境管理中的應(yīng)用
- 2025全國高考Ⅰ卷第16題說題比賽課件-2026屆高三數(shù)學(xué)二輪復(fù)習(xí)
- 快消品市場調(diào)研分析報告模板
- 裝修保護電梯施工技術(shù)交底
- 社保專員工作述職報告
- DB15∕T 2385-2021 草原退化評價技術(shù)規(guī)程
- 焦化廠儀表工崗位考試試卷及答案
- 餐廳充值服務(wù)合同范本
- 2025年汽車洗滌器總成行業(yè)分析報告及未來發(fā)展趨勢預(yù)測
- 麻疹知識培訓(xùn)內(nèi)容總結(jié)
評論
0/150
提交評論