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

📄 7219.c

📁 芯片
💻 C
📖 第 1 页 / 共 3 页
字号:
{
        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 + -