摘 要:本文主要介紹了手機(jī)藍(lán)牙LED隨顯系統(tǒng)的結(jié)構(gòu)、工作原理以及上位機(jī)與下位機(jī)程序控制流程和編程實(shí)現(xiàn),為相關(guān)系統(tǒng)設(shè)計(jì)與搭建提供參考。
關(guān)鍵詞:藍(lán)牙;控制;LED點(diǎn)陣顯示屏
中圖分類(lèi)號(hào):TN873
1 系統(tǒng)結(jié)構(gòu)和特點(diǎn)
本系統(tǒng)通過(guò)手機(jī)藍(lán)牙控制LED點(diǎn)陣顯示屏。它是為了解決現(xiàn)有的LED點(diǎn)陣顯示屏修改顯示信息需連接至計(jì)算機(jī)或間接通過(guò)計(jì)算機(jī)修改,對(duì)于普通用戶來(lái)說(shuō)顯得非常不便,以及設(shè)備走線、布局略顯臃腫混亂(配有電源線和數(shù)據(jù)線)且不便移動(dòng)的問(wèn)題。手機(jī)藍(lán)牙LED隨顯系統(tǒng)主要包括:LED點(diǎn)陣顯示面板,主控制器,上位機(jī)手機(jī)藍(lán)牙Android應(yīng)用程序、手機(jī)藍(lán)牙模塊(主設(shè)備)、藍(lán)牙模塊(從設(shè)備)和內(nèi)置電源。主控制器通過(guò)串行接口與藍(lán)牙模塊(從設(shè)備)連接;主控制器通過(guò)接口電路與LED點(diǎn)陣顯示面板連接;上位機(jī)手機(jī)藍(lán)牙Android應(yīng)用程序控制手機(jī)藍(lán)牙模塊(主設(shè)備)與藍(lán)牙模塊(從設(shè)備)通信(單工),電源為整個(gè)系統(tǒng)供電。
2 系統(tǒng)工作原理
手機(jī)端藍(lán)牙模塊(主設(shè)備)首先查找周?chē)幱诳杀徊檎业乃{(lán)牙設(shè)備(從設(shè)備),找到藍(lán)牙設(shè)備后,與其進(jìn)行配對(duì),配對(duì)完成后,主設(shè)備即可向從設(shè)備發(fā)起呼叫,鏈路建立成功后,主從設(shè)備之間即可進(jìn)行數(shù)據(jù)通信,手機(jī)通過(guò)藍(lán)牙模塊(主設(shè)備)將顯示信息發(fā)送到從藍(lán)牙模塊(從設(shè)備),主控制器從藍(lán)牙模塊(從設(shè)備)接收信息,將其轉(zhuǎn)換成點(diǎn)陣信息并刷新LED點(diǎn)陣顯示面板。通信過(guò)程中,主設(shè)備可以發(fā)起斷鏈,斷開(kāi)藍(lán)牙鏈路。主控制器包括:PIC18F4580單片機(jī)最小系統(tǒng)模塊,ISP(在線串行編程)接口模塊,藍(lán)牙模塊(從機(jī)),高通GT21L16S2Y點(diǎn)陣字庫(kù)轉(zhuǎn)換芯片模塊,蜂鳴器模塊,驅(qū)動(dòng)電路模塊,譯碼電路模塊,主控制器與LED顯示面板接口模塊。主控制器系統(tǒng)結(jié)構(gòu)圖如圖1所示。
圖1 主控制器系統(tǒng)結(jié)構(gòu)圖
3 通信協(xié)議
本系統(tǒng)通信模塊采用無(wú)線串口藍(lán)牙從機(jī)模塊(HC-06),默認(rèn)參數(shù):從機(jī),9600,N,8,1。配對(duì)密碼:1234。具體藍(lán)牙通信協(xié)議被封裝在該模塊中,通信采用單工方式,主機(jī)對(duì)指定搜索到的從機(jī)發(fā)送格式化的數(shù)據(jù)包(包格式見(jiàn)圖(2)上層協(xié)議數(shù)據(jù)格式),下位機(jī)接收完整數(shù)據(jù)包后進(jìn)行解析。
3.1 基礎(chǔ)協(xié)議
基礎(chǔ)協(xié)議遵循國(guó)際標(biāo)準(zhǔn)串口通信協(xié)議RS-232C。
3.2 基礎(chǔ)數(shù)據(jù)格式
即串口通信數(shù)據(jù)格式,波特率9600bps,無(wú)奇偶校驗(yàn)位,8位數(shù)據(jù)位,1位停止位。
3.3 上層協(xié)議及數(shù)據(jù)格式
上層協(xié)議數(shù)據(jù)格式包括6個(gè)字段:指令類(lèi)型字段、U1字段、U2字段、U3字段、U4字段、U5字段。每個(gè)字段包含2個(gè)字節(jié)信息,Ux(x=1..5)用于存放上位機(jī)發(fā)送給下位機(jī)的Unicode編碼,指令類(lèi)型字段用來(lái)區(qū)分上位機(jī)發(fā)送給下位機(jī)的信息是指令還是數(shù)據(jù)。上層協(xié)議數(shù)據(jù)格式如圖2所示:
圖2 上層協(xié)議數(shù)據(jù)格式
4 下位機(jī)程序流程
下位機(jī)接收上位機(jī)發(fā)來(lái)的信息(參見(jiàn)“上層協(xié)議數(shù)據(jù)格式”)后解析指令類(lèi)型字段,若為指令(指令類(lèi)型字段值為“CM”),則舍棄U1-U5字段;若為數(shù)據(jù)(指令類(lèi)型字段值為“DD”),則繼續(xù)將U1-U5字段逐個(gè)取出,通過(guò)點(diǎn)陣字庫(kù)轉(zhuǎn)換芯片模塊轉(zhuǎn)換成點(diǎn)陣顯示信息,存于單片機(jī)最小系統(tǒng)模塊內(nèi)的顯示緩沖區(qū)中。
5 參考程序
//頭文件部分
#include
#include\"delay.h\"
#include\"usartc.h\"
#include\"led5.h\"
#include\"spi.h\"
//系統(tǒng)初始化
Init_Disp();
Usart_init();
Spi_init();
//主程序循環(huán)部分
while(1)
{
if(flg==1)
{
recv_count==0; //恢復(fù)接收計(jì)數(shù)器值
readbyte32(a_dot_address); //分別讀出5個(gè)漢字的點(diǎn)陣數(shù)據(jù),存于顯示緩存中
for(j=0;j<32;j++)
{
w[j+k*32]=a_dot[j];
}
disppad6(); //讀顯示緩存,刷新顯示
}
//串行中斷程序部分
#pragma interrupt_level 1
void interrupt HI_ISR()
{
if(RCIF==1)
{
tmp_var[recv_count]=RCREG; //將接收的Unicode 碼存于tmp_var數(shù)組中
CREN=0;
CREN=1;
recv_count+=1; //接收計(jì)數(shù)器加1
if(recv_count==10)
{
flg=1; //置接收完成標(biāo)志
}
RCIF=0;
}
}
6 結(jié)束語(yǔ)
系統(tǒng)基于手機(jī)藍(lán)牙控制,信息修改方便,易操作,體積小,重量經(jīng),省空間,功耗低,實(shí)用經(jīng)濟(jì)。對(duì)于普通用戶來(lái)說(shuō),修改顯示屏的顯示內(nèi)容有如發(fā)送一條短信一樣容易!本系統(tǒng)適用于體育場(chǎng)館、超市、商業(yè)應(yīng)用、銀行、證劵、郵政、碼頭、商場(chǎng)、車(chē)站、郵政、電訊、機(jī)關(guān)、監(jiān)控、學(xué)校、餐廳、酒店、娛樂(lè)等不同場(chǎng)所。
參考文獻(xiàn):
[1]李榮正.PIC單片機(jī)原理及應(yīng)用(第二版)[M].北京:北京航空航天大學(xué)出版社,2007:323-346.
[2]孫曉云.接口與通信技術(shù)原理與應(yīng)用[M].北京:中國(guó)電力出版社,2007:239-242.
作者單位:黑龍江東方學(xué)院,哈爾濱 150000