[PIC®/AVR®/dsPIC®产品] 【Curiosity Nano测评报告】PIC16F13145驱动TFT LCD屏幕

[复制链接]
 楼主| cc1989summer 发表于 2024-9-8 21:35 | 显示全部楼层 |阅读模式


书接上回:
【Curiosity Nano测评报告】PIC16F13145点灯之旅 - Microchip论坛 - PIC单片机论坛 - Microchip(微芯科技)MCU官方技术支持论坛 - 21ic电子技术开**坛

https://bbs.21ic.com/icview-3400974-1-1.html

点灯之旅之后,还不过瘾,咱们接着开启点屏之行,也就是PIC16F13145驱动TFT LCD屏幕。

这款屏幕采用的是ILI9320主控,SPI接口。

TFT模块与[size=1em]Curiosity Nano开发板的接线方式如图:


//CS   RC0
//RST  RC1
//RS   RC2
//SDA  RC3
//CLK  RA4



硬件准备完毕,接下来就是软件编写环节。
本例采用IO口模拟SPI协议,这样具备快速移植的优点,当然速度不及硬件SPI。

首先在MCC界面中分别设置RC0、RC1、RC2、RC3、RC4、RA4为输出(OUTPUT)



然后确认下每个IO的设置状态,以及Custom name(默认)
左侧的Device resources 添加DELAY函数,在TFT的驱动中需要用到毫秒延时函数。





接下来就是程序编写。
main.c比较简单,对TFT进行初始化,以及刷屏。

  1. #include "mcc_generated_files/system/system.h"
  2. #include"mcc_generated_files/timer/delay.h"
  3. #include "TFT.h"
  4. //*****************************************************************************
  5. //CS   RC0
  6. //RST  RC1
  7. //RS   RC2
  8. //SDA  RC3
  9. //CLK  RA4
  10. //*****************************************************************************

  11. #define white          0xFFFF   //LCD color
  12. #define black          0x0000
  13. #define blue           0x001F
  14. #define blue2          0x051F
  15. #define red            0xF800
  16. #define magenta        0xF81F
  17. #define green          0x07E0
  18. #define cyan           0x7FFF
  19. #define yellow         0xFFE0


  20. int main(void)
  21. {
  22.     SYSTEM_Initialize();

  23.     Lcd_Init();           //初始化LCD
  24.    DELAY_microseconds(1) ;  //延时一段时间

  25.     Lcd_Clear(black );

  26.    while(1)
  27.    {
  28.        Show_RGB(0,0,176,44,blue);
  29.        Show_RGB(0,44,176,88,green);
  30.        Show_RGB(0,88,176,132,magenta);
  31.        Show_RGB(0,132,176,176,red);
  32.        Show_RGB(0,176,176,220,yellow);

  33.        Show_RGB(0,0,176,44,yellow);
  34.        Show_RGB(0,44,176,88,red);
  35.        Show_RGB(0,88,176,132,blue2);
  36.        Show_RGB(0,132,176,176,green);
  37.        Show_RGB(0,176,176,220,blue);
  38.    }


  39. }



最主要的驱动在TFT.c中

关键部分展示如下:



  1. #include "TFT.h"
  2. #include "mcc_generated_files/system/system.h"
  3. #include"mcc_generated_files/timer/delay.h"

  4. //*****************************************************************************
  5. //CS   RC0
  6. //RST  RC1
  7. //RS   RC2
  8. //SDA  RC3
  9. //CLK  RA4
  10. //*****************************************************************************



  11. #define CS_1    IO_RC0_SetHigh();
  12. #define CS_0    IO_RC0_SetLow();

  13. #define RST_1    IO_RC1_SetHigh();
  14. #define RST_0    IO_RC1_SetLow();

  15. #define RS_1     IO_RC2_SetHigh();
  16. #define RS_0     IO_RC2_SetLow();

  17. #define SDA_1    IO_RC3_SetHigh();
  18. #define SDA_0    IO_RC3_SetLow();

  19. #define CLK_1    IO_RA4_SetHigh();
  20. #define CLK_0    IO_RA4_SetLow();


  21. //软件模拟SPI协议的关键函数




最后的显示结果如图。



源程序及展示视频上传:




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
我喜欢打游戏 发表于 2024-9-10 15:53 | 显示全部楼层
走SPI协议,通信速率会快点,不错
gaoyang9992006 发表于 2024-9-10 16:00 | 显示全部楼层
可以试试硬件SPI,我之前发个帖讲了这个MCC下使用硬件SPI方法。
 楼主| cc1989summer 发表于 2024-9-12 23:44 | 显示全部楼层
我喜欢打游戏 发表于 2024-9-10 15:53
走SPI协议,通信速率会快点,不错

是的,还在摸索硬件SPI协议中。模拟SPI就是好移植,跟MCU平台关系不大。
 楼主| cc1989summer 发表于 2024-9-12 23:45 | 显示全部楼层
gaoyang9992006 发表于 2024-9-10 16:00
可以试试硬件SPI,我之前发个帖讲了这个MCC下使用硬件SPI方法。

学习中……
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

27

帖子

0

粉丝

5

主题

27

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部