簡易多彩廣告燈控制課程設(shè)計說明書_第1頁
簡易多彩廣告燈控制課程設(shè)計說明書_第2頁
簡易多彩廣告燈控制課程設(shè)計說明書_第3頁
簡易多彩廣告燈控制課程設(shè)計說明書_第4頁
簡易多彩廣告燈控制課程設(shè)計說明書_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、信息與電氣工程學(xué)院課程設(shè)計說明書(2012/2013學(xué)年第二學(xué)期)課程名稱:單片機原理及接口技術(shù)題目:簡易多彩廣告燈控制設(shè)計專業(yè)班級:自動化10-03設(shè)計周數(shù):2周2013年6月26日1、課程設(shè)計目的1.1 原始數(shù)據(jù)及主要任務(wù)21.2 技術(shù)要求22、課程設(shè)計正文2.1 硬件設(shè)計22.1.1 確定硬件電路總體設(shè)計方案22.1.2 單元電路設(shè)計32.1.2.1 時鐘電路32.1.2.2 復(fù)位電路32.1.2.3 鍵盤輸入電路42.1.2.4 數(shù)字顯示電路52.1.2.5 廣告燈電路52.1.2.6 總電路圖62.1.3 系統(tǒng)調(diào)試72.2 軟件設(shè)計72.2.1 系統(tǒng)分析72.2.2 系統(tǒng)設(shè)計82.2

2、.2.1 按鍵確認程序82.2.2.2 數(shù)碼管顯示程序82.2.2.3 延時程序82.2.2.4 .四種廣告燈控制程序82.2.3 系統(tǒng)實施93、 課程設(shè)計總結(jié)17184、 參考文獻1、課程設(shè)計目的1.1 原始數(shù)據(jù)及主要任務(wù)設(shè)計并制作出一個以單片機為核心的彩燈閃爍控制系統(tǒng):(1)確定總體設(shè)計方案(2)、設(shè)計鍵盤輸入電路(3)、設(shè)計顯示電路(4)、合理分配地址,編寫系統(tǒng)程序(5)、利用Protel設(shè)計硬件電路原理圖和PCB圖(6)、軟硬件聯(lián)機調(diào)試1.2技術(shù)要求設(shè)計一個以MCS-51單片機為核心的簡易多彩廣告燈閃爍控制系統(tǒng),2位數(shù)碼管顯示閃爍控制方案,分別顯示01、02、03、和10號方案,初始化

3、為00,彩燈滅;2個控制按鍵,一個加一數(shù)字鍵,一個確定鍵,循環(huán)10個花型的方案。方案01為左循環(huán)亮一秒閃爍;方案02為右循環(huán)亮一秒閃爍;方案03為“100000000、1100000011111111”遞增間隔1秒閃爍;方案10為“01010101,10101010”間隔一秒閃爍;其余方案燈滅。2、課程設(shè)計正文2.1硬件設(shè)計2.1.1確定硬件電路總體設(shè)計方案根據(jù)設(shè)計要求,首先確定硬件的主要組成部分,主要包括了單片機最小系統(tǒng)中的時鐘電路、復(fù)位電路和本課設(shè)需要的按鍵控制電路、LED燈顯示電路、廣告燈方案顯示電路,最后由5V直流電源對各部分電路提供電源??偟脑O(shè)計框圖如圖1。圖1硬件設(shè)計總框圖2.1.

4、2單元電路設(shè)計2.1.2.1 時鐘電路時鐘電路提供的時鐘信號是單片機工作時必須的控制信號,只有正確的提供了時鐘信號,單片機才能嚴格按照時序執(zhí)行指令進行工作。時鐘頻率直接影響單片機的速度,時鐘電路的質(zhì)量也直接影響單片機系統(tǒng)的穩(wěn)定性。常用的時鐘電路設(shè)計有兩種方式,一種是內(nèi)部時鐘方式,另一種事外部時鐘方式。本課設(shè)采用的是內(nèi)部時鐘方式。內(nèi)部是中方式的時鐘電路由一個6MHz的晶振和兩個30pF的電容組成,時鐘電路的電路圖如圖2。C1I30pf X1C36M1 TOU1 19 >XTAL118XTAL2圖2時鐘電路2.1.2.2 復(fù)位電路復(fù)位是單片機的初始化操作,除了進入系統(tǒng)的正常初始化之外,當由于

