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

📄 main.c

📁 str73系列 三洋LC75010 控制代码
💻 C
📖 第 1 页 / 共 2 页
字号:
/******************** (C) COPYRIGHT 2005 STMicroelectronics ********************
* File Name          : main.c
* Author             : MCD Application Team
* Date First Issued  : 09/27/2005 :  V1.0
* Description        : Main program body
**********************************************************************************
* History:
* 09/27/2005 :  V1.0
**********************************************************************************
* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH
* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT
* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*********************************************************************************/

/* Standard include ------------------------------------------------------------*/
#include "73x_lib.h"
#include "ccb_data.h"
#include "systimer.h"
#include "def.h"
#include "start_data.h"


volatile unsigned long TsysCnt;
	typedef enum {AM = 1,FM = 2,CD = 3,CDC = 4}PLAYING;
       uint8 VOLUME_send[4] = {0xD1 ,0x00 ,0x28 ,0xC0};//19
		uint8 CD_status_send[3] = {0XD1 ,0X01 ,0Xc2};
		uint8 DA5_AND_DAL_send[16] = {0XD1 ,0x7A ,0x14 ,0x2E ,0x7A ,0x14 ,0x0E,0XFF ,0XFF ,0X7F ,0X71 ,0X10 ,0X00 ,0X02 ,0X00 ,0X41};
		uint8 DA5_send[3] = {0xD1 ,0x0B ,0xC8};
		uint8 POWER_status[19] = {
									0XD1 ,0X65 ,0X6B ,0XFF ,0X65 ,0X6B ,0XFF ,0X65 ,0X6B ,0XFF ,0X65 ,0X6B ,0XFF ,0X84 ,0X10 ,0X00 ,0X03 ,0X00 ,0XC1
								};
		uint8 AM_status[3] ={0xD1 ,0x0a ,0X5f };
		uint8 *point;

		
	int VOLUME_value = 19;
	int DA5_value = 5;
	int TRE_value = 5;
	int DAL_value = 7;
	int FAD_value = 7;
		
	uint8 CORRE_playing = CD;
#define UART_buff_size 	64
    uint8 UART_data_buff[UART_buff_size] ;
volatile    u32 UART_data_buff_w =0;
volatile    u32 UART_data_buff_r =0;


 

void delay(void)		// delay 
{	
	u8 i;
	for(i=0;i<8;i++);
}

 
void send_start_data(void)
{
	uint8 i,j,k;
	uint8 tmp;
	uint8 half = FALSE;
	
	unsigned long int time;
	
	for(i = 0;i < 100;i++)
	{
		for(j=0;j<25;j++)
		{
			
			if((start_data[i][j] == '\r') && (start_data[i][j+1] == '\n'))				//帧数据以0D 0A 结尾
			{
				break;
			}
			else if((start_data[i][j] == ':') && (start_data[i][j+1] == '\r'))
			{
				break;
			}	
			else if((start_data[i][j+2] == ':') && (start_data[i][j+3] == '\r'))		//数据半字节发送
			{
				half = TRUE;
			}
			
			if(j==1)
			{
				CCBBUS_CE_H; 
			}
						
			tmp = start_data[i][j];					//取一字节数据
			for(k=0;k<8;k++)						//发送一字节数据
			{
				CCBBUS_CL_L;					//时钟输出低电平
							
				if(tmp & 1)							//数据输出
				{
					CCBBUS_DI_H;
				}
				else
				{
					CCBBUS_DI_L;
				}
				
				tmp >>= 1;							//下一位
				
				delay();							//低电平保持时间
				delay();
				
				CCBBUS_CL_H;					//时钟输出高电平
				
				if(half == TRUE)					//数据半字节发送
				{
					if(k == 3)
					{
						half = FALSE;
						break;
					}
					
				}
								
				delay();							//高电平保持时间
				delay();
				//
			}
			
			
			delay();								//字节间隔时间
			delay();
			delay();
			delay();
			delay();
		
		}
		
		CCBBUS_CE_L;
		
		SetUserTimer(&time);						//帧间隔时间
		while(ReadUserTimer(&time) < T_5MS);
	}
	
}

void Init_75010w(void)
{
   unsigned long int tmp;

   	CFG_PeripheralClockConfig(CFG_CLK_GPIO3,DISABLE);
	CFG_PeripheralClockConfig(CFG_CLK_GPIO3,ENABLE);
  
    //CCBBUS port init:
	CCBBUS_CE_OUT;     //CE OUT
    CCBBUS_CL_OUT;		//CLOCK OUT
    CCBBUS_DI_OUT;		//DATA OUT
	RESET_OUT;			//RESET OUT


	CCBBUS_CE_H;
	CCBBUS_CL_H;
	CCBBUS_DI_H;
	RESET_H;	   //RESET HIGH
    SetUserTimer(&tmp);
    while(ReadUserTimer(&tmp) < T_200MS);

	CCBBUS_CE_L;
	CCBBUS_CL_L;
	CCBBUS_DI_L;
	RESET_L;			//RESET
    SetUserTimer(&tmp);
	while(ReadUserTimer(&tmp) < T_890MS);

	RESET_H;
	CCBBUS_CL_H;
	SetUserTimer(&tmp);
	while(ReadUserTimer(&tmp) < T_25MS);
	
	
	EIC->ICR &=2;	 //禁止中断
	send_start_data();	 
	EIC->ICR &=3;   // 允许中断	 
}


