📄 lc72131.c
字号:
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 + -