📄 vfd.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 + -