3015|8

1455

帖子

1

TA的资源

五彩晶圆(初级)

楼主
 

【AT-START-F403A测评】+2.2'彩色TFT屏的显示驱动 [复制链接]

  本帖最后由 jinglixixi 于 2020-10-14 20:42 编辑

为了对得起AT32F403A那丰富的存储资源,这次为它配上一个2.2'彩色TFT屏,该显示屏采用SPI接口,故将I2C接口和SPI接口联合起来驱动它。

图1 接口资源

 

相关引脚输出高低电平的引脚定义为:

#define LCD_CS_High()    GPIO_SetBits(GPIOB, GPIO_Pins_13)

#define LCD_CS_Low()     GPIO_ResetBits(GPIOB, GPIO_Pins_13) //CS

 

#define LCD_REST_High()  GPIO_SetBits(GPIOB, GPIO_Pins_11)

#define LCD_REST_Low()   GPIO_ResetBits(GPIOB, GPIO_Pins_11) //RES

 

#define LCD_DC_High()    GPIO_SetBits(GPIOB, GPIO_Pins_12)

#define LCD_DC_Low()     GPIO_ResetBits(GPIOB, GPIO_Pins_12) //DC

 

#define LCD_SDI_High()   GPIO_SetBits(GPIOB, GPIO_Pins_9)

#define LCD_SDI_Low()    GPIO_ResetBits(GPIOB, GPIO_Pins_9)//SDI

 

#define LCD_SCK_High()   GPIO_SetBits(GPIOB, GPIO_Pins_8)

#define LCD_SCK_Low()    GPIO_ResetBits(GPIOB, GPIO_Pins_8)//SCK

 

#define LCD_LED_High()   GPIO_SetBits(GPIOB, GPIO_Pins_14)

#define LCD_LED_Low()    GPIO_ResetBits(GPIOB, GPIO_Pins_14) //BLK

 

由于与前面介绍的彩色OLED屏所用的引脚位置一致,一个奇异的现象出现了,在等待程序下载的显示屏竟显示出了内容,见图2~图4所示。

OLED屏的程序竟能驱动TFT屏,而且图像完整,只不过显示的内容是镜像的,且颜色互补。

是不是很神奇!

图2 显示字符串

图3 显示汉字

图4 显示图标

图5 原OLED屏显示效果

 

在更新程序后,使用红色进行清屏后的效果如图6所示。

图6  红色清屏效果

 

该2.2寸TFT彩屏的初始化函数为:

