989|4

1532

帖子

1

TA的资源

五彩晶圆(初级)

楼主
 

【CW32L052测评】+彩色LCD屏驱动显示 [复制链接]

 

尽管开发板已配置了液晶显示屏,但在图像的表现力上还是离不开彩色LCD屏的使用。

这里所用的是一种0.96寸的彩色屏,并采用SPI接口工作。

显示屏与开发板的连接关系为:

CLK--- PB08

DIN--- PB09

RST--- PF04

DC--- PF05

CS --- PF06

BLK --- PF07

所用引脚输出高低电平的语句定义为:

#define OLED_SCLK_Set()   PB08_SETHIGH()

#define OLED_SCLK_Clr()   PB08_SETLOW()

#define OLED_SDIN_Set()   PB09_SETHIGH()

#define OLED_SDIN_Clr()   PB09_SETLOW()

#define OLED_RST_Set()    PF04_SETHIGH()

#define OLED_RST_Clr()    PF04_SETLOW()

#define OLED_DC_Set()     PF05_SETHIGH()

#define OLED_DC_Clr()     PF05_SETLOW()

#define OLED_CS_Set()     PF06_SETHIGH()

#define OLED_CS_Clr()     PF06_SETLOW()

#define OLED_BLK_Set()    PF07_SETHIGH()

#define OLED_BLK_Clr()    PF07_SETLOW()

 

所用引脚的配置函数为:

void test_Configuration(void)
{  
    GPIO_InitTypeDef GPIO_InitStructure;
	  GPIO_InitStructure.Pins = GPIO_PIN_8;
      GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
	  GPIO_InitStructure.IT = GPIO_IT_NONE;
      GPIO_Init(CW_GPIOB, &GPIO_InitStructure);
	  
	  GPIO_InitStructure.Pins = GPIO_PIN_9;
      GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
	  GPIO_InitStructure.IT = GPIO_IT_NONE;
      GPIO_Init(CW_GPIOB, &GPIO_InitStructure);
	  
	  GPIO_InitStructure.Pins = GPIO_PIN_4;
      GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
	  GPIO_InitStructure.IT = GPIO_IT_NONE;
      GPIO_Init(CW_GPIOF, &GPIO_InitStructure);
	  
	  GPIO_InitStructure.Pins = GPIO_PIN_5;
      GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
	  GPIO_InitStructure.IT = GPIO_IT_NONE;
      GPIO_Init(CW_GPIOF, &GPIO_InitStructure);
	  
	  GPIO_InitStructure.Pins = GPIO_PIN_6;
      GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
	  GPIO_InitStructure.IT = GPIO_IT_NONE;
      GPIO_Init(CW_GPIOF, &GPIO_InitStructure);
		
	  GPIO_InitStructure.Pins = GPIO_PIN_7;
      GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
	  GPIO_InitStructure.IT = GPIO_IT_NONE;
      GPIO_Init(CW_GPIOF, &GPIO_InitStructure);
	  
	  GPIO_InitStructure.Pins = GPIO_PIN_13;
      GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
	  GPIO_InitStructure.IT = GPIO_IT_NONE;
      GPIO_Init(CW_GPIOC, &GPIO_InitStructure);
}

 

以GPIO口模拟SPI发送字节数据的函数为:

void LCD_Writ_Bus(u8 dat)
{
    u8 i;
    OLED_CS_Clr();
    for(i=0;i<8;i++)
    {
        OLED_SCLK_Clr();
        if(dat&0x80)
           OLED_SDIN_Set();
        else
           OLED_SDIN_Clr();
        OLED_SCLK_Set();
        dat<<=1;
    }
    OLED_CS_Set();
}

实现色彩清屏的函数为:

void LCD_Clear(u16 Color)
{
    u16 i,j;
    LCD_Address_Set(0,0,LCD_W-1,LCD_H-1);
    for(i=0;i<LCD_W;i++)
    {
       for (j=0;j<LCD_H;j++)
       {
          LCD_WR_DATA(Color);
       }
    }
}

 

实现字符串显示的函数为:

void LCD_ShowString(u16 x,u16 y,const u8 *p,u16 color)
{
    while(*p!='\0')
    {
        if(x>LCD_W-16){x=0;y+=16;}
        if(y>LCD_H-16){y=x=0;LCD_Clear(RED);}
        LCD_ShowChar(x,y,*p,0,color);
        x+=8;
        p++;
    }
}

 

实现图标显示的函数为:

void LCD_ShowPictureb(u16 x1,u16 y1,u16 x2,u16 y2)
{
      int i;
      LCD_Address_Set(x1,y1,x2,y2);
      for(i=0;i<12800;i++)
      {
            LCD_WR_DATA8(gImage_RW[i*2]);
            LCD_WR_DATA8(gImage_RW[i*2+1]);
      }
}

 

进行测试的主程序为:

int32_t main(void)
{
    RCC_Configuration();
	InitTick( 24000000 );
	test_Configuration();
	SysTickDelay(200);
	Lcd_Init();
    LCD_Clear(BLACK);
    LCD_ShowPictureb(0,0,159,79);
    BACK_COLOR=RED;
    SysTickDelay(5000);
    LCD_Clear(RED);
    LCD_ShowString(20,10,"CW32L052 TEST",YELLOW);
    LCD_ShowString(20,30,"jinglixixi",YELLOW);
	while (1);
}

 

经程序的编译和下载,其测试结果如图1至图3所示,说明功能正确。

 

图1  LCD屏显示效果

 

 

图2  图片显示效果

 

 

图3  显示细节

最新回复

美女图应该放正嘛。   详情 回复 发表于 2023-8-23 19:44
点赞 关注
 
 

回复
举报

7047

帖子

11

TA的资源

版主

沙发
 
这板屏幕,大佬玩篇了开发板试用的世界!经典经典!
 
 
 

回复

6828

帖子

0

TA的资源

五彩晶圆(高级)

板凳
 

是因为用了0.96寸的彩色屏,并用SPI接口工作,图像就这么清晰么

 
 
 

回复

6534

帖子

9

TA的资源

版主

4
 

对于彩屏的刷新还是推荐采用硬件的SPI,要不太喜人  

个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 
 

回复

7671

帖子

2

TA的资源

五彩晶圆(高级)

5
 

美女图应该放正嘛。

个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表