发新帖我要提问
12
返回列表
打印

GD32 驱动 液晶屏幕

[复制链接]
楼主: junpeng324
手机看帖
扫描二维码
随时随地手机跟帖
21
junpeng324|  楼主 | 2018-11-30 23:43 | 只看该作者 回帖奖励 |倒序浏览
// lcd 驱动
void lcd19264_gpio_conf(void)
{   
          GPIO_InitPara GPIO_InitStructure;

    RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOA,ENABLE);

    GPIO_InitStructure.GPIO_Pin   = GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12;
    GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;
    GPIO_InitStructure.GPIO_Mode  = GPIO_MODE_OUT_PP;

    GPIO_Init(GPIOA,&GPIO_InitStructure);

       
}

使用特权

评论回复
22
junpeng324|  楼主 | 2018-11-30 23:43 | 只看该作者
void LCD_Set_Pos(unsigned char x, unsigned char y)
{
          LCD19264_WriteCmd(0xb0+y);
          LCD19264_WriteCmd(((x&0xf0)>>4)|0x10);
          LCD19264_WriteCmd(x&0x0f);
}       

使用特权

评论回复
23
junpeng324|  楼主 | 2018-11-30 23:44 | 只看该作者
void LCD_P8x16Str(unsigned char x,unsigned char y,char ch[])
{
    char c=0,i=0,j=0;
    while (ch[j]!='\0')
     {
       c =ch[j]-32;
       if(x>184){x=0;y+=2;}
       LCD_Set_Pos(x,y);   
       for(i=0;i<8;i++)     
             LCD19264_WriteData(F8X16[c*16+i]);
       LCD_Set_Pos(x,y+1);   
             for(i=0;i<8;i++)     
             LCD19264_WriteData(F8X16[c*16+i+8]);  
             x+=8;
             j++;
     }
}

使用特权

评论回复
24
junpeng324|  楼主 | 2018-11-30 23:44 | 只看该作者
void LCD19264_WriteCmd(uchar cmd)
{
        uchar i;        
        CS_L;     
        RS_L;        
        for (i=0; i<8; i++)            
        {
                 SCL_L;
                if(cmd&0x80)
                        SDA_H;
                else
                        SDA_L;
                SCL_H;
                cmd =cmd<< 1;        
        }
            CS_H;
}

使用特权

评论回复
25
junpeng324|  楼主 | 2018-11-30 23:45 | 只看该作者
void LCD19264_WriteData(uchar dat)
{
        uchar i;     
        CS_L;
        RS_H;
        for (i=0; i<8; i++)          
        {
                SCL_L;
                if(dat&0x80)
                        SDA_H;
                else
                        SDA_L;
                SCL_H;
                dat =dat<< 1;
        }
        CS_H;
}

使用特权

评论回复
26
junpeng324|  楼主 | 2018-11-30 23:45 | 只看该作者
void lcd_address(uchar page,uchar column)
{
   //column=column+31;
         page=page-1;
         LCD19264_WriteCmd(0xb0+page);
         LCD19264_WriteCmd(((column>>4)&0x0f)+0x10);
         LCD19264_WriteCmd(column&0x0f);
}

使用特权

评论回复
27
junpeng324|  楼主 | 2018-11-30 23:48 | 只看该作者
void LCD19264_ClearScreen(void)
{
        uchar i, j;

        for(i=0; i<8; i++)
        {
                lcd_address(1+i,1);                                                  
                for(j=0; j<192; j++)
                {
                        LCD19264_WriteData(0x00);
                }
        }
}

使用特权

评论回复
28
junpeng324|  楼主 | 2018-11-30 23:51 | 只看该作者
void display_string_5x8(uint page,uint column,uchar reverse,uchar *text)
{
                uchar i=0,j,k,data1;
                while(text[i]>0x00)
                {
                       
                           if(column>186)
                                 {
             column =0;
                                           page+=1;
         }
                                if((text[i]>=0x20)&&(text[i]<=0x7e))
                                {
                                                j=text[i]-0x20;
                                                lcd_address(page,column);
                                                for(k=0;k<5;k++)
                                                {
                                                                if(reverse==1) data1=~ascii_table_5x8[j][k];
                                                                else data1=ascii_table_5x8[j][k];
                                                                LCD19264_WriteData(data1);
                                    }
                                                if(reverse==1)
                                                           LCD19264_WriteData(0xff);
                                                else
                                                           LCD19264_WriteData(0x00);
                                                i++;
                                                column+=6;
                                }
                                else
                                    i++;
                }
}

使用特权

评论回复
29
junpeng324|  楼主 | 2018-11-30 23:52 | 只看该作者
void OLED_Print(unsigned char x, unsigned char y, char ch[])
{
        char ch2[3];
        unsigned char ii=0;
        while(ch[ii] != '\0')
        {
                        ch2[0] = ch[ii];
                        ch2[1] = '\0';
                        LCD_P8x16Str(x,y,ch2);
                        x += 8;
                        ii+= 1;
        }
}

使用特权

评论回复
30
junpeng324|  楼主 | 2018-11-30 23:53 | 只看该作者
void OLED_Printf(unsigned char x,unsigned char y,const char *fmt,...)
{
        static unsigned char last_len[4]={0,0,0,0};       
        static char LCD_BUF[128]={0};
        unsigned char len;
        unsigned char i;
        __va_list ap;
       
        va_start(ap,fmt);
        vsprintf((char *)LCD_BUF,fmt,ap);
        va_end(ap);
       
        len=strlen((char *)LCD_BUF)+2*y;
        for(i=len;i<last_len[x];i++)
        {
                LCD_BUF[i-2*y]=' ';
        }
        LCD_BUF[i-2*y]=0;
        OLED_Print(x,y,LCD_BUF);
        last_len[x]=len;
}

使用特权

评论回复
31
junpeng324|  楼主 | 2018-11-30 23:54 | 只看该作者
void LCD19264_Init(void)
{
                        RST_L;
                        delay_ms(10);
                        RST_H;
                        delay_ms(10);
                        LCD19264_WriteCmd(0xe2);  
                        delay_ms(5);
                        LCD19264_WriteCmd(0x81);
                        LCD19264_WriteCmd(0xb2);       
                        LCD19264_WriteCmd(0xc2);
                        LCD19264_WriteCmd(0xaf);  
}

使用特权

评论回复
32
nickqu| | 2018-12-18 09:35 | 只看该作者
楼主辛苦!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则