吳躍飛
安徽廣播電視臺制作中心 安徽合肥 230071
隨著科技的發(fā)展,近年單片機的應用也深入到社會生活的各個領(lǐng)域,舞臺燈光的控制方式也因為電子技術(shù)的發(fā)展從模擬控制走向了數(shù)字化控制。舞臺燈光控制方式普遍采用的是DMX512協(xié)議它是美國劇場技術(shù)協(xié)會(United States Institute for Theater Technology,USITT)制定的數(shù)字多路復用協(xié)議。從推出這個協(xié)議標準以來已經(jīng)得到了世界范圍內(nèi)的生產(chǎn)商和使用者的認可,國內(nèi)眾多的燈光生產(chǎn)廠家也紛紛采用該技術(shù)協(xié)議生產(chǎn)燈光設備。
DMX512信號電氣標準采用的是EIA-485電氣標準,波特率為250kbps,DMX512協(xié)議規(guī)定數(shù)據(jù)以數(shù)據(jù)包的形式通過異步通訊的方式進行傳輸。每個數(shù)據(jù)包由512個數(shù)據(jù)幀組成,每幀數(shù)據(jù)包括1位低電平起始位、8位數(shù)據(jù)位和2位高電平停止位。為了使解碼器能夠分辨出DMX512數(shù)據(jù)包,每一個數(shù)據(jù)包以一個不短于88us的低電平信號Break為起始信號,接收器接收到Break信號就準備接收隨后的數(shù)據(jù)幀;在Break信號之后是不短于8us的高電平 MAB (Mark after Break)信號;之后就是數(shù)據(jù)幀。在DMX512協(xié)議中,MAB之后的第一幀數(shù)據(jù)被稱為SC(Start code),即起始字節(jié),在協(xié)議中規(guī)定其為零,但在實際應用中可以由生產(chǎn)廠家自己確定其具體的值,以傳遞特殊消息。SC標明其后面的數(shù)據(jù)是8位控制信號數(shù)據(jù)幀。一個數(shù)據(jù)包發(fā)送完成后,可以發(fā)送 MTBP(Mark Time Between Packets)。MTBP標志著一個完整的信息包發(fā)送完畢,是下一個信息包即將開始的“空閑位”,數(shù)據(jù)包之間可以有時間間隔,也可以沒有。DMX512協(xié)議規(guī)定BREAK信號、MAB信號的最短時間,并規(guī)定BREAK信號、MAB信號、數(shù)據(jù)幀之間及數(shù)據(jù)包之間的時間間隔的最大值不得超過1s,否則當作出錯處理,但是DMX512協(xié)議并未對出錯處理做任何規(guī)定。用戶可以根據(jù)自己的需要進行錯誤處理。
基于STC12C2052的DMX512解碼器主要分為:鍵盤輸入、數(shù)碼管顯示、數(shù)據(jù)通訊、PWM信號的生成、功率驅(qū)動等部分組成。(見圖1)
鍵盤輸入部分采用四鍵盤的外部中斷查詢的方式,主要是用于解碼器的地址碼設置,功能選擇和設置工作。在解碼器正常工作時不需要鍵盤參與,因此不采用掃描式的鍵盤,避免消耗CPU的資源。(見圖2)
圖1
圖2
四位數(shù)碼管顯示采用數(shù)碼管專用驅(qū)動芯片,這樣可以避免單片機掃描數(shù)碼管顯示造成的負擔,同時還可以通過驅(qū)動芯片提供的功能對數(shù)碼管進行操作,例如:關(guān)斷數(shù)碼管顯示、數(shù)碼管顯示閃爍等不同方式來提示當前解碼器的狀態(tài),如通訊信號正常、通訊信號中斷等狀態(tài)。(見圖3)
圖3
數(shù)據(jù)通訊部分采用MAX485與單片機的串口相連接組成單片機的通訊部分。并作了相應的防干擾設計。PWM信號使用STC12C2052提供的四路PWM信號輸出,不需要另外增加部件。
如果需要驅(qū)動功率設備則需要設計功率放大部分,通過PWM信號控制功率驅(qū)動部分實現(xiàn)對大功率器件的驅(qū)動??梢酝ㄟ^功率驅(qū)動部分驅(qū)動步進電機、可控硅調(diào)光、大功率LED、大功率繼電器等設備。根據(jù)需要驅(qū)動的大功率設備,所需的功率驅(qū)動電路也有所不同。用戶可以根據(jù)自己的需要設計合適的驅(qū)動電路。(見圖4)
圖4
解碼器的程序設計關(guān)鍵在于檢測DMX512的Break信號,在檢測到Break信號后,緊接著后面就是DMX512的數(shù)據(jù)包,解碼器接收每幀數(shù)據(jù)并進行計數(shù),直到數(shù)值的大小與單片機設置的地址大小相等,解碼器才會將連續(xù)的四幀數(shù)據(jù)接收下來放在內(nèi)存中,同時把數(shù)據(jù)送到PWM發(fā)生器,PWM的發(fā)生器就會按照數(shù)值生成相應的PWM信號控制燈光的亮度。主程序開始執(zhí)行,先初始化IO口和各個寄存器。并讀取保存在解碼器中的本機地址送到數(shù)碼管顯示解碼器地址,打開串口中斷、定時器中斷和外部中斷,并開始檢測通訊端口的電平變化等待 DMX512信號中的 Break,一旦檢測到Break信號程序即開啟計時器計時,當電平再次發(fā)生變化時計時器中斷并比較計時與Break信號的時長,如果相等程序就認為DMX512通訊已經(jīng)開始。假如時間不正確程序會重新返回繼續(xù)等待真正的Break信號的到來。在主程序運行階段如果有外部中斷請求,那么主程序會暫停運行而跳轉(zhuǎn)到外部中斷去執(zhí)行外部中斷的請求,如鍵盤操作請求等。執(zhí)行完外部中斷請求之后,返回主程序繼續(xù)運行。
結(jié)束語
基于STC12C252的DMX512解碼器,使用器件少、造價成本低、性能穩(wěn)定。這種設計方案已經(jīng)廣泛應用于LED聚光燈、LED帕燈的控制系統(tǒng)中。通過簡單的擴展還可以實現(xiàn)聲控和主從控制等功能。