📄 7219.c
字号:
{
LcdClear();
ePutstr(0,0,exampl12);
if(B_DECODE_MODE == 0 ) // 不译码
{
ePutstr(0,1,exampl09);
TestIC_YanShi_VS7219_NoDecode();
//TestIC_Write_VS7219(DECODE_MODE, 0x00);
//Decode Mode Select D7~D0 : 1 B decode ; 0 No decode
}
else if(B_DECODE_MODE == 1 ) // 译码
{
ePutstr(0,1,exampl08);
TestIC_YanShi_VS7219_Decode();
//TestIC_Write_VS7219(DECODE_MODE, 0xff);
//Decode Mode Select D7~D0 : 1 B decode ; 0 No decode
}
}
/*******************************************************************************
函数:SET_INTENSITY
说明:设置测试IC的亮度
输入:无
输出:无
*******************************************************************************/
void SET_TestIC_INTENSITY(void)
{
unsigned char ttemp;
FLAG_INTENSITY += 2;
if(FLAG_INTENSITY > 32 ) FLAG_INTENSITY = 0x01;
if(FLAG_INTENSITY <= 0x09 )
{
ttemp = FLAG_INTENSITY;
Write_VS7219(Digit2, 0x7e); // 十位0
Write_VS7219(Digit3, Num_NoDecode[ttemp ]); // 个位
TestIC_Write_VS7219(INTENSITY, (FLAG_INTENSITY+1)/2); //TestIC的亮度设置
}
else if(FLAG_INTENSITY <= 0x13 )
{
ttemp = FLAG_INTENSITY - 10;
Write_VS7219(Digit2, 0x30); // 十位1
Write_VS7219(Digit3, Num_NoDecode[ttemp ]); // 个位
TestIC_Write_VS7219(INTENSITY, (FLAG_INTENSITY+1)/2); //TestIC的亮度设置
}
else if(FLAG_INTENSITY <= 0x1d )
{
ttemp = FLAG_INTENSITY - 20;
Write_VS7219(Digit2, 0x6d); // 十位2
Write_VS7219(Digit3, Num_NoDecode[ttemp ]); // 个位
TestIC_Write_VS7219(INTENSITY, (FLAG_INTENSITY+1)/2); //TestIC的亮度设置
}
else if(FLAG_INTENSITY = 0x1f )
{
Write_VS7219(Digit2, 0x79); // 十位3
Write_VS7219(Digit3, 0x30); // 个位1
TestIC_Write_VS7219(INTENSITY, 15); //TestIC的亮度设置
}
}
/*******************************************************************************
函数:SET_SCAN_LIMIT
说明:设置测试IC的显示边界(位数)
输入:无
输出:无
*******************************************************************************/
void SET_TestIC_SCAN_LIMIT(void)
{
if(FLAG_SCAN_LIMIT > 0x08 ) FLAG_SCAN_LIMIT = 0x01;
Write_VS7219(Digit1, Num_NoDecode[FLAG_SCAN_LIMIT ]);
TestIC_Write_VS7219(SCAN_LIMIT, FLAG_SCAN_LIMIT-1); //TestIC的位数设置
FLAG_SCAN_LIMIT ++;
}
/*******************************************************************************
函数:SET_TestIC_SHUTDOWN
说明:设置测试IC关短模式/启动模式
输入:无
输出:无
*******************************************************************************/
void SET_TestIC_SHUTDOWN(void)
{
unsigned char ttmp;
LcdClear();
ePutstr(0,0,exampl05);
B_SHUTDOWN = ~B_SHUTDOWN;
if(B_SHUTDOWN == 0 )
{
ePutstr(0,1,exampl10);
TestIC_Write_VS7219(SHUTDOWN, 0x00); // 关断模式
//Normal Operation XXXXXXX1 ; Shutdown Mode XXXXXXXX0
ttmp = FLAG_LED ;
FLAG_LED = (ttmp & 0x1f) | 0x40; // 先与0x1f相与关断模式/正常模式,再设定关断模式/正常模式
Write_VS7219(Digit0,FLAG_LED ); // LED指示位
//Write_VS7219(Digit0,0x40); // LED指示位
}
else if(B_SHUTDOWN == 1 )
{
ePutstr(0,1,exampl11);
TestIC_Write_VS7219(SHUTDOWN, 0x01); // 正常模式
//Normal Operation XXXXXXX1 ; Shutdown Mode XXXXXXXX0
ttmp = FLAG_LED ;
FLAG_LED = (ttmp & 0x1f) | 0x20; // 先与0x1f相与关断模式/不译码位,再设定关断模式/正常模式
Write_VS7219(Digit0,FLAG_LED ); // LED指示位
//Write_VS7219(Digit0,0x20); // LED指示位
}
}
/*******************************************************************************
函数:SET_TestIC_DECODE_MODE
说明:设置测试IC译码模式/不译码模式
输入:无
输出:无
*******************************************************************************/
void SET_TestIC_DECODE_MODE(void)
{
unsigned char ttmp;
LcdClear();
ePutstr(0,0,exampl05);
B_DECODE_MODE = ~B_DECODE_MODE;
if(B_DECODE_MODE == 0 )
{
ePutstr(0,1,exampl09);
TestIC_Write_VS7219(DECODE_MODE, 0x00); // 不译码模式
//Decode Mode Select D7~D0 : 1 B decode ; 0 No decode
ttmp = FLAG_LED ;
FLAG_LED = (ttmp & 0x67) | 0x08; // 先与0x67相与清掉译码/不译码位,再设定译码/不译码位
Write_VS7219(Digit0,FLAG_LED ); // LED指示位
//Write_VS7219(Digit0,0x08); // LED指示位
}
else if(B_DECODE_MODE == 1 )
{
ePutstr(0,1,exampl08);
TestIC_Write_VS7219(DECODE_MODE, 0xff); // 译码模式
//Decode Mode Select D7~D0 : 1 B decode ; 0 No decode
ttmp = FLAG_LED ;
FLAG_LED = (ttmp & 0x67) | 0x10; // 先与0x67相与清掉译码/不译码位,再设定译码/不译码位
Write_VS7219(Digit0,FLAG_LED ); // LED指示位
//Write_VS7219(Digit0,0x10); // LED指示位
}
}
/*******************************************************************************
函数:SET_TestIC_DISPLAY_TEST
说明:设置测试IC测试状态(正常显示模式/测试显示模式)
输入:无
输出:无
*******************************************************************************/
void SET_TestIC_DISPLAY_TEST(void)
{
unsigned char ttmp;
LcdClear();
ePutstr(0,0,exampl05);
B_DISPLAY_TEST = ~B_DISPLAY_TEST;
if(B_DISPLAY_TEST == 0 )
{
ePutstr(0,1,exampl06);
TestIC_Write_VS7219(DISPLAY_TEST, 0x00); // 正常显示模式
//Normal Operation XXXXXXX0 ; Display Test Mode XXXXXXXX1
ttmp = FLAG_LED ;
FLAG_LED = (ttmp & 0x79) | 0x02 ; // 先与0x79相与清掉译码/不译码位,再设定译码/不译码位
Write_VS7219(Digit0,FLAG_LED ); // LED指示位
//Write_VS7219(Digit0,0x02); // LED指示位
}
else if(B_DISPLAY_TEST == 1 )
{
ePutstr(0,1,exampl07);
TestIC_Write_VS7219(DISPLAY_TEST, 0x01); // 测试显示模式
//Normal Operation XXXXXXX0 ; Display Test Mode XXXXXXXX1
ttmp = FLAG_LED ;
FLAG_LED = (ttmp & 0x79) | 0x04 ; // 先与0x79相与清掉译码/不译码位,再设定译码/不译码位
Write_VS7219(Digit0,FLAG_LED ); // LED指示位
//Write_VS7219(Digit0,0x04); // LED指示位
}
}
// =★=★=★=★=★=★=★=★=★=★=★= M A I N =★=★=★=★=★=★=★=★=★=★=★=
void main(void)
{
unsigned char temp;
unsigned char i;
Initial_LCD1602(); // 初始化LCD1602
LCD1602_LOGO(); // 显示开机画面
//Delay400ms();Delay400ms();
B_DISPLAY_TEST = 0; //测试标志位
B_SHUTDOWN = 0; //关断标志位
B_DECODE_MODE = 0; // 译码/不译码标志位
FLAG_INTENSITY = 0x01; //亮度标志
FLAG_SCAN_LIMIT = 0x01; //位数标志
FLAG_LED = 0x4a; //LED标志
Initial_VS7219_B(); // 初始化VS7219,显示亮度和位数用的VS7219
TestIC_Initial_VS7219_B();
LcdClear();
ePutstr(0,0,exampl01);
ePutstr(0,1,exampl02);
W_MAIN1:
while(TRUE)
{
WaitForKEYS(); // 检测按键按下
switch(key)
{
case 0x20: // ★键 <新>
{
LcdClear();
goto W_MAIN2;
} break;
case 0x10: // ★键 <NC>
{
VS7219_LEDyanshi();
goto W_MAIN1;
} break;
default:
{
} break;
}
}
W_MAIN2:
LcdClear();
ePutstr(0,0,exampl03);
ePutstr(0,1,exampl04);
Initial_VS7219_A(); // 初始化VS7219,显示亮度和位数用的VS7219
TestIC_Initial_VS7219_A(); // 初始化VS7219,测试IC显示数据用的VS7219
W_MAIN3:
while(TRUE)
{
WaitForKEYS(); // 检测按键按下
switch(key)
{
case 0x01: // ★键 <关短/启动>
{
SET_TestIC_SHUTDOWN();
goto W_MAIN3;
} break;
case 0x02: // ★键 <亮度>
{
SET_TestIC_INTENSITY();
goto W_MAIN3;
} break;
case 0x04: // ★键 <译码/不译码>
{
SET_TestIC_DECODE_MODE();
goto W_MAIN3;
} break;
case 0x08: // ★键 <位数>
{
SET_TestIC_SCAN_LIMIT();
goto W_MAIN3;
} break;
case 0x10: // ★键 <NC>
{
TestIC_Write_VS7219(DECODE_MODE, 0xff); //Decode Mode Select D7~D0 : 1 B decode ; 0 No decode
TestIC_Write_VS7219(INTENSITY, 0x0e); //Set Intensity : 0xX0~0xXf
TestIC_Write_VS7219(SCAN_LIMIT, 0x07); //SCAN LIMIT : 0xX0~0xX7
TestIC_Write_VS7219(SHUTDOWN, 0x01); //Normal Operation XXXXXXX1 ; Shutdown Mode XXXXXXXX0
TestIC_Write_VS7219(DISPLAY_TEST, 0x00); //Normal Operation XXXXXXX0 ; Display Test Mode XXXXXXXX1}
for(i=0;i<9;i++)
{
TestIC_Write_VS7219(i,0x0f);
}
TestIC_Write_VS7219(Digit0,0x08);
//Delay400ms();Delay400ms();
TestIC_Write_VS7219(Digit1,0x08);
//Delay400ms();Delay400ms();
TestIC_Write_VS7219(Digit2,0x08);
//Delay400ms();Delay400ms();
TestIC_Write_VS7219(Digit3,0x08);
Delay400ms();Delay400ms();
TestIC_Write_VS7219(Digit4,0x08);
//Delay400ms();Delay400ms();
TestIC_Write_VS7219(Digit5,0x08);
//Delay400ms();Delay400ms();
TestIC_Write_VS7219(Digit6,0x08);
//Delay400ms();Delay400ms();
TestIC_Write_VS7219(Digit7,0x08);
//Delay400ms();Delay400ms();
/*
TestIC_Write_VS7219(Digit0,0x01);
Delay400ms();Delay400ms();//Delay400ms();
TestIC_Write_VS7219(Digit1,0x02);
Delay400ms();Delay400ms();//Delay400ms();
TestIC_Write_VS7219(Digit2,0x03);
Delay400ms();Delay400ms();//Delay400ms();
TestIC_Write_VS7219(Digit3,0x04);
Delay400ms();Delay400ms();//Delay400ms();
TestIC_Write_VS7219(Digit4,0x05);
Delay400ms();Delay400ms();//Delay400ms();
TestIC_Write_VS7219(Digit5,0x06);
Delay400ms();Delay400ms();//Delay400ms();
TestIC_Write_VS7219(Digit6,0x07);
Delay400ms();Delay400ms();//Delay400ms();
TestIC_Write_VS7219(Digit7,0x08);
Delay400ms();Delay400ms();//Delay400ms();
for(i=0;i<9;i++)
{
TestIC_Write_VS7219(i,0x0f);
}
Delay400ms();Delay400ms();//Delay400ms();
TestIC_Write_VS7219(Digit7,0x08);
Delay400ms();Delay400ms();//Delay400ms();
TestIC_Write_VS7219(Digit6,0x07);
Delay400ms();Delay400ms();//Delay400ms();
TestIC_Write_VS7219(Digit5,0x06);
Delay400ms();Delay400ms();//Delay400ms();
TestIC_Write_VS7219(Digit4,0x05);
Delay400ms();Delay400ms();//Delay400ms();
TestIC_Write_VS7219(Digit3,0x04);
Delay400ms();Delay400ms();//Delay400ms();
TestIC_Write_VS7219(Digit2,0x03);
Delay400ms();Delay400ms();//Delay400ms();
TestIC_Write_VS7219(Digit1,0x02);
Delay400ms();Delay400ms();//Delay400ms();
TestIC_Write_VS7219(Digit0,0x01);
Delay400ms();Delay400ms();//Delay400ms();
*/
goto W_MAIN3;
} break;
case 0x20: // ★键 <新>
{
goto W_MAIN2;
} break;
case 0x40: // ★键 <测试状态>
{
SET_TestIC_DISPLAY_TEST();
goto W_MAIN3;
} break;
case 0x80: // ★键 <功能演示>
{
TestIC_YanShi_VS7219();
goto W_MAIN3;
} break;
default:
{
} break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -