精品資料(2021-2022年收藏)路燈控制系統(tǒng)設(shè)計_第1頁
精品資料(2021-2022年收藏)路燈控制系統(tǒng)設(shè)計_第2頁
精品資料(2021-2022年收藏)路燈控制系統(tǒng)設(shè)計_第3頁
精品資料(2021-2022年收藏)路燈控制系統(tǒng)設(shè)計_第4頁
精品資料(2021-2022年收藏)路燈控制系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目錄第一章 總體設(shè)計3第二章 硬件設(shè)計32.1 硬件設(shè)計原則32.2 硬件設(shè)計思路42.3 時鐘電路52.4 復(fù)位電路52.4.1可靠性52.4.2 人工復(fù)位62.5 按鍵電路72.6 顯示電路82.6.1 顯示方式選擇82.6.2 LED的驅(qū)動和顯示82.7 路燈電路9附錄一 元器件清單10附錄二 主程序清單10第 15 頁 共 15 頁第一章 總體設(shè)計我們在設(shè)計路燈系統(tǒng)控制器之前,先了解系統(tǒng)所要實現(xiàn)的各個功能情況。在設(shè)計的過程中,除了要讓硬件電路簡潔外,還要兼顧軟件不能過于復(fù)雜。這樣才能達到設(shè)計的實際要求,硬件支持軟件,軟件帶動硬件。本電路設(shè)計的主要思路是:對路燈實現(xiàn)實時控制,最基本的程序

2、是時鐘顯示程序,之后的設(shè)定開燈和關(guān)燈時間并能對路燈進行實時控制都是在基本程序上擴展而得到的。時鐘顯示程序中最關(guān)健是否對數(shù)碼管進行動態(tài)掃描的子程序放在哪里,本課設(shè)中把動態(tài)掃描程序放在T0中斷里,中斷的時間是非1MS,也就是說每1MS掃描一次,掃描頻率非???,利用了人眼的視覺殘留特性,使程序更加簡潔.調(diào)時程序和對路燈的單路控制程序都是按鍵進行控制的.所以對對按鍵的控制顯得尤為重要了.本課設(shè)主程序中一直在對所有的按鍵進行掃描,當按鍵一有動作,在第一時間就執(zhí)行相應(yīng)的程序,達到實時控制的目的.根據(jù)任務(wù)書上的要求進行綜合分析,總設(shè)計方案分為以下幾個步驟:根據(jù)路燈控制系統(tǒng)的功能,選用合理元器件并畫出總體原理

3、圖。 (見附錄)畫出各個程序流程圖的各模塊。根據(jù)流程圖編寫出各模塊的程序。完成主程序及實現(xiàn)模塊調(diào)用。硬件電路的焊接及調(diào)試。硬件軟件的綜合調(diào)試及程序燒制。制作PCB版根據(jù)上述步驟,設(shè)計總體方案的流程圖可簡化為如下:第二章 硬件設(shè)計2.1 硬件設(shè)計原則一般對于大型的硬件設(shè)計的主要思路如下:一個大型的單片機應(yīng)用系統(tǒng)的硬件電路設(shè)計包含兩部分內(nèi)容:一是系統(tǒng)擴展,二是系統(tǒng)的配置,即按照系統(tǒng)功能要求配置外圍設(shè)備,要設(shè)計合適的接口電路。系統(tǒng)的擴展和配置應(yīng)遵循以下原則:1、盡可能選擇典型電路,為硬件系統(tǒng)的標準化、模塊化打下良好的基礎(chǔ)。2、系統(tǒng)擴展與外圍設(shè)備的配置水平應(yīng)充分滿足應(yīng)用系統(tǒng)的功能要求。3、硬件結(jié)構(gòu)應(yīng)結(jié)

4、合程序設(shè)計方案一并考慮。考慮的原則是:軟件能實現(xiàn)的功能盡可能由軟件實現(xiàn),以簡化硬件結(jié)構(gòu)。4、系統(tǒng)中的相關(guān)元器件要盡可能做到性能匹配。5、可靠性及抗干擾設(shè)計是硬件設(shè)計必不可少的一部分。6、盡量減少外圍。系統(tǒng)器件越多,器件之間相互干擾也越強,功耗也增大,也不可避免地降低了系統(tǒng)的穩(wěn)定性1。因而在選擇器件上盡量的簡潔。由于本次的畢業(yè)設(shè)計是一個單片機的小型系統(tǒng),所以對于上述需要注意的事項在這次設(shè)計中并不需要面面具到,我總結(jié)了一下,在這次設(shè)計中需要注意的問題有: 1)注意硬件方案和軟件方案的結(jié)合.2)電路的抗干擾性能.3)對元器件的保護能力,要在電路中對電流敏感元器件進行限流控制.硬件設(shè)計是本次設(shè)計的基礎(chǔ)

