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

来源:互联网 发布:模糊逻辑算法 编辑:程序博客网 时间:2024/04/19 04:18

本方案采用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 0
原创粉丝点击