⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lc72131.c

📁 C51的基于KST-CD111LVD-100 car tuner Driver PLL LC72131 & LA1787 的数字调谐系统
💻 C
📖 第 1 页 / 共 3 页
字号:
        return;
    RadioIn2Data |= BO3_ST;
    bMonoStereo = STEREO;
    Send_data_to_ccb(LC72131_IN2_ADDR, RadioIn2Data, 24);
    AM_FM_indicator_set();
}

void Switch_to_AM()
{
    if(!b_Mute)
    {
        if(!noise_down_flag)
            temp_volume = g_audio_volume;
        g_audio_volume = 0;
        Audio_volume_set();
        up_volume_flag = 1;
        noise_down_flag = 1;
    }
    CurrentBand = AM_BAND;
    Init_lc72131();
    Tuner_DisplayChannel(ChannelNum);
    Tuner_display_freq();
    AM_FM_indicator_set();
    Osd_display_string(ST_MO_ROW, ST_MO_COL, STEREO_IND, OSD_STANDARD,
                       NO_SHADE, OSD_YELLOW, BACKGROUND_OFF, CLEAR_STRING);
    bLocDx = DX;
    LOC_DX_set();
}

void Switch_to_FM()
{
    if(!b_Mute)
    {
        if(!noise_down_flag)
            temp_volume = g_audio_volume;
        g_audio_volume = 0;
        Audio_volume_set();
        up_volume_flag = 1;
        noise_down_flag = 1;
    }
    CurrentBand = FM_BAND;
    Init_lc72131();
    Tuner_DisplayChannel(ChannelNum);
    Tuner_display_freq();
    AM_FM_indicator_set();
    bLocDx = DX;
    LOC_DX_set();
}

void Switch_to_DX()
{
    RadioIn2Data |= IO1_DX;
    bLocDx = DX;
    Send_data_to_ccb(LC72131_IN2_ADDR, RadioIn2Data, 24);
    LOC_DX_set();
}

void Switch_to_LOC()
{
    RadioIn2Data &= ~IO1_DX;
    bLocDx = LOC;
    Send_data_to_ccb(LC72131_IN2_ADDR, RadioIn2Data, 24);
    LOC_DX_set();
}

void Process_search_key()
{
    Tuner_operation(MS_UOP_SEARCH);
}

void Process_skipf_key()
{
    Tuner_operation(MS_UOP_NEXT);
    Tuner_icon_set();
}

void Process_skipb_key()
{
    Tuner_operation(MS_UOP_PREVIOUS);
}

void Process_fastf_key()
{
    if(tuner_repeat_key_flag)
    {
        Tuner_operation(MS_UOP_SEARCH_NEXT);
        tuner_repeat_key_flag = 0;
    }
    else
    {
        Tuner_operation(MS_UOP_FORWARD);
        tuner_repeat_key_flag = 1;
        touch_key_cnt = 5;
    }
}

void Process_fastb_key()
{
    if(tuner_repeat_key_flag)
    {
        Tuner_operation(MS_UOP_SEARCH_PREV);
        tuner_repeat_key_flag = 0;
    }
    else
    {
        Tuner_operation(MS_UOP_BACKWARD);
        tuner_repeat_key_flag = 1;
        touch_key_cnt = 5;
    }
}

void Process_store_key()
{
    Tuner_operation(MS_UOP_STORE);
}




;
***********************************************************************
;
***********************************************************************
LC72131_DATA_SHIFT:
CLR	LC72131_TUNER_CE_PIN
NOP
NOP
;
*********************************************************
MOV	R0,#08H
MOV	A,LC72131_SEND_ADDRESS
LC72131_DATASHIFT_LOOP1:
CLR	LC72131_TUNER_CL_PIN
NOP
NOP
RRC	A
MOV	LC72131_TUNER_DI_PIN,C
NOP
NOP
NOP
NOP
SETB	LC72131_TUNER_CL_PIN
NOP
NOP
NOP
NOP
DJNZ	R0,LC72131_DATASHIFT_LOOP1
;
*********************************************************
NOP
SETB	LC72131_TUNER_CE_PIN
NOP
NOP
NOP
;
*********************************************************
MOV	R0,#08H
MOV	A,LC72131_SEND_DATA_LOW

