乐此不疲 发表于 2024-10-16 20:28:24

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

正在学习使用32G12K128单片机,冲哥的视频课程也看了十几集了,熟悉了一些基础知识后开始想用STC32G12K128实验箱-V9.6试验箱实现一些想法,比如驱动TFT彩屏。经过几天的努力终于使我手里的这个TFT模块驱动成功,模块的型号是BW3532MIB、自带的驱动芯片为:ILI9481,模块内配置的驱动模式为MOSI、SCLK、CS三线9bit数据SPI总线,对于三线SPI总线的定义或有不同,但我的屏幕就是这三条线+RST的接口模式,而9bit数据是由数据的最高位的一位代表指令/数据+8位数据的传输方式,这种数据总线对于51单片机硬件SPI总线而言只能采用连续两次发送8位数据的模式驱动,效率很低,所以我仍然采用软件模拟SPI总线的方法来实现通讯,代码不是我写的而是搬运了一段很经典的代码,简洁明了易懂好用,代码如下:
//---------------------------------------------------
u8 bdata bitdata;      //定义可位寻址的数据bitdata
sbit bit7=bitdata^7;      //以下分别定义bitdata各位的名称
sbit bit6=bitdata^6;
sbit bit5=bitdata^5;
sbit bit4=bitdata^4;
sbit bit3=bitdata^3;
sbit bit2=bitdata^2;
sbit bit1=bitdata^1;
sbit bit0=bitdata^0;
//==============写指令============================
void LCD_WR_REG(u16 comd)      //代码中加入延时后可以使用系统时钟频率45MHz
{

    bitdata=comd;

      sda=0;//D/C=0写指令
      scl=0;NOP1();
                scl=1;      
      sda=bit7;
      scl=0;NOP1();
                scl=1;
      sda=bit6;
      scl=0;NOP1();
                scl=1;
      sda=bit5;
      scl=0;NOP1();
                scl=1;
      sda=bit4;
      scl=0;NOP1();
                scl=1;
      sda=bit3;
      scl=0;NOP1();
                scl=1;
      sda=bit2;
      scl=0;NOP1();
                scl=1;
      sda=bit1;
      scl=0;NOP1();
                scl=1;
      sda=bit0;
      scl=0;NOP1();
                scl=1;
               
}
//===============写8位数据===========================
voidLCD_WR_DATA(u16 dat)
{
    bitdata=dat;

      sda=1;//D/C=1写数据
      scl=0;NOP1();
                scl=1;      
      sda=bit7;
      scl=0;NOP1();
                scl=1;
      sda=bit6;
      scl=0;NOP1();
                scl=1;
      sda=bit5;
      scl=0;NOP1();
                scl=1;
      sda=bit4;
      scl=0;NOP1();
                scl=1;
      sda=bit3;
      scl=0;NOP1();
                scl=1;
      sda=bit2;
      scl=0;NOP1();
                scl=1;
      sda=bit1;
      scl=0;NOP1();
                scl=1;
      sda=bit0;
      scl=0;NOP1();
                scl=1;
}

由于多年使用STC单片机的习惯,新编代码还是从改编例程开始,于是复制了STC32试验箱例程:“37-2.4寸ILI9341驱动TFT显示屏实验程序”,开始修改相关代码使例程适应我的这个TFT屏,经过几天的努力终于调通了代码实现了这款TFT彩屏的显示,见下图:


代码分享如下:





邮箱 发表于 2024-10-16 23:19:58

{:4_250:}

manzunzu 发表于 2025-3-17 09:24:56

求大神分享一个stc8H驱动三线SPI_TFT屏的案例,本人小白玩不转三线SPI屏
页: [1]
查看完整版本: 32G12K128实验箱点亮3线SPI总线TFT彩屏成功