基于單片機(jī)編程的遙控LED廣告牌設(shè)計(jì)
單片機(jī)的作用是將PC機(jī)傳來的圖像點(diǎn)陣或自身EPROM中的圖像點(diǎn)陣暫存在發(fā)射緩沖區(qū)RAM中,再根據(jù)鍵盤的命令串行發(fā)送至編碼器。本文引用地址:http://m.butianyuan.cn/article/159967.htm
單片機(jī)選用的是ATMEL公司的89S52,該芯片運(yùn)算速度較快,性能穩(wěn)定,且價(jià)格便宜。
鍵盤用于設(shè)定圖像移動速度、顯示模式和發(fā)射的通信協(xié)議。
編碼器是本系統(tǒng)的關(guān)鍵部件之一,決定了通信的可靠性。它的功能是接收單片機(jī)的數(shù)據(jù),按設(shè)定的格式進(jìn)行編碼,再串行輸出到發(fā)射器。經(jīng)過比較,我們選用了碼分多址串行編碼專用芯片。該芯片的主要特點(diǎn)有CMOS技術(shù),低功耗,非常高的噪聲免疫性(多幀同步),最多12位3態(tài)地址引腳(最多可提供312個地址碼),最多6位數(shù)據(jù)引腳,大范圍的工作電壓,單電阻振蕩器,輸出形式可設(shè)為鎖存或瞬態(tài)。
發(fā)射器的作用是將編碼后的數(shù)字信號調(diào)制到高頻載波上,再經(jīng)功率放大后發(fā)射出去,它決定了手持發(fā)射機(jī)的無線遙控距離。本系統(tǒng)選用了調(diào)制、驅(qū)動和發(fā)射一體化模塊。該模塊采用聲表諧振器穩(wěn)頻,SMT樹脂封裝,頻率一致性較好,免調(diào)試,特別適合多發(fā)多收無線遙控及數(shù)據(jù)傳輸系統(tǒng)。而一般的LC振蕩器頻率穩(wěn)定度及一致性較差,即使采用高品質(zhì)微調(diào)電容,溫差變化及振動也很難保證已調(diào)好的頻點(diǎn)不會發(fā)生偏移。
采用UPS供電是為了保證手持發(fā)射機(jī)在戶外工作時(shí),發(fā)射緩沖區(qū)RAM中的數(shù)據(jù)不丟失。因?yàn)?,發(fā)射緩沖區(qū)需要暫存的圖像點(diǎn)陣數(shù)據(jù)量很大,若采用超大容量的非易失性存儲器,如E2PROM,F(xiàn)LASH及FRAM等,不僅成本高,而且采購困難,所以系統(tǒng)選用了普通RAM作為緩沖寄存器。
2.3 接收機(jī)和顯示模塊
接收機(jī)和顯示模塊由接收器、譯碼器、單片機(jī)、顯示驅(qū)動、LED屏及供電系統(tǒng)組成,其結(jié)構(gòu)框圖如圖4所示。
圖4 接收機(jī)結(jié)構(gòu)框圖
接收器將接收到的高頻信號經(jīng)放大整形后解調(diào)出數(shù)字編碼信號。我們選用了與發(fā)射模塊相對應(yīng)的接收解調(diào)一體化模塊。該系列模塊采用超外差、二次變頻技術(shù),并將所有的射頻接收、混頻、濾波、數(shù)據(jù)解調(diào)、放大整形電路全部集成在模塊內(nèi),功能高度集成化,免去射頻頻率調(diào)試及超再生接收電路的不穩(wěn)定性,具有可靠性高、頻率穩(wěn)定、接收頻率免調(diào)試等特點(diǎn)。
譯碼器將數(shù)字編碼信號譯碼,再并行輸出給單片機(jī)。我們選用的是與編碼相對應(yīng)的碼分多址串行解碼專用芯片。
單片機(jī)負(fù)責(zé)接收數(shù)據(jù)的識別、保存、顯示方式轉(zhuǎn)換。單片機(jī)選用了ATMEL公司的89S52,通用性好,性價(jià)比高。
顯示模塊用于顯示廣告信息。該模塊包括LED顯示屏和顯示驅(qū)動板,自帶顯示緩沖區(qū),并以動態(tài)掃描方式驅(qū)動LED顯示屏,具有功耗低、亮度大等特點(diǎn)。
接收顯示系統(tǒng)的供電電源沒有特殊要求,但要留有相當(dāng)裕量并注意通風(fēng)散熱,因?yàn)椋芏郘ED廣告牌引起的火災(zāi)都是由于供電系統(tǒng)造成的。
3 軟件結(jié)構(gòu)
本系統(tǒng)的軟件主要由三大模塊組成,即上位機(jī)主控程序、發(fā)射機(jī)主控程序和接收機(jī)主控程序。
3.1 上位機(jī)主控程序
上位機(jī)主控程序?qū)嶋H上包括顯示信息生成程序、顯示點(diǎn)陣轉(zhuǎn)換程序和串口通信程序,是三大主控程序中結(jié)構(gòu)最復(fù)雜的一部分。
顯示信息生成程序完成顯示圖像和文字的錄入、編輯及動畫效果設(shè)計(jì)。該程序首先采用DOS平臺下的主控程序與底層通信軟件結(jié)合,通過串行及并行通信口完成用戶對源文件、INTERNET接口及其他輸入設(shè)備的多參數(shù)錄入。在此基礎(chǔ)上用VisualC++語言設(shè)計(jì)了主控軟件,生成動畫,并通過界面和對話框的形式實(shí)現(xiàn)了對整個上位機(jī)系統(tǒng)的可視化控制。
顯示點(diǎn)陣轉(zhuǎn)換程序就是將生成的顯示信息通過點(diǎn)陣抽取和移動算法將顯示信息轉(zhuǎn)換為LED顯示屏對應(yīng)的點(diǎn)陣數(shù)據(jù)。對于彩色顯示屏,需要將圖像信息的RGB三基色數(shù)據(jù)分別抽樣,并分塊存儲、順序轉(zhuǎn)發(fā);對于連續(xù)的動畫圖像,要按幀分別計(jì)算偏移量,關(guān)鍵是背景圖像與動畫文字要同步。該部分的軟件是在TURBOC3.0的環(huán)境下編寫的。
串口通信程序則較為簡單,附屬于點(diǎn)陣轉(zhuǎn)換程序中。
限于篇幅和技術(shù)原因,這里僅以PC機(jī)漢字抽取發(fā)送程序?yàn)槔瑪⑹銎湓砗徒Y(jié)構(gòu)。
設(shè)終端顯示屏所顯示的是16×16的漢字點(diǎn)陣。所以,要想在終端上顯示廣告信息,必須將該信息所包含的漢字的點(diǎn)陣數(shù)據(jù)傳到終端上。在TURBOC3.0中,將漢字賦值給一個變量時(shí),實(shí)際上是將該漢字的區(qū)位碼賦值給這個變量。通過用UltraEdit-32以二進(jìn)制的形式,觀察DOS的漢字庫文件chs16.fon,發(fā)現(xiàn)漢字是以點(diǎn)陣的形式存儲的。每個漢字都是16×16的點(diǎn)陣,筆劃經(jīng)過的地方為“1”,其余為“0”。這樣,按從上到下,從左到右的順序,一個漢字由256個點(diǎn)組成,也就是32個字節(jié)。漢字按區(qū)位碼的順序排列在漢字字庫中,區(qū)碼為行,位碼為列,一區(qū)有94位。這樣,某漢字在漢字庫中的偏移地址為(區(qū)碼×94+位碼)×32。取出后的32字節(jié)漢字點(diǎn)陣,經(jīng)由PC機(jī)的串行口送入到發(fā)射機(jī)中。其流程如圖5所示。
圖5 PC機(jī)軟件流程圖
紅外遙控器相關(guān)文章:紅外遙控器原理
評論