LC72131_DATASHIFT_LOOP2:
CLR	LC72131_TUNER_CL_PIN
NOP
NOP
RRC	A
MOV	LC72131_TUNER_DI_PIN,C
NOP
NOP
NOP
NOP
SETB	LC72131_TUNER_CL_PIN
NOP
NOP
NOP
NOP
DJNZ	R0,LC72131_DATASHIFT_LOOP2
;
*********************************************************
MOV	R0,#08H
MOV	A,LC72131_SEND_DATA_MID

LC72131_DATASHIFT_LOOP3:
CLR	LC72131_TUNER_CL_PIN
NOP
NOP
RRC	A
MOV	LC72131_TUNER_DI_PIN,C
NOP
NOP
NOP
NOP
SETB	LC72131_TUNER_CL_PIN
NOP
NOP
NOP
NOP
DJNZ	R0,LC72131_DATASHIFT_LOOP3
;
*********************************************************
MOV	R0,#08H
MOV	A,LC72131_SEND_DATA_HIG
LC72131_DATASHIFT_LOOP4:
CLR	LC72131_TUNER_CL_PIN
NOP
NOP
RRC	A
MOV	LC72131_TUNER_DI_PIN,C
NOP
NOP
NOP
NOP
SETB	LC72131_TUNER_CL_PIN
NOP
NOP
NOP
NOP
DJNZ	R0,LC72131_DATASHIFT_LOOP4
;
*********************************************************
CLR	LC72131_TUNER_CE_PIN
NOP
NOP
NOP
NOP
END_LC72131_DATA_SHIFT:
RET
;
***********************************************************************
LC72131_DATA_READ:
CLR	LC72131_TUNER_CE_PIN
NOP
NOP
;
*********************************************************
MOV	R0,#08H
MOV	A,LC72131_MODE3_ADDRESS_VALUE

LC72131_READ_DATASHIFT_LOOP1:
CLR	LC72131_TUNER_CL_PIN
NOP
NOP
RRC	A
MOV	LC72131_TUNER_DI_PIN,C
NOP
NOP
NOP
NOP
SETB	LC72131_TUNER_CL_PIN
NOP
NOP
NOP
NOP
DJNZ	R0,LC72131_READ_DATASHIFT_LOOP1
;
*********************************************************
NOP
NOP
SETB	LC72131_TUNER_CE_PIN
NOP
NOP
;
*********************************************************
SETB	LC72131_TUNER_DO_PIN
MOV	R0,#08H

LC72131_DATA_READ_LOOP1:
NOP
NOP
CLR	LC72131_TUNER_CL_PIN
NOP
NOP
NOP
NOP
SETB	LC72131_TUNER_CL_PIN
MOV	C,LC72131_TUNER_DO_PIN
RRC	A
NOP
NOP
NOP
NOP
DJNZ	R0,LC72131_DATA_READ_LOOP1
MOV	LC72131_READ_DATA_LOW,A
;
*********************************************************
MOV	R0,#08H

LC72131_DATA_READ_LOOP2:
;
SETB	LC72131_TUNER_DO_PIN
NOP
NOP
CLR	LC72131_TUNER_CL_PIN
NOP
NOP
NOP
NOP
SETB	LC72131_TUNER_CL_PIN
MOV	C,LC72131_TUNER_DO_PIN
RRC	A
NOP
NOP
NOP
NOP
DJNZ	R0,LC72131_DATA_READ_LOOP2
MOV	LC72131_READ_DATA_MID,A
;
*********************************************************
MOV	R0,#08H

