ImageVerifierCode 换一换
格式:DOCX , 页数:47 ,大小:4MB ,
资源ID:10933674      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10933674.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(捣鼓TEA5767收音机.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

捣鼓TEA5767收音机.docx

1、捣鼓TEA5767收音机捣鼓TEA5767可能好多朋友说一个买收音机也就几块钱,何必花这么大精力鼓捣这个烂玩意,如果真有这个想法的朋友请打住,不要在往下面看了。之前也一直认为TEA5767较差,实际中发觉选择大厂的模块出来的音频经放大器推动后还是很有震撼力,大大超出我的预期。不过前提是使用好模块,而不是现在满淘宝卖的那种57块左右的那种简装版咯。TEA5767主要出来的音频没音量控制,也不够推动耳机。我就外加电子音量调节芯片、小功率放大、调节显示等。我电子音量选用M62429 显示选用了一种非常小尺寸的MINI1602 另外使用了手机上那种5向导航键、加了单键开关机电路,小功率放大选用2块TD

2、A2822(3-6V) 就是TDA2822这次把我害惨了,PCB出来后所有正常,就是推动2个2W的小喇叭会有那种噗噗声,晕死。线路输出则很好,在网上一查,发觉很多朋友都有这个问题,现在这个玩意买不到贴片封装的原装进口的,而国产的做BTL方式放大时,由于内部2个放大器的参数国产工艺存在差异较大造成,而做普通双声道放大则不存在这个问题。唉 国货呀,你什么时候才能让人放心!发誓以后再一不会选择使用TDA2822这个垃圾了(需要的朋友 我可以送 现在看着就恼火)1、电路图2、PCB图和尺寸3、PCB实物4、之前调试的电路 还是一贯做法,洞洞板加飞线,不要吓着啦5、焊接后的样子因为彻底对TDA2822失

3、望,所以板子上2个TDA2822放大部分就不考虑安装了,下图中是安了其中一只TDA2822的6、几个主要的元件A、mini1602显示屏,非常小,这个玩意也少B、TEA5767这个玩意版本很多,质量也参差不起,用过3种,这种不错,不是那种简版,当然价格也高了C、M62429 立体声电子音量芯片D、按键电源按键选用443小巧高质量按键功能键使用手机上那种小巧的5向摇杆键E、带通滤波器(BPF)76108MF、钽电容G、mini1602贴片插座7、工作。使用30多厘米的漆包线绕着圈,加长效果更好8、功能设计、思路那个信号强度指示,占用4个字符,其中天线杆符号单独占一个,电平8级指示通过3个字符分割

4、组成,看图应该明白的9、成本做了50块PCB,制版打样费摊到6元左右/块PCB去掉2个TDA2822部分及相关不需要的后实际使用的元件 元件值以下面为准特别注意:组装时 R2电阻0欧姆一定要焊上10、参考程序和烧写文件烧写文件: 该文件只允许会员下载登录 | 注册新用户内部震荡 8M部分参考程序:Tea5767.c#include Tea5767.h#include TwiLib.h/ 初始化TEA5767void TEA5767_Init(ulong Freq,uchar Mono)/ 初始化TWI_Init();TEA5767_Adjust(Freq,Mono,TRUE); / 调整频率、

5、声道void TEA5767_Adjust(ulong Freq,uchar Mono,uchar MuteControl)uchar data5 = 0 ;ulong pll = TEA5767_GetPLLFromFreq(Freq);data0 = (uchar)(pll/256); data1 = (uchar)(pll%256);data2 = (Mono!=0)?0x09:0x01;data3 = 0x92;if( MuteControl )data0 |= 0x80;TWI_MasterSendBytes(TEA5767_TWI_ADDR,5,data);data0 &= 0x7

6、f;DelayMs(500);TWI_MasterSendBytes(TEA5767_TWI_ADDR,5,data); / 信号强度uchar TEA5767_GetLevel()uchar data5 = 0 ;TWI_MasterRecvBytes(TEA5767_TWI_ADDR,5,data);return (data34);/ 由频率计算PLL(频率单位为KHZ)ulong TEA5767_GetPLLFromFreq(ulong Freq)ulong pll = (ulong)(Freq-225)*4000)/32768); return pll;/ 由PLL计算频率(频率单位为

7、KHZ)ulong TEA5767_GetFreqFromPLL(ulong Pll)ulong Freq = (ulong)(float)Pll)*(float)8.192)+225);return Freq;Tea5767.h#ifndef _TEA5767_H_INCLUDED_#define _TEA5767_H_INCLUDED_#include common.h/ TEA5767的TWI地址#define TEA5767_TWI_ADDR 0xC0 / TEA5767基地址/ 初始化TEA5767(频率单位为KHZ)void TEA5767_Init(ulong Freq,ucha

