摘要:針對某水下成像過程中水下照明燈的控制問題,設(shè)計(jì)了可視化軟件控制平臺。該平臺基于VC環(huán)境下的串口編程技術(shù),通過多串口卡與單片機(jī)之間數(shù)據(jù)包傳遞的方式,實(shí)現(xiàn)了PC機(jī)同MCS51單片機(jī)通訊,從而達(dá)到了對燈亮度自動調(diào)節(jié)的目的。實(shí)際應(yīng)用表明,該軟件平臺工作穩(wěn)定、可靠,可實(shí)時根據(jù)水下成像照度要求對水下照明燈進(jìn)行智能控制。
關(guān)鍵詞:水下照明燈;智能控制平臺;串口編程;單片機(jī)
引言
在某水下工程應(yīng)用中,需要一定的環(huán)境照度才能達(dá)到成像所需的最低光照條件,而自然光在海水中傳播時衰減很快,成指數(shù)衰減規(guī)律,在晴天陽光直射,水質(zhì)較好的條件下,40米處的照度也只有10Lux左右,幾乎沒有太陽光到達(dá)[1]。為此,在一定水深下,水下成像需要適當(dāng)強(qiáng)度的輔助照明光來增加目標(biāo)照度,提高成像質(zhì)量。本文采用在VC環(huán)境下串口編程技術(shù)進(jìn)行智能控制軟件平臺設(shè)計(jì),結(jié)合控制硬件設(shè)備,該控制平臺可以根據(jù)照度計(jì)測量的環(huán)境照度值,實(shí)現(xiàn)水下成像設(shè)備輔助照明光源的自動調(diào)節(jié),以滿足水下成像的需要。
1 控制單片機(jī)功能設(shè)置
1.1 單片機(jī)實(shí)現(xiàn)的功能
控制單片機(jī)需要實(shí)現(xiàn)以下幾個功能:控制對象選擇;兩盞燈的遠(yuǎn)程開關(guān)控制;遠(yuǎn)程調(diào)光控制;接收反饋信息??刂茖?shí)現(xiàn)的流程如圖1所示。
1.2單片機(jī)端口說明
單片機(jī)通過80C51的P0口輸出8位數(shù)字量,其中P0.0作為燈的開關(guān)控制量,P0.1-P0.6作為燈的數(shù)字化亮度,分32級在最大與最小亮度之間調(diào)節(jié),P1.0-P1.3作為輸入量,在狀態(tài)查詢和自檢操作時通過讀取P1.0-P1.3的狀態(tài)來作出相應(yīng)判斷,P2.0-P2.3用于選通對何盞燈執(zhí)行操作[2][3]。
1.3 通訊數(shù)據(jù)格式說明
單片機(jī)接收包說明
單片機(jī)命令字中:各位為1時有效,7、6、5、4位為命令位、3、2位為選燈位,為1時說明命令對該燈有效;保留字中高7位保留,第0位為1,單片機(jī)進(jìn)行自檢;狀態(tài)格式如表1,其中高3位保留, 4、3、2、1、0位為調(diào)節(jié)的亮度,只有調(diào)節(jié)亮度和開燈命令有效,狀態(tài)檢測時為0;校驗(yàn)字是前五個字節(jié)加和,不考慮進(jìn)位。單片機(jī)返回包命令字格式類似定義。
2 PC機(jī)與單片機(jī)通信協(xié)議設(shè)計(jì)
用戶使用PC機(jī)控制單片機(jī),完成對燈的開關(guān)、亮度調(diào)節(jié)、燈狀態(tài)檢測。
2.1 通訊方式設(shè)置
PC機(jī)采用MOXA CI-134四串口卡同MCS51單片機(jī)通訊,選取COM3作為通信端口,采用雙工、點(diǎn)對點(diǎn)的通信方式,數(shù)據(jù)速率為9600bps,使用數(shù)據(jù)和對通訊數(shù)據(jù)進(jìn)行校驗(yàn),數(shù)據(jù)流由1位起始位+8位數(shù)據(jù)位+1位校驗(yàn)位+1位停止位(奇校驗(yàn))組成[4]。
2.2 數(shù)據(jù)格式設(shè)定
依據(jù)單片機(jī)接收包、發(fā)送包的格式,為PC機(jī)定義與單片機(jī)通信的數(shù)據(jù)結(jié)構(gòu),各保留位均為0。
2.2.1 調(diào)光命令包
typedef struct tagCMDLIGHTPACK
{
BYTE byHead; //包頭0X7E
BYTE byCommand;//命令字
BYTE byReserved; //保留字
BYTE bySatLump1; //燈1狀態(tài)字
BYTE bySatLump2; //燈2狀態(tài)字
BYTE byCRC;//校驗(yàn)字
}
2.2.2 調(diào)光返回包
typedef struct tagRTNLIGHTPACK
{
BYTE byHead;//包頭0X7E
BYTE byCommand; //命令字
BYTE byReturn;//返回值
BYTE bySatLump; //狀態(tài)字
BYTE byCRC; //校驗(yàn)字
}
3 控制平臺軟件設(shè)計(jì)
3.1 控制命令的實(shí)現(xiàn)
控制的實(shí)現(xiàn)主要通過PC機(jī)與控制單片機(jī)之間的命令傳遞來進(jìn)行的,控制命令可以是用戶消息命令,也可以是由控制平臺自己產(chǎn)生控制命令,該控制平臺主要由對水下環(huán)境照度的監(jiān)測值,通過數(shù)據(jù)分析,而自動產(chǎn)生燈的調(diào)節(jié)命令,由程序分析調(diào)節(jié)何盞燈,亮度值調(diào)為多少,給出形成命令包的初始條件,并產(chǎn)生消息,然后在消息響應(yīng)函數(shù)利用事先定義的結(jié)構(gòu)體變量及指針,實(shí)現(xiàn)對發(fā)送包、接收包的管理,完成相應(yīng)操作內(nèi)容。本文設(shè)計(jì)的控制軟件要完成以下操作命令:開/關(guān)燈命令;調(diào)光命令;狀態(tài)查詢命令;自檢命令。
3.2 控制功能的源代碼實(shí)現(xiàn)
VC開發(fā)的控制軟件通過向串口寫數(shù)據(jù)來實(shí)現(xiàn)對單片機(jī)的通信,在PC機(jī)中插入多串口卡,安裝驅(qū)動程序后,可以將多串口卡的庫文件加入工程,直接調(diào)用操作串口的WINAPI函數(shù),實(shí)現(xiàn)串口的初始化和數(shù)據(jù)讀寫[5],主要函數(shù)有:
intWINAPI sio_write(int port, char *buf, int len);
intWINAPI sio_read(int port, char *buf, int len);
控制平臺主體程序流程如圖2所示。
結(jié)束語
本文針對單片機(jī)控制照明燈所要實(shí)現(xiàn)功能,進(jìn)行了單片機(jī)數(shù)據(jù)格式和與PC機(jī)通訊協(xié)議設(shè)置,采用VC的串口編程技術(shù),實(shí)現(xiàn)發(fā)送、接收數(shù)據(jù)包的設(shè)計(jì),通過串口數(shù)據(jù)包的讀寫,實(shí)現(xiàn)對燈的開關(guān)以及亮度調(diào)節(jié)等功能,本文設(shè)計(jì)出來的控制平臺穩(wěn)定可靠,采用的設(shè)計(jì)方法實(shí)用且容易實(shí)現(xiàn),對其他遠(yuǎn)距離智能控制系統(tǒng)的設(shè)計(jì)有一定的借鑒意義。
參考文獻(xiàn)
[1]侍茂崇,高郭平,鮑獻(xiàn)文.海洋調(diào)查方法[M].青島:青島海洋大學(xué)出版社,2000.
[2]賀廉云.用單片機(jī)實(shí)現(xiàn)交通燈的控制[J].電腦學(xué)習(xí), 2008,(01):16~18.
[3]孫涵芳,徐愛卿.MCS-51系列單片機(jī)原理與應(yīng)用[M].北京:北京航空航天大學(xué)出版社,1998.
[4]梁中華,王子威,祁春清,索跡.PC機(jī)與單片機(jī)串行通信的研究[J].沈陽工業(yè)大學(xué)學(xué)報,2005, (03):22~24.
[5]李現(xiàn)勇.Visual C++串口通信技術(shù)與工程實(shí)踐[M].北京:人民郵電出版社,2002.