新聞中心

EEPW首頁 > 物聯(lián)網(wǎng)與傳感器 > X25045在舞臺燈光換色器設計中的應用

X25045在舞臺燈光換色器設計中的應用

——
作者:金 濤 劉雙喜 時間:2007-08-28 來源:單片機及嵌入式系統(tǒng)應用 收藏

  摘要:燈光舞臺上常用的燈光設備。本文詳細介紹一種采用單片機設計的新型。首先,簡述的工作原理及基使用的DMX512通信協(xié)議。然后,詳細介紹E2PROM芯片的使用。最后,給出的接口設計。

    關鍵詞:換色器

引言

  舞臺燈光效果設計是舞臺場景設計的重要組成部分。目前國內(nèi)使用的各種新型燈光設備,如換色器、調(diào)光器、電腦燈等大多是從國外進口,國內(nèi)幾乎沒有生產(chǎn)。為此,我們應國內(nèi)某舞臺燈不設備廠的要求設計了一種以單片機為控制器的新型舞臺燈光換色器HSQ-1A。該換色器可變換8種色彩,換色精度高,工作可靠。使用時,舞臺上所有的換色器和總控制臺根據(jù)RS-485協(xié)議連成總線網(wǎng)絡;總控制臺作為主機通過總線發(fā)布命令,控制所有換色器的工作。以下介紹換色器的工作原理及設計方案。

一、系統(tǒng)結構和工作原理

  換色器由一個中空的框架、兩根卷軸以及各色透光薄膜組成。制作時,首先將不同顏色的透光膜連接成條幅,并在條幅的兩端安上卷軸。然后用卷軸將條幅卷起,以活動的方式把卷軸安裝在框架的兩側(cè)。使用時,把換色器放在白色光源前方,轉(zhuǎn)動兩根卷切換不同顏色的透光膜,從而產(chǎn)生不同顏色的燈光效果。這種不換光源只換透光膜的換色方案,與更換不同顏色光源的方案相比,雖然換色速度較慢,但成本低,可靠性高。因此,換色器在換色頻度低的場合中應用很廣。

  在換色器的設計中,重點在于卷軸的驅(qū)動和定位機構的設計。過去,采用的交流電機和光電碼盤實現(xiàn)方式,運行噪聲大、定位精度差,在實際使用中效果不理想。現(xiàn)在,在新?lián)Q色器中選用步進電機作為驅(qū)動和定位機構,徹底解決了以上問題。換色器工作時運行平穩(wěn)、噪聲小、定位精度高,完全達到了設計要求。

    總控制臺與換色器之間的通信使用DMX512數(shù)據(jù)傳輸協(xié)議。是美國舞臺燈光協(xié)會(USITT)于1990年發(fā)布的一種燈光控制器與燈具設備進行數(shù)據(jù)傳輸?shù)臉藴?。這包括電氣特性、數(shù)據(jù)協(xié)議、數(shù)據(jù)格式等各方面的內(nèi)容。

  DMX512電氣特性與RS-485完全兼容,包括驅(qū)動器/接收器的選擇、線路負載和多站配置等方面的要求都是一致的。

  DMX512數(shù)據(jù)協(xié)議規(guī)定使用250Kbps的波特率。在進行正常數(shù)據(jù)傳輸之前,發(fā)送1個復位信號,聲明數(shù)據(jù)傳輸?shù)拈_始。隨后的第1幀數(shù)據(jù)稱為起始代碼,其中包含設備類型碼,以指明后續(xù)數(shù)據(jù)的接收設備的類型。最后,按設備編號的順序給每個設備發(fā)送1幀數(shù)據(jù),依次為:1#設備數(shù)據(jù)幀、2#設備數(shù)據(jù)幀,直至最后一個設備。設備總數(shù)最多可達512個,數(shù)據(jù)幀間隔為高電平,最長不超過1s。

  DMX512數(shù)據(jù)格式規(guī)定,1幀數(shù)據(jù)長度為11位。按傳送順序說明如下:

  第1位——起始位,低電平(SPACE);

  第2~9位——數(shù)據(jù)位,從最低位到最高位(LSB~MSB),正邏輯;

  第10、11位——停止位,高電平(MARK);

  奇偶校驗位——不傳送。

