51单片机控制的收音机(带串口,遥控,芯片89S52+LC72131+LA1845N)

本方案采用89S52做为主控芯片,LC72131+LA1845N做为收音模块,支持按键控制,红外线遥控控制,也可通过串口上位机控制,可以通过计算机并口更新单片机软件程序。

音量用两块DS1804控制,频率信息用一块1602液晶显示。





单面板,飞线很多,呵呵。





硬件方案.rar(Protel99)
PC端控制软件.rar(VC++7.1,即Visual Stdio .Net 2003)

本方案的单片机软件使用C语言编写(Keil uVision3),LC72131芯片的驱动稍微麻烦,他使用SPI总线与单片机芯片通讯:  

//SPI 总线数据传输     
// 首先发送高位 , 延时必须大于 1.5us    
void  WriteLC72131(INT32 _DATA)   
{           
    data INT8 i=0;   
 
    PIN_CE=0; //CE 默认为低电平    
    PIN_CL=1; //CL 默认为高电平    
 
    for(i=1;i<=32;i++)   
    {   
        PIN_CL=0;   // CL 产生下降沿    
        Delay_2CP(1);   
        if(_DATA & 0x80000000)   
        {   
            PIN_DI=1;   
        }   
        else  
        {   
            PIN_DI=0;   
        }   
        PIN_CL=1; // CL 产生上升沿    
        Delay_2CP(1);   
        if(i==8)   
        {   
            PIN_CE=1;   
            Delay_2CP(1);   
        }   
        _DATA=_DATA<<1;   
    }   
    PIN_CE=0;   
}   
 
// 封装了输入模式 1 的数据    
extern  idata union _IN1_DATA   
{    
    INT32 _IN1_DATA_32;   
    struct _IN1_DATA_BITS   
    {   
        INT8 Address     :8;   
        INT16 Frequency :16;   
        INT8 R3            :1;   
        INT8 R2            :1;   
        INT8 R1            :1;   
        INT8 R0            :1;   
        INT8 XS            :1;   
        INT8 CTE         :1;   
        INT8 DVS         :1;   
        INT8 SNS         :1;   
    }IN1_DATA_BITS;   
} IN1_DATA ;    
 
// 封装了输入模式 2 的数据    
extern  idata union _IN2_DATA   
{    
    INT32 _IN2_DATA_32;   
    struct _IN2_DATA_BITS   
    {   
        INT8 Address :8;   
 
        // 位域:对于每个独立的位, C 语言要求低位写在前边 ;   
        // 字节顺序不受影响,仍然是高字节在前。    
        INT8 B04      :1;   
        INT8 B03      :1;   
        INT8 B02      :1;   
        INT8 B01      :1;   
        INT8 IO2       :1;   
        INT8 IO1       :1;   
        INT8 IOC2    :1;   
        INT8 IOC1    :1;   
 
        INT8 DZ1      :1;   
        INT8 DZ0      :1;   
        INT8 UL1      :1;   
        INT8 UL0      :1;   
        INT8 DOC2    :1;   
        INT8 DOC1    :1;   
        INT8 DOC0    :1;   
        INT8 DNC      :1;   
 
        INT8 TEST2   :1;   
        INT8 TEST1   :1;   
        INT8 TEST0   :1;   
        INT8 IFS        :1;   
        INT8 DLC      :1;   
        INT8 TBC      :1;   
        INT8 GT1      :1;   
        INT8 GT0      :1;   
    }IN2_DATA_BITS;   
} IN2_DATA ;    


完整源代码:单片机软件.rar
备注:该方案是学习51单片机时的习作。

推荐一个这方面的技术大牛:Ningpanda工作室 http://ningpanda.21ic.org
http://blog.21ic.com/user1/2339/archives/2008/52580.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一直对收音机有种说不出的情结,陆续买过好多的收音机。也尝试着自己动手做过,但是仅限于做做PCB,能收到台了就算结束了,还没有做过一个真正的机器。正好年前年后有空就做了一个,顺便发上来参加DIY大赛。 设计目标: 1、在这个看颜值的时代,一定要漂亮; 2、PLL(锁相环)控制,确保频率稳定; 3、数字音量控制; 4、可以显示电台频率、信号质量、音量、立体声状态等; 5、触摸按键; 接收效果的视频演示: 电路设计分析讲解(具体详见附件内容): 作为一个“资深”的DIY爱好者,尽量使用手头里的元器件和拆机件,实在没有的才去购买,所以可能不是最佳的选择。 1)接收部分:由于准备用PLL控制,就去坛友@大黄胖胖家的店铺淘了片基于LA1781的车机高频头,集成了AM/FM接收、立体声指示、电台信号(S-Meter)、中频输出(IF)等功能。需要购买链接的同学可以发短消息,就不贴在这里了。控制芯片是拆机的LC72135,该IC采用SANYO的CCB总线(真心麻烦)。 2)控制MCU:电台信号强度输出的是直流电压,需要使用有AD(模数转换)的单片机,因为要使用的I/O数量较多,就选用了STC12C5A60S2; 3)触摸部分:用4键的电容触摸芯片SC04A,感应部分可以直接粘在塑料壳子里面,不用开孔装按键了,用起来很是方便。 4)数字音量:因为仅需要控制音量,不需要高音、低音、平衡等功能,就选用了M62429,SO-8封装,程序也简单。 5)音频放大:TDA1308。据说还算不错的耳放芯片。 6)显示部分:开始打算用LCD1602,后来发现不太够用,就找了个12864的无字库液晶来用。 7)电源部分:电流只有100多毫安,用了一个以前淘汰的路由变压器,12V AC输出,整流滤波后经7808和7805输出收音头需要的8V和单片机等5V电源。 PART3:PCB设计 第一次玩这么“大型”的“工程”,并且LA1781、LC72135、SC04A芯片还是第一次接触,为了避免失败,决定采用模块化制作,方便查找及解决问题。 1)收音部分:先用电位器调压测试一下高频头,了解每个管脚的实际功能后再着手去做PCB。本部分集成了高频头、LC72135控制、M62429数字音量和TDA1308音频放大; 。。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值