LC72131_DATA_READ_LOOP3:
;
SETB	LC72131_TUNER_DO_PIN
NOP
NOP
CLR	LC72131_TUNER_CL_PIN
NOP
NOP
NOP
NOP
SETB	LC72131_TUNER_CL_PIN
MOV	C,LC72131_TUNER_DO_PIN
RRC	A
NOP
NOP
NOP
NOP
DJNZ	R0,LC72131_DATA_READ_LOOP3
MOV	LC72131_READ_DATA_HIG,A
;
*********************************************************
NOP
NOP
CLR	LC72131_TUNER_CE_PIN;
CLR	LC72131_TUNER_CL_PIN
NOP
NOP

END_LC72131_DATA_READ:
RET
;
***********************************************************************
;
***********************************************************************
;
***********************************************************************
;
***********************************************************************
FM_STEP_SEARCH:
FM_RE_STEP_SEARCH:
MOV	LC72131_SEND_ADDRESS,#LC72131_MODE1_ADDRESS_VALUE
MOV	LC72131_SEND_DATA_LOW,FM_FREQ_L
MOV	LC72131_SEND_DATA_MID,FM_FREQ_H
MOV	LC72131_SEND_DATA_HIG,#MODE1_DATA_FM_CTE_RESET
CALL	LC72131_DATA_SHIFT
MOV	LC72131_SEND_ADDRESS,#LC72131_MODE2_ADDRESS_VALUE
MOV	LC72131_SEND_DATA_LOW,#MODE2_DATA2_FM_IF_MUTE
MOV	LC72131_SEND_DATA_MID,#MODE2_DATA3_VALUE
MOV	LC72131_SEND_DATA_HIG,#MODE2_DATA4_VALUE
CALL	LC72131_DATA_SHIFT
CALL	DELAY10US
;
*****************************************************************
CALL	FM_DISPLAY_DATA_SET
CALL	VFD_DISPLAY_COMMAND
;
*****************************************************************
;
*****************************************************************
MOV	LC72131_SEND_ADDRESS,#LC72131_MODE1_ADDRESS_VALUE
MOV	LC72131_SEND_DATA_LOW,FM_FREQ_L
MOV	LC72131_SEND_DATA_MID,FM_FREQ_H
MOV	LC72131_SEND_DATA_HIG,#MODE1_DATA_FM_CTE_START
CALL	LC72131_DATA_SHIFT
MOV	LC72131_SEND_ADDRESS,#LC72131_MODE2_ADDRESS_VALUE
MOV	LC72131_SEND_DATA_LOW,#MODE2_DATA2_FM_IF_MUTE
MOV	LC72131_SEND_DATA_MID,#MODE2_DATA3_VALUE
MOV	LC72131_SEND_DATA_HIG,#MODE2_DATA4_VALUE
CALL	LC72131_DATA_SHIFT
CALL	DELAY100MS
;
*****************************************************************
MOV	AUTO_SEARCH_FLAG,#0FFH
MOV	A,AUTO_SEARCH_FLAG
JZ	NO_FM_IF_FREQ_READFM_IF_FREQ_READ:
CALL	LC72131_DATA_READ
CALL	LC72131_DATA_READ
CALL	LC72131_DATA_READ
MOV	A,LC72131_READ_DATA_LOW
MOV	A,LC72131_READ_DATA_MID
MOV	A,LC72131_READ_DATA_HIG
;
*****************************************************************
;
LC72131_READ_DATA_HIG   LC72131_READ_DATA_LOW
;
LC72131_READ_DATA_MID讀出來的數據都是FF?