二、硬件電路

換色器硬件電路如圖1所示:

  ULN2003A是內(nèi)含7個達林頓管的驅(qū)動芯片,輸入電壓與TTL電平兼容。每個上達林頓管的集電極可吸收最大500mA的電流,耐壓30V,因此可以用來驅(qū)動四相步進電機。

  74LS125三態(tài)門用于控制電機的工作方式。電機正常工作時,74LS125處于導通狀態(tài),兩個電機可以同方向、同步轉(zhuǎn)動;電機復位時,三態(tài)門阻斷,只有一個電機可以轉(zhuǎn)動。

  MAX1487用于驅(qū)動/接收RS-485信號。其接收器的輸入阻抗只有1/4個單位負載,最多可連接128個通信設備。另外,MAX1487的傳輸信號變化沿沒有限制斜率,所以最高數(shù)據(jù)傳輸可達2.5Mbps。

三、X25045介紹

  在采用通信時,換色器的編號用于從總控制臺發(fā)送的數(shù)據(jù)包中選擇發(fā)給本設備的數(shù)據(jù)幀。正常工作時,編號數(shù)據(jù)不會掉電丟失,而且必要時編號還可修改。因此采用XICOR公司的串行E2PROM器件X25045對編號數(shù)據(jù)進行存儲。

  X25045是帶有串行E2PROM的CPU監(jiān)控器。圖2是它的引腳圖:

  S/WDI:片選輸入/看門狗復位輸入;

  SO:串行輸出;

  WP:寫保護輸入;

  Vss:地;

  Vcc:電源;

  RESET:復位輸出;

  SCK:同步時鐘輸入;

  SI:串行輸入。{{分頁}}

  X25045的狀態(tài)寄存器描述器件的當前狀態(tài),各位意義如表1所列。

表1

7 6 5 4 3 2 1 0
0 0 WD1 WD0 BL1 BL0 WEL WIP

  其中,WD1、WD0是看門狗定時時間設置位;BL1、BL0是存儲單元寫保護區(qū)設置位;WEL是只讀標志,1表明寫使能開關打開;WIP也是只讀標志,1代表芯片內(nèi)部正處于寫周期。電復位時,各位都被清零。

X25045芯片功能包括以下4種:

 ?。?)上電復位控制。在對X25045通電時,ERSET引腳輸出有效的復位信號,并保持至少200ms,使CPU有效復位。

 ?。?)電源電壓監(jiān)控。當檢測到電源電壓低于內(nèi)部門檻電壓VTRIP時,RESET輸出復位信號,直至電源電壓高于VTRIP并保持至少200ms,復位信號才被撤消。VTRIP的出廠值根據(jù)芯片型號不同共有5個級別的電壓范圍。對于需要電源電壓精確監(jiān)控的應用,用戶可以搭建編程電路,對芯片內(nèi)VTRIP電壓進行微調(diào)。

 ?。?)看門狗定時器。芯片內(nèi)部狀態(tài)寄存器的WD1、WD0是看門狗定時設置位,通過狀態(tài)寄存器寫指令WRSR修改這2個標志位,就能在3種定時間隔中進行選擇或關閉定時器。對看門狗的復位由CS輸入電平的下降沿完成。表2是WD1、WD0組合的含義。

表2

WD1 WD0 看門狗定時值
0 0 1.4s
0 1 600ms
1 0 200ms
1 1 禁止看門狗工作

 ?。?)串行E2PROM。芯片內(nèi)含512字節(jié)存儲單元,10萬次可靠寫,數(shù)據(jù)保持時間100年。XICOR設計了3種保護方式防止誤寫。包括:WP寫保護引腳,當引腳被拉低時,內(nèi)部存儲單元狀態(tài)寄存器都禁止寫入;存儲區(qū)域?qū)懕Wo模式,通過對狀態(tài)寄存器的BL1、BL0位的設置,可以選擇對不同的存儲區(qū)域進行寫保護;在進行任何寫操作前都必須打開寫使能開關,而且在上電初始化寫操作完成時,寫使能開關自動關閉。顯然,在幾方面的保護之下,產(chǎn)生誤寫的可能性極小,表3是BL1、BL0組合的含義。

表3

BL1 BL0 寫保護的單元地址
0 0 沒有保護
0 1 180H~1FFH
1 0 100H~1FFH
1 1 000H~1FFH

  對X25045的操作是通過4根口線CS、SCK、SI和SO進行同步串行通信來完成的。SCK是外部輸入的同步時鐘信號。在對芯片定改指令或數(shù)據(jù)時,時鐘前沿將SI引腳信號輸入;在讀郵數(shù)據(jù)時,時鐘后沿將數(shù)據(jù)位輸出到SO引腳上。數(shù)據(jù)的輸入/輸出都是高位在先。

芯片內(nèi)部共有6條指令,如表4所列。

表4

命令名稱 命令格式 內(nèi)  容
WREN 0000 0110 打開寫使能開關
WRDI 0000 0100 關閉寫使能開關
RDSR 0000 0101 讀狀態(tài)寄存器
WRSR 0000 0001 寫狀態(tài)寄存器
READ 0000 A8011 讀存儲單元
WRITE 0000 A8010 寫存儲單元

 ?。?)WREN和WRDI是寫使能開關的開/關指令。它們都是單字節(jié)指令。

 ?。?)RDSR和WRSR是狀態(tài)寄存器的讀/寫指令。在從SI輸入指令后,RDSR的執(zhí)行結果,即狀態(tài)寄存器內(nèi)容須從SO讀出;而WRSR需要緊接著輸入修改數(shù)據(jù)。

 ?。?)READ和WEITE是存儲單元的讀/寫指令。輸入指令后(指令碼第三代表存儲單元地址的最高位),接著輸入低八位地址,最后就可以連續(xù)讀出或?qū)懭霐?shù)據(jù)。其中,讀指針和寫指針的工作方式完全不同,讀指針的全部8位用來計數(shù),0FFH溢出后變成00H;寫指針只用最低兩位計數(shù),XXXXXX11B溢出后變成XXXX XX00B,所以連續(xù)寫的實際結果是在4個單元中反復寫入。另外,由于E2PROM的寫入時間長,所以在連續(xù)兩條寫指令之間應讀取WIP狀態(tài),只有內(nèi)部寫周期結束時才可輸入下一條寫指令。

  AT89C2051內(nèi)部沒有SPI接口硬件,因此本系統(tǒng)利用了單片機的4根口線和軟件模擬讀寫時序的方式與X25045通信。軟件包在文末給出。

四、軟件原理

  系統(tǒng)程序包括主程序和串口通信斷服務程序。主程序首先從X25045中取出本設備編號備用,然后進入循環(huán)。特環(huán)程序的主要任務包括:①檢測換色標志,當換色標志有效時,則調(diào)用步進電機驅(qū)動程序控制轉(zhuǎn)抽,將換色器切換到新顏色;②幀間隔1s延時,當時間到時,中斷程序?qū)臀淮诮邮粘绦?;③定時復位X25045的看門狗。

  通信中斷服務程序用于檢測RS-485總線發(fā)送的復位信號和起始代碼。當兩者同時有效時開始對后續(xù)接收的數(shù)據(jù)幀進行幀計數(shù)。當計數(shù)值與設備編號相同時,說明當前幀是給本設備的數(shù)據(jù),于是根據(jù)該數(shù)據(jù)設置換色標志,由主程序執(zhí)行換色動作。

X25045的通信接口軟件:

CS BIT P3.2

SCK BIT P3.3

SI BIT P3.4

SO BIT P3.5

(1)X25045數(shù)據(jù)寫入程序

功能:將緩沖區(qū)數(shù)據(jù)寫入指定地址開始的單元。

入口:F0、R3是E2PROM單元地址最高位低八位;R0是緩沖區(qū)首地址;R2是緩沖區(qū)長度。

WRITEX:LCALL STAX ;指令啟動

MOV A,#06H ;輸出WREN

LCALL BYTE_OUT

LCALL STAX ;下一指令啟動

MOV A,#02H ;輸出WRITE

MOV C,F(xiàn)0 ;插入單元地址最高位

MOV ACC.3,C

LCALL BYTE_OUT

MOV A,R3 ;輸出單元地址低八位

LCALL BYTE_OUT

BYWR:MOV A,@R0 ;從緩沖區(qū)取數(shù)輸出

LCALL BYTE_OUT

INC R0 ;指針加1

DJNZ R2,BYWR ;緩沖區(qū)未空則繼續(xù)輸出

LCALL ENDX ;指令結束

LCALL WIP_CHK ;等待WIP=0

RET

(2)X25045數(shù)據(jù)讀出程序

功能:把指定地址開始的單元數(shù)據(jù)讀出并放入緩沖區(qū)

入口:與寫入程序相同。{{分頁}}

READX:LCALL STAX

MOV A,#03H ;輸出READ

MOV C,F(xiàn)0

MOV ACC.3,C

LCALL BYTE_OUT

MOV A,R3 ;輸出低八位地址

LCALL BYTE_OUT

BYRD:LCALL BYTE_IN ;輸入數(shù)據(jù)送入緩沖區(qū)

MOV @R0,A

INC R0 ;指針加1

DJNZ R2,BYRD ;緩沖區(qū)未滿則繼續(xù)輸入

LCALL ENDX

RET

(3)X25045狀態(tài)寄存器寫入程序

功能:對狀態(tài)寄存器進行設置。

入口:ACC是修改值。

WRSR:LCALL STAX

PUSH ACC

MOV A,#06H ;輸出WREN

LCALL BYTE_OUT

LCALL STAX

MOV A,#01H ;輸出WRSR

LCALL BYTE_OUT

POP ACC ;輸出設置值

LCALL BYTE_OUT

LCALL ENDX

LCALL WIP_CHK ;等待WIP=0

RET

(4)X25045狀態(tài)寄存器讀出程序

功能:讀出狀態(tài)寄存器當前值。

出口:ACC是當前值。

RDSR:LCALL STAX

MOV A,#05H

LCALL BYTE_OUT

LCALL BYTE_IN

LCAL ENDX

RET

(5)其他子程序

WIP_CHK:LCALL RDSR ;等待X25045結束內(nèi)部寫周期

JB ACC.0,WIP_CHK

RET

STAX:SETB CS ;啟動X25045指令

NOP ;先拉高CS,再拉你SCK,最后拉低CS

CLR SCK

NOP

CLR CS

NOP

RET

ENDX:CLR SCK ;結束X25045指令

SETB CS ;先拉低SCK后拉高CS

NOP

NOP

RET

BYTE_OUT:MOV R4,#08H ;向X25045寫入一字節(jié)數(shù)據(jù)

BOUT1:CLR SCK

RLC A

MOV SI,C

SETB SCK

NOP

NOP

DJNZ R4,BOUT1

RET

BYTE_IN:MOV R4,#08H ;從X25045讀出一字節(jié)數(shù)據(jù)

BIN1:CLR SCK

MOV C,SO

RLC A

SETB SCK

NOP

NOP

DJNZ R4,BIN1

RET

RST_DOG:SETB CS ;復位看門狗定時器

NOP

CLR CS

NOP

SETB CS

RET

 



評論


相關推薦

技術專區(qū)

關閉