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

📄 pt6311.c

📁 前面板vfd控制代码
💻 C
📖 第 1 页 / 共 3 页
字号:
/*
 *
 * Copyright (c) hivision, Inc. 2006. All rights reserved.
 *
 */

/**
 * @file public.c
 * @Sample FIP user level program to display given string,
 * monitoring eject button and eject disc if needed.
 *
 * @author ZhangHongBo
 */

#include "public.h" 
#include "pt6311.h"


static int vfd_playstatus = 0;
static int vfd_linkstatus = 0;
static int vfd_pcusbstatus = 1;
static int vfd_repeatstatus = 0;
static int vfd_mainstatus = 0;

static int tv_mode = 2;

static int vfd_ON_OFF=0;

// address : 0x00 0x01
//////////////////////////////////////////////////////////////////////
static const int vfd_hour[10] [2] = {
		{DIGIT_L(0,1,0,1,0,1,0,0), DIGIT_H(0,1,0,1,0,1,1,0)},		//0
		{DIGIT_L(0,0,0,0,0,1,0,0), DIGIT_H(0,0,0,1,0,0,1,0)},		// 1
		{DIGIT_L(0,1,0,1,0,0,0,1), DIGIT_H(0,0,0,1,0,1,1,0)},		// 2	
		{DIGIT_L(0,1,0,0,0,1,0,1), DIGIT_H(0,0,0,1,0,1,1,0)},		// 3
		{DIGIT_L(0,0,0,0,0,1,0,1), DIGIT_H(0,1,0,1,0,0,1,0)},		// 4
		{DIGIT_L(0,1,0,0,0,1,0,1), DIGIT_H(0,1,0,0,0,1,1,0)},		// 5
		{DIGIT_L(0,1,0,1,0,1,0,1), DIGIT_H(0,1,0,0,0,1,1,0)},		// 6
		{DIGIT_L(0,0,0,0,0,1,0,0), DIGIT_H(0,0,0,1,0,1,1,0)},		// 7
		{DIGIT_L(0,1,0,1,0,1,0,1), DIGIT_H(0,1,0,1,0,1,1,0)},		// 8
		{DIGIT_L(0,1,0,0,0,1,0,1), DIGIT_H(0,1,0,1,0,1,1,0)}		// 9
};

static const int vfd_min_high[7][2] = {

		{DIGIT_L(1,0,1,0,1,0,0,0), DIGIT_H(1,0,1,0,1,0,1,0)},		//0
		{DIGIT_L(0,0,0,0,1,0,0,0), DIGIT_H(0,0,1,0,0,0,1,0)},		// 1
		{DIGIT_L(1,0,1,0,0,0,1,0), DIGIT_H(0,0,1,0,1,0,1,0)},		// 2	
		{DIGIT_L(1,0,0,0,1,0,1,0), DIGIT_H(0,0,1,0,1,0,1,0)},		// 3
		{DIGIT_L(0,0,0,0,1,0,1,0), DIGIT_H(1,0,1,0,0,0,1,0)},		// 4
		{DIGIT_L(1,0,0,0,1,0,1,0), DIGIT_H(1,0,0,0,1,0,1,0)},		// 5
		{DIGIT_L(1,0,1,0,1,0,1,0), DIGIT_H(1,0,0,0,1,0,1,0)}		// 6
};
// address : 0x03 0x04
//////////////////////////////////////////////////////////////////////
static const int vfd_min_low[10] [2] = {
		{DIGIT_L(0,1,0,1,0,1,0,0), DIGIT_H(0,1,0,1,0,1,1,0)},		//0
		{DIGIT_L(0,0,0,0,0,1,0,0), DIGIT_H(0,0,0,1,0,0,1,0)},		// 1
		{DIGIT_L(0,1,0,1,0,0,0,1), DIGIT_H(0,0,0,1,0,1,1,0)},		// 2	
		{DIGIT_L(0,1,0,0,0,1,0,1), DIGIT_H(0,0,0,1,0,1,1,0)},		// 3
		{DIGIT_L(0,0,0,0,0,1,0,1), DIGIT_H(0,1,0,1,0,0,1,0)},		// 4
		{DIGIT_L(0,1,0,0,0,1,0,1), DIGIT_H(0,1,0,0,0,1,1,0)},		// 5
		{DIGIT_L(0,1,0,1,0,1,0,1), DIGIT_H(0,1,0,0,0,1,1,0)},		// 6
		{DIGIT_L(0,0,0,0,0,1,0,0), DIGIT_H(0,0,0,1,0,1,1,0)},		// 7
		{DIGIT_L(0,1,0,1,0,1,0,1), DIGIT_H(0,1,0,1,0,1,1,0)},		// 8
		{DIGIT_L(0,1,0,0,0,1,0,1), DIGIT_H(0,1,0,1,0,1,1,0)}		// 9
};
		
static const int vfd_sec_high[7][2] = {

		{DIGIT_L(1,0,1,0,1,0,0,0), DIGIT_H(1,0,1,0,1,0,1,0)},		//0
		{DIGIT_L(0,0,0,0,1,0,0,0), DIGIT_H(0,0,1,0,0,0,1,0)},		// 1
		{DIGIT_L(1,0,1,0,0,0,1,0), DIGIT_H(0,0,1,0,1,0,1,0)},		// 2	
		{DIGIT_L(1,0,0,0,1,0,1,0), DIGIT_H(0,0,1,0,1,0,1,0)},		// 3
		{DIGIT_L(0,0,0,0,1,0,1,0), DIGIT_H(1,0,1,0,0,0,1,0)},		// 4
		{DIGIT_L(1,0,0,0,1,0,1,0), DIGIT_H(1,0,0,0,1,0,1,0)},		// 5
		{DIGIT_L(1,0,1,0,1,0,1,0), DIGIT_H(1,0,0,0,1,0,1,0)}		// 6
};
// address : 0x06 0x07
//////////////////////////////////////////////////////////////////////
static const int vfd_sec_low[10] [2] = {
		{DIGIT_L(0,1,0,1,0,1,0,0), DIGIT_H(0,1,0,1,0,1,0,0)},		//0
		{DIGIT_L(0,0,0,0,0,1,0,0), DIGIT_H(0,0,0,1,0,0,0,0)},		// 1
		{DIGIT_L(0,1,0,1,0,0,0,1), DIGIT_H(0,0,0,1,0,1,0,0)},		// 2	
		{DIGIT_L(0,1,0,0,0,1,0,1), DIGIT_H(0,0,0,1,0,1,0,0)},		// 3
		{DIGIT_L(0,0,0,0,0,1,0,1), DIGIT_H(0,1,0,1,0,0,0,0)},		// 4
		{DIGIT_L(0,1,0,0,0,1,0,1), DIGIT_H(0,1,0,0,0,1,0,0)},		// 5
		{DIGIT_L(0,1,0,1,0,1,0,1), DIGIT_H(0,1,0,0,0,1,0,0)},		// 6
		{DIGIT_L(0,0,0,0,0,1,0,0), DIGIT_H(0,0,0,1,0,1,0,0)},		// 7
		{DIGIT_L(0,1,0,1,0,1,0,1), DIGIT_H(0,1,0,1,0,1,0,0)},		// 8
		{DIGIT_L(0,1,0,0,0,1,0,1), DIGIT_H(0,1,0,1,0,1,0,0)}		// 9
};

static const int vfd_tvip[7][2] = {
		{DIGIT_L(1,0,1,0,1,0,0,0), DIGIT_H(1,0,1,0,1,0,0,1)},		//0 i
		{DIGIT_L(1,0,1,0,1,0,0,0), DIGIT_H(1,0,1,0,1,0,1,0)},		// 1 p	
		{DIGIT_L(0,0,0,0,0,0,0,0), DIGIT_H(0,0,0,0,0,0,0,0)},		// 2 none
		{DIGIT_L(1,0,1,0,1,0,1,0), DIGIT_H(1,0,0,0,1,0,0,1)},          //6 i
		{DIGIT_L(1,0,1,0,1,0,0,0), DIGIT_H(1,0,1,0,1,0,0,0)},          // 0
		{DIGIT_L(0,0,0,0,1,0,1,0), DIGIT_H(1,0,1,0,0,0,0,0)},           // 4
		{DIGIT_L(1,0,1,0,1,0,1,0), DIGIT_H(1,0,1,0,1,0,0,0)}          // 8
};
// address : 0x09 0x0a
//////////////////////////////////////////////////////////////////////
static const int vfd_tvmode[3][2] = {
		{DIGIT_L(1,0,1,0,1,1,1,1), DIGIT_H(1,1,1,1,1,0,0,0)},		//480
		{DIGIT_L(1,0,1,0,0,1,1,0), DIGIT_H(0,0,1,1,1,1,0,0)},		//720	
		{DIGIT_L(1,1,1,1,1,1,1,0), DIGIT_H(1,1,1,1,1,1,1,1)}		//1080
};
//////////////////////////////////////////////////////////////////
static const int vfd_vgaip[4][2]={
	        {DIGIT_L(1,0,1,0,1,0,0,0), DIGIT_H(1,0,1,0,1,0,0,0)},  // 0
               {DIGIT_L(0,0,0,0,1,0,1,0),DIGIT_H(1,0,1,0,0,0,0,0)},  // 4   
		 {DIGIT_L(1,0,1,0,1,0,1,0),DIGIT_H(1,0,1,0,1,0,0,0)},  // 8
		 {DIGIT_L(0,0,0,0,0,0,0,0), DIGIT_H(0,0,0,0,0,0,0,0)}    // none
};
static const int vfd_vgamode[6][2]={
	        {DIGIT_L(1,0,1,0,1,1,1,1),DIGIT_H(1,1,1,1,1,0,0,0)}, //480
	        {DIGIT_L(1,1,1,1,1,1,0,1),DIGIT_H(1,1,1,0,1,1,0,0)},  //600
	        {DIGIT_L(1,0,1,0,1,1,1,0),DIGIT_H(1,0,0,1,1,1,0,0)},   //768
	        {DIGIT_L(1,1,1,1,0,1,1,0),DIGIT_H(0,1,1,1,1,1,0,1)},    //1024
	        {DIGIT_L(1,1,1,1,1,0,0,1),DIGIT_H(1,0,1,1,1,1,0,1)},    //1200
	        {DIGIT_L(0,1,0,0,1,1,0,1),DIGIT_H(0,1,1,0,1,1,0,0)}     //576
};
////////////////////////////////////////////////////////////////////
// address : 0x0c 0x0d
//////////////////////////////////////////////////////////////////////
static const int vfd_hd_green[4][2] = {
		{DIGIT_L(0,0,0,0,0,0,0,0), DIGIT_H(1,0,1,0,1,0,1,0)},		//none
		{DIGIT_L(0,0,0,0,0,0,0,1), DIGIT_H(1,0,1,0,1,0,1,0)},		//photo
		{DIGIT_L(0,0,0,0,0,0,0,0), DIGIT_H(1,0,1,0,1,0,1,1)},		//movie
		{DIGIT_L(0,0,0,0,0,0,0,0), DIGIT_H(1,1,1,0,1,0,0,0)}		//music
};

static const int vfd_hd_blue[4][2] = {
		{DIGIT_L(0,0,0,0,0,0,0,0), DIGIT_H(1,0,0,1,0,1,1,0)},
		{DIGIT_L(0,0,0,0,0,0,0,1), DIGIT_H(1,0,0,1,0,1,1,0)},		//photo
		{DIGIT_L(0,0,0,0,0,0,0,0), DIGIT_H(1,0,0,1,0,1,1,1)},		//movie
		{DIGIT_L(0,0,0,0,0,0,0,0), DIGIT_H(1,1,0,1,0,1,0,0)}		//music
};

static const int vfd_hd_s[4][2] = {
		{DIGIT_L(0,0,0,0,0,0,0,0), DIGIT_H(1,0,1,0,0,0,0,0)},		//S1
		{DIGIT_L(0,0,0,0,0,0,0,0), DIGIT_H(1,0,0,0,0,1,0,0)},		//S2
		{DIGIT_L(0,0,0,0,0,0,0,0), DIGIT_H(1,0,0,0,1,0,0,0)},		//S3
		{DIGIT_L(0,0,0,0,0,0,0,0), DIGIT_H(1,0,0,1,0,0,0,0)}		//S4
};

static const int vfd_mainmode[4][2] = {
		{DIGIT_L(0,0,0,0,0,0,0,0), DIGIT_H(0,0,0,0,0,0,1,0)},
		{DIGIT_L(0,0,0,0,0,0,0,1), DIGIT_H(0,0,0,0,0,0,1,0)},		//photo
		{DIGIT_L(0,0,0,0,0,0,0,0), DIGIT_H(0,0,0,0,0,0,1,1)},		//movie
		{DIGIT_L(0,0,0,0,0,0,0,0), DIGIT_H(0,1,0,0,0,0,1,0)}		//music

};


// address : 0x0f 0x10
//////////////////////////////////////////////////////////////////////
static const int vfd_pcusb[2][2]= {
	{DIGIT_L(0,0,0,0,0,0,0,0), DIGIT_H(0,0,0,0,0,0,1,1)},			//pc usb
	{DIGIT_L(0,0,0,0,0,0,0,0), DIGIT_H(0,0,0,0,0,0,0,0)}			//&0xf7
};

static const int vfd_playmode[4][2] = {
		{DIGIT_L(0,0,0,0,0,0,0,0), DIGIT_H(0,0,0,0,0,1,1,0)},		//play
		{DIGIT_L(0,0,0,0,0,0,0,0), DIGIT_H(0,0,0,0,1,0,1,0)},		//pause
		{DIGIT_L(0,0,0,0,0,0,0,0), DIGIT_H(0,0,0,1,0,0,1,0)},		//stop
		{DIGIT_L(0,0,0,0,0,0,0,0), DIGIT_H(0,0,0,0,0,0,1,0)}		//nomode
};

static const int vfd_repeat[2][2]= {
	{DIGIT_L(0,0,0,0,0,0,0,0), DIGIT_H(0,0,1,0,0,0,1,0)},			//pc usb
	{DIGIT_L(1,1,1,1,1,1,1,1), DIGIT_H(1,1,0,1,1,1,1,1)}			//&0xf7
};

static const int vfd_link[4][2] = {
		{DIGIT_L(0,0,0,0,0,0,1,0), DIGIT_H(0,0,0,0,0,0,1,0)},		//hd
		{DIGIT_L(0,0,0,0,0,0,0,1), DIGIT_H(0,0,0,0,0,0,1,0)},		//usb1
		{DIGIT_L(0,0,0,0,0,0,0,0), DIGIT_H(0,1,0,0,0,0,1,0)},		//usb2
		{DIGIT_L(0,0,0,0,0,0,0,0), DIGIT_H(1,0,0,0,0,0,1,0)}		//network
};
//////////////////////////////////////////////////////////////////////


void set_vfd_playstatus(int status)
{
	vfd_playstatus = status;
}


void set_vfd_linkstatus(int status)
{
	vfd_linkstatus = status;
}

void set_vfd_pcusbstatus(int status)
{
	vfd_pcusbstatus = status;
}

void set_vfd_repeatstatus(int status)
{
	vfd_repeatstatus = status;
}

void set_vfd_mainstatus(int status)
{
	vfd_mainstatus = status;
}

void vfd_delay_ms(unsigned long time)
{
	unsigned long i;
	for(i=0;i<time*10;i++);
}


void PD6311_WRITE(int reg_data)
{
	int i;
	
	for ( i = 0; i <8; i++ ) {
		
		if((reg_data >> i) & 0x01)
			  em86xx_gpio_write(PD6311_DIN,1);
		else 
			em86xx_gpio_write(PD6311_DIN,0);

		em86xx_gpio_write(PD6311_CLK,1);
		vfd_delay_ms(100);
		em86xx_gpio_write(PD6311_CLK,0);
		vfd_delay_ms(100);
	}
		

	
}

void VFD_DisplayMode(int mode)
{

   em86xx_gpio_setdirection(PD6311_STB,1);
   em86xx_gpio_setdirection(PD6311_DIN,1);
   em86xx_gpio_setdirection(PD6311_CLK,1);
   delay_ms(200);
   em86xx_gpio_write(PD6311_STB,0);	
   PD6311_WRITE(0x44);
   em86xx_gpio_write(PD6311_STB,1);	

/////////////////////////////////////////////////////////
   switch(mode)
   	{
   	case VFD_DISPLAY_PC:
		   delay_ms(100);
		   em86xx_gpio_write(PD6311_STB,0);
		   PD6311_WRITE(DIGITS6_H|0xc0);
		   delay_ms(100);
		   
		   if(vfd_repeatstatus == 0)
		   	PD6311_WRITE(vfd_pcusb[0][1]|vfd_playmode[vfd_playstatus][1]|vfd_repeat[vfd_repeatstatus][1]|vfd_link[vfd_linkstatus][1]);	
		   else
		   	PD6311_WRITE(vfd_pcusb[0][1]|(vfd_playmode[vfd_playstatus][1]&vfd_repeat[1][1])|vfd_link[vfd_linkstatus][1]);	
		   
		   em86xx_gpio_write(PD6311_STB,1);	
		   vfd_pcusbstatus= 0;
		   break;
	case VFD_DISPLAY_PCOUT:
		   delay_ms(100);
		   em86xx_gpio_write(PD6311_STB,0);
		   PD6311_WRITE(DIGITS6_H|0xc0);
		   delay_ms(100);
		   
		   if(vfd_repeatstatus == 0)
		   	PD6311_WRITE((vfd_pcusb[1][1]&vfd_playmode[vfd_playstatus][1])|vfd_repeat[vfd_repeatstatus][1]|vfd_link[vfd_linkstatus][1]);		
		   else
		   	PD6311_WRITE((vfd_pcusb[1][1]&vfd_playmode[vfd_playstatus][1]&vfd_repeat[1][1])|vfd_link[vfd_linkstatus][1]);		

		   em86xx_gpio_write(PD6311_STB,1);
		   vfd_pcusbstatus= 1;
		   break;
	case VFD_DISPLAY_HD:
		   delay_ms(100);
		   em86xx_gpio_write(PD6311_STB,0);
		   PD6311_WRITE(DIGITS6_H|0xc0);
		   delay_ms(100);
		   
		   if(vfd_repeatstatus == 0)
		   	PD6311_WRITE(vfd_pcusb[vfd_pcusbstatus][1]|vfd_playmode[vfd_playstatus][1]|vfd_repeat[vfd_repeatstatus][1]|vfd_link[0][1]);		
		   else
		   	PD6311_WRITE(vfd_pcusb[vfd_pcusbstatus][1]|(vfd_playmode[vfd_playstatus][1]&vfd_repeat[1][1])|vfd_link[0][1]);		

		   em86xx_gpio_write(PD6311_STB,1);
		   delay_ms(100);
		   em86xx_gpio_write(PD6311_STB,0);
		   PD6311_WRITE(DIGITS6_L|0xc0);
		   delay_ms(100);
		   PD6311_WRITE(vfd_link[0][0]);		
		   em86xx_gpio_write(PD6311_STB,1);
		   vfd_linkstatus = 0;
		   break;
	case VFD_DISPLAY_USB1:
		   delay_ms(100);
		   em86xx_gpio_write(PD6311_STB,0);
		   PD6311_WRITE(DIGITS6_H|0xc0);
		   delay_ms(100);

		   if(vfd_repeatstatus == 0)
		   	PD6311_WRITE(vfd_pcusb[vfd_pcusbstatus][1]|vfd_playmode[vfd_playstatus][1]|vfd_repeat[vfd_repeatstatus][1]|vfd_link[1][1]);		
		   else
		   	PD6311_WRITE(vfd_pcusb[vfd_pcusbstatus][1]|(vfd_playmode[vfd_playstatus][1]&vfd_repeat[1][1])|vfd_link[1][1]);		


		   em86xx_gpio_write(PD6311_STB,1);

		   delay_ms(100);
		   em86xx_gpio_write(PD6311_STB,0);
		   PD6311_WRITE(DIGITS6_L|0xc0);
		   delay_ms(100);
		   PD6311_WRITE(vfd_link[1][0]);		
		   em86xx_gpio_write(PD6311_STB,1);
		   vfd_linkstatus = 1;
		   break;
	case VFD_DISPLAY_USB2:
		   delay_ms(100);
		   em86xx_gpio_write(PD6311_STB,0);
		   PD6311_WRITE(DIGITS6_H|0xc0);
		   delay_ms(100);

		   if(vfd_repeatstatus == 0)
		   	PD6311_WRITE(vfd_pcusb[vfd_pcusbstatus][1]|vfd_playmode[vfd_playstatus][1]|vfd_repeat[vfd_repeatstatus][1]|vfd_link[2][1]);		
		   else
		   	PD6311_WRITE(vfd_pcusb[vfd_pcusbstatus][1]|(vfd_playmode[vfd_playstatus][1]&vfd_repeat[1][1])|vfd_link[2][1]);	

		   em86xx_gpio_write(PD6311_STB,1);

		   delay_ms(100);
		   em86xx_gpio_write(PD6311_STB,0);
		   PD6311_WRITE(DIGITS6_L|0xc0);
		   delay_ms(100);
		   PD6311_WRITE(vfd_link[2][0]);		
		   em86xx_gpio_write(PD6311_STB,1);
		    vfd_linkstatus = 2;
		   break;
	case VFD_DISPLAY_NETWORK:
		   delay_ms(100);
		   em86xx_gpio_write(PD6311_STB,0);
		   PD6311_WRITE(DIGITS6_H|0xc0);
		   delay_ms(100);

		   if(vfd_repeatstatus == 0)
		   	PD6311_WRITE(vfd_pcusb[vfd_pcusbstatus][1]|vfd_playmode[vfd_playstatus][1]|vfd_repeat[vfd_repeatstatus][1]|vfd_link[3][1]);
		   else
		   	PD6311_WRITE(vfd_pcusb[vfd_pcusbstatus][1]|(vfd_playmode[vfd_playstatus][1]&vfd_repeat[1][1])|vfd_link[3][1]);

		   em86xx_gpio_write(PD6311_STB,1);
		   delay_ms(100);
		   em86xx_gpio_write(PD6311_STB,0);
		   PD6311_WRITE(DIGITS6_L|0xc0);
		   delay_ms(100);
		   PD6311_WRITE(vfd_link[3][0]);		
		   em86xx_gpio_write(PD6311_STB,1);
		    vfd_linkstatus = 3;
		   break;		   
   	case VFD_DISPLAY_REPEAT:
		   delay_ms(100);
		   em86xx_gpio_write(PD6311_STB,0);
		   PD6311_WRITE(DIGITS6_H|0xc0);
		   delay_ms(100);
		   PD6311_WRITE(vfd_pcusb[vfd_pcusbstatus][1]|vfd_playmode[vfd_playstatus][1]|vfd_repeat[0][1]|vfd_link[vfd_linkstatus][1]);		
		   em86xx_gpio_write(PD6311_STB,1);
		   vfd_repeatstatus = 0;
		   break;
	case VFD_DISPLAY_REPEATOFF:
		   delay_ms(100);
		   em86xx_gpio_write(PD6311_STB,0);
		   PD6311_WRITE(DIGITS6_H|0xc0);
		   delay_ms(100);
		   PD6311_WRITE(vfd_pcusb[vfd_pcusbstatus][1]|(vfd_playmode[vfd_playstatus][1]&vfd_repeat[1][1])|vfd_link[vfd_linkstatus][1]);		
		   em86xx_gpio_write(PD6311_STB,1);
		   vfd_repeatstatus = 1;
		   break;		
   	case VFD_DISPLAY_PLAY:
		   delay_ms(100);
		   em86xx_gpio_write(PD6311_STB,0);
		   PD6311_WRITE(DIGITS6_H|0xc0);

⌨️ 快捷键说明

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