5、,它的成功與否關(guān)系到本次畢業(yè)設(shè)計的成敗。首先我們依然是對系統(tǒng)進行分析,分析它有些什么功能,用什么樣的器件才能實現(xiàn)。根據(jù)任務(wù)書的要求,分析出需要的功能有:具備時鐘功能、時間調(diào)節(jié)的調(diào)節(jié)、二極管(模擬路燈)的顯示功能、定時開燈關(guān)燈的時間調(diào)整功能、按鍵控制功能?;谝陨瞎δ芤?,我們決定使用AT89C51芯片,顯示器件選用數(shù)碼管(4個),通過電阻驅(qū)動,驅(qū)動數(shù)碼管的顯示。數(shù)碼管采用動態(tài)顯示。最終確定的結(jié)構(gòu)框圖為:單片機時鐘電路復(fù)位電路按鍵輸入驅(qū)動電路數(shù)碼管顯示二極管顯示圖2-1結(jié)構(gòu)框圖2.2 硬件設(shè)計思路通過硬件電路的分析,當開機后,經(jīng)過上電復(fù)位,時鐘顯示為17:59:50,這時可以調(diào)整時、分、秒按鈕進

6、行精確調(diào)整到當前時間,進行正常走時。開機后系統(tǒng)內(nèi)部自定義開路燈時間為18:00:00,關(guān)路燈時間為6:00:00,如果不做調(diào)整的話,時間就是下午六點鐘開燈,早晨6點鐘關(guān)燈,但春、夏、秋、冬四季的晝夜并不相等,為了更好的節(jié)省資源(電力)。本設(shè)計中可以進行手動調(diào)整,根據(jù)四季的變化來調(diào)整開路燈和關(guān)路燈的時間,更有效的節(jié)省資源。本設(shè)計中另外的一大特點就是在夜晚12:00的時候,路燈會熄滅一半,這種設(shè)計也是為了節(jié)省資源,因為夜深人靜的時候,并不需要太多的路燈照明整個路面,只需要點點燈光就行。然后到早晨六點鐘或自己重新設(shè)定的時間的時候在關(guān)閉其它的路燈。本次設(shè)計中共用到了五個按鈕,和四個發(fā)光二極管,用來控制

7、路燈和調(diào)整時間。按鈕上到下編號為、。為進入調(diào)整開燈、關(guān)燈的時間按鈕,和為退出調(diào)整開燈和關(guān)燈的按鈕,只有通過它才能有效的退出定義開燈和關(guān)燈的調(diào)整狀態(tài),為調(diào)整加一小時的按鈕,為調(diào)整減一小時的按鈕,為調(diào)加一分鐘的按鈕,為調(diào)整減一分鐘的按鈕。發(fā)光二極管從上至下的標號是1,2,320。110為路燈的左邊一排。1120為路燈的右邊一排。2.3 時鐘電路時鐘電路是計算機的心臟,它控制著計算機的工作節(jié)奏。MCS-51單片機允許的時鐘頻率是因型號而異的。晶振的選擇:6MHz的晶振,其機器周期是2us。12MHz的晶振,其機器周期是1us, 也就是說在執(zhí)行同一條指令時用6MHz的晶振所用的時間是12MHz晶振的兩

8、倍。為了提高整個系統(tǒng)的性能我選擇了12MHz的晶振。振蕩方式的選擇:內(nèi)部振蕩方式,MCS-51內(nèi)部都有一個反相放大器,XTAL1、XTAL2分別為反相放大器輸入和輸出端,外接定時反饋元件以后就組成振蕩器,產(chǎn)生時鐘送至單片機內(nèi)部的各個部件,這樣就構(gòu)成了內(nèi)部振蕩方式。外部振蕩方式是把已有的時鐘信號引入單片機內(nèi)。這種方式適合用來使單片機的時鐘與外部信號一致。在我的這個設(shè)計中沒有也無需與外部時鐘信號一致,所以我選擇了內(nèi)部振蕩方式,由于單片機內(nèi)部有一個高增益反相放大器,當外接晶振后,就構(gòu)成了自激振蕩器并產(chǎn)生振蕩時鐘脈沖。晶振我選擇了12MHz,相對于6MHz的晶振,整個系統(tǒng)的運行速度更快了。電容器C1、

