標題: 我的FM 收音機,51單片機+TEA5767+12864+DS1302+DS18B20+PT2257+TDA2822M [打印本頁]
作者: l5151 時間: 2013-6-19 16:53
標題: 我的FM 收音機,51單片機+TEA5767+12864+DS1302+DS18B20+PT2257+TDA2822M
使用半年多,運行穩(wěn)定。現(xiàn)在基本每天下班都會開一個小時。分享給 51hei論壇的朋友們.
第一次獨立做一個東西,打樣了兩次。元器件也是優(yōu)先選擇當時現(xiàn)有的,所以還有很多可以繼續(xù)改進的地方。
里面很多東西都是參考了51hei論壇上的資料,相當于做了一次整理。在此表示感謝~
大體描述下:
1、TEA5767模塊,沒有采用網(wǎng)絡(luò)流傳的收臺方法,我是直接按PLL步進的方式手動收臺,估計是最精準的方式了。沒有加入自動收臺功能。
2、12864點陣屏,ST7920控制,使用了自定義字符(天線、攝氏度)。按鍵開啟背光,10秒無動作自動關(guān)閉。
3、DS1302/DS18B20,網(wǎng)絡(luò)流傳的控制程序。
4、PT2257調(diào)音,I2C控制,多級音量控制。
5、TDA2822M,雙聲道模式,但是只用了一個揚聲器(1W)。可外接功放(不通過調(diào)音器,降噪)
6、按鍵,采用中斷掃描的方式,4鍵,長按短按區(qū)分。
7、電臺存儲15個,斷電自動記憶上次使用的頻道。使用內(nèi)部EEPOM。
8、電源使用DC12V變壓器,內(nèi)部組合為7808和78M05。
9、控制器:STC12C5608AD
ourdev_703810PNW1A5.jpg (91.73 KB, 下載次數(shù): 1278)
下載附件
2013-6-19 16:54 上傳
(原文件名:正面.jpg)
ourdev_703811S8XCIZ.jpg (84.23 KB, 下載次數(shù): 1205)
下載附件
2013-6-19 16:54 上傳
(原文件名:使用中.jpg)
ourdev_703812HOKTJA.jpg (70.9 KB, 下載次數(shù): 1225)
下載附件
2013-6-19 16:54 上傳
(原文件名:后面.jpg)
ourdev_703813TSGZQN.jpg (71.68 KB, 下載次數(shù): 1216)
下載附件
2013-6-19 16:54 上傳
(原文件名:右側(cè).jpg)
ourdev_703814YT1VNB.jpg (65.29 KB, 下載次數(shù): 1191)
下載附件
2013-6-19 16:54 上傳
(原文件名:左側(cè).jpg)
ourdev_703815W35SZS.jpg (127.95 KB, 下載次數(shù): 1205)
下載附件
2013-6-19 16:54 上傳
(原文件名:PCB.jpg)
ourdev_703816G9T209.jpg (122.92 KB, 下載次數(shù): 1229)
下載附件
2013-6-19 16:54 上傳
(原文件名:TDA2822M和DS1302.jpg)
ourdev_703817Z6C7HM.jpg (127.92 KB, 下載次數(shù): 1190)
下載附件
2013-6-19 16:54 上傳
(原文件名:TEA5767模塊.jpg)
ourdev_703818EIR7VC.jpg (120.75 KB, 下載次數(shù): 1217)
下載附件
2013-6-19 16:54 上傳
(原文件名:按鍵和開關(guān).jpg)
ourdev_703819ABQU4X.jpg (115.95 KB, 下載次數(shù): 1195)
下載附件
2013-6-19 16:54 上傳
(原文件名:7808和78M05.jpg)
ourdev_703820UFK81I.jpg (164.08 KB, 下載次數(shù): 1228)
下載附件
2013-6-19 16:54 上傳
(原文件名:程序截圖.jpg)
程序按模塊化寫法,命名、注釋等自認為還算規(guī)范,請用Keil u4打開。程序如下:
點擊此處下載
程序.rar
(153.81 KB, 下載次數(shù): 3234)
2013-6-23 04:05 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
原理圖是ORCAD畫的,這邊上傳PDF格式。PCB是PADS版本,沒多大_參考價值,這邊就不上傳了。
點擊此處下載
原理圖.pdf
(74.04 KB, 下載次數(shù): 2365)
2013-6-23 04:05 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
新手作品,還有很多地方可以繼續(xù)改進,比如:
1、利用畫圖功能,做個性化的UI。
2、加入按鍵的無線遙控。
3、報時、鬧鈴、公歷農(nóng)歷轉(zhuǎn)換。
4、外接功放音量可調(diào)。
作者: admin 時間: 2013-6-23 04:08
通過閱讀作者的 main.c 文件,發(fā)現(xiàn)作者的代碼風格很好,很值得我們學習.
#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; //定義系統(tǒng)狀態(tài)
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; //設(shè)定定時器重裝值
TL0 = 0xd8;
Flag_40ms=1;
}
/********** Main Function *************/
void main(void)
{
BEEP_DRV=0; //關(guān)閉蜂鳴器
LCD_BLK=0; //關(guān)閉LCD背光
System_Init(); //初始化MCU
LCD_Init(); //初始化RT12864M
//DS1302_Init(); //初始化 DS1302(完全掉電后進行參數(shù)更新)
TEA5767_Init(); //初始化TEA5767,寫入預置參數(shù)
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論壇有你更精彩
作者: 小藝 時間: 2013-6-24 11:22
想請教一下樓主,我見你的一段程序?qū)懙煤芎?在液晶顯示字符時都沒有用得上字符轉(zhuǎn)換軟件來做,請問程序的原理是什么呢?
void LCD_Display(void)
{
switch (Work_Mode)
{
case 0:
LCD_Display_String(0,2,"調(diào)頻收音"); //當前狀態(tài)
“LCD_Display_String(0,2,"調(diào)頻收音");”在程序上直接打中文,液晶就能顯示出來的?因為我查過你的程序,都沒有用字符軟件轉(zhuǎn)換出相關(guān)的字符串……是不是用帶字庫的屏,都能學你哪樣寫程序的?
作者: T29 時間: 2013-6-28 16:09
謝謝樓主。!此貼必火。。!
作者: yizanduandian 時間: 2013-6-29 21:39
回復 小藝
想請教一下樓主,我見你的一段程序?qū)懙煤芎?在液晶顯示字符時都沒有用得上字符轉(zhuǎn)換軟件來做,請問程序的原理是什么呢?
void lcd_display(void)
{
switch (work_mode)
{
case 0:
lcd_display_string(0,2,"調(diào)頻收音"); //當前狀態(tài)
“l(fā)cd_display_string(0,2,"調(diào)頻收音");”在程序上直接打中文,液晶就能顯示出來的?因為我查過你的程序,都沒有用字符軟件轉(zhuǎn)換出相關(guān)的字符串……是不是用帶字庫的屏,都能學你哪樣寫程序的?
-----------------------------------------------------------------------
用的是ST7920 帶中文字庫的屏,所以,沒有字符轉(zhuǎn)換。
作者: 左左右右 時間: 2013-7-2 16:34
您好,昨天我也用TEA5767模塊做了一個收音機。現(xiàn)在是靈敏度很低,接幾米的線當天線,在室內(nèi)一個臺都收不到(用手機的收音機在室內(nèi)可以收到電臺),以為是沒調(diào)好,但是跑上樓頂卻能收到臺了(這樣就排除了軟件問題吧)。 對這個問題可以給點思路嗎? 謝謝。
另,可以發(fā)一份到我郵箱嗎。3543-0042 @qq.com
期待您的回復。
作者: 陳令順 時間: 2013-7-4 21:25
樓主有沒有試過TDA2822M的BTL接法?我照著手冊上的電路接了一個,輸入電阻改成了1K,音源是VS1003B,中間加了一外10uF的無極性電容,供電用的是5V的線性電源,怎么調(diào)都有問題,雜音很大,芯片發(fā)燙。。。。。。。
作者: 陳令順 時間: 2013-7-4 21:31
另外問下 怎么我編譯不成功,還有就是樓主可以上傳PCB文件嗎,我想用熱轉(zhuǎn)印法制塊板子玩玩
作者: zhengguang 時間: 2013-7-4 23:42
很好的程序編寫方式啊,學習了,樓主的程序功底看起來真不錯;
剛剛那個6樓的,12864帶字庫,就可以直接用字符串表示了,直接顯
作者: l5151 時間: 2013-7-7 18:05
請問有什么編譯錯誤?請用Keil c51 v4,導入STC器件,用官方提供的STC12C5620AD頭文件,還有注意下包含路徑。
PCB是雙層的,熱轉(zhuǎn)印不好做。要的話,我可以送你個樣板。
打樣了10塊,現(xiàn)在還剩下8塊,要的可以拿去,出個郵費就好。qq短信給我
作者: l5151 時間: 2013-7-7 18:09
附件可直接下載 51hei論壇好像沒有限制的啊,另外我已經(jīng)發(fā)送到你的郵箱了.
作者: 51hei_kmee 時間: 2013-7-9 16:55
太強大了!
作者: longlong899 時間: 2013-7-16 17:16
現(xiàn)在好東西起來越多了,支持一個,要繼續(xù)加油哇
作者: wuhaisheng258 時間: 2013-7-17 11:09
高人作品
作者: liangqin1573 時間: 2013-7-19 00:45
很好很強大
作者: zxgpy 時間: 2013-7-21 10:33
好東東,多謝。。。。。。。。
作者: guoqing24 時間: 2013-7-21 21:39
一定 要學習一下!
作者: ydsf16 時間: 2013-7-21 23:11
真是牛人啊
作者: qw789 時間: 2013-7-22 18:39
謝謝分享




作者: jacksonwang 時間: 2013-7-23 15:12
好貼,必須頂。
作者: liaows 時間: 2013-7-23 16:41
謝謝LZ的共享,很好的學習材料,謝謝!
作者: 揚帆遠航 時間: 2013-8-3 15:39
強大,
作者: 揚帆遠航 時間: 2013-8-4 14:29
好資料
作者: 啵~~ 時間: 2013-8-5 10:28
謝謝樓主分享啊
作者: 何必919 時間: 2013-8-6 18:29
相當給力,感謝你的共享!
作者: wwxaimql 時間: 2013-8-9 16:33
很給力啊!
作者: aimei 時間: 2013-8-9 22:05
發(fā)現(xiàn)沒 幣了

作者: 少林寺大神父 時間: 2013-8-10 21:38
高人作品 趕快下載 看看學習一下 玩了好幾天的收音機 終于找到點能用的資料了
作者: ggsimida 時間: 2013-8-16 20:03
牛叉 樓主
作者: qw789 時間: 2013-8-18 10:20
我手頭有一塊TEA5767,但沒有STC12C5620AD,可惜!
作者: wuyutian51hei 時間: 2013-8-25 21:54
寫得很不錯!值得學習!
作者: 為愛努力 時間: 2013-9-6 14:40
初學者,打算自己也模仿做一個,希望能成功,
作者: jinchouxing 時間: 2013-10-3 21:11
好東東


作者: huyin 時間: 2013-10-4 21:32
不錯,很好
作者: 淡漠的記憶 時間: 2013-10-6 11:00
看看,資料怎樣
作者: 淡漠的記憶 時間: 2013-10-6 11:02
資料很好,謝謝了
作者: ★箛獨№牛弟 時間: 2013-10-13 17:43
謝謝作者,很好的資料,你的編程方式值得學習!
作者: 13620819446 時間: 2013-10-13 22:07
#在這里快速回復#真是不錯的資料
作者: 475345347 時間: 2013-10-18 23:18
學習學習啊
作者: 再見青春 時間: 2013-10-24 11:03
謝謝作者,很好的資料,你的編程方式值得學習!
作者: pony 時間: 2013-10-29 11:14
樓主V5
作者: 帆船 時間: 2013-10-30 17:10
代碼真是太牛逼了
作者: lf2k168 時間: 2013-10-30 17:44
{:soso_e179:}{:soso_e183:}
作者: hgr2004 時間: 2013-11-1 18:42
這個設(shè)計好。不錯。要仿造一個。
作者: 電工世界 時間: 2013-11-2 00:49
高手如云呀 {:soso_e179:}
作者: niuren 時間: 2013-11-2 01:32
51hei論壇真心不錯啊
作者: zhouzhou78 時間: 2013-11-3 19:26
好東西,學習!
作者: m182892 時間: 2013-11-6 10:35
貼子非常好,樓主高手。
作者: 氯化鈉 時間: 2013-11-15 15:59
跪謝樓主;看了下;真是好東西;對我這樣的新手學的東西太多了;再次感謝!
作者: sdmlxdli 時間: 2013-11-16 13:40
很好啊,謝謝分享。
作者: 饅頭 時間: 2013-11-16 14:33
初學者來學習的
作者: 饅頭 時間: 2013-11-16 14:42
樓主您好,我想做一個基于AT89S52單片機的無線多路溫度采集系統(tǒng)設(shè)計,您那有資料給參考嗎?有的話麻煩發(fā)個到我郵箱 534095514@qq.com 萬分感謝啊。
作者: dyun1988 時間: 2013-11-20 20:52
很好很強大
作者: zj1987510 時間: 2013-11-24 10:12
樓主太偉大了,感謝你的分享,最近也在用匯編寫PE153+5807做的收音機,給了很大的幫助,贊一個
作者: m182892 時間: 2013-11-24 11:03
參考你的資料,我也想做一個玩玩。
作者: zhangzhiyi_923 時間: 2013-11-25 00:03
樓主給一個orcad 的原理圖唄
作者: speachkone 時間: 2013-11-28 14:18
不知道能不能用C51 普通的仿一個

作者: chenppo 時間: 2013-11-29 14:43
謝謝分享。。。
作者: 守護月亮的吳剛 時間: 2013-11-30 11:18
我去。沒有M幣了………………
作者: 728528678 時間: 2013-11-30 19:20
牛人。!
作者: shenhuagen 時間: 2013-12-6 23:05
學習。。。編程思路很清晰!
作者: lijieping 時間: 2013-12-7 10:36
值得 學習!真是不錯的資料
作者: lsmilep 時間: 2013-12-11 14:42
經(jīng)帖,必火~!
作者: 謝謝伱の詤訁 時間: 2013-12-11 22:34
學習中
作者: m182892 時間: 2013-12-12 14:41
下載了,謝謝分享。
作者: xd_silly 時間: 2013-12-14 17:06
不錯不錯~樓主加油
作者: 被看穿了么 時間: 2013-12-14 23:24
分廠牛逼
作者: 被看穿了么 時間: 2013-12-15 11:02
很有成就感吧
作者: 用戶2111158 時間: 2013-12-15 19:54
學會了我也搞一個
作者: 周文 時間: 2014-1-17 17:41
肯分享才是最流的
作者: csx140118 時間: 2014-1-18 21:28
路過,下了…………
作者: wapaja 時間: 2014-1-24 22:27
能教我怎么做嗎?
作者: daizhi1970 時間: 2014-2-1 20:57
O(∩_∩)O謝謝
作者: yhu168 時間: 2014-2-9 20:26
大感謝了!
作者: dyun1988 時間: 2014-2-11 21:38
謝謝樓主分享啊
作者: wapaja 時間: 2014-2-11 21:41
好帖子要頂起來的。
作者: zhangxiaoljs 時間: 2014-2-13 23:03
謝謝學習了。。。。。。。。
作者: yamglang 時間: 2014-2-21 01:24
謝謝樓主!。〈速N必火!。!
作者: yhu168 時間: 2014-2-27 23:25
好極了!多謝了
作者: dinodine 時間: 2014-3-4 17:13
還需要錢?我沒錢啊
作者: mc0011 時間: 2014-3-5 11:07
好厲害啊,頂
作者: maker 時間: 2014-3-5 21:23
剛開始學習51,想自己搞個收音機,謝謝!
作者: 風速太一 時間: 2014-3-7 23:24
學習一下。!
作者: yhu168 時間: 2014-3-8 10:29
不錯!挺好的多謝了!這網(wǎng)站真好
作者: lyMarvin 時間: 2014-3-12 13:07
非常漂亮,謝謝分享!
作者: s3209305 時間: 2014-3-14 21:58
樓主威武!
作者: mlf 時間: 2014-3-22 13:52
樓主pcb板賣嗎?我想訪制一個。我的qq號是1970118036
作者: RainsL 時間: 2014-3-22 19:44
樓主強悍
作者: fushengge 時間: 2014-3-23 22:19
感謝樓主分享!
作者: k499138416 時間: 2014-3-25 09:44
謝謝樓主分享
作者: haieeq 時間: 2014-3-26 16:05
需要啊
作者: haieeq 時間: 2014-3-26 16:06
很需要啊
作者: yhu168 時間: 2014-3-26 16:35
我也要一個pcb板,郵箱13247510078@163.com
作者: rsbook 時間: 2014-4-2 15:43
正在做TEA5767,參考一下,謝謝!
作者: syairkiller 時間: 2014-4-2 20:38
高人
作者: liguohong 時間: 2014-4-4 13:32
留個記號,后面再來學學
作者: 馬澤強 時間: 2014-4-16 15:07
樓主做的東西太好了。
作者: mugeda 時間: 2014-4-17 22:18
很好,學習學習
作者: 書包魚。 時間: 2014-4-19 19:56
樓主可否幫我看下這個定時器延時問題出現(xiàn)在哪里#include<REG52.h>
#include<stdio.h>
#include<intrins.h>
sbit stratButton=P0^0;
sbit pauseButton=P0^1;
sbit resetButton=P0^2;
sbit exitButton=P0^3;
bit int0_Mark;
unsigned char HEXtoBCD(unsigned char hex)
{return((hex/10)*16+(hex%10));}
void main(void)
{unsigned char uc10ms=0,uc1s=0,uc60s=0;
TMOD=0x01;
IE=0x82;
while(1)
{exitButton=1;
uc10ms=0,uc1s=0,uc60s=0;
P1=HEXtoBCD(uc10ms);
P2=HEXtoBCD(uc1s);
P3=HEXtoBCD(uc60s);
while(stratButton);
while(!stratButton);
while(exitButton);
{int0_Mark=1;
TH0=0xdc; TL0=00;
TR0=1;
EA=1;
while(int0_Mark)
EA=0;
TR0=0;
uc10ms++;
if(uc10ms==100)
{uc10ms=0;uc1s++;}
P1=HEXtoBCD(uc10ms);
if(uc10ms==100)
{uc10ms=0;uc1s++;}
P1=HEXtoBCD(uc10ms);
if(uc1s==60)
{uc1s=0;uc60s++;}
P2=HEXtoBCD(uc1s);
if(uc60s==60)
uc60s=0;
P3=HEXtoBCD(uc60s);
if(!pauseButton)
{while(!pauseButton);
while(pauseButton)
{if(!resetButton)
{uc10ms=0,uc1s=0,uc60s=0;
P1=HEXtoBCD(uc10ms);
P2=HEXtoBCD(uc1s);
P3=HEXtoBCD(uc60s);
}
if(exitButton==0)
{exitButton=0;
break;
}
}
while(!pauseButton);
}
if(!resetButton)
{uc10ms=0,uc1s=0,uc60s=0;
P1=HEXtoBCD(uc10ms);
P2=HEXtoBCD(uc1s);
P3=HEXtoBCD(uc60s);
}
}
}
}
void timer0(void) interrupt 1
{EA=0;
int0_Mark=0;
TR0=0;
TH0=0xdc;TL0=00;
TR0=1;
EA=1;
}
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |