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

📄 vfd.c

📁 OSD 学习学习.天天向上.STUDY STUDY DAY DAY UP.
💻 C
字号:

#include "reg51.h"
#include "intrins.h"
#include "vfd.h"

  void VFD_init()
{
	unsigned char i;
	VFD_strobeSendByte(VFD_MODE);
	VFD_strobeSendByte(VFD_DUTY_CYCLE);
	VFD_strobeSendByte(VFD_ADDRESS_INC);
	
	VFD_STB=0;
	VFD_objectSendByte(VFD_ADDRESS_MASK | 0x00);
	
	for(i=0;i<6;i++)
	  VFD_objectSendByte(0xFF);
	  for(i=0;i<6;i++)
	  VFD_objectSendByte(0x00);
	VFD_STB=1;
	VFD_DAT=1;
	VFD_CLK=1;
}
//********************************************************
  void VFD_scan_key()
{
     unsigned char i,j;   	
     unsigned char _bVfdKeyBuf=IR_NONE;
     Player_Power_On_Off();
     if(POWER_CTRL_PIN==1)return ;
     if(_VFD_Key==IR_TV_POWER) return ;

    VFD_STB=0;
    VFD_objectSendByte(VFD_READ_KEY);
    VFD_DAT=1;
    for(i=0;i<3;i++)
    {
        	Vfd_Receive=0;
        	VFD_objectReadByte();
        	if(Vfd_Receive!=0) break;
   }	
  for(j = 0; j < 8; j++)
      		{
        			if (Vfd_Receive & 0x1)
        			{
          			_bVfdKeyBuf = j + i* 8;
          			break;
        			}
        			Vfd_Receive >>= 1;
      		}
    VFD_STB=1;
    if(_bVfdKeyBuf==IR_NONE)
    	_fgVfdKeyLock=FALSE;
    else
    {
    	if(_fgVfdKeyLock==FALSE)
    	{
    	_VFD_Key=_pbVFDKeyTbl[_bVfdKeyBuf];
    	_fgVfdKeyValid=TRUE;
     }
    	_fgVfdKeyLock=TRUE;
    }	
}
void Player_Power_On_Off(void)
{
	unsigned char i;
	if(TV_POWER_PIN==1)
		_fgPowerKey_Up=TRUE;
	if(TV_POWER_PIN==0&&_fgPowerKey_Up==TRUE)
    	{
	for(i=0;i<10;i++)
		{_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}
		 if(TV_POWER_PIN==0)
		 {
		 _fgPowerKey_Up=FALSE;	
    		 _VFD_Key=IR_TV_POWER;
    		 _fgVfdKeyValid=TRUE;
    		}   
    	}	
}
//********************************************************
static void VFD_strobeSendByte(unsigned char Send_data )
{
   VFD_STB=0;
   VFD_objectSendByte(Send_data);
   VFD_STB=1;
   VFD_CLK=1;
   VFD_DAT=1;
}
//********************************************************
static  void VFD_objectSendByte(unsigned char SendByte)
{
    unsigned char i;
    for (i = 0;i <8;i++)
     {
	/* Transmit least significant bit first */
        VFD_CLK=0;
        if (SendByte & 0x01) {
            VFD_DAT=1;
        } else {
            VFD_DAT=0;
        }
         SendByte >>= 1;
        VFD_CLK=1;
    }
}
//********************************************************
static void VFD_objectReadByte()
{
    unsigned char i;
    Vfd_Receive=0;
      for (i = 0; i < 8; i++) {
	/* Receive most significant bit first */
        Vfd_Receive <<= 1;
        VFD_CLK=0;
    if (VFD_DAT==1) Vfd_Receive |= 0x01;
        VFD_CLK=1;
   }

}


⌨️ 快捷键说明

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