找回密码
 立即注册
查看: 400|回复: 2

32G12K128实验箱点亮3线SPI总线TFT彩屏成功

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:441
  • 最近打卡:2025-05-02 09:05:39

45

主题

176

回帖

1735

积分

金牌会员

积分
1735
发表于 2024-10-16 20:28:24 | 显示全部楼层 |阅读模式
正在学习使用32G12K128单片机,冲哥的视频课程也看了十几集了,熟悉了一些基础知识后开始想用STC32G12K128实验箱-V9.6试验箱实现一些想法,比如驱动TFT彩屏。经过几天的努力终于使我手里的这个TFT模块驱动成功,模块的型号是BW3532MIB、自带的驱动芯片为:ILI9481,模块内配置的驱动模式为MOSI、SCLK、CS三线9bit数据SPI总线,对于三线SPI总线的定义或有不同,但我的屏幕就是这三条线+RST的接口模式,而9bit数据是由数据的最高位的一位代表指令/数据+8位数据的传输方式,这种数据总线对于51单片机硬件SPI总线而言只能采用连续两次发送8位数据的模式驱动,效率很低,所以我仍然采用软件模拟SPI总线的方法来实现通讯,代码不是我写的而是搬运了一段很经典的代码,简洁明了易懂好用,代码如下:
  1. //---------------------------------------------------
  2. u8 bdata bitdata;        //定义可位寻址的数据bitdata
  3. sbit bit7=bitdata^7;        //以下分别定义bitdata各位的名称
  4. sbit bit6=bitdata^6;
  5. sbit bit5=bitdata^5;
  6. sbit bit4=bitdata^4;
  7. sbit bit3=bitdata^3;
  8. sbit bit2=bitdata^2;
  9. sbit bit1=bitdata^1;
  10. sbit bit0=bitdata^0;
  11. //==============写指令============================
  12. void LCD_WR_REG(u16 comd)        //代码中加入延时后可以使用系统时钟频率45MHz
  13. {
  14.     bitdata=comd;
  15.         sda=0;//D/C=0写指令
  16.         scl=0;NOP1();
  17.                 scl=1;        
  18.         sda=bit7;
  19.         scl=0;NOP1();
  20.                 scl=1;
  21.         sda=bit6;
  22.         scl=0;NOP1();
  23.                 scl=1;
  24.         sda=bit5;
  25.         scl=0;NOP1();
  26.                 scl=1;
  27.         sda=bit4;
  28.         scl=0;NOP1();
  29.                 scl=1;
  30.         sda=bit3;
  31.         scl=0;NOP1();
  32.                 scl=1;
  33.         sda=bit2;
  34.         scl=0;NOP1();
  35.                 scl=1;
  36.         sda=bit1;
  37.         scl=0;NOP1();
  38.                 scl=1;
  39.         sda=bit0;
  40.         scl=0;NOP1();
  41.                 scl=1;
  42.                
  43. }
  44. //===============写8位数据===========================
  45. void  LCD_WR_DATA(u16 dat)
  46. {
  47.     bitdata=dat;
  48.         sda=1;//D/C=1写数据
  49.         scl=0;NOP1();
  50.                 scl=1;        
  51.         sda=bit7;
  52.         scl=0;NOP1();
  53.                 scl=1;
  54.         sda=bit6;
  55.         scl=0;NOP1();
  56.                 scl=1;
  57.         sda=bit5;
  58.         scl=0;NOP1();
  59.                 scl=1;
  60.         sda=bit4;
  61.         scl=0;NOP1();
  62.                 scl=1;
  63.         sda=bit3;
  64.         scl=0;NOP1();
  65.                 scl=1;
  66.         sda=bit2;
  67.         scl=0;NOP1();
  68.                 scl=1;
  69.         sda=bit1;
  70.         scl=0;NOP1();
  71.                 scl=1;
  72.         sda=bit0;
  73.         scl=0;NOP1();
  74.                 scl=1;
  75. }
复制代码
复制代码
由于多年使用STC单片机的习惯,新编代码还是从改编例程开始,于是复制了STC32试验箱例程:“37-2.4寸ILI9341驱动TFT显示屏实验程序”,开始修改相关代码使例程适应我的这个TFT屏,经过几天的努力终于调通了代码实现了这款TFT彩屏的显示,见下图:
微信图片_20241016193848_副本.jpg

代码分享如下:
TFT_ILI9481.zip (207.96 KB, 下载次数: 60)




1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:239
  • 最近打卡:2025-05-02 03:42:37

22

主题

283

回帖

905

积分

高级会员

积分
905
发表于 2024-10-16 23:19:58 来自手机 | 显示全部楼层
REMOVEUNUSED
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:396
  • 最近打卡:2025-05-01 16:33:56

6

主题

101

回帖

411

积分

中级会员

积分
411
发表于 2025-3-17 09:24:56 | 显示全部楼层
求大神分享一个stc8H驱动三线SPI_TFT屏的案例,本人小白玩不转三线SPI屏
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 15:46 , Processed in 0.189395 second(s), 66 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表