摘要 隨著社會的發展,科技也得到進步。相對的,人們對人文的需要也越來越重視。我們從科技服務于人文的角度出發,設計出本POV-LED顯示系統。該系統使用STC89C52RC作為主要控制單元,采用的是POV -LED(POV即persistence of vision視覺停留)技術,借助人眼的視覺暫留效果,通過旋轉LED燈的方式來顯示各種圖像。原理是通過電動機帶動上層的LED燈繞電機為中心軸高速旋轉,同時單片機采集傳感器反饋的信息,控制各個LED燈在旋轉平面對應的位置上點亮,構成一幅點陣畫,由于人的視覺暫留效果,會認為LED是同時點亮的,從而顯示圖像。
一、系統設計方案 1.1、總體方案 本設計采用雙電源供電的方式,一部分供給下層的點擊,另一部分供給上層的單片機。旋轉線陣LED顯示屏在高速旋轉時,使用通過軟件延時使之在相應的時刻亮滅,人的視覺暫留現象,從而形成完整連續的圖像。因此對于顯示方面可以采用單片機依據其晶振頻率控制延時來實現。采用霍爾傳感器采集數據并檢測標志桿,標志桿作為現實的起點,從而得到穩定的顯示畫面。由獨立按鍵開關的切換程序功能,從而顯示不同的畫面。 系統框圖如下: 1.2系統組成 電源部分: 供電部分主要由兩排4節5號電池通過電池盒固定連接組成,能在較長時間內穩定輸出5v的直流電壓供電機及單片機使用。 單片機部分:單片機部分采用STC89C52RC系列單片機芯片,該系列芯片造價低廉,工作穩定。 旋轉顯示部分:旋轉顯示部分主要由16顆貼片式led發光二極管組成。 傳感器部分:傳感器部分采用霍爾傳感器。 2.1主控板的選擇 | | 采用ARM為系統的控制核心,優點是功能強大,集成度度高,提高了運行穩定性,系統的處理速度高,適合作為大規模的系統的控制核心。
| 采用51單片機作為系統的控制核心。用其控LED,足以實現預期的性能指標,操控。51單片機運算功能強,軟件編程靈活、自由度大,功耗低、體積小、技術成熟,價格低廉。 |
由于考慮到不宜太高,那么對系統處理信息的速度要求也就不會太高。綜合成本考慮,我們選擇采用方案二。 2.2 供電方式選擇 LED旋轉采用電機旋轉的方式,以下是兩種電機方案的對比: | | 采用單電源供電,通過單電源同時給主控板和減速直流電機進行供電,該方案的優點是,減少機身的重量,操作簡便。其缺點是,使得單片機的波動較大,影響單片機的工作性能,穩定性比較弱。 | 采用雙電源供電,通過兩個獨立電源分別對單片機和減速直流電機進行供電,此方案的優點是,減少信號波動,穩定性比較好,小車運行較穩定。 |
通過對以上方案盡心比較以上兩種方案,為了得到更穩定的效果,我們選取方案二。
2.3 驅動電機選擇 | | 采用減速直流電機,優點是電路簡單。轉速穩定,調速簡便,且價格低廉。對于智能車的運行,能夠很好的控制。 | 采用步進電機,步進電機是將電脈沖信號轉變為角位移或線位移的開環控制元步進電機件。可以按照人們的預定的速度調速,但是電機的控制較為復雜。 |
表1.1 電機性能對比
綜合考慮,采用減速直流電機作為LED旋轉電機。 2.4傳電方案的選擇 該裝置的難點之一在于供電底座與需要用電的旋轉發光部分的電氣連接,裝置要求能給旋轉發光部分提供穩定的直流電壓的同時阻力較小不影響電機帶動其轉動。 1電刷連接 優點:成本相對較低,能提供穩定電壓,同時電刷工作時旋轉有一定的美觀性,阻力較大。 缺點:會有輕微的噪聲,穩定性較差,易損毀,接觸電阻較大,電壓損耗較大,制作工藝要求高。 2劃環 優點:能提供穩定電壓,接觸電阻極其小,電壓損耗較小,占用體積較小,阻力較小。 缺點:元件價格高。 3無線供電 優點:能提供穩定電壓,阻力較小。 缺點:電路元件數量較多,占用體積較大 綜合考慮我們采用無線供電方式。 2.5旋轉顯示部分的選擇 貼片式Led發光二極管 優點:體積較小,重量較輕。 缺點:亮度稍暗,不適用于室外強光環境。 直插式led發光二極管 優點:亮度較高,顯示效果好。 缺點:占用體積較大,重量較大。 綜合考慮我們采用貼片式Led發光二極管。 3、電路與程序設計 3.1無線供電 單片機系統和LED燈都分布在電機上,被電機帶東旋轉,如果直接用電線必然會被絞在一起然后斷掉,有團隊考慮了兩種方案:1.電刷供電;2.無線供電。在嘗試第一種電刷時,由于電機轉動會產生微微振動,使得電刷不夠穩定導致單片機芯片一直處于重置狀態。所以采用了無線供電,電路圖如下: 原直流電電源供電經過高頻振蕩電路產生振蕩電流傳到傳送模塊—感應線圈。用感應線圈把電能傳到電機上的電路,傳上了的電是交流電,經過整流橋和電容整流濾波后,產生一個穩定的直流電壓給單片機供電。 3.2起始位置校準 電機轉速的穩定性直接決定了顯示是否有重影和浮影。然而,要其完全不變是不可能的。在這種情況下,誤差會積累而形成浮影。 所以,對起始位置的不斷矯正是理由非步進電機制作旋轉LED顯示屏必不可少的技術。通過霍爾傳感器檢測置于固定位置的小磁鐵來不斷定位起始位置消除積累誤差。本裝置中當霍爾原件到固定小磁鐵位置,就會反向導通產生低電平而觸發外部中斷。指針板每旋轉一周,就會產生這樣一個中斷信號,這個信號被稱為“過零信號”。 外部中斷的任務是將旋轉角度清零,以此消除積累誤差。 3.3功能切換 通過當按住按鍵時,讓STC89C51芯片IO口檢測到低電位,然后通過程序設計來實現功能切換; 3.4最小系統與LED線陣 一個條狀電路板上集成了16個貼片型發光LED—線陣LED。集成有LED的電路板繞其一端隨電動機轉動。由STC89C51芯片IO口控制,當轉動到合適的角度時,對應的IO口輸出高電平點亮合適的LED就可以顯示需要顯示的內容。 4 軟件設計 4.1 軟件平臺 簡介:Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發系統,與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優勢,因而易學易用。Keil提供了包括C編譯器、宏匯編、鏈接器、庫管理和一個功能強大的仿真調試器等在內的完整開發方案,通過一個集成開發環境(μVision)將這些部分組合在一起。運行Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統。如果你使用C語言編程,那么Keil幾乎就是你的不二之選,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環境、強大的軟件仿真調試工具也會令你事半功倍。[3]工作界面如圖4.4.1。
另一款用到的軟件是PCtoL2002,可以有效減少程序開發周期。工作界面如圖4.4.2
4.2程序流程設計 該POV-LED通過實時檢測各個模塊傳感器的輸出電平,利用紅外對管檢測黑線實現尋跡,通過火焰傳感器實現報警和滅火,從而實現比賽的基本要求。其程序流程圖如圖4.4所示。 5 結束語 項目設計以STC89C52RC單片機為核心,采用了霍爾傳感器,工作靈敏。該機器人可以實現了如下能: 6附錄
單片機源程序如下:
- #include <reg52.h>
- #include<intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- //Led P1,P2
- sbit key=P3^3;//霍爾開關
- sbit key_1=P3^4;//功能開關
- voidtongxinyuan();
- voidhanzi();
- int s;
- s=0;
- uchar code table[]={
- 0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x20,0x80,0x10,0x80,0x10,0x80,0x08,0x80,0x08,
- 0x80,0x0C,0x80,0x04,0x90,0x06,0x90,0x02,0x88,0x03,0xC8,0x01,0xD8,0xF9,0xF8,0xFF,
- 0xF4,0x7F,0x54,0x02,0x46,0x02,0x46,0x02,0x42,0x02,0x40,0x04,0x00,0x04,0x00,0x04,
- 0x00,0x04,0x40,0x04,0x40,0x04,0xC8,0x02,0x90,0x02,0x90,0x02,0x10,0x02,0x00,0x02,
- 0x01,0x02,0x03,0x02,0xFF,0xFF,0xFE,0xFF,0xFE,0x3F,0x00,0x02,0x00,0x02,0x00,0x02,
- 0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"科",0*/
-
- 0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x18,0x00,0x18,0x40,0x18,0x40,0x08,
- 0x40,0x08,0x40,0x44,0x40,0x84,0x40,0x84,0x40,0x86,0x43,0xE2,0xFF,0xFF,0xFE,0xFF,
- 0x22,0x01,0x20,0x01,0x20,0x00,0x20,0x80,0x00,0x80,0x00,0x80,0x00,0x86,0x20,0x86,
- 0x20,0x46,0x20,0x46,0x20,0x4A,0x20,0x4A,0x21,0x71,0xF3,0x31,0xFE,0x31,0x3E,0x31,
- 0x36,0x39,0x12,0x7F,0x10,0x6F,0x10,0x47,0x10,0xC1,0x10,0xC1,0x10,0xC0,0x10,0x80,
- 0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"技",1*/
-
- 0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x20,
- 0x00,0x20,0x00,0x10,0x00,0x10,0x00,0x18,0x00,0x08,0x00,0x0C,0x00,0x06,0x00,0x06,
- 0x00,0x03,0x80,0x01,0xC0,0x01,0xE0,0x00,0x70,0x00,0x7C,0x00,0xBC,0x00,0x1C,0x01,
- 0x0C,0x01,0x04,0x03,0x00,0x02,0x00,0x06,0x00,0x04,0x00,0x0C,0x00,0x0C,0x00,0x18,
- 0x00,0x18,0x00,0x30,0x00,0x30,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,
- 0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"人",2*/
-
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x40,0x00,0x40,
- 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x40,0x21,0x40,0x21,0x40,0x21,
- 0x20,0x22,0x20,0x32,0x22,0x16,0x22,0x1C,0x22,0x1C,0x26,0x0E,0xE6,0x0F,0xE6,0x1F,
- 0xE4,0x11,0xE0,0x30,0x10,0x30,0x10,0x20,0x10,0x60,0x10,0x60,0x10,0x40,0x10,0xC0,
- 0x10,0xC0,0x10,0xC0,0x10,0xC0,0x10,0xC0,0x10,0xC0,0x00,0x80,0x00,0x80,0x00,0x80,
- 0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"文",3*/
-
- };
-
- voiddelayms(uint z)
- {
- uinti,j;
- for(i=z;i>0;i--)
- for(j=110;j>0;j--);
-
- }
- /*****n(us)延時子程序*****/
- voidDelayUs(uint N)
- {
- uint x;
- for(x=0; x<=N;x++);
- }
- /*****鍵盤掃描*****/
- intkeyscan()
- {
- if(key_1==0)
- {
- delayms(10);
- if(key_1==0)
- {
- while(!key_1);
- if(++s==3)s=0;
- }
- }
- return s;
- }
-
- //****************同心圓******************
- voidtongxinyuan()
- {
- int k;
- P1=0x01;
- for(k=0;k<8;k++)
- {
- delayms(500);
- P1=_crol_(P1,1);
- }
- P1=0x00;
- P2=0x01;
- for(k=0;k<8;k++)
- {
- delayms(500);
- P2=_crol_(P2,1);
- }
- P2=0x00;
- while(key_1);
- }
- //****************漢字******************
- voidhanzi()
- {
- inti;
- if(key==0)
- {
- for(i=0;i<512;i++)
- {
- P1=table[i];
- P2=table[++i];
- DelayUs(10);
- }
- P1=0x00;
- P2=0x00;
- }
- }
-
- //****************主函數******************/
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
完整的Word格式設計報告文檔51黑下載地址:
基于STC89C52的POV.docx
(323.17 KB, 下載次數: 218)
2017-10-31 12:27 上傳
點擊文件名下載附件
報告 下載積分: 黑幣 -5
|