5、程序運行出錯或操作錯誤使系統(tǒng)處于死鎖狀態(tài),為擺脫死鎖狀態(tài),也需要復(fù)位按鍵使RST引腳為高電平使單片機復(fù)位。本課設(shè)采用51單片機典型手動復(fù)位電路,電路由一個200的電阻、一個1KQ的電阻和一個22uF的極性電容組成。當按下復(fù)位鍵后復(fù)位口RST變?yōu)楦唠娖剑?jīng)過兩個機器周期單片機復(fù)位,單片機從地址為0000H處重新執(zhí)行程序。復(fù)位電路的電路圖如圖3。圖3復(fù)位電路2.1.2.3 鍵盤輸入電路本課設(shè)的鍵盤輸入電路由一個加一鍵和一個確定鍵組成,每個按鍵都接一個1K的上拉電阻。加一鍵控制方案類型,并通過顯示電路的顯示,共有10種方案類型,其中第01、02、03、10號方案對應(yīng)有相應(yīng)的廣告燈顯示方案,其余為廣告

6、燈全滅。確定鍵確定方案讓廣告燈開始閃亮。鍵盤輸入電路如圖4.2.1.2.4 數(shù)字顯示電路數(shù)字顯示電路主要有兩個共陽極數(shù)碼管組成,采用靜態(tài)顯示方案,將共陽極數(shù)碼管的段碼由P0、P2口輸出,驅(qū)動數(shù)碼管顯示。每條支路加一個200的限流電阻。顯示電路復(fù)位后顯示00,當不斷按下加一鍵是,數(shù)碼管分別顯示01、02、03、04、05、06、07、08、09、10,分別對應(yīng)十種相應(yīng)的顯示方案。顯示電路電路圖如圖5.ponrADQpg3TApzFO3TAD3rnjarADSPNJEVAS _PKW*專二PZA1E3 F 工工A11 5HAiRP2SVA13 陛 MAi,工7稿傕=' pj.inxiF3.

7、tfTD P3jST113 1 - 運 幗172孑而圖4鍵盤輸入電路圖5數(shù)字顯示電路2.1.2.5 廣告燈電路廣告燈電路為本課設(shè)主要控制的電路,由八個發(fā)光二極管組成,每個發(fā)光二極管接一個200的限流電阻。廣告燈電路如圖6.當確定鍵按下后,廣告燈即開始按照數(shù)碼管顯示的數(shù)字顯示不同的閃亮方案,其中方案01為左循環(huán)亮一秒閃爍;方案02為右循環(huán)亮一秒閃爍;方案03為“100000000、間隔1100000011111111”遞增間隔1秒閃爍;方案10為“01010101,10101010一秒閃爍;其余方案燈滅。圖6廣告燈電路2.1.2.6總電路圖總電路如圖7.圖7總電路圖2.1.3系統(tǒng)調(diào)試首先在pro

8、teus中畫好電路圖,加載程序查看仿真效果。對不滿足要求的地方,首先檢察設(shè)計思路是否正確,在設(shè)計思路正確的前提下針對錯誤的類型檢察硬件的選擇和對應(yīng)軟件的設(shè)計是否正確,發(fā)現(xiàn)錯誤后首先考慮是否可以通過改變軟件來實現(xiàn),軟件不能實現(xiàn)的再考慮改變硬件電路實現(xiàn)。本課設(shè)在仿真調(diào)試中遇到的難點主要是對加一鍵的確定,由于在方案運行時要求加一鍵仍然有效,而每種方案中的延時程序與按鍵的延時去抖程序相互交錯,給確定加一鍵的一次有效按下帶來了很大的困難,經(jīng)常出現(xiàn)按時間短了沒有效果,按時間長了又會確認兩次的情況。最后幾經(jīng)修改才打到了要求的效果,當上一種方案正在運行時,按下加一鍵不要松開,等廣告燈全滅后再松開,可使加一鍵每

