




已閱讀5頁,還剩20頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
目 錄1 課程設計目的和功能 2 器件介紹三硬件電路設計 3 3.1 硬件設計總框圖 3 3.1.1 主控電路 43.1.2 按鍵控制掃描模塊 53.1.3 數碼管顯示模塊 83.1.4 LED顯示模塊 93.1.5 揚聲器模塊 103.1.6 交通燈模塊 6 3.2 硬件原理圖 12四軟件流程框圖 12 4.1 主程序流程圖 124.2 蜂鳴器流程圖 144.3 流水燈程序流程圖 154.4 時鐘顯示流程圖 164.5 交通燈控制流程圖 17 5 源程序代碼及注釋 336 課程設計體會 347 參考文獻 35一、課程設計目的和功能單片機原理及應用課程設計是一項重要的實踐性教育環節,是學生在校期間必須接受的一項工程訓練。在課程設計過程中,在教師指導下,運用工程的方法,通過一個簡單課題的設計練習,其目的使學生初步體驗單片機應用系統的設計過程、設計要求、完成工作內容和具體的設計方法,了解必須提交的各項工程文件,也達到鞏固、充實和綜合運用所學知識解決實際問題。 通過課程設計,應能加強學生如下能力的培訓:(1) 獨立工作能力和創造力;(2) 查閱圖書資料,產品手冊和各種工具書的能力;(3) 工程繪圖的能力;(4) 編寫技術報告和編制技術資料的能力(5) 綜合運用專業及基礎知識,解決實際工程技術問題的能力; 本次工程實踐的校內部分主要以單片機為基礎,進行單片機軟件編程,目的是為了提高學生的軟件編程和系統設計能力,整個設計系統包括兩個部分,硬件及軟件部分,硬件部分已經制作成功,學生只需要掌握其原理和焊接相應的元器件,掌握元器件的辨別和元器件的作用以及應用場所即可,另外對所焊接的電路還需要進行仔細的檢查,判斷是否有焊接錯誤的地方或者短路的地方,對出現的異常情況要能夠根據現象判別原因,并具備解決問題的能力,從而切實提高學生的硬件電子電路的分析、判斷能力。 軟件編程是本次工程實踐的重要環節。在為期兩周的工程實踐中,將占據主要時間,學生要完成的軟件編程任務主要包括以下幾點: 1)、熟悉Keil C51編程平臺及相關編程軟件 2)、編寫、調試蜂鳴器、繼電器動作、方波程序并進行軟硬件聯調 3)、編寫、調試LED流水燈(循環顯示)程序并進行軟硬件聯調 4)、編寫、調試鍵盤掃描子程序并進行軟硬件聯調 5)、編寫、調試數碼管動態掃描程序并進行軟硬件聯調9)、交通燈控制設計二器件介紹 AT89C52:本次課程設計中主要是設計一個以交通燈控制為主的多功能控制系統。該設計中我們主控電路部分采用了單片機AT89C52芯片來實現這些功能。AT89C52是一個低電壓,高性能CMOS的8位單片機,片內含8KB的可反復擦寫的Flash只讀程序存儲器和256B的隨機存取數據存儲器(RAM)。 按鍵:用于控制數碼顯示、LED顯示、揚聲器等模塊的工作。通過掃描按鍵是否按下,來設定各模塊的工作情況,使各模塊可以在按鍵的控制下,有序地進行工作。設計中使用單個按鍵實現單個功能,屬于較為簡單的控制方式.數碼管:設計中采用六位共陽極數碼管,共陽極是指其公共端接正極,通過單片機AT89C52的P0口控制其位選和段選,以達到動態顯示相應數值的效果。在其位選控制部分,采用了一個9012型三極管,要求當P0口輸出低電平時,位選成功。LED(Light Emitting Diode):發光二極管,是一種固態的半導體器件,它可以直接把電轉化為光。LED的心臟是一個半導體的晶片,晶片的一端附在一個支架上,一端是負極,另一端連接電源的正極蜂鳴器:是一種一體化結構的電子訊響器,采用直流電壓供電,廣泛應用于計算機、打印機、復印機、報警器、電子玩具、汽車電子設備、電話機、定時器等電子產品中作發聲器件。三、硬件電路設計 3.1 硬件設計總框圖 主控電路按鍵控制掃描模塊交通燈模塊數碼管顯示模塊LED顯示模塊揚聲器模塊原理說明: 本電路以單片機AT89C52為主控電路,分別連接按鍵控制掃描模塊、揚聲器模塊、LED顯示模塊、數碼顯示模塊、交通燈模塊。首先,按鍵掃描模塊的四個按鍵分別用來控制數碼顯示、LED顯示和揚聲器工作,P1口作為輸出口,用來控制LED的亮滅,要使其亮只需要讓P1.0-P1.7口保持低電平就可以使8個燈亮起來。同時通過P2.3端控制蜂鳴器發生,當P2.3輸出低電平時候使蜂鳴器發出聲音,按下按鍵1時使蜂鳴器發聲。P0口用來控制數碼管段選和位選,以顯示相應的數值。在其位選控制部分,采用了9012型的三極管,要求當對應端口輸出低電平時,位選成功,使得該位選的數碼管亮,數碼管顯示時分通過按鍵3控制。最后通過按按鍵4實現交通燈控制的功能。3.1.1 主控電路 本次課程設計中主要是設計一個以交通燈控制為主的多功能控制系統。該設計中我們主控電路部分采用了單片機AT89C52芯片來實現這些功能,AT89C52是一個低電壓,高性能CMOS的8位單片機,片內含8KB的可反復擦寫的Flash只讀程序存儲器和256B的隨機存取數據存儲器(RAM)。其引腳如下圖所示: 圖1.AT89C52引腳圖VCC:供電電壓。GND:接地。P0口(P0.0-P0.7):P0口來輸出數碼管位選及段選數據,以控制相應數碼管顯示相應數值。P1口 (P1.0-P1.7):P1口來控制LED的亮滅。P2口 (P2.0-P2.7):使能相應的模塊功能;wela(P2.7):控制數碼管位選;dula(P2.6 ):控制數碼管段選。 P3口 (P3.0-P3.7):P3.0為RXD(串行輸入口),P3.1為TXD(串行輸出口),P3.2為/INT0(外部中斷0),P3.3為/INT1(外部中斷1),P3.4為T0(記時器0外部輸入),P3.5為T1(記時器1外部輸入),P3.6為/WR(外部數據存儲器寫選通),P3.7為/RD(外部數據存儲器讀選通)。 XTAL1(19 腳)和XTAL2(18 腳)為振蕩器輸入輸出端口,外接12MHz 晶振。RST/Vpd(9 腳)為復位輸入端口,外接電阻電容組成的復位電路。VCC(40 腳)和VSS(20 腳)為供電端口,分別接+5V電源正負端。P0P3 為可編程通用I/O 腳,其功能用途由軟件定義。3.1.2 按鍵控制掃描模塊 按鍵用于控制數碼顯示、LED顯示、揚聲器等模塊的工作。通過掃描按鍵是否按下,來設定各模塊的工作情況,使各模塊可以在按鍵的控制下,有序地進行工作。設計中使用單個按鍵實現單個功能,屬于較為簡單的控制方式. 圖2.按鍵輸入電路在多功能系統設計的實驗中中我們使用四個按鍵分別與單片機的P3.4、P3.5、P3.6、P3.7相連,按鍵1控制蜂鳴器發聲、按鍵2控制LED流水燈、按鍵3控制數碼管顯示,按鍵4交通燈。通過按下相應的按鍵來處理相應的程序。3.1.5 數碼管顯示模塊設計中采用六位共陽極數碼管,共陽極是指其公共端接正極,通過單片機AT89C52的P0口控制其位選和段選,以達到動態顯示相應數值的效果。在其位選控制部分,采用了一個9012型三極管,要求當P0口輸出低電平時,位選成功。 圖5.數碼管顯示電路硬件電路中,數碼管顯示的小時、分、秒,通過鍵1選擇,鍵2、鍵3調整。數碼管要正常顯示,就要用驅動電路來驅動數碼管的各個段碼,從而顯示出我們要的數字,因此根據數碼管的驅動方式的不同,可以分為靜態式和動態式兩類。 靜態顯示驅動:靜態驅動也稱直流驅動。靜態驅動是指每個數碼管的每一個段碼都由一個單片機的I/O端口進行驅動,或者使用如BCD碼二-十進制譯碼器譯碼進行驅動。靜態驅動的優點是編程簡單,顯示亮度高,缺點是占用I/O端口多,如驅動5個數碼管靜態顯示則需要5840根I/O端口來驅動,要知道一個89S51單片機可用的I/O端口才32個呢:),實際應用時必須增加譯碼 驅動器進行驅動,增加了硬件電路的復雜性。 動態顯示驅動:數碼管動態顯示接口是單片機中應用最為廣泛的一種顯示方式之一,動態驅動是將所有數碼管的8個顯示筆劃a,b,c,d,e,f,g,dp的同名端連在一起,另外為每個數碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當單片機輸出字形碼時,所有數碼管都接收到相同的字形碼,但究竟是那個數碼管會顯示出字形,取決于單片機對位選通COM端電路的控制,所以我們只要將需要顯示的數碼管的選通控制打開,該位就顯示出字形,沒有選通的數碼管就不會亮。通過分時輪流控制各個數碼管的的COM端,就使各個數碼管輪流受控顯示,這就是動態驅動。在輪流顯示過程中,每位數碼管的點亮時間為12ms,由于人的視覺暫留現象及發光二極管的余輝效應,盡管實際上各位數碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩定的顯示數據,不會有閃爍感,動態顯示的效果和靜態顯示是一樣的,能夠節省大量的I/O端口,而且功耗更低。3.1.4 LED顯示模塊 LED(Light Emitting Diode),發光二極管,是一種固態的半導體器件,它可以直接把電轉化為光。LED的心臟是一個半導體的晶片,晶片的一端附在一個支架上,一端是負極,另一端連接電源的正極,使整個晶片被環氧樹脂封裝起來。半導體晶片由兩部分組成,一部分是P型半導體,在它里面空穴占主導地位,另一端是N型半導體,在這邊主要是電子。但這兩種半導體連接起來的時候,它們之間就形成一個“P-N結”。當電流通過導線作用于這個晶片的時候,電子就會被推向P區,在P區里電子跟空穴復合,然后就會以光子的形式發出能量,這就是LED發光的原理。而光的波長也就是光的顏色,是由形成P-N結的材料決定的。 圖6. LED顯示電路 本次設計中通過按鍵2來控制其流水顯示,打開電源后按下按鍵2流水燈模塊有效。由于電路中LED為共陽極,故控制流水燈顯示的P1口應為低電平時才有效。從原理圖中可以看出,如果要讓接在P1.0口的LED1亮起來,那么只要把P1.0口的電平變為低電平就可以了;相反,如果要接在P1.0口的LED1熄滅,就要把P1.0口的電平變為高電平;同理,接在P1.1P1.7口的其他7個LED的點亮和熄滅的方法同LED1。因此,要實現流水燈功能,我們只要將發光二極管LED1LED8依次點亮、熄滅,8只LED燈便會一亮一暗的做流水燈了。我們首先把要顯示流水花樣的數據建在一個以TAB為標號的數據表中,然后通過查表指令“MOVCA,A+DPTR”把數據取到累加器A中,然后再送到P1口進行顯示。在此我們還應注意一點,由于人眼的視覺暫留效應以及單片機執行每條指令的時間很短,我們在控制二極管亮滅的時候應該延時一段時間,否則我們就看不到“流水”效果了。3.1.3 揚聲器模塊揚聲器模塊通過按鍵1來實現。要求揚聲器能夠發出連續,斷續的聲音及音樂,我們可以選擇一個蜂鳴器來實現這些功能。 圖7. 揚聲器電路 蜂鳴器是一種一體化結構的電子訊響器,采用直流電壓供電,廣泛應用于計算機、打印機、復印機、報警器、電子玩具、汽車電子設備、電話機、定時器等電子產品中作發聲器件。蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。下面我們以電磁式蜂鳴器為例來說明它的工作原理:電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動膜片及外殼等組成。接通電源后,振蕩器產生的音頻信號電流通過電磁線圈,使電磁線圈產生磁場。振動膜片在電磁線圈和磁鐵的相互作用下,周期性地振動發聲,當輸出高電平時,三極管截止,蜂鳴器的兩引腳間的直流電壓接近于0V,沒有電流流過線圈,蜂鳴器不發聲;當輸出低電平時,三極管導通,使蜂鳴器的兩個引腳間獲得將接近+5V的直流電壓,這樣蜂鳴器的電流形成回路,發出聲音。因此,我們可以通過程序控制IO口輸出的電平來控制蜂鳴器是否發出聲音,實現各種可能音響的產生。在這個設計中是通P2.3口控制其發聲的。由于P2.3與ds1302是連在一起的,當P2.3口輸出低電平時蜂鳴器發出聲響。故只要ds1302工作,就可以設定使揚聲器發出聲音。3.1.6交通燈 3.2 硬件原理圖四,軟件流程框圖 4.1. 主程序流程圖YYYYP1口置初值0F0H調用蜂鳴器發聲程序調用LED顯示子程序調用交通燈控制程序KEY1按下?KEY2按下?KEY3按下?KEY4按下?調用數碼管顯示程序開始N 4.2 蜂鳴器流程圖NY開始循環時間的初值設置P2.3端口輸出設置延時0.2sP2.3端口取反延時0.2s 循環結束?返回主程序 4.3 流水燈程序流程圖YY開 始循環初始化表頭首指送地址指針將寄存器A清零NN返回主程序表中花樣送A顯示并延時花樣是否結束?到花樣結束標志?4.5Y開始揚聲器預響時間設置DS1302實時時間讀取兩時間是否相同?揚聲器發聲N延時關閉揚聲器 作息時間控制的設計是比較簡單的,其基本思路是我們設置揚聲器的預響時間,然后通過DS1302實時時間的讀取與預響時間做比較,如果兩者相同那么揚聲器發聲,如果兩者不相同那么返回DS1302實時時間繼續讀取,直到與揚聲器預響時間相同揚聲器發聲,然后通過延時關閉揚聲器。交通燈流程圖開始信號燈初始設置信號燈初始區設置東西綠燈亮南北紅燈亮軟件延時35s熄滅東西綠燈,點亮東西紅燈東西紅燈亮,南北綠燈亮軟件延時30s重新開始下一個周期軟件延時0.5s軟件延時5sR是否等于0返回YN五 源程序代碼及注釋主程序清單:#include #include #defineuint unsigned int #defineuchar unsigned charsbit P32=P32;sbit P33=P33;sbit key1=P34;sbit key2=P35;sbit key3=P36;sbit key4=P37;sbit dula=P26;sbit wela=P27;sbit fmq=P23;uint shu;uchar xianshi,xianshi2;uchar aa,bb,cc,dd;uchar code tablewe=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/void Delay(unsigned int i);/void delayms(uint z);void init()/初始化函數shu=0;xianshi=30;xianshi2=35;aa=3;bb=0;cc=3;dd=5;P0=0xff;P1=0;TMOD=0x01; /用定時器0方式1EA=1; /打開中斷ET0=1;/打開定時器0中斷TL0=15536/256;TH0=15536%256;EX0=1;/外部中斷0EX1=1;/外部中斷1IT0=0;/外部中斷0電平觸發IT1=0;/外部中斷1電平觸發PX1=1;/設定外部中斷1為高優先級void delayms(uint z)uint x,y;for(x=z;x0;x-) for(y=110;y0;y-);void Delay(unsigned int i)/延時程序 unsigned int j;for(;i0;i-)for(j=0;j60;j+);void display(uchar a,uchar b,uchar c,uchar d)wela=1;P0=0xfe;wela=0;dula=1;P0=tablea; /北十位dula=0;Delay(2);wela=1; P0=0xfd;wela=0;dula=1;P0=tableb; /北個位 dula=0;Delay(2);wela=1; P0=0xfb;wela=0;dula=1;P0=tablec; /西十位 dula=0;Delay(2);wela=1;P0=0xf7;wela=0;dula=1;P0=tabled; /西個位 dula=0;Delay(2);void timer0() interrupt 1 using 1 TH0=(65536-50000)/256;TL0=(65536-50000)%256;shu+;if(shu%20=0) xianshi-;xianshi2-; aa=xianshi/10;bb=xianshi%10;cc=xianshi2/10;dd=xianshi2%10; if(shu=600)P1=0xf5;/南北黃亮,東西依然紅燈xianshi=5;if(shu=700)P1=0xDE;/南北亮紅燈,東西綠燈xianshi=35;xianshi2=30;if(shu=1300)P1=0xee;/東西亮黃燈,南北紅燈xianshi2=5; if(shu=1400)/再過5s返回 shu=0;xianshi=30;xianshi2=35; P1=0xf3;/點亮南北綠燈,東西紅燈void inter0() interrupt 0 using 2 /南北方向綠燈P0=0xff;P1=0xf3;/南北綠 東西紅while(P32=0); P1=0xDE; xianshi=30; shu=700; aa=3; bb=0; cc=3; dd=5;void inter1() interrupt 2 using 3 /東西方向綠燈 P0=0xff;P1=0xDE;/ 東西綠 南北紅 while(P33=0);P1=0xf3;xianshi=30;shu=0; aa=3; bb=5; cc=3; dd=0;/蜂鳴器void ka() loop1:fmq=1;if(key1=0) delayms(200); if(key1=1) while(1) fmq=0;if(key1=0) delayms(200); if(key1=1) goto loop1; /流水燈void kb() uchar a;loop2:P1=0xff;if(key2=0) delayms(200); if(key2=1) a=0xfe;while(1) P1=a;delayms(100); a=_crol_(a,1); if(key2=0) delayms(200); if(key2=1) goto loop2; /數碼管void kc() uchar numdu,numwe; numdu=0;numwe=0; loop3:wela=1;P0=0xff;wela=0;if(key3=0) delayms(200); if(key3=1) while(1)if(numwe=6)numwe=0;wela=1; P0=tablewenumwe;wela=0;numwe+;if(numdu=6)numdu=0;dula=1;P0=tablenumdu;dula=0;numdu+;delayms(500);if(key3=0) delayms(200); if(key3=1) goto loop3; /交通燈void kd() loop4: TR0=0;init(); wela=1;P1=0xff;if(key4=0)delayms(200);if(key4=1)wela=0;TR0=1;/啟動定時器0 P1=0xff; P1=0xf3;/點亮南北綠燈,東西紅燈 while(1) display(aa,bb,cc,dd); if (key4=0) delayms(200); if(key4=1) goto loop4; /主函數void main()key1=1;key2=1;key3=1;key4=1; while(1) while(!key1)ka(); while(!key2)kb();while(!key3)kc();while(!key4)kd(); 六、調試情況及小結 6.1 硬件調試硬件調試分為靜態調試和動態調試,對于硬件調試而言,只要認真焊接,硬件一般不會出現什么問題的。沒有出現什么問題。用所給的調試程序,調試結果很好,各模塊都能正常工作。靜態調試一般采用的工具是萬用表,其是在用戶系統未工作時的一種硬件檢測。 動態調試是在用戶系統工作的情況下發現和排查錯誤的一種硬件檢測。調試步驟是:首先把電路分成若干模塊,調式過程中與該模塊無關的元件可以不加考慮,這樣可把故障限定在一定的范圍內;故障清除后,把各個模塊合在一起進行聯調,即可完成整個硬件調試工作。 6.2 軟件調
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東省清遠市連州市2023-2024學年五年級下學期數學期末監測試卷(含答案)
- 仲秋促銷活動方案
- 企業之星活動方案
- 企業傳承活動方案
- 企業公司員工活動方案
- 企業參展活動方案
- 企業回訪活動方案
- 企業外聯活動方案
- 企業宣講雙選會活動方案
- 企業年末賀歲活動方案
- 血液透析患者飲食指導
- 脫硫塔玻璃鱗片膠泥襯里施工組織設計
- XB/T 505-2011汽油車排氣凈化催化劑載體
- GB/T 3672.2-2002橡膠制品的公差第2部分:幾何公差
- GB/T 27744-2021異步起動永磁同步電動機技術條件及能效分級(機座號80~355)
- GB 8076-2008混凝土外加劑
- 寶盾轉門故障代碼
- 【課件】草原上的小木屋
- DB63-T 241-2021草地毒害草綜合治理技術規范
- 高層建筑施工基坑工程勘察及支護結構選型培訓
- 四年級上冊音樂課件-活動 歡騰的那達慕 人教版(簡譜) (共17張PPT)
評論
0/150
提交評論