簡易多彩廣告燈控制設(shè)計課程設(shè)計說明書_第1頁
簡易多彩廣告燈控制設(shè)計課程設(shè)計說明書_第2頁
簡易多彩廣告燈控制設(shè)計課程設(shè)計說明書_第3頁
簡易多彩廣告燈控制設(shè)計課程設(shè)計說明書_第4頁
簡易多彩廣告燈控制設(shè)計課程設(shè)計說明書_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(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.2 系統(tǒng)設(shè)計82.2.2.1 按鍵確認程序82.2.2.2 數(shù)碼管顯示程序82.2.2.3延時程序82.2.2.4.四種廣告燈控制程序82.2.3系統(tǒng)實施93、 課程設(shè)計總結(jié)174、 參考文獻181、課程設(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

3、、和10號方案,初始化為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。a

4、t89c51時鐘電路復(fù)位電路直流5v供電電路按鍵控制電路led燈顯示電路方案顯示電路圖1 硬件設(shè)計總框圖2.1.2單元電路設(shè)計2.1.2.1時鐘電路時鐘電路提供的時鐘信號是單片機工作時必須的控制信號,只有正確的提供了時鐘信號,單片機才能嚴格按照時序執(zhí)行指令進行工作。時鐘頻率直接影響單片機的速度,時鐘電路的質(zhì)量也直接影響單片機系統(tǒng)的穩(wěn)定性。常用的時鐘電路設(shè)計有兩種方式,一種是內(nèi)部時鐘方式,另一種事外部時鐘方式。本課設(shè)采用的是內(nèi)部時鐘方式。內(nèi)部是中方式的時鐘電路由一個6mhz的晶振和兩個30pf的電容組成,時鐘電路的電路圖如圖2。圖2 時鐘電路2.1.2.2復(fù)位電路復(fù)位是單片機的初始化操作,除了進

5、入系統(tǒng)的正常初始化之外,當(dāng)由于程序運行出錯或操作錯誤使系統(tǒng)處于死鎖狀態(tài),為擺脫死鎖狀態(tài),也需要復(fù)位按鍵使rst引腳為高電平使單片機復(fù)位。本課設(shè)采用51單片機典型手動復(fù)位電路,電路由一個200的電阻、一個1k的電阻和一個22uf的極性電容組成。當(dāng)按下復(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)有相

6、應(yīng)的廣告燈顯示方案,其余為廣告燈全滅。確定鍵確定方案讓廣告燈開始閃亮。鍵盤輸入電路如圖4.圖4 鍵盤輸入電路 2.1.2.4數(shù)字顯示電路數(shù)字顯示電路主要有兩個共陽極數(shù)碼管組成,采用靜態(tài)顯示方案,將共陽極數(shù)碼管的段碼由p0、p2口輸出,驅(qū)動數(shù)碼管顯示。每條支路加一個200的限流電阻。顯示電路復(fù)位后顯示00,當(dāng)不斷按下加一鍵是,數(shù)碼管分別顯示01、02、03、04、05、06、07、08、09、10,分別對應(yīng)十種相應(yīng)的顯示方案。顯示電路電路圖如圖5.圖5 數(shù)字顯示電路 2.1.2.5廣告燈電路廣告燈電路為本課設(shè)主要控制的電路,由八個發(fā)光二極管組成,每個發(fā)光二極管接一個200的限流電阻。廣告燈電路如

7、圖6.當(dāng)確定鍵按下后,廣告燈即開始按照數(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)試首先在proteus中畫好電路圖,加載程序查看仿真效果。對不滿足要求的地方,首先檢察設(shè)計思路是否正確,在設(shè)計思路正確的前提下針對錯誤的類型檢察硬件的選擇和對應(yīng)軟件的設(shè)計是否正確,發(fā)現(xiàn)錯誤后首先考慮是否可以通過改變軟件來實

8、現(xiàn),軟件不能實現(xiàn)的再考慮改變硬件電路實現(xiàn)。本課設(shè)在仿真調(diào)試中遇到的難點主要是對加一鍵的確定,由于在方案運行時要求加一鍵仍然有效,而每種方案中的延時程序與按鍵的延時去抖程序相互交錯,給確定加一鍵的一次有效按下帶來了很大的困難,經(jīng)常出現(xiàn)按時間短了沒有效果,按時間長了又會確認兩次的情況。最后幾經(jīng)修改才打到了要求的效果,當(dāng)上一種方案正在運行時,按下加一鍵不要松開,等廣告燈全滅后再松開,可使加一鍵每次都成功確認一次。在硬件實物做好后,加載程序調(diào)試,對與仿真情況不符的電路檢察焊接情況和硬件的好壞。最后對操作的流暢性進行完善,使硬件電路易于操作,不會出現(xiàn)錯誤判斷。在硬件調(diào)試時,本課設(shè)遇到的困難主要是由于查閱

9、資料時的疏漏我們把數(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)分析本課設(shè)的程序主要分為按鍵確認、延時、數(shù)碼管顯示和四種廣告燈控制幾部分。按鍵確認采用典型的延時去抖法,是按鍵每次按下都只被有效確認一次。延時程序主要用于去抖和廣告燈閃亮間隔的控制,數(shù)碼管顯示則是給相應(yīng)的p口賦值

10、段碼。四種廣告燈控制用于控制8個發(fā)光二極管的閃亮順序和個數(shù)。程序設(shè)計的總框圖如圖8. 開始判斷有無加一鍵按下調(diào)用顯示方案調(diào)用led顯示方案判斷有無確定鍵按下圖8 程序設(shè)計總框圖2.2.2 系統(tǒng)設(shè)計2.2.2.1 按鍵確認程序通過void key_detect()子函數(shù)采集相應(yīng)的p口的電平判斷按鍵是否按下,程序見系統(tǒng)實施中的源程序。2.2.2.2 數(shù)碼管顯示程序通過void display(void)子函數(shù)來顯示相應(yīng)的方案數(shù),程序見系統(tǒng)實施中的源程序。2.2.2.3延時程序通過void delay(unsigned int )子函數(shù)來完成延時功能,程序見系統(tǒng)實施中的源程序。2.2.2.4.四種廣

11、告燈控制程序通過分別調(diào)用void right_loop()、void left_loop()、void other_program()、void ji_ou()四種子函數(shù)來顯示相應(yīng)的閃爍方案,程序見系統(tǒng)實施中的源程序。2.2.3系統(tǒng)實施本課設(shè)所用源程序如下:#include<reg52.h>#include<intrins.h>unsigned char codetable=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;unsigned int flag = 0;void key_detect(void);void

12、display(void);void delay(unsigned int );void right_loop();void left_loop();void other_program();void increase();void ji_ou();sbit k1=p00;/加一鍵sbit k2=p01; /確定鍵void main()while(1) key_detect();if(flag=11)flag=0;display(); /*函數(shù)功能:實現(xiàn)任務(wù)一: 流水燈左循環(huán)亮1秒閃爍*/void left_loop() unsigned char temp;temp=0x7f; while(

13、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); /檢測是否松開按鍵rdelay(20); while(!k1); break; /*函數(shù)功能:實現(xiàn)任務(wù)二: 流水燈右循環(huán)亮1秒閃爍*/void right_loop()unsigned char temp;temp=0xfe; while(1)temp=_cror_(temp,1);delay(100);p1=temp;del

14、ay(100);p1=0xff;if(k1=0)delay(20);if(k1=0)p1=0xff;flag+;delay(10);while(!k1); /檢測是否松開按鍵rdelay(20); while(!k1);break;/*函數(shù)功能:所有燈滅*/void other_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秒閃爍*/void increase()

15、unsigned int i = 0;unsigned char a=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秒閃爍*/void ji_ou()unsigned char a=0x55

16、,0xaa;unsigned int i = 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ù)碼管上的顯示*/void display(void) /顯示函數(shù)unsigned int shi,ge; shi=flag/10;/取十位 ge=flag%10; /取個位p2=tableshi;/送十位數(shù)del

17、ay(1);p3=tablege;/送個位數(shù)delay(1); /*函數(shù)功能:按鍵檢測*/void key_detect() if(k1=0)delay(10);if(k1=0) flag+;while(!k1); /檢測是否松開按鍵relse if(k2=0)delay(10);if(k2=0)switch(flag)case 1:left_loop();break;case 2:right_loop();break;case 3:increase();break;case 10:ji_ou();break;default:other_program();while(!k2); /檢測是否松

18、開按鍵r/*函數(shù)功能:延時入口參數(shù):z*/void delay(unsigned int z)unsigned int x,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語言,主要利用對加一按鍵的判斷對標(biāo)志變量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)用程序去確定一次按鍵是要考慮很多因素的,就連斷開的一瞬間也得考慮到,利用這個電平變化來控制程序走向。每一點疏漏都會使目標(biāo)無法完成,幸好有可以利用proteus進行仿真,可以最大程度上減少對硬件的修改。在最后的調(diào)

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論