9、次都成功確認一次。在硬件實物做好后,加載程序調(diào)試,對與仿真情況不符的電路檢察焊接情況和硬件的好壞。最后對操作的流暢性進行完善,使硬件電路易于操作,不會出現(xiàn)錯誤判斷。在硬件調(diào)試時,本課設(shè)遇到的困難主要是由于查閱資料時的疏漏我們把數(shù)碼管的c腳和e腳接反了,導(dǎo)致數(shù)字無法正常輸出。由于硬件電路已經(jīng)完成,要改動是比較復(fù)雜的。后來在研究是發(fā)現(xiàn),所謂的數(shù)碼管段碼其實是人為規(guī)定的,變動硬件中的c腳和e腳與變動程序中的c、e兩腳對應(yīng)的電平是一樣,所以我將書中的共陽極數(shù)碼管段碼“根據(jù)”我們電路進行了修改,換了c、e對應(yīng)的電平。重新編譯加載后,果然顯示正常了,從而避免了對硬件的修改。2.2軟件設(shè)計2.2.1 系統(tǒng)分

10、析本課設(shè)的程序主要分為按鍵確認、延時、數(shù)碼管顯示和四種廣告燈控制幾部分。按鍵確認采用典型的延時去抖法,是按鍵每次按下都只被有效確認一次。延時程序主要用于去抖和廣告燈閃亮間隔的控制,數(shù)碼管顯示則是給相應(yīng)的P口賦值段碼。四種廣告燈控制用于控制8個發(fā)光二極管的閃亮順序和個數(shù)。程序設(shè)計的總框圖如圖8.開始圖8程序設(shè)計總框圖2.2.2 系統(tǒng)設(shè)計2.2.2.1 按鍵確認程序通過voidkey_detect()子函數(shù)采集相應(yīng)的P口的電平判斷按鍵是否按下,程序見系統(tǒng)實施中的源程序。2.2.2.2 數(shù)碼管顯示程序通過voiddisplay(void)子函數(shù)來顯示相應(yīng)的方案數(shù),程序見系統(tǒng)實施中的源程序。2.2.2

11、.3 延時程序通過voiddelay(unsignedint)子函數(shù)來完成延時功能,程序見系統(tǒng)實施中的源程序。2.2.2.4 .四種廣告燈控制程序通過分別調(diào)用voidright_loop()、voidleft_loop()、voidother_program()、voidji_ou()四種子函數(shù)來顯示相應(yīng)的閃爍方案,程序見系統(tǒng)實施中的源程序。2.2.3 系統(tǒng)實施本課設(shè)所用源程序如下:#include<reg52.h>#include<intrins.h>unsignedcharcodetable=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x

12、f8,0x80,0x90;unsignedintflag=0;voidkey_detect(void);voiddisplay(void);voiddelay(unsignedint);voidright_loop();voidleft_loop();voidother_program();voidincrease();voidji_ou();sbitk1=P0A0;/加一鍵sbitk2=P0A1;確定鍵voidmain()while(1)key_detect();if(flag=11)flag=0;display();/*函數(shù)功能:實現(xiàn)任務(wù)一:流水燈左循環(huán)亮1秒閃爍*/voidleft_lo

