【蓝桥杯嵌入式】LCD

        显示屏幕在嵌入式系统中不仅是用户与系统交互的主要界面,还承担着信息显示、用户反馈、配置调试等多种功能,对于提高系统的可用性、易用性和用户体验起着至关重要的作用。嵌入式竞赛实训平台使用的屏幕是 240×320 TFT LCD,掌握这块LCD的使用方法是参赛所必需的。

LCD 是液晶显示器(Liquid Crystal Display)的缩写,是一种广泛用于各种电子设备中的显示技术。LCD 利用液晶材料的光学特性来控制光的传播,从而实现图像和文字的显示。

在原理图中,我们可以找到LCD的连接电路:通过并行接口与 STM32 相连。

一、官方例程

赛事官方在资源包中提供了LCD的使用例程,比赛时可以先利用这个例程来检查板子屏幕、下载等功能是否正常。

例程的位置:嵌入式资源数据包_STM32G4_2023\竞赛平台\6-液晶驱动参考程序\MDK5_LCD_HAL

特别注意,由于例程存储的位置路径带有中文,最好把它拉到无中文的存储路径上,如果有要对“HAL_06_LCD.ioc”做修改,要注意其用户源文件“lcd.c”存储在文件夹“Src”中,更新工程后要重新添加到工程中,并修改debug中的选项(与下载程序有关)。

成功下载例程到板子上后会看到屏幕的一系列动画,则说明整体无问题,我们可以开始移植例程到我们的工程上了。

二、LCD程序移植

        首先,仿照例程中.ioc文件,对LCD相关的引脚进行配置(部分与之前的LED的引脚重复,配置过的就不用再配置了)。

LCD相关引脚可见LCD电路:有数据并口PC0~PC15,复位信号口LCD_RST(一般接在MCU的NRST上,PG10),片选信号(CS)PB9,LCD寄存器选择(RS)PB8,读操作(RD)PA8,写操作(WR)PB5。

引脚配置都为:

接着,将例程中的lcd.c/lcd.h文件对和fonts.h(分别在“Src”,“Inc”文件夹中)复制添加到我们的工程文件夹中的用户源文件夹(自己新建的)“USER”中

然后需要将文件添加到头文件搜索路径和源文件搜索路径中去(详见专栏内LED的那一期),然后在Keil内将工程重建(Rebuild)下。

然后,将例程main.c中主函数main()中死循环while(1){}前的这一段复制到我们的主函数相同地方中。还需要把lcd.h这个头文件包含进来(要不然,你会看到一对红叉叉,例程是在main.h中包含了这个头文件,可以学习例程这样做(好处是在别的.c文件中可能用lcd的函数,但要放对地方))

    LCD_Init();

    LCD_Clear(Blue);
    LCD_SetBackColor(Blue);
    LCD_SetTextColor(White);


    LCD_DrawLine(120, 0, 320, Horizontal);
    LCD_DrawLine(0, 160, 240, Vertical);
    HAL_Delay(1000);
    LCD_Clear(Blue);

    LCD_DrawRect(70, 210, 100, 100);
    HAL_Delay(1000);
    LCD_Clear(Blue);

    LCD_DrawCircle(120, 160, 50);
    HAL_Delay(1000);

    LCD_Clear(Blue);
    LCD_DisplayStringLine(Line4, (unsigned char *)"    Hello,world.   ");
    HAL_Delay(1000);

    LCD_SetBackColor(White);
    LCD_DisplayStringLine(Line0, (unsigned char *)"                    ");
    LCD_SetBackColor(Black);
    LCD_DisplayStringLine(Line1, (unsigned char *)"                    ");
    LCD_SetBackColor(Grey);
    LCD_DisplayStringLine(Line2, (unsigned char *)"                    ");
    LCD_SetBackColor(Blue);
    LCD_DisplayStringLine(Line3, (unsigned char *)"                    ");
    LCD_SetBackColor(Blue2);
    LCD_DisplayStringLine(Line4, (unsigned char *)"                    ");
    LCD_SetBackColor(Red);
    LCD_DisplayStringLine(Line5, (unsigned char *)"                    ");
    LCD_SetBackColor(Magenta);
    LCD_DisplayStringLine(Line6, (unsigned char *)"                    ");
    LCD_SetBackColor(Green);
    LCD_DisplayStringLine(Line7, (unsigned char *)"                    ");
    LCD_SetBackColor(Cyan);
    LCD_DisplayStringLine(Line8, (unsigned char *)"                    ");
    LCD_SetBackColor(Yellow);
    LCD_DisplayStringLine(Line9, (unsigned char *)"                    ");

编译(最好是整个重建(Rebuild))、下载,看到屏幕一阵动画,这就说明移植成功了。

  • 18
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值