8、r Mono);/ 调整频率、声道void TEA5767_Adjust(ulong Freq,uchar Mono,uchar MuteControl);/ 信号强度uchar TEA5767_GetLevel();/ 由频率计算PLL(频率单位为KHZ)ulong TEA5767_GetPLLFromFreq(ulong Freq);/ 由PLL计算频率(频率单位为KHZ)ulong TEA5767_GetFreqFromPLL(ulong Pll);#endif / _TEA5767_H_INCLUDED_FM62429.c#include FM62429.h/ 初始化函数void FM

9、62429_Init(uchar Volume)FM62429_PORT_INIT();FM62429_AdjustVolume(Volume);/ 调整音量(084)void FM62429_AdjustVolume(uchar Volume)uchar i = 0;ushort VolData = 0;if( Volume 0 )Volume = Volume+3;VolData = (ushort)(Volume&0x7C);VolData |= (ushort)(Volume&0x03)7);/ D9、D10均为VolData |= 0x600;FM62429_SDA_L();FM62

10、429_SCL_L();for( i = 0; i = 1;FM62429_SDA_H();FM62429_SCL_H();NOP();FM62429_SCL_L();FM62429.h#ifndef _FM62429_H_INCLUDED_#define _FM62429_H_INCLUDED_#include Common.h/ 端口定义#define FM62429_SDA_H() SET_BIT(PORTB,PB2)#define FM62429_SDA_L() CLR_BIT(PORTB,PB2)#define FM62429_SCL_H() SET_BIT(PORTB,PB5)#d

11、efine FM62429_SCL_L() CLR_BIT(PORTB,PB5)#define FM62429_PORT_INIT() SET_BIT(DDRB,DDB2);SET_BIT(DDRB,DDB5)/ 初始化函数void FM62429_Init(uchar Volume);/ 调整音量(-83)void FM62429_AdjustVolume(uchar Volume);#endif /_FM62429_H_INCLUDED_main.c#include #include common.h#include LCD1602.h#include TWILib.h#include T

12、ea5767.h#include FM62429.h#define OPER_MODE_RADIO 0 / 正常收音机模式#define OPER_MODE_SET 1 / 设置模式/ 正确保存标志#define SAVE_MASK 0x4B / K/ 设置模式#define SET_MODE_SEARCH 1 / 搜索#define SET_MODE_SOUNDMODE 2 / 立体声、单声道模式选中#define SET_MODE_MIN 1#define SET_MODE_MAX 2/ 声音模式#define SOUND_MODE_STEREO 1#define SOUND_MODE_M

13、ONO 2#define SOUND_MODE_MIN 1#define SOUND_MODE_MAX 2/ 音量#define VOLUME_MAX 84#define VOLUME_MIN 0#define CHANNEL_NUM 10#define CHANNEL_MIN 1#define CHANNEL_MAX CHANNEL_NUM/ 搜索模式#define STATE_SEARCH 1#define STATE_STORE 2/ 最小频率#define FREQ_MIN (ulong)87500)#define FREQ_MAX (ulong)120000)/ 全局变量uchar

14、OperMode = OPER_MODE_RADIO; / 操作模式uchar SetMode = SET_MODE_MIN; / 搜索频道uchar SoundMode = SOUND_MODE_MIN; / 声音模式BOOL DoingMenu = FALSE; / 是否处于选择菜单方式ushort BlinkCounter = 0; / 控制闪烁uchar Volume = 42; / 音量ulong ChannelFreq = 96600; / 频道频率(单位为KHZ)ulong ChannelSearch = FREQ_MIN; / 搜索起始频率uchar ChannelIndex

15、= 0; / 当前播放的频道编号(1-10)uchar ChannelSaveIndex = CHANNEL_MIN;uchar ChannelState = STATE_SEARCH;/ 开关健(PD7)#define POWER_ON() #define POWER_OFF() SET_BIT(DDRD,DDD7);CLR_BIT(PORTD,PD7);/ 闪烁控制变量的最大值#define BLINK_COUNTER_MAX 10/ 是否闪烁#define IS_BLINK() (BlinkCounter BLINK_COUNTER_MAX/2)/=/ 预先保持的10个频道/=ulong

16、 EEMEM ChannelConfigCHANNEL_NUM+1 = 0 ;ulong ChannelArrayCHANNEL_NUM+1 = 0 ;/ 读取预先保持的频道void ReadChannelConfig()ulong data = 0;uchar mask = 0 , i = 0;/ 等待EEPROM空闲eeprom_busy_wait();/ 写入数据eeprom_read_block( ChannelArray,ChannelConfig, 4*(1+CHANNEL_NUM);/ 解析第一个字节,构造第一个字节,从地位到高位分别是:ChannelIndex,Volume,S

17、oundMode,SAVEMASKdata = ChannelArray0;ChannelIndex = (uchar)(data & 0xFF);data = 8;Volume = (uchar)(data & 0xFF);data = 8;SoundMode = (uchar)(data & 0xFF);data = 8;mask = (uchar)(data & 0xFF);if( ( mask != SAVE_MASK ) |( ChannelIndex CHANNEL_MAX ) |( SoundMode SOUND_MODE_MAX ) |( Volume VOLUME_MAX )

18、 ) ChannelIndex = 0;Volume = 42;SoundMode = SOUND_MODE_STEREO;for(i = 0; i CHANNEL_NUM+1; i+ )ChannelArrayi = 0;else ChannelFreq = ChannelArrayChannelIndex;/ 写设置void WriteChannelConfig()/ 构造第一个字节,构造第一个字节,从低位到高位分别是:ChannelIndex,Volume,SoundMode,SaveMaskulong data = SAVE_MASK;data =8; data |= SoundMod

19、e;data =8;data |= Volume;data =8;data |= ChannelIndex;ChannelArray0 = data;/ 等待EEPROM空闲eeprom_busy_wait();/ 写入数据eeprom_write_block( ChannelArray,ChannelConfig, 4*(1+CHANNEL_NUM) ); / 显示存储频道信息void DisplayFreqSave(uchar Index)uchar i = 0;uchar buffer17 = 0 ;/ 显示音量、声音模式for( i = 0;i 16; i+ )bufferi = ;b

20、uffer0 = S;buffer1 = T;buffer2 = O;buffer3 = R;buffer4 = E;buffer5 = :;buffer6 = C;buffer7 = H;buffer8 = (Index/10)+0;buffer9 = (Index%10)+0;LCD1602_Display_String(1,0,buffer);/ 显示频率信息void DisplayFreqInfo(ulong Freq,uchar Index)uchar i = 0,j = 0;ulong data = 0;uchar buffer17 = 0 ;/ 显示频率data = Freq/1

21、0;for( i = 0;i 16; i+ )bufferi = ;if( Index 9999 )data %= 100000;bufferj+3 = (data/10000)+0;data %= 10000;bufferj+4 = (data/1000)+0; data %= 1000;bufferj+5 = (data/100)+0; data %= 100;bufferj+6 = .;bufferj+7 = (data/10)+0; data %= 10;bufferj+8= (data%10)+0;bufferj+9= M;bufferj+10= H;bufferj+11= Z;el

22、sebufferj+3 = (data/1000)+0;data %= 1000;bufferj+4 = (data/100)+0; data %= 100;bufferj+5 = .;bufferj+6 = (data/10)+0; data %= 10;bufferj+7 = (data%10)+0;bufferj+8= M;bufferj+9= H;bufferj+10= Z;LCD1602_Display_String(2,0,buffer);/=/ 按键处理/=/ 按键S1-S5(PD2-PD7)/ 是否为单个键按下#define IS_KEY_PRESSED(k) (k) 0) &

23、 (k) & (k)-1) = 0 )/#define GET_KEY_CODE() (PIND) & 0x1F)#define KEY_CODE(n) (uchar)1) = 2;keycode = keycode;keycode &= 0x3F; / 6个键return keycode;/ 读取按键uchar GetKey( )uchar key = 0;static uchar lastkey = 0; / 记录上次的按键/ 读取键盘key = GET_KEY_CODE();if( !IS_KEY_PRESSED(key) )lastkey = 0;return 0;/ 确定是否新的键按

24、下if( lastkey = 0 ) lastkey = key; / 保存本次扫描结果DelayMs(10); / 去抖处理key = GET_KEY_CODE();if( key = lastkey )return key;return 0;/=/ 设置函数/=void SetHandler()uchar key = 0;/ 切换闪烁标志BlinkCounter+;if( BlinkCounter BLINK_COUNTER_MAX )BlinkCounter = 0;/ 确定是否为选择菜单if( DoingMenu )key = GetKey();if( key = KEY_S1) / 设置键(确认)DoingMenu = FALSE; / 结束菜单选择if( SetMode = SET_MODE_SOUNDMODE )S

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1