void tft_Init(void)
{
    LCD_REST_Low();  //Lcd_Reset()
    Delay_ms(20);    //delay_ms(20);
    LCD_REST_High();
    Delay_ms(20);
    LCD_CS_Low(); 
    LCD_WR_REG(0xCB);  //Lcd_WriteIndex(0xCB); 
    LCD_WR_DATA8(0x39);//Lcd_WriteData(0x39);
    LCD_WR_DATA8(0x2C);
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0x34);
    LCD_WR_DATA8(0x02);
    LCD_WR_REG(0xCF); 
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0XC1);
    LCD_WR_DATA8(0X30);
    LCD_WR_REG(0xE8); 
    LCD_WR_DATA8(0x85);
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0x78);
    LCD_WR_REG(0xEA); 
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0x00);
    LCD_WR_REG(0xED); 
    LCD_WR_DATA8(0x64);
    LCD_WR_DATA8(0x03);
    LCD_WR_DATA8(0X12);
    LCD_WR_DATA8(0X81);
    LCD_WR_REG(0xF7); 
    LCD_WR_DATA8(0x20);
    LCD_WR_REG(0xC0);     //Power control
    LCD_WR_DATA8(0x23);   //VRH[5:0]
    LCD_WR_REG(0xC1);     //Power control
    LCD_WR_DATA8(0x10);   //SAP[2:0];BT[3:0]
    LCD_WR_REG(0xC5);     //VCM control
    LCD_WR_DATA8(0x3e);   //?????
    LCD_WR_DATA8(0x28);
    LCD_WR_REG(0xC7);     //VCM control2
    LCD_WR_DATA8(0x86);
    LCD_WR_REG(0x36);     // Memory Access Control
    LCD_WR_DATA8(0x48);
    LCD_WR_REG(0x3A);
    LCD_WR_DATA8(0x55);
    LCD_WR_REG(0xB1);
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0x18);
    LCD_WR_REG(0xB6);    // Display Function Control
    LCD_WR_DATA8(0x08);
    LCD_WR_DATA8(0x82);
    LCD_WR_DATA8(0x27);
    LCD_WR_REG(0xF2);    // 3Gamma Function Disable
    LCD_WR_DATA8(0x00);
    LCD_WR_REG(0x26);    //Gamma curve selected
    LCD_WR_DATA8(0x01);
    LCD_WR_REG(0xE0);    //Set Gamma
    LCD_WR_DATA8(0x0F);
    LCD_WR_DATA8(0x31);
    LCD_WR_DATA8(0x2B);
    LCD_WR_DATA8(0x0C);
    LCD_WR_DATA8(0x0E);
    LCD_WR_DATA8(0x08);
    LCD_WR_DATA8(0x4E);
    LCD_WR_DATA8(0xF1);
    LCD_WR_DATA8(0x37);
    LCD_WR_DATA8(0x07);
    LCD_WR_DATA8(0x10);
    LCD_WR_DATA8(0x03);
    LCD_WR_DATA8(0x0E);
    LCD_WR_DATA8(0x09);
    LCD_WR_DATA8(0x00);
    LCD_WR_REG(0XE1);    //Set Gamma
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0x0E);
    LCD_WR_DATA8(0x14);
    LCD_WR_DATA8(0x03);
    LCD_WR_DATA8(0x11);
    LCD_WR_DATA8(0x07);
    LCD_WR_DATA8(0x31);
    LCD_WR_DATA8(0xC1);
    LCD_WR_DATA8(0x48);
    LCD_WR_DATA8(0x08);
    LCD_WR_DATA8(0x0F);
    LCD_WR_DATA8(0x0C);
    LCD_WR_DATA8(0x31);
    LCD_WR_DATA8(0x36);
    LCD_WR_DATA8(0x0F);
    LCD_WR_REG(0x11);    //Exit Sleep
    Delay_ms(120);
    LCD_WR_REG(0x29);    //Display on
    LCD_WR_REG(0x2c);
}

它的色彩清屏函数为:

void LCD_Clear(unsigned int Color)
{
     char VH,VL;// LCD_W= 240   LCD_H =320
     unsigned int i,j;
     VH=Color>>8;
     VL=Color;
     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_DATA8(VH);
             LCD_WR_DATA8(VL);  
        }
    }
}

在制备了图标文件后,所制作的界面效果如图7所示。

图7 图标化操作界面

 

在利用板上按键的情况下,可控制功能的选择处理。按键的原理图见图8所示,

读取引脚的语句为:

GPIO_ReadInputDataBit(GPIOA, GPIO_Pins_0);

GPIO_ReadInputDataBit(GPIOC, GPIO_Pins_13);

图8 按键原理图

最新回复

那一堆寄存器配置很恶心。   详情 回复 发表于 2020-11-18 18:09

赞赏

1

查看全部赞赏

点赞(1) 关注(1)
 
 

回复
举报

2056

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 

做得不错!

 
 
 

回复

1942

帖子

3

TA的资源

版主

板凳
 

用心了老铁,整体过程分享出来,非常好,支持继续分享测评!!!

点评

感谢支持,  详情 回复 发表于 2020-10-15 10:59
 
 
 

回复

1455

帖子

1

TA的资源

五彩晶圆(初级)

4
 
w494143467 发表于 2020-10-15 09:52 用心了老铁,整体过程分享出来,非常好,支持继续分享测评!!!

感谢支持,

 
 
 

回复

1万

帖子

2854

TA的资源

管理员

5
 

雅特力AT-START-F403A测评汇总

汇总贴:https://bbs.eeworld.com.cn/thread-1143018-1-1.html

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
个人签名

玩板看这里:

https://bbs.eeworld.com.cn/elecplay.html

EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!

 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

6
 
非常不错!
 
 
 

回复

1455

帖子

1

TA的资源

五彩晶圆(初级)

7
 
 
 

回复

7452

帖子

2

TA的资源

五彩晶圆(高级)

8
 

那一堆寄存器配置很恶心。

点评

你说的是初始化?你不用自然没意义!  详情 回复 发表于 2020-11-18 19:57
个人签名

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

 
 
 

回复

1455

帖子

1

TA的资源

五彩晶圆(初级)

9
 
freebsder 发表于 2020-11-18 18:09 那一堆寄存器配置很恶心。

你说的是初始化?你不用自然没意义!

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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