打印
[产品应用]

基于CW32L010的充电检测仪0.96寸LCD颜色显示问题

[复制链接]
232|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
项目场景:
硬件:CW32L010

           0.96寸LCD         IC:ST7735



基于CW32L010的充电检测仪0.96寸LCD颜色显示和花边问题。

问题描述
之前买了CW32L010的充电检测仪,烧录官方给的代码后,发现屏幕出现了花边,颜色也不对。



原因分析:
因为之前我移植LVGL的时候,也遇到过这个原因。

所以这次我有经验了,肯定是屏幕初始化的问题。

解决方案:
我直接去找淘宝客服要了屏幕底层驱动代码,然后一改,就好了。








/******************************************************************************
      函数说明:设置起始和结束地址
      入口数据:x1,x2 设置列的起始和结束地址
                y1,y2 设置行的起始和结束地址
      返回值:  无
******************************************************************************/
void LCD_Address_Set(u16 x1,u16 y1,u16 x2,u16 y2)
{
        if(USE_HORIZONTAL==0)
        {
                LCD_WR_REG(0x2a);//列地址设置
                LCD_WR_DATA(x1+26);
                LCD_WR_DATA(x2+26);
                LCD_WR_REG(0x2b);//行地址设置
                LCD_WR_DATA(y1+1);
                LCD_WR_DATA(y2+1);
                LCD_WR_REG(0x2c);//储存器写
        }
        else if(USE_HORIZONTAL==1)
        {
                LCD_WR_REG(0x2a);//列地址设置
                LCD_WR_DATA(x1+26);
                LCD_WR_DATA(x2+26);
                LCD_WR_REG(0x2b);//行地址设置
                LCD_WR_DATA(y1+1);
                LCD_WR_DATA(y2+1);
                LCD_WR_REG(0x2c);//储存器写
        }
        else if(USE_HORIZONTAL==2)
        {
                LCD_WR_REG(0x2a);//列地址设置
                LCD_WR_DATA(x1+1);
                LCD_WR_DATA(x2+1);
                LCD_WR_REG(0x2b);//行地址设置
                LCD_WR_DATA(y1+26);
                LCD_WR_DATA(y2+26);
                LCD_WR_REG(0x2c);//储存器写
        }
        else
        {
                LCD_WR_REG(0x2a);//列地址设置
                LCD_WR_DATA(x1+1);
                LCD_WR_DATA(x2+1);
                LCD_WR_REG(0x2b);//行地址设置
                LCD_WR_DATA(y1+26);
                LCD_WR_DATA(y2+26);
                LCD_WR_REG(0x2c);//储存器写
        }
}
void LCD_Init(void)
{
    long i;
        LCD_GPIO_Init();//初始化GPIO
       
        LCD_RES_Clr();//复位
         for(i=0;i<10000;i++);
        LCD_RES_Set();
         for(i=0;i<10000;i++);
       
        LCD_BLK_Set();//打开背光
         for(i=0;i<10000;i++);
       
        LCD_WR_REG(0x11);     //Sleep out
         for(i=0;i<10000;i++);
        LCD_WR_REG(0xB1);     //Normal mode
        LCD_WR_DATA8(0x05);   
        LCD_WR_DATA8(0x3C);   
        LCD_WR_DATA8(0x3C);   
        LCD_WR_REG(0xB2);     //Idle mode
        LCD_WR_DATA8(0x05);   
        LCD_WR_DATA8(0x3C);   
        LCD_WR_DATA8(0x3C);   
        LCD_WR_REG(0xB3);     //Partial mode
        LCD_WR_DATA8(0x05);   
        LCD_WR_DATA8(0x3C);   
        LCD_WR_DATA8(0x3C);   
        LCD_WR_DATA8(0x05);   
        LCD_WR_DATA8(0x3C);   
        LCD_WR_DATA8(0x3C);   
        LCD_WR_REG(0xB4);     //Dot inversion
        LCD_WR_DATA8(0x03);   
        LCD_WR_REG(0xC0);     //AVDD GVDD
        LCD_WR_DATA8(0xAB);   
        LCD_WR_DATA8(0x0B);   
        LCD_WR_DATA8(0x04);   
        LCD_WR_REG(0xC1);     //VGH VGL
        LCD_WR_DATA8(0xC5);   //C0
        LCD_WR_REG(0xC2);     //Normal Mode
        LCD_WR_DATA8(0x0D);   
        LCD_WR_DATA8(0x00);   
        LCD_WR_REG(0xC3);     //Idle
        LCD_WR_DATA8(0x8D);   
        LCD_WR_DATA8(0x6A);   
        LCD_WR_REG(0xC4);     //Partial+Full
        LCD_WR_DATA8(0x8D);   
        LCD_WR_DATA8(0xEE);   
        LCD_WR_REG(0xC5);     //VCOM
        LCD_WR_DATA8(0x0F);   
        LCD_WR_REG(0xE0);     //positive gamma
        LCD_WR_DATA8(0x07);   
        LCD_WR_DATA8(0x0E);   
        LCD_WR_DATA8(0x08);   
        LCD_WR_DATA8(0x07);   
        LCD_WR_DATA8(0x10);   
        LCD_WR_DATA8(0x07);   
        LCD_WR_DATA8(0x02);   
        LCD_WR_DATA8(0x07);   
        LCD_WR_DATA8(0x09);   
        LCD_WR_DATA8(0x0F);   
        LCD_WR_DATA8(0x25);   
        LCD_WR_DATA8(0x36);   
        LCD_WR_DATA8(0x00);   
        LCD_WR_DATA8(0x08);   
        LCD_WR_DATA8(0x04);   
        LCD_WR_DATA8(0x10);   
        LCD_WR_REG(0xE1);     //negative gamma
        LCD_WR_DATA8(0x0A);   
        LCD_WR_DATA8(0x0D);   
        LCD_WR_DATA8(0x08);   
        LCD_WR_DATA8(0x07);   
        LCD_WR_DATA8(0x0F);   
        LCD_WR_DATA8(0x07);   
        LCD_WR_DATA8(0x02);   
        LCD_WR_DATA8(0x07);   
        LCD_WR_DATA8(0x09);   
        LCD_WR_DATA8(0x0F);   
        LCD_WR_DATA8(0x25);   
        LCD_WR_DATA8(0x35);   
        LCD_WR_DATA8(0x00);   
        LCD_WR_DATA8(0x09);   
        LCD_WR_DATA8(0x04);   
        LCD_WR_DATA8(0x10);
                 
        LCD_WR_REG(0xFC);   
        LCD_WR_DATA8(0x80);  
               
        LCD_WR_REG(0x3A);     
        LCD_WR_DATA8(0x05);   
        LCD_WR_REG(0x36);
        if(USE_HORIZONTAL==0)LCD_WR_DATA8(0x08);
        else if(USE_HORIZONTAL==1)LCD_WR_DATA8(0xC8);
        else if(USE_HORIZONTAL==2)LCD_WR_DATA8(0x78);
        else LCD_WR_DATA8(0xA8);   
        LCD_WR_REG(0x21);     //Display inversion
        LCD_WR_REG(0x29);     //Display on
        LCD_WR_REG(0x2A);     //Set Column Address
        LCD_WR_DATA8(0x00);   
        LCD_WR_DATA8(0x1A);  //26  
        LCD_WR_DATA8(0x00);   
        LCD_WR_DATA8(0x69);   //105
        LCD_WR_REG(0x2B);     //Set Page Address
        LCD_WR_DATA8(0x00);   
        LCD_WR_DATA8(0x01);    //1
        LCD_WR_DATA8(0x00);   
        LCD_WR_DATA8(0xA0);    //160
        LCD_WR_REG(0x2C);
}
总结:
以后遇到屏幕颜色不对,一定要好好检查一下屏幕初始化代码,花边问题一般是屏幕范围的问题。

通过网盘分享的文件:充电检测仪
链接: https://pan.baidu.com/s/1m7hdNzv7y-6PlyXJ3Qagyw?pwd=ikun 提取码: ikun
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/qq_62631853/article/details/144409840

使用特权

评论回复
沙发
显示屏是如何驱动的?

使用特权

评论回复
板凳
OKAKAKO| | 2025-1-22 09:10 | 只看该作者
移植LVGL有哪些注意事项?

使用特权

评论回复
地板
星辰大海不退缩| | 2025-1-23 19:01 | 只看该作者
CW32L010的充电检测仪非常不错的案例

使用特权

评论回复
5
AdaMaYun| | 2025-1-25 23:00 | 只看该作者
基于CW32L010的充电检测仪

使用特权

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

本版积分规则

7

主题

30

帖子

0

粉丝