基于STC12C5A60S2的火災(zāi)報(bào)警控制盤設(shè)計(jì)
3.2 LED燈顯示模塊軟件設(shè)計(jì)
本文引用地址:http://www.ex-cimer.com/article/273267.htm如圖5、圖8所示,STC12C5A60S2的P00、P01、P02控制兩片級(jí)聯(lián)的74HC595可以輸出16位任意數(shù)據(jù);STC12C5A60S2的P14、P15、P16、P17控制HC154可以輸出16個(gè)互斥的低有效16位輸出。LED顯示采用動(dòng)態(tài)掃描,先控制HC154輸出一個(gè)互斥的低有效16位輸出選中要顯示LED點(diǎn)陣的列,然后控制兩片級(jí)聯(lián)的74HC154輸出LED點(diǎn)陣對(duì)應(yīng)的列要顯示的內(nèi)容,這樣就顯示好一列,然后進(jìn)行10ms的延時(shí)再顯示下一列。
3.3 CAN通信模塊軟件設(shè)計(jì)
如圖6、圖8所示,MCP2515與STC12C5A60S2通過(guò)SPI總線連接,MCP2515第12引腳INT接到STC12C5A60S2的外部中斷1。當(dāng)MCP2515收到CAN總線上發(fā)送給它的數(shù)據(jù)時(shí),會(huì)觸發(fā)STC12C5A60S2的外部中斷1,此時(shí)STC12C5A60S2通過(guò)SPI總線讀MCP2515的RXB0DLC得到CAN數(shù)據(jù)包的字節(jié)長(zhǎng)度LEN,讀取RXB0D0處的LEN字節(jié)得到CAN數(shù)據(jù)包的內(nèi)容;若MCP2515要發(fā)送CAN數(shù)據(jù)包,則STC12C5A60S2通過(guò)SPI總線寫MCP2515的TXB0DLC寄存器來(lái)設(shè)置CAN數(shù)據(jù)包的長(zhǎng)度LEN,寫MCP2515的TXB0D0~TXB0Dx (x=LEN-1)設(shè)置CAN數(shù)據(jù)包的內(nèi)容。
因?yàn)?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/控制盤">控制盤系統(tǒng)涉及到多機(jī)通信,所以需要設(shè)置CAN通信使用的協(xié)議。CAN總線使用的數(shù)據(jù)幀由7個(gè)不同的位場(chǎng)組成,其中數(shù)據(jù)場(chǎng)代表CAN總線數(shù)據(jù)包內(nèi)容,其長(zhǎng)度最大為8字節(jié),所以要通過(guò)CAN總線發(fā)送數(shù)據(jù)內(nèi)容字節(jié)長(zhǎng)度大于8字節(jié)需要分段進(jìn)行發(fā)送。協(xié)議上使用的數(shù)據(jù)包格式為如表1。
本設(shè)計(jì)中,CAN總線通信的主要內(nèi)容是按鍵信息和LED燈的信息,其中按鍵信息格式用一個(gè)字節(jié)表示,字節(jié)的低7位表示按鍵的實(shí)際值,最高為1表示按鍵請(qǐng)求受控設(shè)備打開,為0表示請(qǐng)求設(shè)備關(guān)閉;LED燈顯示信息用12個(gè)字節(jié)表示,對(duì)應(yīng)96個(gè)LED燈的顯示狀態(tài)。
在協(xié)議中,為了表示CAN數(shù)據(jù)包是表示哪種信息,設(shè)置數(shù)據(jù)包格式中第一個(gè)分段或當(dāng)只有一個(gè)分段時(shí),數(shù)據(jù)包格式中的數(shù)據(jù)DATA[0]=0x01表示按鍵信息,DATA[0]=0x02表示LED燈顯示信息;DATA[1]表示要表示的信息對(duì)應(yīng)的字節(jié)長(zhǎng)度LEN,之后的LEN字節(jié)表示信息的內(nèi)容。
因?yàn)榘存I信息只需要用到一個(gè)字節(jié)就可以表示,所以設(shè)置CAN通信協(xié)議數(shù)據(jù)包格式中SEGFLG為0xfe表示只有一個(gè)分段,數(shù)據(jù)DATA[0]設(shè)置為0x01表示數(shù)據(jù)包代表按鍵信息,數(shù)據(jù)DATA[1]表示按鍵信息的長(zhǎng)度LEN(LEN=1),DATA[2]表示按鍵的消息,DATA[3]為發(fā)送方地址SRC、分段說(shuō)明、數(shù)據(jù)DATA[0]、DATA[1]、DATA[2]的校驗(yàn)和。
若發(fā)送的是LED燈顯示信息,則需要分段進(jìn)行發(fā)送。設(shè)置CAN通信協(xié)議數(shù)據(jù)包格式中SEGFLG分別為1、2、0xff 表示分段1、2和最后一個(gè)分段。分段1的數(shù)據(jù)DATA[0]設(shè)置為0x02表示數(shù)據(jù)包代表LED顯示信息,DATA[1]=0x0c表示LED燈顯示的信息長(zhǎng)度為12字節(jié),DATA[2]~DATA[5]表示LED顯示信息的前4個(gè)字節(jié),字段2的DATA[0]~DATA[5]表示LED顯示信息的第5到第10字節(jié),字段0xff表示DATA[0]、DATA[1]表示LED顯示信息的后兩個(gè)字節(jié),DATA[2]為校驗(yàn)和。
3.4 串口通信軟件設(shè)計(jì)
STC12C5A60S2串口發(fā)送數(shù)據(jù)一次可以發(fā)送多個(gè)字節(jié),不需要分段發(fā)送。本設(shè)計(jì)中主控制盤與消防主機(jī)之間的通信采用串口通信。若使用現(xiàn)有的消防主機(jī),則主控制盤串口通信程序需要根據(jù)消防主機(jī)使用的串口通信協(xié)議進(jìn)行編程。
本設(shè)計(jì)中,重點(diǎn)主要是火災(zāi)報(bào)警控制盤系統(tǒng)的設(shè)計(jì),對(duì)消防主機(jī)設(shè)計(jì)不進(jìn)行深入,假設(shè)消防主機(jī)使用的串口通信協(xié)議如下:通信協(xié)議采用校驗(yàn)和對(duì)發(fā)送過(guò)來(lái)的幀進(jìn)行判斷是否是正確。為保證通信協(xié)議的透明性,即保證用戶的數(shù)據(jù)可以是任何內(nèi)容,發(fā)送方和接收方永遠(yuǎn)不會(huì)對(duì)用戶發(fā)送的數(shù)據(jù)內(nèi)容做任何限制,該通信協(xié)議規(guī)定轉(zhuǎn)義字符為0xdb,若傳送的數(shù)據(jù)是幀尾(0xFF),則將傳送0xdb,0xdc,若傳送的數(shù)據(jù)是轉(zhuǎn)義字符,則傳送0xdb,0xdd這兩個(gè)字符。
通信協(xié)議中的幀格式如表2所示,串口通信協(xié)議中按鍵信息與LED燈顯示信息的表示與CAN通信協(xié)議一樣。
4 總結(jié)
主和從控制盤上面硬件電路是一樣的,只是從控制盤上面不需要串口接口電路,即需要把從控制盤上面的串口接口電路焊接即可。主控制盤的實(shí)物如圖5-1所示。用PC機(jī)的串口調(diào)試助手模擬消防主機(jī),將PC串口與主控制盤的串口連接,將主控制盤與從控制盤的CAN接口相連接,能夠?qū)崿F(xiàn)PC機(jī)串口調(diào)試助手與主控制盤通信,且可以借助主控制盤進(jìn)行與從控制盤通信。
本設(shè)計(jì)采用STC12C5A60S2單片機(jī)作為微控制器,設(shè)計(jì)火災(zāi)報(bào)警主控制盤和從控制盤,組成一套完整簡(jiǎn)便且成本較低的火災(zāi)報(bào)警控制盤系統(tǒng)。該系統(tǒng)能夠根據(jù)火災(zāi)報(bào)警控制系統(tǒng)要監(jiān)控的設(shè)備節(jié)點(diǎn)的數(shù)量進(jìn)行擴(kuò)展,和消防主機(jī)配合使用可以組成一套完整的消防火災(zāi)報(bào)警系統(tǒng)。
參考文獻(xiàn):
[1]陳倬.單片機(jī)在火災(zāi)報(bào)警控制系統(tǒng)中的應(yīng)用[J].科技資訊.2009(22)
[2]陳會(huì)鴿,任鳳娟.基于CAN總線的LED路燈控制器設(shè)計(jì)[J].現(xiàn)代商貿(mào)工業(yè).2014(2)
[3]王為國(guó).ZLG7290與51單片機(jī)的接口與編程[J].中國(guó)基礎(chǔ)教育研究.2008(8)
[4]孔維東,許衛(wèi)強(qiáng).16×16點(diǎn)陣LED電子顯示屏的設(shè)計(jì)[J].無(wú)線互聯(lián)科技.2013(8)
[5]呂寶鋒.基于MCP2515的CAN總線擴(kuò)展[J].電子科技.2012(6)
51單片機(jī)相關(guān)文章:51單片機(jī)教程
燃?xì)鈭?bào)警器相關(guān)文章:燃?xì)鈭?bào)警器原理
評(píng)論