引言
紅外遙控在家電、玩具、工控、智能儀表中是使用最廣泛的一種通信和遙控手段。Proteus仿真能大大加快該遙控系統的開發周期和提高其性能,但是當前版本的Proteus中尚沒有紅外發射器的仿真元器件,只有一個IRlink模塊可以用于接收并解調紅外信號,給紅外系統仿真帶來了較大的難度。目前學者對紅外遙控系統的接收部分仿真已經有較多的研究,但是還很少有針對紅外遙控發射部分的典型仿真研究。可以設計一種典型的紅外發射器仿真模塊,該模塊在仿真中相當于實際的遙控器。進行紅外遙控系統開發仿真時,可以將此模塊用于紅外遙控接收電路以及其軟件的快速驗證,加快產品開發周期。
1 紅外遙控發射器調制解調過程簡介
紅外遙控發射器發射的一幀數據一般由引導碼、低8位用戶編碼、8位數據碼、8位數據碼的反碼等4部分組成。其中用戶識別碼能區別不同的紅外遙控設備,防止不同機種遙控碼互相干擾。后16位為8位數據碼和8位數據碼的反碼,每次8位的數據碼被傳送之后,它的反碼也隨即被傳送,用于確保接收數據準確。這種遙控碼是采用脈沖寬度調制方式,它的特征是:采用脈寬調制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進制的“1”。
紅外數據幀經編碼后,還要用38kHz的方波進行脈沖幅度調制。如圖1所示,最上面一行為待發射數據的波形,第二行為38k載波,第三行為經載波調制后的紅外發射信號波形,第四行是經過一種專門的紅外接收濾波后的數據還原。可以看出,最后通過解碼還原出來的數據波形與紅外遙控器發射的數據波形相位剛好反向。
2 紅外遙控仿真硬件電路設計
圖2所示是紅外發射接收一體化仿真電路。單片機U2部分為紅外接收,并顯示接收到的紅外編碼,顯示部分可采用數碼管,LCD等顯示器件,學者已經對紅外接收及顯示有較詳細的研究,在此不作論述,只用作驗證紅外遙控發射器模塊的有效性。
單片機U1部分為模擬紅外遙控器發射。因Proteus仿真軟件里面沒有常見的紅外遙控發射器處理芯片,這里用8051單片機U1來實現,其P3.4口輸出待發射數據,該數據經與門U3和38k載波信號調制后發射到接收電路,接收電路再通過Proteus軟件自帶的IRlink模塊解調后送到U2的外部中斷INT0。遙控發射器按鍵輸入采用4×4矩陣鍵盤,當按下某一個鍵后會發出對應的編碼。例如按下鍵K6,按照紅外發射數據幀結構,將通過P3.4口串行發送“00,00,006,0f9”,其中,前面的“00,00”為用戶碼,對于不同的設備需作相應的修改;“006”是代表6號鍵,“0f9”是“006”的反碼,用于校驗,提高傳輸準確性。只要在單片機的程序中對用戶碼和按鍵編碼作相應的修改,就能使該遙控發射器在各類紅外遙控系統仿真中通用。
3 紅外遙控發射器程序設計
3.1 軟件功能概述
根據仿真硬件電路設計,單片機的軟件程序需要完成以下2個功能:1)按鍵掃描:實時對4×4矩陣鍵盤掃描,得到按鍵碼,并根據按鍵碼查找出對應的紅外發射編碼。2)編碼發射:根據前述2.1和2.2的編碼協議通過P3.4口發射紅外編碼。
單片機程序功能較簡單,但是對于按鍵掃描和編碼發射的時序要求較高,既要保證實時掃描到按鍵,又要保證紅外編碼的實時發射。
3. 2 程序設計