#include"lc72320.h"
sbit radio_stb=P2^0;
sbit radio_clk=P2^1;
sbit radio_dat=P2^2;
sbit radio_do =P2^3;
//sbit test=P2^4;
unsigned char bdata Flag    _at_   0x20;
sbit Isfmam=Flag^0;
#define  CMD1   0x28
#define  CMD2   0x29
#define  CMD3   0x2a
//|R3 |R2 |R1 |R0 |XS |CTE |DVS |SNS |  this is the cmd1 the highest 8 bit
#define  Rfre100HZ     0X00
#define  Rfre050HZ     0X10 /*it is use FM for america refrecenty */
#define  Rfre025HZ     0X20 /*it is use FM    refrecenty */
#define  Rfre0125HZ    0X40
#define  Rfre010HZ     0X80
#define  Rfre009HZ     0X90
#define  Rfre005HZ     0XA0
#define  Rfre003HZ     0XC0   /*it is use AM refrecenty */
#define  Cry72M        0X08
#define  Cry45M        0X00
#define  Count_Start   0x04
#define  Count_Reset   0x00
#define  FMIN          0X02
#define  AMHIN         0X01
#define  AMLIN         0X00
//|BO4|BO3|BO2|BO1|IO2|IO1|IOC2|IOC1|
/*
IOC2,IOC1 it is set 1
IO2   it is set mono stereo
BO4 BO3 BO2 BO1  it is setting see the specified 
*/
//|DZ1|DZ0|UL1|UL0|DOC2|DOC1|DOC0|BO5| //the 8 bit for input cmd2

#define DEAD_ZONE_A            0X00 /*set DZ1 DZ0 */
#define DEAD_ZONE_B            0X40
#define DEAD_ZONE_C            0X80
#define DEAD_ZONE_D            0XC0
#define PHASE_ERR_WIDTH0       0X10 /*set UL1 UL0 */
#define PHASE_ERR_WIDTH1       0X20
#define PHASE_ERR_WIDTH2       0X30
#define DOC_MODE0              0X00 /*set DOC2 DOC1 DOC0 */
#define DOC_MODE1              0X02
#define DOC_MODE2              0X04
//|TEST2|TEST1|TEST0|IFS|DLC|TBC|GT1|GT0| // the 8 bit for in2_input[3]
#define DLC_1                  0X08  /*normal operation */
#define DLC_0                  0X00  /*forced low */
#define     IFS_1                 0X10   /*normal mode */
#define  IFS_0                 0X00   /*degradation mode*/
#define  IF_COUNTER_PERIOD4    0x00  /*set GT1 GT0 */
#define  IF_COUNTER_PERIOD8    0x01
#define  IF_COUNTER_PERIOD32   0x02
#define  IF_COUNTER_PERIOD64   0X03
#define  AM_RFREQ              Rfre003HZ
typedef   unsigned char  UCHAR;
typedef   unsigned int   UINT ;

UCHAR in1_input;
UINT  in1_input_freq;  //for the command cm1 using
UCHAR in2_input[3];  //for the command cm2 using
UCHAR  read_dat[3]={0,0,0};
////////////////////////////////////////////////////////////////////////////////
////////////
#define   IFS_VALUE              IFS_1
#define   DOC_MODE               DOC_MODE2
#define   DEAD_ZONE              DEAD_ZONE_D
#define   IF_COUNTER_PERIOD      IF_COUNTER_PERIOD64
#define   PHASE_ERR_WIDTH       PHASE_ERR_WIDTH0
UCHAR FM_DIVIDER,FM_STEP,FM_RFREQ;/*定義FM 被除因子﹐步長﹐參考頻率  */
UINT  Current_Fm_Freq,Current_Am_Freq;
////////////////////////////////////////////////////////////////////////////////
/////////////

void send_byte_to_lc72130(unsigned char dat)
{
    unsigned char i;
    radio_clk=1;
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    for(i=0;i>=1;
        }
        } ////////////////////////////////////////////////////////////////////////////////
        //////
        void read_data_from_lc72130()
        {
            unsigned char i,j;
            radio_stb=0;
            _nop_()
            ;
            _nop_();
            _nop_();
            _nop_();
            _nop_();
            _nop_();
            send_byte_to_lc72130(CMD3);
            radio_stb=1;
            _nop_();
            _nop_();
            _nop_();
            _nop_();
            _nop_();
            radio_clk=1;
            for(i=0;i8)
                ,in1_input);
        // read_data_from_lc72130();
        while(1);
    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -