新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 一種基于ATmega8L的調頻立體聲收音機設計

        一種基于ATmega8L的調頻立體聲收音機設計

        作者: 時間:2014-07-11 來源:網絡 收藏

          3.1 搜臺程序設計

        本文引用地址:http://www.104case.com/article/249573.htm

          搜臺程序可用硬件模式進行搜臺,也可以采用軟件模式進行搜臺。本文著重介紹硬件模式搜臺,軟件模式搜臺可參照硬件搜臺模式進行編程。

          I2C總線接口是由START、命令字節、數據字節及每個字節后的ACK及NACK比特、STOP組成。RDA58027P芯片寫器件地址為0x20,讀器件地址為0x21。RDA5807P芯片內部的I2C總線接口有4個寫數據寄存器,其地址分別是0x02、0x03、0x04、0x05。2個讀數據寄存器,其地址分別為0x0A、0x0B,每個數據寄存器又分為高字節和低字節。這些數據寄存器的地址是不可見的,不能通過單片機直接對指定地址的數據寄存器進行讀/寫操作。因此,單片機在發出讀/寫命令字節后,接下來必須對數據寄存器進行連續地讀/寫操作。其子程序如下:

          

         

          硬件模式搜臺程序設計主要是通過調用連續寫和連續讀操作子程序來對收音模塊寄存器進行讀/寫,其程序流程圖如圖7所示。

          

         

          根據該流程圖編寫的子程序如下:

          

         

          

         

          3.2 紅外遙控解碼程序設計

          由BA5104的編碼格式可知;遙控碼的一幀長度為12位,其中包括3位起始碼、2位用戶碼、7位指令碼。遙控碼的每一幀時間間隔為4T,T=1.6879 ms為一位遙控碼的周期。一幀完整的遙控碼如圖8所示。

          

         

          遙控碼中“1”用3T/4的高電平與T/4的低電平表示,“0”用T/4的高電平與3T/4的低電平表示,一位遙控碼的波形如圖9所示。

          

         

          由圖9可見,要用單片機來判斷遙控發射器發出的是“0”還是“1”,關鍵是要判斷接收脈沖下降沿至上升沿之間的時間。可以采用外部中斷法,也可以采用輸入捕獲功能法,本文采用后一種方法。解碼的思路是:初始化時,將ATmcga8L的ICP1引腳設置為輸入狀態,下降沿觸發,當紅外接收頭接收到紅外遙控信號時,產生下降沿,單片機自動將TCNT1寄存器中的值保存至ICR1寄存器中,在捕獲中斷服務程序中將ICR1中的值保存至T1中;然后將ICP1設置為上升沿觸發,當再次產生捕獲中斷時,將ICR1中的值保存至T2中,將ICP1設置為下降沿觸發,并將TCNT1置0。之后計算出T2-T1的時間并保存至事先開辟的數組中,要注意的是,T2-T1有可能出現負值,此時要將(T2-T1+0xffff)再保存,直到接收完12位數據。

          保存在數組中的數據,當其值為3/4×1.687 9ms≈1266μs時,被認為接收到“1”,當其值為1/4×1.687 9 ms≈422 μs時,被認為接收到“0”。由于遙控發射器和單片機所使用的晶振頻率與標稱值會有一定的偏差,所以在程序中要留有一定的余量。

          結語

          經過多次比對測試,該可以清晰、穩定地收聽省府及本地所發射的調頻電臺信號。

        紅外遙控器相關文章:紅外遙控器原理

        萬能遙控器相關文章:萬能遙控器代碼


        手機電池相關文章:手機電池修復


        pa相關文章:pa是什么


        波段開關相關文章:波段開關原理


        上拉電阻相關文章:上拉電阻原理
        溫濕度控制器相關文章:溫濕度控制器原理

        上一頁 1 2 下一頁

        關鍵詞: AVR ATmega8L 收音機

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 招远市| 明光市| 宜良县| 元阳县| 澄城县| 平和县| 莱西市| 营山县| 观塘区| 新泰市| 绵竹市| 威信县| 革吉县| 营山县| 新邵县| 定陶县| 利川市| 松原市| 交口县| 图片| 当雄县| 乃东县| 福清市| 仙游县| 庆阳市| 上思县| 辽阳县| 南岸区| 额尔古纳市| 绍兴县| 鹤庆县| 静海县| 绥宁县| 永靖县| 抚顺县| 阜阳市| 潜江市| 会理县| 雅江县| 天等县| 秭归县|