[PIC®/AVR®/dsPIC®产品] 【Curiosity Nano测评报告】+ PIC16F13145的硬件SPI驱动液晶屏与注意事项

[复制链接]
22249|15
 楼主| gaoyang9992006 发表于 2024-9-11 19:55 | 显示全部楼层 |阅读模式
本帖最后由 gaoyang9992006 于 2024-9-11 19:58 编辑

本次实验使用的是液晶屏型号为ST7735S,分辨率为160*80的IPS屏幕,色彩顺序为BGR。
1、创建工程,创建MCC工程,并添加ST7735库文件。
2、配置IO,添加SPI Host模块,添加delay支持。
为方便插拔屏幕模块我们选取这一组接口

配置如下图所示

实物图如下所示,方便直接将排针插在板子上。


3、接下来配置SPI



4、将IO的操作映射到ST7735库函数
  1. void ST7735_SPI_RST_SetLow(void)
  2. {
  3.     RST_SetLow();
  4. }
  5. void ST7735_SPI_RST_SetHigh(void)
  6. {
  7.     RST_SetHigh();
  8. }

  9. void ST7735_SPI_CS_SetLow(void)
  10. {
  11.     CS_SetLow();
  12. }
  13. void ST7735_SPI_CS_SetHigh(void)
  14. {
  15.     CS_SetHigh();
  16. }

  17. void ST7735_SPI_DC_SetLow(void)
  18. {
  19.     DC_SetLow();
  20. }
  21. void ST7735_SPI_DC_SetHigh(void)
  22. {
  23.     DC_SetHigh();
  24. }
5、重要的SPI数据发送函数实现
MCC生成的SPI库函数中有
  1.     while (!PIR5bits.SSP1IF)
  2.     {
  3.         // Wait for flag to get set
  4.     }
  5.     PIR5bits.SSP1IF = 0;
只需要将该函数映射到ST7735的字节发送函数即可。
  1. void ST7735_SPI_SendByte(uint8_t byte)
  2. {
  3.     SPI1_ByteWrite(byte);
  4. }
6、编写测试函数
  1. #include "mcc_generated_files/system/system.h"
  2. #include"ST7735S/st7735.h"
  3. /*
  4.     Main application
  5. */

  6. int main(void)
  7. {
  8.     SYSTEM_Initialize();
  9.     // If using interrupts in PIC18 High/Low Priority Mode you need to enable the Global High and Low Interrupts
  10.     // If using interrupts in PIC Mid-Range Compatibility Mode you need to enable the Global and Peripheral Interrupts
  11.     // Use the following macros to:

  12.     // Enable the Global Interrupts
  13.     //INTERRUPT_GlobalInterruptEnable();

  14.     // Disable the Global Interrupts
  15.     //INTERRUPT_GlobalInterruptDisable();

  16.     // Enable the Peripheral Interrupts
  17.     //INTERRUPT_PeripheralInterruptEnable();

  18.     // Disable the Peripheral Interrupts
  19.     //INTERRUPT_PeripheralInterruptDisable();
  20.     SPI1_Open(HOST_CONFIG);
  21.     ST7735_Init();
  22.         ST7735_FillScreen(ST7735_BLACK);
  23.         ST7735_DrawRectangle(0,24,160,80,ST7735_YELLOW);
  24.         ST7735_DrawRectangle(20,20+24,120,20,ST7735_BLUE);        
  25.         ST7735_DrawRectangle(40,30+24,80,20,ST7735_RED);        
  26.     while(1)
  27.     {
  28.         LED0_SetLow();
  29.         DELAY_milliseconds(500);
  30.         LED0_SetHigh();
  31.         DELAY_milliseconds(500);
  32.         ST7735_Init();
  33.         ST7735_FillScreen(ST7735_BLACK);
  34.         ST7735_DrawRectangle(0,0+24,10,5,ST7735_YELLOW);
  35.         ST7735_DrawRectangle(15,5+24,10,20,ST7735_BLUE);        
  36.         ST7735_DrawRectangle(30,25+24,10,10,ST7735_RED);
  37.     }   
  38. }


最后看运行效果

本帖子中包含更多资源

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

×
cc1989summer 发表于 2024-9-11 20:26 | 显示全部楼层
 楼主| gaoyang9992006 发表于 2024-9-11 21:46 | 显示全部楼层
如果要实现字符,不建议放字库进来,否则空间不够,无法编译通过。经过测试,精简后字库,然后启动最高优化级别,勉强可用。

本帖子中包含更多资源

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

×
heisexingqisi 发表于 2024-9-12 15:14 | 显示全部楼层
看起来效果不错。
呐咯密密 发表于 2024-9-12 16:43 | 显示全部楼层
ST7735库文件在工具里面可以直接导入吗
 楼主| gaoyang9992006 发表于 2024-9-12 17:04 | 显示全部楼层
呐咯密密 发表于 2024-9-12 16:43
ST7735库文件在工具里面可以直接导入吗

复制到这个工程文件夹里就行了。然后手动添加。不太建议这个芯片用这个功能驱动液晶屏,发现,这个芯片内存很小,存不下足够的字库。
稳稳の幸福 发表于 2024-11-29 20:25 | 显示全部楼层
说是有的引脚没法复用,那是不是这个引脚已经被占用了
xuanhuanzi 发表于 2024-12-26 14:06 | 显示全部楼层
这芯片存储空间不够啊,不知道能否外挂
wanduzi 发表于 2024-12-27 13:32 | 显示全部楼层
这个系列用起来挺容易的,图形化配置也比其他厂家的好用, 矩阵式映射
玛尼玛尼哄 发表于 2024-12-28 17:38 | 显示全部楼层
看来有点难搞啊。
gejigeji521 发表于 2024-12-29 11:13 来自手机 | 显示全部楼层
这么小的存储空间,不适合做带显示器的应用
jiekou001 发表于 2025-1-11 13:30 | 显示全部楼层
真不错,这么小的存储空间也可以玩TFT。
598330983 发表于 2025-1-12 18:00 | 显示全部楼层
看懂了,选择的引脚不能被占用。
huangcunxiake 发表于 2025-1-14 17:06 | 显示全部楼层
只要是MCC生成的代码,相同的外设都是一样的函数吧?
wanduzi 发表于 2025-1-20 10:45 | 显示全部楼层
图形化配置也比其他厂家的好用, 矩阵式映射
yiy 发表于 2025-1-26 14:59 | 显示全部楼层
这种IPS屏幕性价比很高,大部分的单片机都可以驱动。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2052

主题

16403

帖子

222

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