9、C2起穩(wěn)定振蕩頻率、快速起振的作用,電容值我選擇了30pF。內(nèi)部振蕩方式所得的時鐘信號穩(wěn)定性高。2.4 復(fù)位電路2.4.1可靠性計算機在啟動運行是都需要復(fù)位,使中央處理器CPU和系統(tǒng)中的其它部件都處于一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。MCS-51單片機有一個復(fù)位引腳RST,它是施密特觸發(fā)輸入,當振蕩器起振后,該引腳上出現(xiàn)2個機器周期(即24個時鐘周期)以上的高電平。使器件復(fù)位,只要RST保持高電平,MCS-51保持復(fù)位狀態(tài)。此時ALE、/PSEN、P0、P1、P2、P3口都輸出高電平。RST變?yōu)榈碗娖胶?,退出?fù)位,CPU從初始狀態(tài)開始工作。復(fù)位以后內(nèi)部寄存器的初始狀態(tài)為(SP=07,P

10、0、P1、P2、P3為0FFH外,其它寄存器都為0。對于NMOS型單片機,在RST復(fù)位端接一個電容至VccHE 一個電阻至Vss,就能實現(xiàn)上電自動復(fù)位,對于CMOS單片機只要接一個電容至Vcc即可。如圖,在加電瞬間,電容通過電阻充電,就在RST端出現(xiàn)一定時間的高電平,只要高電平時間足夠長,就可以使MCS-51有效地復(fù)位。RST端在加電時應(yīng)保持的高電平時間包括Vcc的上升時間和振蕩器起振時間,Vcc上升時間若為10ms,振蕩器起振時間和頻率有關(guān)。10MHz時間約為1ms,1MHz時約為10ms,所以一般為了可靠地復(fù)位,RST在上電時應(yīng)保持20ms以上的高電平。圖2.5中,RC時間常數(shù)越大,上電時

11、RST端保持高電平的時間越長。振蕩頻率為12MHZ時,典型值為C=10uF,R=8.2k。若復(fù)位電路失效,加電后CPU從一個隨機的狀態(tài)開始工作,系統(tǒng)就不能正常運轉(zhuǎn)。圖2-2上電復(fù)位電路2.4.2 人工復(fù)位除上電自動復(fù)位以外,常常需要人工復(fù)位,將一個按鈕開關(guān)并聯(lián)于上電自動復(fù)位電路,按一下開關(guān)就RST端出現(xiàn)一段時間的高電平,即使器件復(fù)位。如圖所示圖2-3上電和開關(guān)復(fù)位而在這次的畢業(yè)設(shè)計中運用的上電復(fù)位電路.即只要一接+5V 電壓,系統(tǒng)就會自動的復(fù)位.出于可靠性和適時性的考慮,我選擇了簡單實用的上電復(fù)位電路上電后,由于電容充電,使RST持續(xù)一段高電平時間。從而實現(xiàn)上電復(fù)位操作。我選擇的C=10uF,

12、R=1k。2.5 按鍵電路在單片機系統(tǒng)中,通常有且僅有一鍵按下才視為按鍵有效。有效的確認方式通常又可以分為兩類。第一類為按下-釋放鍵方式,系統(tǒng)要求從按下倒釋放鍵才算一次有效按鍵。另一類為連擊方式,就是一次按鍵可以產(chǎn)生多次擊鍵效果,其連擊頻率可自己設(shè)定,如3次/秒、4次/秒等。根據(jù)設(shè)計的需要,我選擇了按下-釋放方式,電路如下圖9所示。電路為低電平有效輸出方式,當按鍵按下時輸出為低電平。圖2-4開關(guān)電路圖在按下-釋放鍵方式時,系統(tǒng)先判斷是否有鍵按下,若不用硬件去抖,則同時進行軟件去抖,確認有鍵按下,然后等待至該按鍵釋放才算依次按鍵,注意釋放鍵判斷同樣要進行去抖處理。2.6 顯示電路2.6.1 顯示

13、方式選擇LED數(shù)碼顯示器時常用的顯示器之一,我用的是單片機并口設(shè)計的LED數(shù)碼顯示電路。LED有著顯示亮度高、響應(yīng)速度快的特點,最常用的是七段式LED顯示器,又稱數(shù)碼管。七段式LED顯示器內(nèi)部由7個條形發(fā)光二極管和1個小圓點發(fā)光二極管組成,根據(jù)各管的亮暗組合成字符。從各發(fā)光段電極連接方式分有共陽極和共陰極兩種。所謂共陽方式是指筆畫顯示器各段發(fā)光管的陽極(即P區(qū))是公共的,而陰極互相隔離。所謂共陰方式是筆畫顯示器各段發(fā)光管的陰極(即N區(qū))是公共的,而陽極是互相隔離的。顯示方式的論證:方案一:靜態(tài)顯示方式,就是把共陰極或共陽極的公共端(位選端)連接在一起接地或接5V電源,形成位控端;每一位的段選線

14、(adp)作為段控端。方案二:動態(tài)顯示方式,是單片機應(yīng)用系統(tǒng)中最常用的顯示方式,把所有的顯示器的同名段選端選線相互并接在一起,由同一個8位并行輸出口控制;而各顯示器的位選線則分別由不同輸出口線控制端。這樣各顯示位不能同時顯示不同的數(shù)字或字符。因此要選擇掃描的方法,即從左到右(或從右到左)依次輪流使每位顯示器顯示數(shù)字或字符并保留一段時間(通常位1ms),由于LED的余輝特性以及人眼視覺的惰性,盡管各位顯示器實際上使分時斷續(xù)地顯示,但只要適當選取掃描頻率,給人眼的視察印象就會是在連續(xù)地顯示,而察覺不到閃爍現(xiàn)象。相對與靜態(tài)顯示動態(tài)顯示方式雖然占用的CPU空間較多,但使用的硬件少,所占用的端口也較靜態(tài)

15、顯示方式少,可以大大的節(jié)約系統(tǒng)的端口資源,所以根據(jù)我設(shè)計中沒有擴展端口,端口資源比較緊張,因此我才用的是動態(tài)顯示,能節(jié)約線路板空間,而且效果也不亞于靜態(tài)顯示。2.6.2 LED的驅(qū)動和顯示在電路設(shè)計的過程中,單片機的的P0.0-P0.7作為段選輸出口,經(jīng)上拉電阻加到數(shù)碼管的A-G和DP上,P2.0-P2.5作為位選輸出口,經(jīng)電阻驅(qū)動分別加到數(shù)碼管的COM端。LED的驅(qū)動問題是顯示設(shè)計中的一個非常重要的環(huán)節(jié)。如果驅(qū)動能力差,顯示器高度就低;且驅(qū)動器長期在超負荷下運行很容易損壞。下面就簡單介紹選擇LED驅(qū)動器時應(yīng)注意的問題。顯示分為靜態(tài)顯示和動態(tài)顯示兩種方式,由于這兩種方式有本質(zhì)的不同,因此在選擇

16、LED驅(qū)動器時,一定要分清顯示方式。如果是靜態(tài)顯示,則LED驅(qū)動器的選擇較為簡單,只要驅(qū)動器的驅(qū)動能力與顯示器的工作電流相匹配即可,而且只需要考慮段的驅(qū)動,因為,共陽極接+5V,而共陰極接地,所以位的驅(qū)動無須考慮。動態(tài)顯示則不同,由于一位數(shù)據(jù)的表示是由段和位選信號共同配合完成的,因此必須同時考慮段與位的驅(qū)動能力和位的驅(qū)動能力,而且段的驅(qū)動能力決定位的驅(qū)動能力。段的驅(qū)動能力是由驅(qū)動能力決定位的驅(qū)動能力。段的驅(qū)動能力是由顯示器的亮度決定的,通過發(fā)光的二極管的電流較大,其亮度也就越多,對于靜態(tài)顯示器,當某位電量時,此位中點亮的段通過恒定的電流;而對于動態(tài)顯示器,此電流卻是以一定脈沖方式出現(xiàn)的,其峰值

17、電流來考慮。我采用的是三個數(shù)碼管集成在一起的管子,這種管子的好處是在接線的時候比較簡單,三個COM端接位選接口,非常適合用于動態(tài)顯示。我們所采用的是動態(tài)顯示,雖然有閃爍感,占用的CPU空間較多,但使用的硬件少,能節(jié)約線路板空間。下圖為數(shù)碼顯示的硬件電路設(shè)計:圖2-5數(shù)碼顯示的硬件電路說明:8個上拉電阻是增加D0-D8的驅(qū)動能力的。使其更清楚的顯示。六個電阻也是增加驅(qū)動能力的。2.7 路燈電路本設(shè)計中用的是四個發(fā)光二極管模擬兩路路燈控制,每兩個二極管用來代替一條街或一個干道的路燈,在加上鍵盤的點動控制,實現(xiàn)路燈的多路實時控制。原理圖如下:圖2-6路燈電路附錄一 元器件清單電阻: 1K 十二只(R

18、1-R12) 5.1K 八只 10K 五只排阻: 1K 一只瓷片電容: 20F 兩只 (C1、C2)電解電容: 10F 一只 (C3)集成塊: AT89C52按鍵: 五只 (S1、S2、S3、S4、S5)數(shù)碼顯示管: 六只(LED1-LED6)發(fā)光二極管: 8只(D1-D8)石英晶振: 一只(12MHZ)硬制電路版 一塊附錄二 主程序清單#include <at89X52.h>/ 作為功能切換鍵按一下為設(shè)置現(xiàn)在時間,再按一下為設(shè)置開燈時間,再按一下為設(shè)置關(guān)燈時間,再按一下顯示當前時間sbit function = P10; sbit hour_add = P11;sbit hour

19、_sub = P12;sbit minute_add= P13;sbit minute_sub= P14;sbit lamp1 = P30;sbit lamp2 = P31;sbit lamp3 = P32;sbit lamp4 = P33;bit EN_COCLK = 1;bit BEGIN = 0;unsigned char cnt;unsigned char hour;unsigned char minute;unsigned char second;unsigned char half_second;unsigned int ms50;struct time unsigned char

20、 hour;unsigned char minute;unsigned char second; ds2;unsigned char code tab = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/ CA/unsigned char code choose_bit = 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;unsigned char code choose_bit = 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;unsigned char idata dis

21、data7;unsigned char idata dissetup7;unsigned char turnon4=0x01,0x02,0x04,0x08;unsigned char key_min_hour = 0;/ 分或秒閃爍unsigned char disp_type = 0;/ 記錄時間組unsigned char rn; / 按定時開關(guān)鍵次數(shù)/*延時1毫秒*/void delay1ms(unsigned int i) unsigned int a,b; for(a=0;a<i;a+) for(b=0;b<120;b+);/*顯示時鐘*/void disp_clock(

22、void)unsigned char display;unsigned char i;disdata0 = hour/10;disdata1 = hour%10;disdata2 = minute/10;disdata3 = minute%10;disdata4 = second/10; disdata5 = second%10;for(i=0; i<6; i+) P0 = 0xff;display = tabdisdatai;if(half_second&&(i=3)display &= 0x7f;P2 = choose_biti;P0 = display;de

23、lay1ms(1);P0 = 0xff;/ 關(guān)燈/*顯示設(shè)置時間值*/void disp_init(void)unsigned char display;unsigned char i;dissetup0 = dsdisp_type-1.hour/10;dissetup1 = dsdisp_type-1.hour%10;dissetup2 = dsdisp_type-1.minute/10;dissetup3 = dsdisp_type-1.minute%10;dissetup4 = dsdisp_type-1.second/10; dissetup5 = dsdisp_type-1.seco

24、nd%10;for(i=0;i<6;i+) P0 = 0xff;display = tabdissetupi;if(i=3|i=1)display &= 0x7f;if(+ds1.hour>=24)ds1.hour = 0; break; default: break; if(!hour_sub) delay1ms(20); if(hour_sub=0) while(hour_sub=0);switch(disp_type)case 0:if(-hour=0xff)hour = 23;break;case 1:if(-ds0.hour=0xff)ds0.hour = 23;

25、break;case 2:if(-ds1.hour=0xff)ds1.hour = 23;break;default:break; if(!minute_add) delay1ms(20); if(minute_add=0) while(minute_add=0); switch(disp_type) case 0:if(+minute>=60)minute = 0;break;P2 = choose_biti;P0 = display;delay1ms(1);P0 =0xff; /*鍵盤掃描子程序*/void keyscan(void) unsigned char houradd =1

26、; unsigned char minadd =1; if(!function) delay1ms(20); if(function=0) while(function=0); EN_COCLK = 0; if(+disp_type=3) disp_type = 0;EN_COCLK = 1; if(!hour_add) delay1ms(20); if(hour_add=0) while(hour_add=0); switch(disp_type) case 0: if(+hour>=24)hour = 0; break; case 1: if(+ds0.hour>=24) ds

27、0.hour = 0; break; case 2: case 1:if(+ds0.minute>=60)ds0.minute = 0;break;case 2:if(+ds1.minute>=60)ds1.minute = 0;break;default:break;if(!minute_sub) delay1ms(20); if(minute_sub=0) while(minute_sub=0); switch(disp_type) case 0:if(-minute=0xff)minute = 59;break;case 1:if(-ds0.minute=0xff)ds0.minute = 59;break;case 2:if(-ds1.minute=0xff)ds1.minute = 59;break;default:break; /*conctrl_lamp()控制路燈*/void conctrl_lamp(void)/ 默認狀態(tài)下設(shè)置,

溫馨提示

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

評論

0/150

提交評論