TM1616 显示代码

void TIME1616_SHOW(void)
{
    
        uchar j;


        
#if 1

        STB = 1;
        L_CLK = 1;
        DIN = 1;

         TM1616write(0x00);           //显示模式设置
         STB=1;    
          TM1616write(0x44);           //地址增加模式  数据命令设置
          STB=1; 
        // for(j=0;j<4;j++)
          {
              TM1616write(0xC0);                        //设置显示地址1
            TM1616write(ledbuff[0]);                 //传输显示数据1
            STB=1;                                                //显示数据1发送完毕STB置1
            TM1616write(0xC2);                        //设置显示地址1
            TM1616write(ledbuff[1]);                 //传输显示数据1
            STB=1;                                                //显示数据1发送完毕STB置1
            TM1616write(0xC4);                        //设置显示地址1
            TM1616write(ledbuff[2]);                 //传输显示数据1
            STB=1;                                                //显示数据1发送完毕STB置1
            TM1616write(0xC6);                        //设置显示地址2
            TM1616write(ledbuff[3]);                 //传输显示数据1
            STB=1;      
          }

         TM1616write(0x8F);                                //控制命令设置,设置显示开、显示最亮
         STB=1;    
        LCD_Delay(10);
        LCD_Delay(10);
    
    //#else
        STB1 = 1;
        L_CLK = 1;
        DIN = 1;

         TM1616write1(0x00);           //显示模式设置
         STB1=1;    
          TM1616write1(0x44);           //地址增加模式  数据命令设置
          STB1=1; 
        // for(j=0;j<4;j++)
          {
              TM1616write1(0xC0);                        //设置显示地址1
            TM1616write1(led1buff[0]);                 //传输显示数据1
            STB1=1;                                                //显示数据1发送完毕STB置1
            TM1616write1(0xC2);                        //设置显示地址1
            TM1616write1(led1buff[1]);                 //传输显示数据1
            STB1=1;                                                //显示数据1发送完毕STB置1
            TM1616write1(0xC4);                        //设置显示地址1
            TM1616write1(led1buff[2]);                 //传输显示数据1
            STB1=1;                                                //显示数据1发送完毕STB置1
            TM1616write1(0xC6);                        //设置显示地址2
            TM1616write1(led1buff[3]);                 //传输显示数据1
            STB1=1;      
          }

         TM1616write1(0x8F);                                //控制命令设置,设置显示开、显示最亮
         STB1=1;  
        #if 1    
         LCD_Delay(10);
         LCD_Delay(10);
         STB2 = 1;
         L_CLK = 1;
         DIN = 1;

         TM1616write2(0x00);           //显示模式设置
         STB2=1;    
          TM1616write2(0x44);           //地址增加模式  数据命令设置
          STB2=1; 
        // for(j=0;j<4;j++)
          {
              TM1616write2(0xC0);                        //设置显示地址1
            TM1616write2(led2buff[0]);                 //传输显示数据1
            STB2=1;                                                //显示数据1发送完毕STB置1
            TM1616write2(0xC2);                        //设置显示地址1
            TM1616write2(led2buff[1]);                 //传输显示数据1
            STB2=1;                                                //显示数据1发送完毕STB置1
            TM1616write2(0xC4);                        //设置显示地址1
            TM1616write2(led2buff[2]);                 //传输显示数据1
            STB2=1;                                                //显示数据1发送完毕STB置1
            TM1616write2(0xC6);                        //设置显示地址2
            TM1616write2(led2buff[3]);                 //传输显示数据1
            STB2=1;      
          }
    
         TM1616write2(0x8F);                                //控制命令设置,设置显示开、显示最亮
         STB2=1;  
         #endif
    #endif

         
}
 

void TM1616write(uchar wr_date)
{
       uchar i;


       
       STB=0;
          LCD_Delay(2);
   
        for(i=0;i<8;i++)
        {
            L_CLK=0;
            LCD_Delay(2);
            if(wr_date&0x01!=0)
            {
                    DIN=1;
            }
            else
            {
                    DIN=0;
            }
            LCD_Delay(2);
            L_CLK=1;
             LCD_Delay(2);
            wr_date=wr_date>>1;
        }
}
 

#define STB                       GET_BITFIELD(&PC_ODR).bit7
#define STB1                      GET_BITFIELD(&PG_ODR).bit0
#define STB2                      GET_BITFIELD(&PG_ODR).bit1

猜你喜欢

转载自blog.csdn.net/ccy764417301/article/details/84955918
tm