輕松編程實現(xiàn)無線遙控
本文是采用延時,雖方法有點不一樣,但關(guān)鍵的一點是數(shù)據(jù)傳送速度都不能超過發(fā)送和接收模塊的最快速度,本文使用11ms的延時,那每秒就大概是100個位的數(shù)據(jù)傳送速度,讀者可以將延時程序增大和減小,以此就可以測試出315MHz發(fā)送和接收模塊的最高和最低數(shù)據(jù)傳送速度。
發(fā)射端和接收端的程序見本期配刊光盤,都已盡量地模塊化,能共享的就共享,所以整個程序都比較簡單,且收發(fā)程序都使用的是8051最基本最常用的指令,沒有用復(fù)雜的數(shù)學運算和邏輯運算指令,初學者很容易理解。因為主要是面向單片機初學者,所以本文介紹的編碼格式是比較簡單的,抗干擾效果較差,而無線數(shù)據(jù)通信的編碼方法有很多種,有行業(yè)內(nèi)的標準化編碼方法,也有廠家獨立研發(fā)的,而315MH2收發(fā)模塊的工作原理和工作速度就基本決定了它不能用于高速通信,且也沒有硬件抗干擾的能力,要排除干擾只能完全依靠軟件來實現(xiàn),本文的程序中,當315MHz接收模塊接通電源后就一直處于工作狀態(tài),在有效接收范圍內(nèi)只要有315MHz發(fā)射模塊發(fā)射信號,則接收端就會有輸出,程序經(jīng)筆者實際試驗除配對的發(fā)射和接收兩個系統(tǒng)外,再外加了一個機動車防盜遙控手柄,當然也是315MHz的,當發(fā)射和接收系統(tǒng)之間正在傳送遙控數(shù)據(jù)時將遙控手柄的任意鍵按下,發(fā)現(xiàn)這樣會打斷系統(tǒng)間的數(shù)據(jù)傳送導(dǎo)致接收端接收不到任何數(shù)據(jù),這是最大的缺點,但是對要求較低的應(yīng)用場合應(yīng)該可以滿足,因為程序至少不會對其他的315MHz發(fā)射模塊有響應(yīng),意即不會有誤動作,比如家里用來遙控電燈,不會隨時都有人拿著個汽車防盜遙控器在附近按來按去。
業(yè)余條件下的電路調(diào)試
筆者是單片機愛好者,個人水平和試驗器材有限,是典型的一臺萬用表打天下,手中既沒有示波器來查看波形,也沒有仿真器,對于軟硬件只能靠收發(fā)兩個板子上的發(fā)光二極管和接收端的1602液晶顯示器的實際運行來排錯,如果數(shù)據(jù)發(fā)出來,則與發(fā)射模塊相連的發(fā)光二極管點亮,表明有信號發(fā)出,同樣接收端的發(fā)光二極管如果與發(fā)射端的變化同步,表明接收到了信號,從而完成硬件排錯,最后將接收到的數(shù)據(jù)顯示在顯示器上。
程序上的排錯主要集中在數(shù)據(jù)延時上,剛開始筆者將要發(fā)送的每個數(shù)據(jù)位的延時選得很短,不知不覺中已遠遠超出315MHz發(fā)送和接收模塊的數(shù)據(jù)收發(fā)速度,也就是相當于在串行通信中將波特率設(shè)置過高,導(dǎo)致收發(fā)失敗,這是筆者遇到的最大障礙,因為筆者開始把問題歸結(jié)為硬件故障,在這個不大不小的問題上白白花了很多時間,后來在一次上網(wǎng)查找資料的時候讀到與315MHz模塊相關(guān)的一篇文章,里面提到收發(fā)速度問題,說它的傳輸速度是很低的,不然將工作不正常甚至無法傳輸數(shù)據(jù),筆者這才恍然大悟,回家后立刻對延時進行修改,改一次源碼就重燒錄一次芯片,直到最后將延時鎖定在11ms,至此排錯告一段落,收發(fā)雙方能進行正確的數(shù)據(jù)傳輸了,發(fā)送端發(fā)送的數(shù)據(jù)也基本都能在1602顯示器上顯示出來,但仍有個別的數(shù)據(jù)不穩(wěn)定,筆者分析這主要是硬件本身固有的缺陷和程序的合理性造成的,感興趣的讀者朋友可以在本文的軟硬件基礎(chǔ)上,發(fā)揮自己的能力對電路和軟件再作進一步的修改,以求達到更好的效果。希望大家到《無線電》雜志的BBS論壇里進行討論,將自己對程序的改進方法提出來。
評論