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

📄 led_drv.c

📁 内部HFGHGFHGFHGFHGFHGFHGFHGFHG
💻 C
字号:
#include "config.h"

Data_595_Str   strData595;              //定义一个595输出数据结构体

uint8   FLASH_Flag;
uint8   FLASH_Dis_Flag;
uint8   FLASH_Cnt;

uint8    SegDisTab[CHARLEN] = 
{
    SegA|SegB|SegC|SegD|SegE|SegF,          //0
    SegB|SegC,                              //1
    SegA|SegB|SegG|SegE|SegD,               //2
    SegA|SegB|SegC|SegD|SegG,               //3
    SegB|SegC|SegF|SegG,                    //4
    SegA|SegF|SegG|SegC|SegD,               //5
    SegA|SegF|SegG|SegC|SegD|SegE,          //6
    SegA|SegB|SegC,                         //7
    SegA|SegB|SegC|SegD|SegE|SegF|SegG,     //8
    SegA|SegB|SegC|SegD|SegF|SegG,          //9
    
    SegA|SegB|SegC|SegE|SegF|SegG,          //A
    SegC|SegD|SegE|SegF|SegG,               //b
    SegA|SegD|SegE|SegF,                    //c
    SegB|SegC|SegD|SegE|SegG,               //d
    SegA|SegD|SegE|SegF|SegG,               //E
    SegA|SegE|SegF|SegG,                    //F
    SegB|SegC|SegE|SegF|SegG,               //H
    SegD|SegE|SegF,                         //L
    SegA|SegB|SegE|SegF|SegG,               //P
    SegC|SegE|SegG,                         //n
    SegG,                                   //-
    SegC|SegD|SegE,                         //v
    0                                       //灭
};



void    DisplayInit(void)
{
    uint8 i;
    for(i=0; i<6; i++)
    {
        strData595.u8DisCode[i] = SegDisTab[Char_0];
        strData595.u8DisNum[i]  = Char_0;
    }
    strData595.u8DisChangeFlag = REFRESH_OFF;
    DisRefresh();
}

void    ModifyLed(uint8 Pos,uint8 ModifyData,uint8 DotFlag,uint8 FlashFlag)
{
    uint8 temp;
    
    if( DotFlag )  //显示数据到显示码的转换
    {
        temp = (SegDisTab[ModifyData] | DotFlag);
    }
    else
    {
        temp = SegDisTab[ModifyData];
    }
   
    if(  strData595.u8DisCode[Pos] != temp )   //是否发生变化的判断和处理
    {
        strData595.u8DisCode[Pos]  = temp;
        strData595.u8DisChangeFlag = REFRESH_ON;
    }
    if( FlashFlag != 0 )
    {
        FLASH_Dis_Flag |= (1<<Pos);
    }
    else
    {
        FLASH_Dis_Flag &= ~(1<<Pos);
    }
    
}

/* 送显 */
void    DisRefresh(void)
{
    uint8 i;
    for(i = 0; i < 6; i++)
    {
        SendByte_595(strData595.u8DisCode[i]);
    }
    D_ENCLK = 0; 
    D_ENCLK = 1;
}

/* 刷显 */
void    Display(void)
{                  
    if(strData595.u8DisChangeFlag == REFRESH_ON)
    {            
        DisRefresh();
        strData595.u8DisChangeFlag = REFRESH_OFF;
    }
}
                               
//闪烁处理
void Flash(void)
{
    if( FLASH_Flag != 0 )
    {
        if( FLASH_Cnt > 50 )
        {
            switch( FLASH_Flag )
            {
                if ( FLASH_Flag & (1<<0) )
				{
                    if( FLASH_Dis_Flag & 0x01 )
                    {
                        FLASH_Dis_Flag |= 0x00;
                        ModifyLed(POSITION_1,strData595.u8DisNum[POSITION_1],0,0);    
                    }
                    else
                    {
                        FLASH_Dis_Flag |= 0x01;
                        strData595.u8DisCode[0] = SegDisTab[Char_Mie];
                    }	                    
				
                	if ( FLASH_Flag & 0x02 )
					{
	                    if( FLASH_Dis_Flag & 0x02 )
	                    {
	                        FLASH_Dis_Flag |= 0x00;
	                        ModifyLed(POSITION_2,strData595.u8DisNum[POSITION_2],0,0);    
	                    }
	                    else
	                    {
	                        FLASH_Dis_Flag |= 0x02;
	                        strData595.u8DisCode[1] = SegDisTab[Char_Mie];     
	                    }
		                    
		                if ( FLASH_Flag & 0x04 )
						{
		                    if( FLASH_Dis_Flag & 0x04 )
		                    {
		                        FLASH_Dis_Flag |= 0x00;
		                        ModifyLed(POSITION_3,strData595.u8DisNum[POSITION_3],0,0);    
		                    }
		                    else
		                    {
		                        FLASH_Dis_Flag |= 0x04;
		                        strData595.u8DisCode[2] = SegDisTab[Char_Mie];      
		                    }			                  
		                
			                if ( FLASH_Flag & 0x08 )
							{
			                    if( FLASH_Dis_Flag & 0x08 )
			                    {
			                        FLASH_Dis_Flag |= 0x00;
			                        ModifyLed(POSITION_4,strData595.u8DisNum[POSITION_4],0,0);    
			                    }
			                    else
			                    {
			                        FLASH_Dis_Flag |= 0x08;
			                        strData595.u8DisCode[3] = SegDisTab[Char_Mie];     
			                    }			                  
			                
				                if ( FLASH_Flag & 0x10 )
								{
				                    if( FLASH_Dis_Flag & 0x10 )
				                    {
				                        FLASH_Dis_Flag |= 0x00;
				                        ModifyLed(POSITION_5,strData595.u8DisNum[POSITION_5],0,0);    
				                    }
				                    else
				                    {
				                        FLASH_Dis_Flag |= 0x10;
				                        strData595.u8DisCode[4] = SegDisTab[Char_Mie];      
				                    }			                
				                
				                	if ( FLASH_Flag & 0x20 )
									{
					                    if( FLASH_Dis_Flag & 0x20 )
					                    {
					                        FLASH_Dis_Flag &= (~0x20);
					                        ModifyLed(POSITION_6,strData595.u8DisNum[POSITION_6],0,0);    
					                    }
					                    else
					                    {
					                        FLASH_Dis_Flag = 0x20;
					                        strData595.u8DisCode[5] = SegDisTab[Char_Mie];     
					                    } 
									}
								}
							}
					    }
				    }
				}	 			                         
            }    
        }
    }
}


⌨️ 快捷键说明

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