吳躍飛
安徽廣播電視臺制作中心 安徽合肥 230071
隨著科技的發展,近年單片機的應用也深入到社會生活的各個領域,舞臺燈光的控制方式也因為電子技術的發展從模擬控制走向了數字化控制。舞臺燈光控制方式普遍采用的是DMX512協議它是美國劇場技術協會(United States Institute for Theater Technology,USITT)制定的數字多路復用協議。從推出這個協議標準以來已經得到了世界范圍內的生產商和使用者的認可,國內眾多的燈光生產廠家也紛紛采用該技術協議生產燈光設備。
DMX512信號電氣標準采用的是EIA-485電氣標準,波特率為250kbps,DMX512協議規定數據以數據包的形式通過異步通訊的方式進行傳輸。每個數據包由512個數據幀組成,每幀數據包括1位低電平起始位、8位數據位和2位高電平停止位。為了使解碼器能夠分辨出DMX512數據包,每一個數據包以一個不短于88us的低電平信號Break為起始信號,接收器接收到Break信號就準備接收隨后的數據幀;在Break信號之后是不短于8us的高電平 MAB (Mark after Break)信號;之后就是數據幀。在DMX512協議中,MAB之后的第一幀數據被稱為SC(Start code),即起始字節,在協議中規定其為零,但在實際應用中可以由生產廠家自己確定其具體的值,以傳遞特殊消息。SC標明其后面的數據是8位控制信號數據幀。一個數據包發送完成后,可以發送 MTBP(Mark Time Between Packets)。MTBP標志著一個完整的信息包發送完畢,是下一個信息包即將開始的“空閑位”,數據包之間可以有時間間隔,也可以沒有。DMX512協議規定BREAK信號、MAB信號的最短時間,并規定BREAK信號、MAB信號、數據幀之間及數據包之間的時間間隔的最大值不得超過1s,否則當作出錯處理,但是DMX512協議并未對出錯處理做任何規定。用戶可以根據自己的需要進行錯誤處理。
基于STC12C2052的DMX512解碼器主要分為:鍵盤輸入、數碼管顯示、數據通訊、PWM信號的生成、功率驅動等部分組成。(見圖1)
鍵盤輸入部分采用四鍵盤的外部中斷查詢的方式,主要是用于解碼器的地址碼設置,功能選擇和設置工作。在解碼器正常工作時不需要鍵盤參與,因此不采用掃描式的鍵盤,避免消耗CPU的資源。(見圖2)

圖1

圖2
四位數碼管顯示采用數碼管專用驅動芯片,這樣可以避免單片機掃描數碼管顯示造成的負擔,同時還可以通過驅動芯片提供的功能對數碼管進行操作,例如:關斷數碼管顯示、數碼管顯示閃爍等不同方式來提示當前解碼器的狀態,如通訊信號正常、通訊信號中斷等狀態。(見圖3)

圖3
數據通訊部分采用MAX485與單片機的串口相連接組成單片機的通訊部分。并作了相應的防干擾設計。PWM信號使用STC12C2052提供的四路PWM信號輸出,不需要另外增加部件。
如果需要驅動功率設備則需要設計功率放大部分,通過PWM信號控制功率驅動部分實現對大功率器件的驅動。可以通過功率驅動部分驅動步進電機、可控硅調光、大功率LED、大功率繼電器等設備。根據需要驅動的大功率設備,所需的功率驅動電路也有所不同。用戶可以根據自己的需要設計合適的驅動電路。(見圖4)

圖4
解碼器的程序設計關鍵在于檢測DMX512的Break信號,在檢測到Break信號后,緊接著后面就是DMX512的數據包,解碼器接收每幀數據并進行計數,直到數值的大小與單片機設置的地址大小相等,解碼器才會將連續的四幀數據接收下來放在內存中,同時把數據送到PWM發生器,PWM的發生器就會按照數值生成相應的PWM信號控制燈光的亮度。主程序開始執行,先初始化IO口和各個寄存器。并讀取保存在解碼器中的本機地址送到數碼管顯示解碼器地址,打開串口中斷、定時器中斷和外部中斷,并開始檢測通訊端口的電平變化等待 DMX512信號中的 Break,一旦檢測到Break信號程序即開啟計時器計時,當電平再次發生變化時計時器中斷并比較計時與Break信號的時長,如果相等程序就認為DMX512通訊已經開始。假如時間不正確程序會重新返回繼續等待真正的Break信號的到來。在主程序運行階段如果有外部中斷請求,那么主程序會暫停運行而跳轉到外部中斷去執行外部中斷的請求,如鍵盤操作請求等。執行完外部中斷請求之后,返回主程序繼續運行。
結束語
基于STC12C252的DMX512解碼器,使用器件少、造價成本低、性能穩定。這種設計方案已經廣泛應用于LED聚光燈、LED帕燈的控制系統中。通過簡單的擴展還可以實現聲控和主從控制等功能。