2834|3

1532

帖子

1

TA的资源

五彩晶圆(初级)

楼主
 

【GD32307E-START】+ TFT屏驱动及图标化界面绘制 [复制链接]

 

凭借着GD32307E-START开发板所配置的强大内存,完全可以支撑起图标化的桌面式应用系统设计。

这里就介绍一下GD32307E对2.2' TFT显示屏的显示驱动,该显示屏与MCU的连接关系如下:

SCK---PC0

SDI--- PC1

D/C---PC3

RST--- PC2

CS ---PC4

LED--- PC5

由于该显示屏是一款SPI接口的串口屏,为便于驱动和移植,这里是采用I/O口模拟的方式来实现。

为使相应的引脚输出高低电平,特定义如下的语句:

#define LCD_CS_High()   GPIO_BOP(GPIOC) = GPIO_PIN_4

#define LCD_CS_Low()    GPIO_BC(GPIOC) = GPIO_PIN_4   //CS

#define LCD_REST_High() GPIO_BOP(GPIOC) = GPIO_PIN_2

#define LCD_REST_Low()  GPIO_BC(GPIOC) = GPIO_PIN_2   //RES

#define LCD_DC_High()   GPIO_BOP(GPIOC) = GPIO_PIN_3

#define LCD_DC_Low()    GPIO_BC(GPIOC) = GPIO_PIN_3   //DC

#define LCD_SDI_High()  GPIO_BOP(GPIOC) = GPIO_PIN_1

#define LCD_SDI_Low()   GPIO_BC(GPIOC) = GPIO_PIN_1   //SDI

#define LCD_SCK_High()  GPIO_BOP(GPIOC) = GPIO_PIN_0

#define LCD_SCK_Low()   GPIO_BC(GPIOC) = GPIO_PIN_0   //SCK

#define LCD_LED_High()  GPIO_BOP(GPIOC) = GPIO_PIN_5

#define LCD_LED_Low()   GPIO_BC(GPIOC) = GPIO_PIN_5   //BLK

而对配置相关引脚为输出功能的函数为:

void  SPI_CONFIG(void)
{
      rcu_periph_clock_enable(RCU_GPIOC);
      gpio_init(GPIOC, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5);
      GPIO_BOP(GPIOC) = GPIO_PIN_0;
      GPIO_BOP(GPIOC) = GPIO_PIN_1;
      GPIO_BOP(GPIOC) = GPIO_PIN_2;
      GPIO_BOP(GPIOC) = GPIO_PIN_3;
      GPIO_BOP(GPIOC) = GPIO_PIN_4;
      LCD_LED_High();
}

由下图可见,在界面中存在多个功能图标,这是由多个存放图标的数组来存储的,并通过对show_tbh()的调用来绘制。

图标化功能界面

图标绘制函数show_tbh()的内容为:

void show_tbh(unsigned int x,unsigned int y,unsigned int n) //200*200
{
         unsigned int i,j,k;
         unsigned int da;
         k=0;
         for(i=0;i<50;i++)
         {       
             for(j=0;j<50;j++)
             {
                      if(n==0) da=gImage_tb[k*2];
                      if(n==1) da=gImage_pwm[k*2];
                      if(n==2) da=gImage_rtc[k*2];
                      if(n==3) da=gImage_adc[k*2];
                      if(n==4) da=gImage_tft[k*2];
                      if(n==5) da=gImage_sz[k*2];
                      if(n==6) da=gImage_kz[k*2];
                      if(n==7) da=gImage_dht[k*2];
                      da<<=8;
                      if(n==0) da|=gImage_tb[k*2+1];
                      if(n==1) da|=gImage_pwm[k*2+1];
                      if(n==2) da|=gImage_rtc[k*2+1];
                      if(n==3) da|=gImage_adc[k*2+1];
                      if(n==4) da|=gImage_tft[k*2+1];
                      if(n==5) da|=gImage_sz[k*2+1];
                      if(n==6) da|=gImage_kz[k*2+1];
                      if(n==7) da|=gImage_dht[k*2+1];
                      POINT_COLOR=da;
                      LCD_DrawPoint(x+i,y+j);      
                      k++; 
             }
       }
}

而实现界面绘制的主程序为:

int main(void)
{ 
        gd_eval_key_init(KEY_WAKEUP, KEY_MODE_EXTI);
        gd_eval_led_init(LED1);
        /* configure systick */
        systick_config();
        SPI_CONFIG();
        delay_1ms(500);
        tft_Init();
        loop: LCD_Clear(WHITE);
        show_tbh(20,240,0);
        showhanzi16h(80,280,3,0);
        showhanzi16h(80,264,4,0);
        show_tbh(20,180,1);
        show_tbh(20,120,2);
        show_tbh(20,60,3);
        showhanzi16h(80,100,5,1);
        showhanzi16h(80,84,6,1);
        show_tbh(120,60,4);
        show_tbh(120,120,5);
        show_tbh(120,180,6);
        show_tbh(120,240,7);
        showhanzi16h(180,280,13,1);
        showhanzi16h(180,264,14,1);
        showhanzi16h(180,220,11,1);
        showhanzi16h(180,204,12,1);
        showhanzi16h(180,160,9,1);
        showhanzi16h(180,144,10,1);
        showhanzi16h(180,100,7,1);
        showhanzi16h(180,84,8,1);
        BACK_COLOR=WHITE;
        POINT_COLOR=RED;
        LCD_ShowCharh(80,160,'R',1);
        LCD_ShowCharh(80,152,'T',1);
        LCD_ShowCharh(80,144,'C',1);
        LCD_ShowCharh(80,220,'P',1);
        LCD_ShowCharh(80,212,'W',1);
        LCD_ShowCharh(80,204,'M',1);
        delay_1ms(2000);
        while(1);
}

在结合板上按键的情况下,利用该界面可快速地进行功能的切换与调用。

最新回复

谢谢分享   详情 回复 发表于 2020-12-6 22:33

赞赏

1

查看全部赞赏

点赞(1) 关注
 
 

回复
举报

1942

帖子

2

TA的资源

版主

沙发
 

感谢分享,SPI通信速率应该还不错。

 
 
 

回复

7671

帖子

2

TA的资源

五彩晶圆(高级)

板凳
 

谢谢分享

个人签名

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

 
 
 

回复

1532

帖子

1

TA的资源

五彩晶圆(初级)

4
 

感谢支持!!!

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表