Ejemplo n.º 1
0
void
i2c_init()
{
  SET_CLOCK();
  SET_DATA();
  MAKE_CLOCK_OUTPUT();
  MAKE_DATA_OUTPUT();
}
Ejemplo n.º 2
0
static void
pulse_clock()
{
  i2c_delay_us(100);
  SET_CLOCK();
  i2c_delay_us(100);
  CLEAR_CLOCK();
}
Ejemplo n.º 3
0
char TOS_COMMAND(I2C_init)(){
	printf("i2c_init\n");
	SET_CLOCK();
	SET_DATA();
	MAKE_CLOCK_OUTPUT();
	MAKE_DATA_OUTPUT();
	VAR(state) = 0;
	VAR(data) = 0;
	return 1;
}
Ejemplo n.º 4
0
static void
i2c_end()
{
  MAKE_DATA_OUTPUT();
  CLEAR_DATA();
  i2c_delay_us(100);
  SET_CLOCK();
  i2c_delay_us(100);
  SET_DATA();
}
//---------结束信号-------------------
void panel_tm1635_stop(void)
{
    CLR_CLOCK();//clk = 0;
    Tm1635_DelayNTimes(2);
    CLR_DATA();//dio = 0;
    Tm1635_DelayNTimes(2);
    SET_CLOCK();//clk = 1;
    Tm1635_DelayNTimes(3);
    SET_DATA();//dio = 1;
}
//---------读按键数据子程序-----------
uint32_t panel_tm1635_read(void)
{
	uint32_t x, key;
	uint64_t data;
    
	panel_tm1635_set_portin(g_PanelTM1635Config.m_chDataPin);
	Tm1635_DelayNTimes(2);
	CLR_CLOCK();//clk = 0;
	Tm1635_DelayNTimes(2);
	key = 0;
	for(x=0;x<8;x++) //读按键数据开始
	{
		CLR_CLOCK();//clk = 0;
		Tm1635_DelayNTimes(3);
        SET_CLOCK();//clk = 1;
		//data=panel_tm1635_get_data(DATA);
		Tm1635_DelayNTimes(1);
		g_PanelTM1635Config.m_tPanelPublicConfig.m_PanelGetGpioLevelFun(g_PanelTM1635Config.m_chDataPin, &data);
		key = key<<1;
		if(data)
		key |= 1;        

		//SET_CLOCK();//clk = 1;
		Tm1635_DelayNTimes(2);
	}
    
	panel_tm1635_set_portout(g_PanelTM1635Config.m_chDataPin);
	Tm1635_DelayNTimes(2);
	CLR_CLOCK();//clk = 0;
	Tm1635_DelayNTimes(2);
	SET_DATA();//dio = 1;
	Tm1635_DelayNTimes(2);
	SET_CLOCK();//clk = 1;
	Tm1635_DelayNTimes(3);

	panel_tm1635_set_portin(g_PanelTM1635Config.m_chDataPin);	
	Tm1635_DelayNTimes(2);
	Tm1635_DelayNTimes(2);
	panel_tm1635_set_portout(g_PanelTM1635Config.m_chDataPin);
	Tm1635_DelayNTimes(2);//for the ack 应答信号
    return(key);
}
Ejemplo n.º 7
0
static void
i2c_start()
{
  SET_DATA();
  SET_CLOCK();
  MAKE_DATA_OUTPUT();
  i2c_delay_us(100);
  CLEAR_DATA();
  i2c_delay_us(100);
  CLEAR_CLOCK();
}
void panel_tm1635_start(void)
{
    SET_CLOCK();
	//clk = 1;	//给芯片发送开始信号
    SET_DATA();//dio = 1;
    Tm1635_DelayNTimes(2);
    CLR_DATA();//dio = 0;
    Tm1635_DelayNTimes(2);
    CLR_CLOCK();//clk = 0;	//开始信号传送完
    Tm1635_DelayNTimes(1);
} 
Ejemplo n.º 9
0
static inline void pulse_clock(){
	wait();
	wait();
	wait();
	wait();
	SET_CLOCK();
	wait();
	wait();
	wait();
	wait();
	CLEAR_CLOCK();
}
void panel_tm1635_write(uint8_t wr_data)
{
	unsigned int i;

	//GXPIO_Data_t whether_key;
	
	panel_tm1635_set_portout(g_PanelTM1635Config.m_chDataPin);

	for(i=0;i<8;i++)//开始传送8位数据,每循环一次传送一位数据
	{
		CLR_CLOCK();//clk =0;
		Tm1635_DelayNTimes(2);
		if((wr_data & 0x1))
		{
			SET_DATA();
		}
		else
		{
			CLR_DATA();
		}
		wr_data >>= 1;//移位数据,低位在前!
		Tm1635_DelayNTimes(3);
		SET_CLOCK();//clk =1;
		Tm1635_DelayNTimes(2);
	}  
			 //8位数据传送完1
	CLR_CLOCK();//clk = 0;//判断芯片发过来的ACK应答信号
	Tm1635_DelayNTimes(2);
	SET_DATA();//dio = 1;
	Tm1635_DelayNTimes(2);
	SET_CLOCK();//clk = 1;
	Tm1635_DelayNTimes(2);

	panel_tm1635_set_portin(g_PanelTM1635Config.m_chDataPin);
	Tm1635_DelayNTimes(2);
	Tm1635_DelayNTimes(2);
	panel_tm1635_set_portout(g_PanelTM1635Config.m_chDataPin);
	Tm1635_DelayNTimes(2);
}
Ejemplo n.º 11
0
static unsigned char
read_bit()
{
  unsigned char i;

  MAKE_DATA_INPUT();
  i2c_delay_us(100);
  SET_CLOCK();
  i2c_delay_us(100);
  i = (unsigned char) GET_DATA();
  CLEAR_CLOCK();
  return i;
}
Ejemplo n.º 12
0
void i2c_end(){
	MAKE_DATA_OUTPUT();
	CLEAR_DATA();
	wait();
	wait();
	wait();
	wait();
	SET_CLOCK();
	wait();
	wait();
	wait();
	wait();
	SET_DATA();
	printf(" i2c_end\n");
}
Ejemplo n.º 13
0
void i2c_start(){
	SET_DATA();
	SET_CLOCK();
	MAKE_DATA_OUTPUT();
	wait();
	wait();
	wait();
	wait();
	CLEAR_DATA();
	wait();
	wait();
	wait();
	wait();
	CLEAR_CLOCK();
	printf(" i2c_start\n");
}
Ejemplo n.º 14
0
char read_bit(){
	char i;
	MAKE_DATA_INPUT();
	wait();
	wait();
	wait();
	wait();
	SET_CLOCK();
	wait();
	wait();
	wait();
	wait();
	i = GET_DATA();
	CLEAR_CLOCK();
	return i;
}
//led显示
void font_pannel_led_scan(void)
{
	uint8_t a;

	SET_DATA();//dio = 1;
	SET_CLOCK();//clk = 1;
	panel_tm1635_start();    //调用开始信号
	panel_tm1635_write(0x44);//写命令40H(数据设置),固定地址模式
	panel_tm1635_stop();	  //调用结束信号,一个字节命令发送完毕,可以发送下一个命令
	Tm1635_DelayNTimes(4);
	for(a=0;a<5;a++)
	{
		panel_tm1635_start();	  //调用开始信号
		panel_tm1635_write(0xc0+a);//写起始地址命令(0C0H),地址从00H单元开始。
		panel_tm1635_write(gs_chLedValue_1635[a]);//给显示寄存器写显示数据,值可根据实参改变
		panel_tm1635_stop(); //将所有数据送完后,发结束信号,可以发送下一条命令
	}
	Tm1635_DelayNTimes(3);
	panel_tm1635_start();	  //调用开始信号
	panel_tm1635_write(0x8f); //送开屏命令,(8BH),亮度可以根据低三位调节。
	panel_tm1635_stop();	  //调用结束信号,一个字节命令发送完毕,可以发送下一个命令
}
void gx_stb_panel_tm1635_unlock(void)
{
	gs_chLedValue_1635[4] &= (~BIT_B_1635);


	SET_DATA();//dio = 1;
	SET_CLOCK();//clk = 1;
	panel_tm1635_start();    //调用开始信号
	panel_tm1635_write(0x44);//写命令40H(数据设置),固定地址模式
	panel_tm1635_stop();	  //调用结束信号,一个字节命令发送完毕,可以发送下一个命令
	Tm1635_DelayNTimes(4);
//	for(a=0;a<5;a++)
	{
		panel_tm1635_start();	  //调用开始信号
		panel_tm1635_write(0xc0+4);//写起始地址命令(0C0H),地址从00H单元开始。
		panel_tm1635_write(gs_chLedValue_1635[4]);//给显示寄存器写显示数据,值可根据实参改变
		panel_tm1635_stop(); //将所有数据送完后,发结束信号,可以发送下一条命令
	}
	Tm1635_DelayNTimes(3);
	panel_tm1635_start();	  //调用开始信号
	panel_tm1635_write(0x8f); //送开屏命令,(8BH),亮度可以根据低三位调节。
	panel_tm1635_stop();	
}
//----------判按键子程序-----------
void font_pannel_key_scan(void)
{
	static uint8_t	chOldKey = 0;
	static uint8_t 	chCnt = 0;
	static uint8_t 	chFirst = 0;
	//uint32_t		KeyValue=0;
	uint32_t 		key_VALUE=0;
	
	SET_DATA();
	SET_CLOCK();
	panel_tm1635_start();	        //调用开始信号
	panel_tm1635_write(0x42);        //送读按键命令(42H),
	key_VALUE = panel_tm1635_read();	//读8位按键数据,其中高三位为0,低5位为按键编码。编码表见说明书第5页。
	panel_tm1635_stop();             //发结束信号,按键读取完毕。

	if(chOldKey !=key_VALUE)
	{
		chCnt = 0;
		chFirst = 0;
		chOldKey = key_VALUE;
	}
	else
	{
		//bsp_printf("chFirst = %d\n",chFirst);
		if(0 == chFirst)
		{
			chCnt ++;

			if(chCnt == 40)
			{
				chCnt = 0;
				chFirst = 1;
			}
			else
			{
				return ;
			}
		}
		else 
		{
			chCnt ++;

			//bsp_printf("chCnt = %d\n",chCnt);
			if(chCnt == 20)
			{
				chCnt = 0;
			}
			else
			{
				return ;
			}
		}
	}
    
	if(key_VALUE != 0xff)
	{
		//bsp_printf("key == 0x%x\n",key_VALUE);
	}
	
	switch(key_VALUE)
	{
	case 0xef:
		//KeyValue = STB_KEY_OK;
		gx_stb_panel_tm1635_send_keymsg(6);
		break;
	case 0x4f:
		//KeyValue = STB_KEY_DOWN;
		gx_stb_panel_tm1635_send_keymsg(3);
		break;
	case 0x2f:
		//KeyValue = STB_KEY_RIGHT;
		gx_stb_panel_tm1635_send_keymsg(4);
		break;
	case 0xaf:
		//KeyValue = STB_KEY_UP;
		gx_stb_panel_tm1635_send_keymsg(2);
		break;
	case 0x8f:
		//KeyValue = STB_KEY_LEFT;
		gx_stb_panel_tm1635_send_keymsg(5);
		break;
	case 0x6f:
		//KeyValue = STB_KEY_MENU;
		gx_stb_panel_tm1635_send_keymsg(7);
		break;
	case 0xcf:
		//KeyValue = STB_KEY_EXIT;
		gx_stb_panel_tm1635_send_keymsg(1);
		break;
	default:
		return;
	}
}