/**********************************************************************/
void send_volume(uint8 buff[])
{	uint8 j = 0;
	uint8 k = 0;
	uint8 tmp;
	unsigned long int time;
	
		for(j=0;j<4;j++)
		{
			if(j==1)
			{
				CCBBUS_CE_H; 
			}
				
			tmp = buff[j];					//取一字节数据
			for(k=0;k<8;k++)						//发送一字节数据
			{
				CCBBUS_CL_L;					//时钟输出低电平
							
				if(tmp & 1)							//数据输出
				{
					CCBBUS_DI_H;
				}
				else
				{
					CCBBUS_DI_L;
				}
				
				tmp >>= 1;							//下一位
				
				delay();							//低电平保持时间
				
				CCBBUS_CL_H;					//时钟输出高电平
				
				delay();							//高电平保持时间
				
			}
			
			delay();								//字节间隔时间
	    	delay();
			delay();
		    delay();
			
		}
		
		CCBBUS_CE_L;
		
		SetUserTimer(&time);						//帧间隔时间
		while(ReadUserTimer(&time) < T_5MS);
}

void send_cd_status(const uint8 buff[])
{	
	uint8 j = 0;
	uint8 tmp;
	uint8 k = 0;
	unsigned long int time;
	
		for(j=0;j<3;j++)
		{
			if(j==1)
			{
				CCBBUS_CE_H; 
			}
				
			tmp = buff[j];					//取一字节数据
			for(k=0;k<8;k++)						//发送一字节数据
			{
				CCBBUS_CL_L;					//时钟输出低电平
							
				if(tmp & 1)							//数据输出
				{
					CCBBUS_DI_H;
				}
				else
				{
					CCBBUS_DI_L;
				}
				
				tmp >>= 1;							//下一位
				
				delay();							//低电平保持时间
								
				CCBBUS_CL_H;					//时钟输出高电平
				
				delay();							//高电平保持时间
				
			}
			
			delay();								//字节间隔时间
			delay();
			delay();
			delay();
			
		}
		
		CCBBUS_CE_L;
		
		SetUserTimer(&time);						//帧间隔时间
		while(ReadUserTimer(&time) < T_5MS);
}
void send_da5_and_dal(uint8 buff[])
{
	uint8 j = 0;
	uint8 k = 0;
	uint8 tmp;
	unsigned long int time;
	
		for(j=0;j<16;j++)
		{
			if(j==1)
			{
				CCBBUS_CE_H; 
			}
				
			tmp = buff[j];					//取一字节数据
			for(k=0;k<8;k++)						//发送一字节数据
			{
				CCBBUS_CL_L;					//时钟输出低电平
							
				if(tmp & 1)							//数据输出
				{
					CCBBUS_DI_H;
				}
				else
				{
					CCBBUS_DI_L;
				}
				
				tmp >>= 1;							//下一位
				
				delay();							//低电平保持时间
				
				CCBBUS_CL_H;					//时钟输出高电平
				
				delay();							//高电平保持时间
				
			}
			
			delay();								//字节间隔时间
			delay();
        	delay();
			delay();
			
		}
		
		CCBBUS_CE_L;
		
		SetUserTimer(&time);						//帧间隔时间
		while(ReadUserTimer(&time) < T_5MS);
}
void send_da5(uint8 buff[])
{	
	uint8 j = 0;
	uint8 k = 0;
	uint8 tmp;
	unsigned long int time;
	
		for(j=0;j<3;j++)
		{
			if(j==1)
			{
				CCBBUS_CE_H; 
			}
				
			tmp = buff[j];					//取一字节数据
			for(k=0;k<8;k++)						//发送一字节数据
			{
				CCBBUS_CL_L;					//时钟输出低电平
							
				if(tmp & 1)							//数据输出
				{
					CCBBUS_DI_H;
				}
				else
				{
					CCBBUS_DI_L;
				}
				
				tmp >>= 1;							//下一位
				
				delay();							//低电平保持时间
								
				CCBBUS_CL_H;					//时钟输出高电平
				
				delay();							//高电平保持时间
				
			}
			
			delay();								//字节间隔时间
			delay();
			delay();
			delay();
		
		}
		
		CCBBUS_CE_L;
		
		SetUserTimer(&time);						//帧间隔时间
		while(ReadUserTimer(&time) < T_5MS);
}




void send_POWER_status(const uint8 buff[])
{	
	uint8 j = 0;
	uint8 k = 0;
	uint8 tmp;
	unsigned long int time;
	
		for(j=0;j<19;j++)
		{
			if(j==1)
			{
				CCBBUS_CE_H; 
			}
				
			tmp = buff[j];					//取一字节数据
			for(k=0;k<8;k++)						//发送一字节数据
			{
				CCBBUS_CL_L;					//时钟输出低电平
							
				if(tmp & 1)							//数据输出
				{
					CCBBUS_DI_H;
				}
				else
				{
					CCBBUS_DI_L;
				}
				
				tmp >>= 1;							//下一位
				
				delay();							//低电平保持时间
								
				CCBBUS_CL_H;					//时钟输出高电平
				
				delay();							//高电平保持时间
				
			}
			
			delay();								//字节间隔时间
			delay();
			delay();
			delay();
	
		}
		
		CCBBUS_CE_L;
		
		SetUserTimer(&time);						//帧间隔时间
		while(ReadUserTimer(&time) < T_5MS);
}



void send_AM_status(const uint8 buff[])
{	
	uint8 j = 0;
	uint8 k = 0;
	uint8 tmp;

⌨️ 快捷键说明

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