STM32 1621驱动LCD段码液晶屏

单片机小white 求。路。大
1621驱动LCD段码屏。现在屏幕是亮着 但是屏幕图案会慢慢熄灭。要怎么让屏幕不断刷新频率让它亮着啊

img

int main(void)
{

    HK1621_IO_Init();  //HT1621数据控制IO口初始化
    Init_1621();             //HT1621初始化
    
            
HK1621_all_off(23); 
        delay_ms(100);
HK1621_all_on(30);

    while(1)
    {

    }


#include "ht1621b.h"
#include "sys.h"

void delay_us(u32 nus)
{
     u32 temp;
     SysTick->LOAD = 9*nus;
     SysTick->VAL=0X00;
     SysTick->CTRL=0X01;
     do
     {
      temp=SysTick->CTRL;
     }while((temp&0x01)&&(!(temp&(1<<16))));
     
     SysTick->CTRL=0x00; 
     SysTick->VAL =0X00; 
}


void delay_ms(u16 nms)
{
     u32 temp;
     SysTick->LOAD = 9000*nms;
     SysTick->VAL=0X00;
     SysTick->CTRL=0X01;
     do
     {
      temp=SysTick->CTRL;
     }while((temp&0x01)&&(!(temp&(1<<16))));
     SysTick->CTRL=0x00; 
     SysTick->VAL =0X00; 
}

void Ht1621_delay_10us(uint n) // - - 10????????
{
uint i,j;
for(i=n;i>0;i--)
for(j=2;j>0;j--);
}
void Ht1621_delayms(uint xms) // - - 1??????
{
uint i,j;
for(i = xms;i > 0;i --)
for(j = 110;j > 0;j --);
}




void Init_1621(void) 
{
        
        SendCmd_1621(HK_SYS_EN);                //打开系统时钟
        
        SendCmd_1621(HK_LCD_ON);       //turn on
    
        SendCmd_1621(HK_BSIS);     // 1/3B,1/4D
    
        SendCmd_1621(HK_TIME_DIS);//禁止时序基准输出
    
        SendCmd_1621(HK_IRQ_DIS);        //禁止IRQ输出 
            
    


} 


void HK1621_IO_Init(void)
{

 GPIO_InitTypeDef  GPIO_InitStructure;
     
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//使能PB端口时钟
    
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_13|GPIO_Pin_14;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;          //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;         //IO口速度为50MHz
 GPIO_Init(GPIOB, &GPIO_InitStructure);    

}


//                        Name: SendCmd(送命令) 
//---------------------------------------------------------------------------*/ 

void SendCmd_1621(uchar command) 
{ 
    uchar i,temp,j;
    temp=command;

        CS1;// 拉高CS
        CS0; // 拉低CS

    delay_us(1);
    WR1; // 拉高WR;

    for(i=0;i<3;i++);
    DATA1; // 拉高DATA;

    for(i=0;i<3;i++);
    WR0; 

    for(i=0;i<3;i++);      //write '1';
    WR1;

    for(i=0;i<3;i++);
    
    DATA0;// 拉低DATA;

    for(i=0;i<3;i++);
    WR0;                //write '0';
 
    for(i=0;i<3;i++);
    WR1;

    for(i=0;i<3;i++);
    DATA0;

    for(i=0;i<3;i++);
    WR0;                //write '0';
            
        for(i=0;i<3;i++);
        WR1;             

    for(i=0;i<3;i++);
    
    for(i=0;i<8;i++)
    {
        if(temp&0x80)
        DATA1;
        
        else
DATA0;
        
        for(j=0;j<3;j++);
    WR0;                //write '0';    
    
        for(j=0;j<3;j++);            
    WR1;                //write '1';

    
        for(j=0;j<3;j++);
        temp=temp<<1;
            
    }
        
    DATA0;//DATA '0'
    
    for(j=0;j<3;j++);
    WR0;     
    
    for(j=0;j<3;j++);            
WR1;
    
    for(j=0;j<3;j++);
CS1;    

}
///**------------------------------------------------------------------------- 

//                        Name: Write_1621(送数据和命令程序) 
//---------------------------------------------------------------------------*/ 
void HK1621_WriteData4Bit(uint8_t addr, uint8_t data)
{
    uint8_t i;
   
    CS0;                         // CS = 0
    delay_us(1);
   
    // 写入数据标志,DATA:101
    WR0;                         // WR = 0
    delay_us(1);
    DATA1;                       // DATA = 1
    delay_us(1);
    WR1;                         // WR = 1
    delay_us(1);
   
    WR0;                         // WR = 0
    delay_us(1);
   DATA0;                       // DATA = 0
   delay_us(1);
    WR1;                         // WR = 1
    delay_us(1);
   
    WR0;                         // WR = 0
    delay_us(1);
    DATA1;                       // DATA = 1
    delay_us(1);
    WR1;                         // WR = 1
    delay_us(1);
   
    // 写入地址,Datasheet中A5~A0
    for(i = 0; i < 6; i++)
    {
        WR0;                     // WR = 0
        delay_us(1);
        if((addr << i) & 0x80)
        {
            DATA1;               // DATA = 1
        }
        else
        {
           DATA0;               // DATA = 0
        }
        delay_us(1);
       WR1;                     // WR = 1
        delay_us(1);
    }
    // 写入数据,Datasheet中D0~D3
    for(i = 0; i < 4; i++)
    {
       WR0;                     // WR = 0
        delay_us(1);
        if((data >> (3 - i)) & 0x01)
        {
            DATA1;               // DATA = 1
        }
        else
        {
            DATA0;               // DATA = 0
        }
        delay_us(1);
        WR1;                     // WR = 1
        delay_us(1);
    }
   
    CS1;                         // CS = 1
    delay_us(1);   
}






//                                Name: all_off(清除1621显示) 
//---------------------------------------------------------------------------*/ 

void HK1621_all_off(uint num) 
{ 
    uint i; 
    uint addr=0; 
    
    for(i=0;i<num;i++) 
    { 
        HK1621_WriteData4Bit(addr,0x00); 
        addr+=2; 
    } 
}

///**************************************************************************** 

//                                Name: all_on_num(全部点亮1621,显示同样的数字) 
//****************************************************************************/ 

////void HK1621_all_on_num(uint num,uint xx) 
////{ 
////    uint i; 
////    uint addr=0; 
////    for(i=0;i<num;i++) 
////    { 
////        HK1621_WriteData4Bit(addr,xx); 
////        addr+=2; 
////    } 
////} 

///**************************************************************************** 

//                                Name: all_on(全部点亮1621) 
//****************************************************************************/ 

void HK1621_all_on(uint num) 
{ 
    uint i; 
    uint addr=0; 
    
    for(i=0;i<num;i++) 
    { 
        HK1621_WriteData4Bit(addr,0xff); 
        addr+=2; 
    } 
}      



   
//显示数组数据
//void displaydata(long int t,int p,char bat1,char bat2,char bat3)//屏显示,bat1,bat2,bat3 右侧电池
//{
//    uint i;
//    uint8_t dispnum[6];
//    
//    dispnum[5]=num[t/100000];
//    dispnum[4]=num[(t/10000)%10];
//    dispnum[3]=num[(t/1000)%10];
//    dispnum[2]=num[(t/100)%10];
//    dispnum[1]=num[(t/10)%10];
//    dispnum[0]=num[t%10];
//    
//    for(i=0;i<6;i++) 
//    {
//        HK1621_WriteData4Bit(i*2,dispnum[i]);
//    }
//}