何小映
(西安航空學(xué)院電子工程學(xué)院,陜西西安 710077)
當(dāng)今社會(huì),企事業(yè)單位越來越多,單位大小不同,員工上下班乘坐的交通工具也不相同,大型企事業(yè)單位一般都擁有幾輛甚至幾十輛班車,而員工由于居住地不同,中途下車的比較多。一般來說,單位都會(huì)在起點(diǎn)到終點(diǎn)之間設(shè)置多個(gè)固定的??奎c(diǎn),便于員工上下班乘坐班車,鑒于員工乘坐及下車是隨機(jī)的,如果某些員工要在中途某個(gè)點(diǎn)下車,而這些員工又坐的離司機(jī)駕駛室比較遠(yuǎn),當(dāng)要下車時(shí)就會(huì)比較不方便,因?yàn)樗麄円崆叭ジ嬖V司機(jī),就需要在車輛行駛時(shí)從座位上站起來去告訴司機(jī),有時(shí)車速較快,在車廂過道中行走比較危險(xiǎn),如果被監(jiān)控拍下,司機(jī)還可能會(huì)遭到罰款和扣分的處罰[1]。所以設(shè)計(jì)了一套下車無線提示系統(tǒng)[2],當(dāng)員工需要中途下車時(shí),通過按鍵輸入車的編號和站點(diǎn)編號,駕駛室的顯示器通過無線方式接收到信息,就能提前知道某個(gè)站點(diǎn)是否有人下車,以及有多少人下車,從而能夠提前做好準(zhǔn)備,這樣既方便了司機(jī),也方便了員工,避免了一些交通事故的發(fā)生。
該系統(tǒng)包括發(fā)送部分和接收部分,兩者在硬件上彼此獨(dú)立,通過無線發(fā)送模塊和無線接收模塊進(jìn)行通信,系統(tǒng)的整體結(jié)構(gòu)如圖1 所示[3]。
圖1 系統(tǒng)整體結(jié)構(gòu)圖
在系統(tǒng)中,員工持有的是發(fā)送器,駕駛室安裝的是接收器,對每輛班車都進(jìn)行了編號,如果有5 輛車,則編號從1~5。以一輛班車為例進(jìn)行介紹,假設(shè)該車的車號為“1”,該車中有兩名員工甲和乙,如果員工甲要在中途某站點(diǎn)“1”下車,只需要在發(fā)送器的按鍵上按下車牌號及要下站的站點(diǎn)名稱,員工乙要在中途某站點(diǎn)“2”下車,只需要在發(fā)送器的按鍵上按下車牌號及他要下站的站點(diǎn)名稱,站點(diǎn)名稱及其編號已在程序中進(jìn)行了處理。然后再按下發(fā)送鍵,發(fā)送器就發(fā)送車輛編號和站點(diǎn)編號,發(fā)送時(shí)有兩個(gè)指示燈提示發(fā)送狀態(tài)。接收器收到該車編號信息及站點(diǎn)信息以后,將會(huì)在液晶顯示器12864B上相應(yīng)的站點(diǎn)位置進(jìn)行加一顯示接收到的要下站的人數(shù)。
發(fā)送部分電路主要包括STC89C52RC 單片機(jī)、矩陣式鍵盤、無線發(fā)送模塊NRF24L01、指示電路,其框圖如圖2 所示[4]。
圖2 發(fā)送電路框圖
鍵盤采用矩陣式結(jié)構(gòu),由4×4 按鍵構(gòu)成[5],電路如圖3 所示。
圖3 矩陣式鍵盤
行線連接到P1.0~P1.3,列線連接到P1.4~P1.7,圖3 中,B1~B8 表示車的編號,S1~S7 表示站點(diǎn)編號,可以實(shí)現(xiàn)8 輛車,7 個(gè)站點(diǎn)設(shè)置,能滿足大多數(shù)單位的需求,可以按照實(shí)際情況在按鍵上寫上車輛編號及站點(diǎn)名稱。按鍵的分析采用行列反轉(zhuǎn)法,首先PI口輸出0xF0,讀入PI 口數(shù)據(jù)并保留高四位,然后PI口輸出0x0F,讀入PI 口數(shù)據(jù)并保留低四位,兩次數(shù)據(jù)進(jìn)行或運(yùn)算,根據(jù)不同的運(yùn)算結(jié)果就能知道哪個(gè)鍵被按下。車輛編號與鍵值關(guān)系如表1 所示,站點(diǎn)編號與鍵值關(guān)系如表2 所示。
表2 站點(diǎn)編號與鍵值關(guān)系
表1 車輛編號與鍵值關(guān)系
數(shù)據(jù)的發(fā)送采用無線模塊NRF24L01,該模塊與單片機(jī)的接口電路如圖4 所示[6]。
圖4 無線發(fā)送模塊與單片機(jī)接口
無線發(fā)送模塊采用NRF24L01[7],該模塊工作在2.4 GHz 全球開放ISM 頻段,需要的3.3 V 電源可以采用ASM1117 模塊提供,該模塊采用SPI 接口方式,管腳CE 為片 選信號,CSN 為SPI 片選 信號,SCK 為SPI 時(shí)鐘,MOSI 為SPI 主出/從入信號,MISO 為SPI 從入/主出信號,IRQ 為中斷輸入信號[8]。
指示燈電路部分采用2 個(gè)LED 發(fā)光二極管[9],其中LED 指示發(fā)送過程,該指示燈熄滅表示無數(shù)據(jù)發(fā)送,點(diǎn)亮?xí)r表示正在進(jìn)行發(fā)送,如果接收方?jīng)]有收到,將會(huì)進(jìn)行閃爍表示持續(xù)發(fā)送,如果發(fā)送完畢并且收到應(yīng)答信號,則LED 熄滅,LED1 點(diǎn)亮,所以通過這兩個(gè)指示燈就可以知道發(fā)送的狀態(tài),電路如圖5 所示。
圖5 發(fā)送狀態(tài)指示電路
發(fā)送端程序?yàn)檠h(huán)結(jié)構(gòu),包括矩陣鍵盤處理程序和無線發(fā)送程序,按鍵進(jìn)行車輛號和站點(diǎn)號的輸入,發(fā)送端程序流程如圖6所示。
圖6 發(fā)送程序流程圖
整個(gè)發(fā)送程序?yàn)橐粋€(gè)循環(huán)結(jié)構(gòu),首先判斷是否有鍵按下,如果沒有就一直等待,如果有就通過行列反轉(zhuǎn)法求鍵值M 并判斷,如果M 為車號的鍵值,則賦值給數(shù)組元素TX_BUF[1],如果M 為站點(diǎn)的鍵值,則賦值給數(shù)組元素TX_BUF[2],如果M=0x77,則表示已經(jīng)輸入完畢,將進(jìn)行數(shù)據(jù)發(fā)送,當(dāng)該鍵釋放后就點(diǎn)亮LED,把數(shù)組TX_BUF 中的值一個(gè)一個(gè)地發(fā)送出去,每發(fā)一個(gè)LED 閃爍一次,當(dāng)發(fā)送完畢后,LED 燈滅,LED1 燈亮,從而完成一次信息的發(fā)送,然后進(jìn)入下一次讀鍵。
接收部分電路主要包括STC89C52RC 單片機(jī)、無線接收模塊NRF24L01、指示電路、液晶顯示電路[11],框圖如圖7 所示。
圖7 接收框圖
單片機(jī)與無線接收模塊的接口與無線發(fā)送電路相同,因?yàn)闊o線模塊同時(shí)具有發(fā)送和接收的功能,該部分電路可參見圖4。
顯示采用12864B 液晶顯示器[12],該顯示器顯示4 行信息,如圖8 所示[13]。
圖8 液晶顯示器顯示內(nèi)容
圖8所示僅為其中一輛車的顯示內(nèi)容,一共有4行內(nèi)容。第一行顯示的是車牌尾號后四位及對應(yīng)的編號,車輛不同,顯示的信息也不同,對于每輛車來說接收器是固定的。第二行至第四行顯示的是中途下車的站點(diǎn)名稱及人數(shù),這些站點(diǎn)名稱對于每個(gè)接收器來說都是相同的。站點(diǎn)后面加一顯示要在該站點(diǎn)下車的員工人數(shù),沒有人下車時(shí)無顯示。司機(jī)通過接收器顯示的信息就能提前知道中途下車的情況,從而提前做好準(zhǔn)備。
指示電路用來指示接收狀態(tài),P2.6 連接發(fā)光二極管陰極,當(dāng)接收到數(shù)據(jù)P2.6=0,發(fā)光二極管點(diǎn)亮,延時(shí)3 s 后熄滅[14],從而給司機(jī)提示。
接收程序流程圖如圖9所示[15]。接收程序部分首先對12864 進(jìn)行初始化,包括將其設(shè)為8 位并行口,光標(biāo)及顯示設(shè)置,清屏等,接下來顯示初始信息,如圖8 所示,第一行到第四行分別顯示車輛尾號后四位及車輛編號、站點(diǎn)一名稱、站點(diǎn)二名稱、站點(diǎn)三名稱,這些名稱可以進(jìn)行定制,在編程時(shí)初始化寫入程序中。系統(tǒng)使用定時(shí)器0 進(jìn)行300 ms 定時(shí),用來確定接收時(shí)間,每300 ms 進(jìn)行一次數(shù)據(jù)接收。接下來對接收模塊進(jìn)行初始化設(shè)置,包括設(shè)置接收地址、設(shè)置自動(dòng)應(yīng)答、設(shè)置發(fā)射功率、數(shù)據(jù)傳輸率等[16-18],當(dāng)300 ms 定時(shí)時(shí)間到后,判斷是否收到數(shù)據(jù),如果接收到數(shù)據(jù)而且數(shù)據(jù)的第一個(gè)字節(jié)RBUF[0]為0xa1,再判斷第二個(gè)字節(jié)RBUF[1]是不是本車編號,如果是,再根據(jù)第三個(gè)字節(jié)RBUF[2]的站點(diǎn)號,對k1~k3的值加一并顯示,k1~k3分別表示在第一個(gè)站、第二個(gè)站、第三個(gè)站下站的人數(shù)。
圖9 接收程序流程圖
從實(shí)際需求出發(fā),設(shè)計(jì)了一個(gè)員工到站下車無線提示系統(tǒng),該系統(tǒng)實(shí)現(xiàn)了在單位班車上員工下站時(shí)給司機(jī)發(fā)送無線提示信息,在車輛行駛過程中,到達(dá)員工需要下車的站點(diǎn)前,員工可以在發(fā)送器上隨時(shí)按下車輛編號和站點(diǎn)編號,點(diǎn)擊發(fā)送鍵即可發(fā)送下站提示,司機(jī)處的接收器接收到信息后,司機(jī)就可以通過觀察顯示器上的數(shù)據(jù)采取相應(yīng)的措施,如果有員工下站則提前做好準(zhǔn)備,避免了事故的發(fā)生,如果沒有一個(gè)員工下站,則可以忽略該站,無需???,從而提高通行效率,具有一定的實(shí)用價(jià)值。