13、op()unsignedchartemp;temp=0x7f;while(1)temp=_crol_(temp,1);delay(100);P1=temp;delay(100);P1=0xff;if(k1=0)P1=0xff;/燈全滅delay(20);if(k1=0)P1=0xff;flag+;delay(10);while(!k1);/檢測是否松開按鍵delay(20);while(!k1);break;/*函數(shù)功能:實現(xiàn)任務(wù)二:流水燈右循環(huán)亮1秒閃爍*/*voidright_loop()unsignedchartemp;temp=0xfe;while(1)temp=_cror_(temp

14、,1);delay(100);P1=temp;delay(100);P1=0xff;if(k1=0)delay(20);if(k1=0)P1=0xff;flag+;while(!k1);/檢測是否松開按鍵delay(20);while(!k1);break;/*函數(shù)功能:所有燈滅*/voidother_program()P1=0xff;delay(10);if(k1=0)delay(10);if(k1=0)P1=0xff;flag+;delay(10);while(!k1);/檢測是否松開按鍵rdelay(20);while(!k1);*函數(shù)功能:實現(xiàn)任務(wù)三:遞增間隔1秒閃爍*/voidinc

15、rease()unsignedinti=0;unsignedchara=0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00;while(1)if(i>8)i=0;P1=ai;delay(100);P1=0xff;delay(100);i+;if(k1=0)delay(10);if(k1=0)P1=0xff;flag+;delay(10);while(!k1);/檢測是否松開按鍵rdelay(20);while(!k1);break;/*函數(shù)功能:實現(xiàn)任務(wù)十:實現(xiàn)奇偶間隔1秒閃爍*/*voidji_ou()unsignedchara=0x55,0xaa

16、;unsignedinti=0;while(1)if(i>1)i=0;P1=ai;delay(100);P1=0xff;delay(100);i+;if(k1=0)delay(10);if(k1=0)P1=0xff;flag+;delay(10);while(!k1);/檢測是否松開按鍵delay(20);while(!k1);break;/*函數(shù)功能:數(shù)碼管上的顯示*/voiddisplay(void)/顯示函數(shù)unsignedintshi,ge;shi=flag/10;/取十位ge=flag%10;/取個位P2=tableshi;/送十位數(shù)delay(1);P3=tablege;/送

17、個位數(shù)delay(1);*函數(shù)功能:按鍵檢測*/voidkey_detect()if(k1=0)delay(10);if(k1=0)flag+;while(!k1);/檢測是否松開按鍵relseif(k2=0)delay(10);if(k2=0)switch(flag)case1:left_loop();break;case2:right_loop();break;case3:increase();break;case10:ji_ou();break;default:other_program();while(!k2);/檢測是否松開按鍵r/*函數(shù)功能:延時入口參數(shù):z*/voiddelay(

18、unsignedintz)unsignedintx,y;for(x=z;x>0;x-)for(y=619;y>0;y-);3、課程設(shè)計總結(jié)經(jīng)過了兩周的忙碌,課程設(shè)計圓滿結(jié)束了,我在本次課程設(shè)計中主要負責(zé)程序的編寫和調(diào)試。剛開始看到課設(shè)要求時,感到完全無法下手,不知道該怎么把平時所學(xué)的每個元件的知識與要求聯(lián)系起來,后來經(jīng)過和其他組員商量,決定先畫出程序流程圖,再從流程圖入手逐步找的每個環(huán)對應(yīng)的元件。本課設(shè)所用程序為C語言,主要利用對加一按鍵的判斷對標志變量flag進行從1到10輪賦值,其中對按鍵的判斷中用到了典型的延時去抖程序。利用得到的flag值確定數(shù)碼管的段碼,將段碼直接賦給P口,控制數(shù)碼管的顯示。然后再判斷確定鍵按下后利用switch開關(guān)語句對flag進行判斷,調(diào)用對應(yīng)的廣告燈子程序,控制P口的電平變化,來實現(xiàn)廣告流水燈的控制。在程序調(diào)試過程中,深切體會到了細節(jié)決定成敗這句話的正確性,平時再使用產(chǎn)品時總覺得道理很簡單,覺得按一下按鍵就是讓某個電路接通,可真正自己設(shè)計時才發(fā)現(xiàn)用程序去確定一次按鍵是要考慮很多因素的,就連斷開的一瞬間也得考慮到,利用這個電平變化來控制程序走向。每一點疏漏都會使目標無法完

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論