單片機論壇

                       找回密碼
                       立即注冊

                      QQ登錄

                      只需一步,快速開始

                      搜索
                      查看: 88678|回復: 399
                      打印 上一主題 下一主題
                      收起左側

                      我的FM 收音機,51單片機+TEA5767+12864+DS1302+DS18B20+PT2257+TDA2822M

                        [復制鏈接]
                      跳轉到指定樓層
                      樓主
                      使用半年多,運行穩定。現在基本每天下班都會開一個小時。分享給 51hei論壇的朋友們.
                      第一次獨立做一個東西,打樣了兩次。元器件也是優先選擇當時現有的,所以還有很多可以繼續改進的地方。
                      里面很多東西都是參考了51hei論壇上的資料,相當于做了一次整理。在此表示感謝~

                      大體描述下:
                      1、TEA5767模塊,沒有采用網絡流傳的收臺方法,我是直接按PLL步進的方式手動收臺,估計是最精準的方式了。沒有加入自動收臺功能。
                      2、12864點陣屏,ST7920控制,使用了自定義字符(天線、攝氏度)。按鍵開啟背光,10秒無動作自動關閉。
                      3、DS1302/DS18B20,網絡流傳的控制程序。
                      4、PT2257調音,I2C控制,多級音量控制。
                      5、TDA2822M,雙聲道模式,但是只用了一個揚聲器(1W)。可外接功放(不通過調音器,降噪)
                      6、按鍵,采用中斷掃描的方式,4鍵,長按短按區分。
                      7、電臺存儲15個,斷電自動記憶上次使用的頻道。使用內部EEPOM。
                      8、電源使用DC12V變壓器,內部組合為7808和78M05。
                      9、控制器:STC12C5608AD


                      (原文件名:正面.jpg)


                      (原文件名:使用中.jpg)


                      (原文件名:后面.jpg)


                      (原文件名:右側.jpg)


                      (原文件名:左側.jpg)


                      (原文件名:PCB.jpg)


                      (原文件名:TDA2822M和DS1302.jpg)


                      (原文件名:TEA5767模塊.jpg)


                      (原文件名:按鍵和開關.jpg)


                      (原文件名:7808和78M05.jpg)


                      (原文件名:程序截圖.jpg)

                      程序按模塊化寫法,命名、注釋等自認為還算規范,請用Keil u4打開。程序如下:
                      點擊此處下載 程序.rar (153.81 KB, 下載次數: 2491)

                      原理圖是ORCAD畫的,這邊上傳PDF格式。PCB是PADS版本,沒多大_參考價值,這邊就不上傳了。
                      點擊此處下載 原理圖.pdf (74.04 KB, 下載次數: 1731)

                      新手作品,還有很多地方可以繼續改進,比如:
                      1、利用畫圖功能,做個性化的UI。
                      2、加入按鍵的無線遙控。
                      3、報時、鬧鈴、公歷農歷轉換。
                      4、外接功放音量可調。

                      評分

                      參與人數 15威望 +54 黑幣 +112 收起 理由
                      莫子棟 + 8 絕世好帖!
                      泛星夢 + 1 贊一個!
                      123.123.123 + 5 很給力!
                      WSHENQION + 4 共享資料的黑幣獎勵!
                      vvv64 + 5
                      dzbj + 1 銀子不多 意思意思
                      單片機新手426 + 5 絕世好帖!
                      1971417800 + 1 很喜歡,給我這個大一小白很好的啟發
                      ssfc + 5 贊一個!
                      jiangyimfs + 5 很給力!
                      liuyimao485812 + 5 很給力!
                      紅塵有你 + 12 很給力!
                      madell + 5 很給力!
                      lost + 4
                      admin + 50 + 50 發布作品的獎勵,大家多多發布可賺取M幣

                      查看全部評分

                      分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
                      收藏收藏60 轉播轉播 分享分享 分享淘帖 頂8 踩
                      回復

                      使用道具 舉報

                      沙發
                      admin 發表于 2013-6-23 04:08 | 只看該作者
                      通過閱讀作者的 main.c 文件,發現作者的代碼風格很好,很值得我們學習.
                      #include "STC12C5620AD.H"
                      #include "RT12864M.H"
                      #include "delay.h"
                      #include "DS1302.H"
                      #include "DS18B20.H"
                      #include "System_Init.H"
                      #include "Time_Handle.H"
                      #include "Temperature_Handle.H"
                      #include "Radio.H"
                      #include "Key_Handle.H"
                      #include "Key_Scan.H"
                      #include "LCD_Display.H"
                      #include "Channel_Handle.H"
                      #include "Volume_Handle.H"
                      /********************** 聲明外部變量**************************/
                      extern uchar Volume;					//Volume_Handle.c
                      extern uchar Radio_Index;			  	 //From Channel_Handle.c
                      extern uint PLL;  						//From Radio.c
                      /**********************  定義變量 ***************************/
                      bit Flag_40ms;		  					//40ms定時標志位
                      uchar data Work_Mode=0;      			//定義系統狀態
                      uchar data Display_Time[9]={0x20,0x30,0x30,0x3a,0x30,0x30,0x3a,0x30,0x30};           //時間顯示緩存        格式  12:12:12
                      uchar data Display_Date[11]={0x20,0x32,0x30,0x31,0x31,0x2f,0x30,0x30,0x2f,0x30,0x30};//日期顯示緩存        格式  2011/04/07
                      uchar data Display_Day[3]={'M','O','N'};										     //星期顯示緩存        格式  MON,TUE,WED
                      uchar data Display_Temperature[5]={0x20,0x30,0x30,0x20,0x20};                        //時間顯示緩存        格式	 -23
                      uchar data Display_Channel[5]={0x20,0x43,0x48,0x30,0x30};                    	 	 //頻道號顯示緩存      格式	 CH07
                      uchar data Display_FM[9]={0x30,0x30,0x30,0x2e,0x30,0x20,0x4d,0x48,0x7a};	 		//收音頻率顯示緩存	   格式  101.71MHz			  
                      /********************** Timer0 Interrupt **************************/
                      void Timer0_Serves() interrupt 1 using 0
                      {
                      	TH0 = 0xff;		    //設定定時器重裝值
                      	TL0 = 0xd8;		    
                      	Flag_40ms=1;
                      }
                      /********** Main Function *************/
                      void main(void)
                      {
                      	BEEP_DRV=0;		    	   			//關閉蜂鳴器
                      	LCD_BLK=0;				   		  	//關閉LCD背光
                      	System_Init();						//初始化MCU
                      	LCD_Init();							//初始化RT12864M
                      	//DS1302_Init();					//初始化 DS1302(完全掉電后進行參數更新)
                      	TEA5767_Init();					  	//初始化TEA5767,寫入預置參數
                      	Radio_Index=EEPROM_Get_Index();  	//獲取上一次斷電存儲的電臺序號
                      	PLL=EEPROM_Get_PLL(Radio_Index);	//獲取當前序號PLL
                      	TEA5767_Update_PLL();				//更新PLL
                      	Volume_Init();						//初始化聲音
                      	while(1)
                      		{
                      			Time_Handle();
                      			Temperature_Handle();				  	//獲取溫度信息
                      			Key_Handle();
                      			TEA5767_Display_Frequency();
                      			LCD_Display();		           			//顯示刷新
                      		}
                      }
                      回復

                      使用道具 舉報

                      板凳
                      黑仔 發表于 2013-6-23 10:37 | 只看該作者
                      這個是高人作品,51hei論壇有你更精彩
                      回復

                      使用道具 舉報

                      無效樓層,該帖已經被刪除
                      5#
                      無效樓層,該帖已經被刪除
                      6#
                      小藝 發表于 2013-6-24 11:22 | 只看該作者
                      想請教一下樓主,我見你的一段程序寫得很好,在液晶顯示字符時都沒有用得上字符轉換軟件來做,請問程序的原理是什么呢?
                      void LCD_Display(void)
                      {
                              switch (Work_Mode)
                                      {
                                              case 0:
                                                      LCD_Display_String(0,2,"調頻收音");                                 //當前狀態
                                                      

                      “LCD_Display_String(0,2,"調頻收音");”在程序上直接打中文,液晶就能顯示出來的?因為我查過你的程序,都沒有用字符軟件轉換出相關的字符串……是不是用帶字庫的屏,都能學你哪樣寫程序的?
                      回復

                      使用道具 舉報

                      7#
                      無效樓層,該帖已經被刪除
                      8#
                      無效樓層,該帖已經被刪除
                      9#
                      無效樓層,該帖已經被刪除
                      10#
                      無效樓層,該帖已經被刪除
                      11#
                      無效樓層,該帖已經被刪除
                      12#
                      無效樓層,該帖已經被刪除
                      13#
                      無效樓層,該帖已經被刪除
                      14#
                      無效樓層,該帖已經被刪除
                      15#
                      無效樓層,該帖已經被刪除
                      16#
                      無效樓層,該帖已經被刪除
                      17#
                      無效樓層,該帖已經被刪除
                      18#
                      無效樓層,該帖已經被刪除
                      19#
                      無效樓層,該帖已經被刪除
                      20#
                      無效樓層,該帖已經被刪除
                      21#
                      無效樓層,該帖已經被刪除
                      22#
                      無效樓層,該帖已經被刪除
                      23#
                      無效樓層,該帖已經被刪除
                      24#
                      無效樓層,該帖已經被刪除
                      25#
                      無效樓層,該帖已經被刪除
                      26#
                      無效樓層,該帖已經被刪除
                      27#
                      無效樓層,該帖已經被刪除
                      28#
                      無效樓層,該帖已經被刪除
                      29#
                      無效樓層,該帖已經被刪除
                      30#
                      無效樓層,該帖已經被刪除
                      31#
                      無效樓層,該帖已經被刪除
                      32#
                      無效樓層,該帖已經被刪除
                      33#
                      無效樓層,該帖已經被刪除
                      34#
                      無效樓層,該帖已經被刪除
                      35#
                      無效樓層,該帖已經被刪除
                      36#
                      無效樓層,該帖已經被刪除
                      37#
                      無效樓層,該帖已經被刪除
                      38#
                      無效樓層,該帖已經被刪除
                      39#
                      無效樓層,該帖已經被刪除
                      40#
                      無效樓層,該帖已經被刪除
                      您需要登錄后才可以回帖 登錄 | 立即注冊

                      本版積分規則

                      QQ|手機版|小黑屋|單片機論壇 |51黑電子論壇單片機 聯系QQ:125739409;技術交流QQ群582644647

                      Powered by 單片機教程網

                      快速回復 返回頂部 返回列表
                      富二代国产视频