- 打卡等级:以坛为家III
 
				- 打卡总天数:661
 
				
				
				- 最近打卡:2025-11-04 07:56:51
 
				  
荣誉版主 
 
	- 积分
 - 4485
 
 
 
 
 | 
 
屠龙刀-32G12K128 驱动 SPI-TFT彩屏/240x240 
此前用屠龙刀-32G12K128实验板过驱动1.8寸128x160彩屏,  
而今实验驱动 TFT(240x240) 1.3寸 彩屏,  两者有所不同, 
前者屏幕尺寸稍大、I/O接口为八针、分辨率低,  
驱动芯片为ST7735,在屠龙刀三实验板上要外接背光控制线 ! 
后者屏幕尺寸小,I/O接口为七针,分辨率高, 驱动芯片为ST7789, 
在屠龙刀三实验板上直接插入,无须另外改接线。 
彩屏具有240x240的分辨率,  
对于使用STCAI单片机做项目而言,更具有实用意义。 
若作为屠龙刀三的标配,其显示效果和展示信息量, 
应该远胜于使用单色OLED12864显示屏了。 
且看实验演示...... 
 
 
主程序如下: 
//=========================================================== 
// TFT 1.3" 彩色显示屏 240*240 实验程序 
// 驱动: ST7789  
// 基于: 32G12K128芯片实验板编程 屠龙刀三核心实验板  
// 整理:编程: 浦晓明(浦江一水) For 国芯论坛 2024-06-28 PXM 
//=========================================================== 
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include "STC32G.h" 
#include "LCD_7789.H" 
#include "PIC.H" 
 
 
//unsigned char k; 
//char S[20]; 
 
 
void Delay1ms(void)        //@22.1184MHz, 还有很强的拓展空间,如 33.1776MHz 
{ unsigned char data i, j; 
  _nop_();_nop_(); 
  i = 22;        j = 128; 
  do 
  { while (--j); 
  } while (--i); 
} 
void Delayms(unsigned int count) 
{ unsigned int i; 
  for(i=0;i<count;i++)        
  Delay1ms();              
} 
//主程序入口 
void main(void) 
{ unsigned char i; 
  unsigned int wait=0; 
  //IO端口初始化 
  WTST  = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快 
  //EAXFR = 1; //扩展寄存器(XFR)访问使能 
  CKCON = 0; //提高访问XRAM速度 
  //IO端口初始化//全部为双向口 
  P0M1 = 0x00;   P0M0 = 0x04;   //设置为准双向口 
  P1M1 = 0x00;   P1M0 = 0x00;   //设置为准双向口 
  P2M1 = 0x00;   P2M0 = 0x00;   //设置为准双向口 
  P3M1 = 0x00;   P3M0 = 0x00;   //设置为准双向口 
  P4M1 = 0x00;   P4M0 = 0x00;   //设置为准双向口 
  P5M1 = 0x00;   P5M0 = 0x00;   //设置为准双向口 
  LCD_Init(); 
  while(1) 
  { //循环演示 
    LCD_CLS(1);                        //蓝色清屏 
    for(i=0;i<16;i++)LCD_Box(i*15,180,15,50,7,7,i);  //显示彩色条(色号0..15) 
    LCD_Point(5,5,15);              //画点测试  
    LCD_Line(5,5,175,175,12);   //两点一线 
    LCD_Box0(25,25,40,40,15);              //画空心方框 
    LCD_Box0(30,30,30,30,15);              //画空心方框 
    LCD_Box0(35,35,20,20,15);              //画空心方框 
    LCD_Box0(40,40,10,10,15);              //画空心方框 
    LCD_Box(20,95,200,28,15,0,4);                 //画矩形方框(可指定边框色和填充色) 
    LCD_A08(120,15,"A08_012345",15,1,10);  //显示6*8字符串 
    LCD_A12(120,30,"A12_012345",15,1,10);  //显示8*12字符串 
    LCD_A16(120,45,"A16_012345",15,1,10);  //显示8*16字符串 
    LCD_A24(120,64,"A24_0123",15,1,8);       //显示12*24字符串 
    LCD_H16(65,102,"单片机STC32G",14,4);   //16点阵中西文混合显示字符串  
    LCD_H24(44,135,"单片机STC32G",11,0);   //24点阵中西文混合显示字符串 
    Delayms(2000);   //延时2秒 
    LCD_CLS(0);       //黑色清屏 
    LCD_Box(0,0,239,24,1,1,1);                //等效于局部清屏 
    LCD_A16( 8,3,"LCD_ST7789_240*240_DEMO.",10,1,24);  //显示标题字符串 
    for(i=0;i<16;i++)LCD_Box(i*15,219,15,20,7,7,i);            //显示彩色条(色号0..15) 
    LCD_BMP( 38, 45,64,64,P_SET);          //彩色图标显示 
    LCD_BMP(140, 40,64,64,P_ZER); 
    LCD_BMP( 38,135,64,64,P_XSW); 
    LCD_BMP(140,135,64,64,P_SYS); 
    Delayms(2000);   //延时2秒 
    LCD_CLS(0);       //黑色清屏 
    for(i=0;i<16;i++)LCD_Line(0,i*15,i*15,239,10);  //画两点一线 
 
    for(i=0;i<16;i++)LCD_Line(i*15,0,239,i*15,10);  //绿色斜线 
    LCD_LineH(0,239,239,10);     //画水平线 
    LCD_LineV(239,0,239,10);     //画垂直线 
    Delayms(2000);   //延时2秒 
    for(i=0;i<60;i++)LCD_Box0(120-2*i,120-2*i,4*i,4*i,10);   //绿色方框 
    for(i=0;i<60;i++)LCD_Box0(120-2*i,120-2*i,4*i,4*i,9);     //蓝色方框 
    for(i=0;i<60;i++)LCD_Box0(120-2*i,120-2*i,4*i,4*i,14);   //黄色方框 
    for(i=0;i<60;i++)LCD_Box0(120-2*i,120-2*i,4*i,4*i,12);   //红色方框 
    LCD_H24(86,110,"STC32G", 0,80);    //24点阵显示西文字符串(背景透明)黑色阴影。 
    LCD_H24(84,108,"STC32G",15,80);   //24点阵显示西文字符串(背景透明)黄色字体。 
    Delayms(2000);   //延时2秒 
  } 
} 
 
 
 
相关屏幕驱动 LCD_7789.C/H 文件在工程文件包中,供有兴趣的爱好者参考: 
 
05-TestLCD7789(STC32G屠龙刀三).rar
(124.3 KB, 下载次数: 443)
 
Line函数修正版: 
 
05-TestLCD7789(240x240)(STC32G屠龙刀三)修正版.rar
(124.68 KB, 下载次数: 163)
 
 
 
 
 
 
 
 |   
 
1
喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
 
- 
 
+2 
楼主威武~ 
 
 
 
 
 
 |