找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 173699|回复: 471
打印 上一主题 下一主题
收起左侧

我的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, 下载次数: 3205)

原理图是ORCAD画的,这边上传PDF格式。PCB是PADS版本,没多大_参考价值,这边就不上传了。
点击此处下载 原理图.pdf (74.04 KB, 下载次数: 2348)

新手作品,还有很多地方可以继续改进,比如:
1、利用画图功能,做个性化的UI。
2、加入按键的无线遥控。
3、报时、闹铃、公历农历转换。
4、外接功放音量可调。

评分

参与人数 18威望 +54 黑币 +172 收起 理由
夜空之巅 + 30 绝世好帖!
zhai1461961500 + 15 很给力!
1109 + 15 赞一个!
莫子栋 + 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空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏138 分享淘帖 顶24 踩
回复

使用道具 举报

沙发
ID:1 发表于 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();		           			//显示刷新
		}
}
回复

使用道具 举报

板凳
ID:51054 发表于 2013-6-23 10:37 | 只看该作者
这个是高人作品,51hei论坛有你更精彩
回复

使用道具 举报

地板
ID:51224 发表于 2013-6-24 11:22 | 只看该作者
想请教一下楼主,我见你的一段程序写得很好,在液晶显示字符时都没有用得上字符转换软件来做,请问程序的原理是什么呢?
void LCD_Display(void)
{
        switch (Work_Mode)
                {
                        case 0:
                                LCD_Display_String(0,2,"调频收音");                                 //当前状态
                                

“LCD_Display_String(0,2,"调频收音");”在程序上直接打中文,液晶就能显示出来的?因为我查过你的程序,都没有用字符软件转换出相关的字符串……是不是用带字库的屏,都能学你哪样写程序的?
回复

使用道具 举报

5#
ID:51348 发表于 2013-6-28 16:09 | 只看该作者
谢谢楼主!!!此贴必火!!!!
回复

使用道具 举报

6#
ID:50567 发表于 2013-6-29 21:39 | 只看该作者
回复 小艺
想请教一下楼主,我见你的一段程序写得很好,在液晶显示字符时都没有用得上字符转换软件来做,请问程序的原理是什么呢?
void lcd_display(void)
{
switch (work_mode)
{
case 0:
lcd_display_string(0,2,"调频收音");  //当前状态
“lcd_display_string(0,2,"调频收音");”在程序上直接打中文,液晶就能显示出来的?因为我查过你的程序,都没有用字符软件转换出相关的字符串……是不是用带字库的屏,都能学你哪样写程序的?
-----------------------------------------------------------------------

用的是ST7920 带中文字库的屏,所以,没有字符转换。
回复

使用道具 举报

7#
ID:51343 发表于 2013-7-2 16:34 | 只看该作者
您好,昨天我也用TEA5767模块做了一个收音机。现在是灵敏度很低,接几米的线当天线,在室内一个台都收不到(用手机的收音机在室内可以收到电台),以为是没调好,但是跑上楼顶却能收到台了(这样就排除了软件问题吧)。  对这个问题可以给点思路吗?  谢谢。  

另,可以发一份到我邮箱吗。3543-0042 @qq.com

期待您的回复。
回复

使用道具 举报

8#
ID:29158 发表于 2013-7-4 21:25 | 只看该作者
楼主有没有试过TDA2822M的BTL接法?我照着手册上的电路接了一个,输入电阻改成了1K,音源是VS1003B,中间加了一外10uF的无极性电容,供电用的是5V的线性电源,怎么调都有问题,杂音很大,芯片发烫。。。。。。。
回复

使用道具 举报

9#
ID:29158 发表于 2013-7-4 21:31 | 只看该作者
另外问下 怎么我编译不成功,还有就是楼主可以上传PCB文件吗,我想用热转印法制块板子玩玩
回复

使用道具 举报

10#
ID:51503 发表于 2013-7-4 23:42 | 只看该作者
很好的程序编写方式啊,学习了,楼主的程序功底看起来真不错;
刚刚那个6楼的,12864带字库,就可以直接用字符串表示了,直接显
回复

使用道具 举报

11#
ID:51066 发表于 2013-7-7 18:05 | 只看该作者
陈令顺 发表于 2013-7-4 21:31
另外问下 怎么我编译不成功,还有就是楼主可以上传PCB文件吗,我想用热转印法制块板子玩玩

请问有什么编译错误?请用Keil c51 v4,导入STC器件,用官方提供的STC12C5620AD头文件,还有注意下包含路径。

PCB是双层的,热转印不好做。要的话,我可以送你个样板。

打样了10块,现在还剩下8块,要的可以拿去,出个邮费就好。qq短信给我
回复

使用道具 举报

12#
ID:51066 发表于 2013-7-7 18:09 | 只看该作者
左左右右 发表于 2013-7-2 16:34
您好,昨天我也用TEA5767模块做了一个收音机。现在是灵敏度很低,接几米的线当天线,在室内一个台都收不到 ...

附件可直接下载 51hei论坛好像没有限制的啊,另外我已经发送到你的邮箱了.
回复

使用道具 举报

13#
ID:51647 发表于 2013-7-9 16:55 | 只看该作者
太强大了!
回复

使用道具 举报

14#
ID:43781 发表于 2013-7-16 17:16 | 只看该作者
现在好东西起来越多了,支持一个,要继续加油哇
回复

使用道具 举报

15#
ID:51939 发表于 2013-7-17 11:09 | 只看该作者
高人作品
回复

使用道具 举报

16#
ID:52002 发表于 2013-7-19 00:45 | 只看该作者
很好很强大
回复

使用道具 举报

17#
ID:15104 发表于 2013-7-21 10:33 | 只看该作者
好东东,多谢!!!!!!!!!
回复

使用道具 举报

18#
ID:52101 发表于 2013-7-21 21:39 | 只看该作者
一定 要学习一下!!
回复

使用道具 举报

19#
ID:52102 发表于 2013-7-21 23:11 | 只看该作者
真是牛人啊
回复

使用道具 举报

20#
ID:52135 发表于 2013-7-22 18:39 | 只看该作者
谢谢分享
回复

使用道具 举报

21#
ID:52155 发表于 2013-7-23 15:12 | 只看该作者
好贴,必须顶。
回复

使用道具 举报

22#
ID:30196 发表于 2013-7-23 16:41 | 只看该作者
谢谢LZ的共享,很好的学习材料,谢谢!
回复

使用道具 举报

23#
ID:52608 发表于 2013-8-3 15:39 | 只看该作者
强大,
回复

使用道具 举报

24#
ID:52608 发表于 2013-8-4 14:29 | 只看该作者
好资料
回复

使用道具 举报

25#
ID:52664 发表于 2013-8-5 10:28 | 只看该作者
谢谢楼主分享啊
回复

使用道具 举报

26#
ID:32572 发表于 2013-8-6 18:29 | 只看该作者
相当给力,感谢你的共享!
回复

使用道具 举报

27#
ID:52844 发表于 2013-8-9 16:33 | 只看该作者
很给力啊!
回复

使用道具 举报

28#
ID:52848 发表于 2013-8-9 22:05 | 只看该作者
发现没 币了
回复

使用道具 举报

29#
ID:52918 发表于 2013-8-10 21:38 | 只看该作者
高人作品 赶快下载 看看学习一下 玩了好几天的收音机 终于找到点能用的资料了
回复

使用道具 举报

30#
ID:52928 发表于 2013-8-16 20:03 | 只看该作者
牛叉   楼主
回复

使用道具 举报

31#
ID:52135 发表于 2013-8-18 10:20 | 只看该作者
我手头有一块TEA5767,但没有STC12C5620AD,可惜!
回复

使用道具 举报

32#
ID:51540 发表于 2013-8-25 21:54 | 只看该作者
写得很不错!值得学习!
回复

使用道具 举报

33#
ID:54536 发表于 2013-9-6 14:40 | 只看该作者
初学者,打算自己也模仿做一个,希望能成功,
回复

使用道具 举报

34#
ID:55601 发表于 2013-10-3 21:11 | 只看该作者
好东东
回复

使用道具 举报

35#
ID:55565 发表于 2013-10-4 21:32 | 只看该作者
不错,很好
回复

使用道具 举报

36#
ID:55647 发表于 2013-10-6 11:00 | 只看该作者
看看,资料怎样
回复

使用道具 举报

37#
ID:55647 发表于 2013-10-6 11:02 | 只看该作者
资料很好,谢谢了
回复

使用道具 举报

38#
ID:55897 发表于 2013-10-13 17:43 | 只看该作者
谢谢作者,很好的资料,你的编程方式值得学习!
回复

使用道具 举报

39#
ID:52286 发表于 2013-10-13 22:07 | 只看该作者
#在这里快速回复#真是不错的资料
回复

使用道具 举报

40#
ID:55211 发表于 2013-10-18 23:18 | 只看该作者
学习学习啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表