輕松編程實(shí)現無(wú)線(xiàn)遙控
無(wú)線(xiàn)收發(fā)組件中,315MHz收發(fā)組件是常用的一種,如在機動(dòng)車(chē)防盜應用方面使用315MHz組件的就很多,一般電子商店出售的這種模塊,發(fā)送和接收都是三個(gè)接線(xiàn)端子,一個(gè)數據端,另外兩個(gè)則是電源端,且相對較便宜,作者所買(mǎi)的一對才13元,若要自制則相對要困難些,因為類(lèi)似遙控電路這種高頻電路其調試是很專(zhuān)業(yè)的,需要專(zhuān)用的設備和儀器,大家可參考這方面的資料。
本文引用地址:http://dyxdggzs.com/article/160978.htm電路功能
本文所介紹的無(wú)線(xiàn)收發(fā)電路采用ATMEL公司的AT89C2051單片機作為編碼和解碼電路的核心器件,接收端采用1602字符液晶顯示器顯示所接收到的數據。
工作原理
首先介紹編碼電路。在使用過(guò)程中,筆者直接將發(fā)送模塊的三個(gè)端子與自制的一塊學(xué)習板相連,沒(méi)有添加其他電子元件,屬單片機最小系統,S1和S2為兩個(gè)按鍵,本文程序未用。圖1所示為發(fā)送端電路圖,圖2為接收端電路圖。
接收端將接收到的數據送入單片機的同時(shí),還會(huì )驅動(dòng)發(fā)光二極管以便對硬件和軟件糾錯,若數據接收成功還將顯示在1602液晶顯示器上,因本文主要是介紹無(wú)線(xiàn)遙控,關(guān)于1602字符液晶顯示器的原理與應用不做介紹,讀者可以參考《無(wú)線(xiàn)電》以往的相關(guān)文章,如果出于成本和程序難易程度的考慮,也可改用7段數碼管甚至用發(fā)光二極管來(lái)作數據的顯示。另外要注意一點(diǎn),發(fā)送端和接收端的時(shí)鐘晶振的頻率必須要相同,否則編程會(huì )很麻煩甚至數據無(wú)法正常接收,這一點(diǎn)在介紹程序時(shí)還會(huì )提到。
軟件方面,借鑒了紅外遙控的編碼思路,首先發(fā)送引導脈沖,緊接下來(lái)是數據碼和數據反碼,這一過(guò)程是在定時(shí)中斷里面完成的,定時(shí)時(shí)間一到就調用一加法程序,然后將結果作為數據發(fā)送出去,計數器溢出后就清零進(jìn)入下一循環(huán)。
引導脈沖由一個(gè)低電平和高電平組成,每個(gè)高低電平延時(shí)大約11ms,這個(gè)靠11ms的延時(shí)程序來(lái)實(shí)現,數據碼和反碼每個(gè)位也是使用這個(gè)延時(shí),可以說(shuō)這11ms的延時(shí)就相當于比較簡(jiǎn)單的通信協(xié)議,也是發(fā)送和接收程序的核心部分,只要兩邊的延時(shí)相同,00H到0FFH內的數據都能被正確接收,接收端檢測到1 lms的高低電平變化后,就調用11ms的延時(shí)來(lái)判斷數據0和1,并將正確接收到的數據顯示在液晶顯示器上。前面已講過(guò)若時(shí)鐘晶振的頻率不同那么發(fā)送端和接收端的延時(shí)子程序就要計算得相一致,這樣程序編制就很麻煩甚至不能正常接收數據,這一點(diǎn)和單片機的串口通信是同樣的道理。加入數據反碼為的是提高抗干擾的效果,接收端的程序中就可以設置兩個(gè)數據存儲器,一個(gè)放原碼一個(gè)放反碼,接收完畢再將兩個(gè)存儲器的內容作比較即可判斷是否接收正確,若正確再執行應執行的程序。
評論