- 打卡等级:以坛为家III
 
				- 打卡总天数:661
 
				
				
				- 最近打卡:2025-11-04 07:56:51
 
				  
荣誉版主 
 
	- 积分
 - 4485
 
 
 
 
 | 
 
32G12K128实验箱V9.62_实验之 
TFT-320*240,彩屏 驱动, ILI9341 
===后续 Ai8051U速度更快,效果更好 
 
 
 
 
 
 
 
首先在此感谢“江苏国芯科技有限公司”的馈赠,使我获得如此良好的实验学习条件,减少了用洞洞板制作实验电路的辛劳。 
STC32G12K128_V6.92_实验箱有一个彩屏接口,不做做有关彩屏的实验,是愧对这么好的宝贝的。 
淘购了一块屏,TFT(320*240),驱动是TFT9341, 插上即可使用。 据说原是用于Arduino开发板的。 
尽管官方提供了有关例程,照搬也是能用的,但还是自己动手动脑,再完整的实验做一遍的好,成为自己习惯的格式用法,为日后实战项目奠定一点基础。 
 
 
本人曾在【学习打卡区|感悟】发过《新人新手学用STC32G12K128,实践与思考...》一帖中,发过有关彩屏驱动显示的内容。神农鼎管理员,曾建议转到TFT版块去,给大家抛砖引玉,这我一直是铭记于心的。可是发现“国芯论坛”好像没有TFT版块。今日借“STC芯征程”和“大明狐”的LCD12864版块宝地,斗胆发上来抛砖引玉了,望版主海涵。 
 
实验的内容直接可看主程序的注释说明。工程文件也和盘托出,有兴趣的或也有实验箱的坛友,可直接下载使用。 
 
主程序所在的Main.C文件,  贴一下,看注释, 相当于一个实验说明... 
 
 
//=========================================================================================== 
// 文件名称: Main.C 
// 功能说明: 测试液晶屏模块驱动函数 2.4寸彩色显示屏 240*320 8位并行口模式 
// 基于电路: STC32G12K128 实验箱V9.62 (感谢"江苏国芯科技有限公司"馈赠) 
// 整理改编: 浦晓明(浦江一水) 2024-05-30 
//=== 硬件连接 ================================================================================= 
//===================================电源接线================================================// 
//VDD接DC 3.3V电源 
//GND接地 
//===================================液晶屏数据线接线==========================================// 
//本模块数据总线类型为8位并口 
//液晶屏模块               STC32G 
// LCD_D0~D7     接       P60~P67        //液晶屏8位数据线 
//===================================液晶屏控制线接线==========================================// 
//液晶屏模块               STC32G 
// LCD_RS        接        P45           //数据/命令选择控制信号 
// LCD_RD        接        P44           //读控制信号 
// LCD_RST      接        P43           //复位信号 
// LCD_WR       接        P42           //写控制信号 
// LCD_CS        接        P34           //片选控制信号 
//=======================================================================================// 
// 本实验测试使用的2.4寸320*240的并口彩屏, 原用于Arduino开发板  
// 实验内容: 
// 1, 指定颜色清屏; 
// 2. 建立6*8点阵ASCCI码字库,显示西文字符串; 
// 3. 建立8*16点阵ASCCI码字库,显示西文字符串; 
// 4. 显示12*24点阵西文字符串; 
// 5. 建立16*16点阵小汉字点模库; 
// 6. 建立24*24点阵小汉字点模库; 
// 7. 16点阵高中西文混合字符串显示; 
// 8. 24点阵高中西文混合字符串显示; 
// 9. 实现画水平线、垂直线、任意两点直线显示; 
// 10.实现多种形式的矩形方块显示;  
// 11.实现BMP彩色图标显示; 
// 12.实验下拉菜单制作和凹凸按钮显示; 
// 13.实验示波器界面底图及曲线绘制。 
//**************************************************************************************************/ 
#include "STC32G.H" 
#include "LCD9341.H" 
#include "PIC.H" 
 
//全局变量说明   
unsigned int y0,y1; 
unsigned int n; 
const unsigned char SIN[50]={ 
120,126,136,145,153,162,169,175,181,186,188,192,193,193,192,188,186,181,175,169,162,153,145,136,126,  //上半波 
120,107, 97, 88, 80, 72, 65, 58, 48, 43, 42, 41, 40, 40, 41, 42, 43, 48, 58, 65, 72, 80, 88, 97,107,  //下半波 
}; 
//函数说明(排列在main()之后的函数须先说明一下) 
void MainMenu(void);  //主菜单函数 
 
//主函数 
void main(void) 
{ u16 i; 
  SYS_Init();   //系统初始化 
  //液晶屏初始化 
  //P2=0x7F;   //P2.7外接红外发射管,当P27=0时,红外发射管常导通.导致显示屏亮度下降变暗...     
  LCD_Init(); 
//LCD_SetDIR(0);       //原显示方向(纵向屏) 
  LCD_SetDIR(3);       //调整显示方向(横屏) 
  LCD_CLS(0);           //清屏(黑色) 
  while(1) 
  { LCD_CLS(1);        //清屏(蓝色) 
    for(i=0;i<32;i++){ LCD_Box(i*10,215,10,20,15,15,(u8)i); } //32色号定义 
    for(i=0;i<20;i++)LCD_Line(5,5,315,5+i*10,13);      //任意两点画一线 
    for(i=0;i<20;i++)LCD_Line(315,5,5,5+i*10,13);      //任意两点画一线 
    delay_ms(1000);                      //延时1s 
    for(i=0;i<11;i++) 
    { LCD_LineH(5,5+i*20,310,10); //画水平线 
      LCD_LineV(5+i*31,5,200,10); //画垂直线 
    } 
    delay_ms(2000); 
    MainMenu();                   //图标彩色显示+中西文混合字符串+下拉主菜单演示  
    delay_ms(3000);             //延时3s   
    //画示波器背景底图... 
    LCD_CLS(0);                        //清屏(黑色) 
    LCD_BoxF(10,0,50,18,3,3);   //画圆角填色矩形 
    LCD_BoxF(65,0,40,18,3,4); 
    LCD_BoxF(110,0,68,18,3,7); 
    LCD_A16(20,2,'A',15,3);       //显示单字符    
    LCD_A16(28,2,'U',15,3);       //青底白字  
    LCD_A16(36,2,'T',15,3); 
    LCD_A16(44,2,'O',15,3); 
    LCD_A16(72,2,'A',14,4);       //显示单字符  
    LCD_A16(80,2,'B',14,4);       //红底黄字  
    LCD_A16(88,2,'C',14,4); 
    LCD_Str16(120,2,"STC32G",0,7);                 //显示16点阵字符串 
    LCD_Str16(195,0,"8*16_ASCII_ABC",10,0); //显示16点阵字符串 
    LCD_Str8(10,226,"6*8_ASCII_ABCD",11,0); //显示8点阵字符串 
    for(i=0;i<7;i++)LCD_LineH0(10,45+25*i,301,5,10,0);  //画7条水平虚线 
    for(i=0;i<11;i++)LCD_LineV0(35+25*i,20,200,5,10,0); //画11条垂直虚线   
    LCD_LineH0(10,45+25*3-1,301,5,10,0);                       //画水平虚线 
    LCD_LineH0(10,45+25*3+1,301,5,10,0); 
    LCD_LineV0(35+25*5-1,20,200,5,10,0);                        //画垂直虚线  
    LCD_LineV0(35+25*5+1,20,200,5,10,0); 
    LCD_Box0(9,20,301,200,0,15);     //空心方框  
    LCD_A08(  2,116,126,10,1);         //小箭头 
    LCD_A08(312,116,127,10,1);       //小箭头 
    delay_ms(1000);                         //延时1s 
    n=0;y0=SIN[n++]; 
    for(i=0;i<150;i++) 
    {  //画正弦波形线 
      y1=SIN[n]; 
      LCD_Line(10+i*2,y0,10+i*2+3,y1,14);  
      y0=y1; 
      n=n<49?n+1:0; 
    } 
    delay_ms(3000);              //延时3s 
    //循环进行各项测试         
  }    
} 
//下拉主菜单演示函数... 
void MainMenu(void) 
{ unsigned int m=0,n=0; 
  //菜单项目定义... 
  char * MU[4]={ "1.参数\xfd设置","2.测试分析","3.数\xfd据管理","4.系统维护", }; 
 
  LCD_CLS(0);   //清屏 
  LCD_Box(0,0,319,20,2,2,0); 
  LCD_Str16(14,2,"* MAIN MENU *",31,0);            //色号31 
  LCD_Str16(160,2,"单片机 STC32G12K128",10,0); //16点阵混合显示中西文字符串 
  LCD_Str24(160,30,"单片机STC32G",12,0);           //24点阵混合显示中西文字符串 
  LCD_BMP(  8,160,64,64,P_SET);    //显示彩色图标... 
  LCD_BMP( 88,160,64,64,P_ZER);   //显示彩色图标... 
  LCD_BMP(168,160,64,64,P_XSW);  //显示彩色图标... 
  LCD_BMP(248,160,64,64,P_SYS);  //显示彩色图标... 
  LCD_HZ24(160,60,"单",11,0);       //显示24点阵单个汉字 
  LCD_HZ24(160,85,"片",11,0);  
  LCD_HZ24(160,110,"机",11,0); 
  LCD_Box(200, 64,110,80,3,3,3); 
  LCD_Box(210, 72, 90,28,15,0,7); 
  LCD_Box(210,106, 90,28,0,7,4); 
  LCD_Str16(232, 78,"STC32G", 0,7);  //显示字符串 
  LCD_Str16(232,112,"STC32G",14,4); //显示字符串 
  //初建菜单项... 
  for(m=0;m<4;m++) 
  { switch(m) 
    { case 0: LCD_Box0(9,24+24*m,101,25,1,15); LCD_BoxF(10,25+m*24,99,22,1,1); break; 
      case 1: 
      case 2: LCD_Box0(9,24+24*m,101,25,0,15); LCD_BoxF(10,25+m*24,99,22,0,1); break;   
      case 3: LCD_Box0(9,24+24*m,101,25,2,15); LCD_BoxF(10,25+m*24,99,22,2,1); break;   
     } 
     if(m==n){ LCD_Str16(20,29+24*m,MU[m],14,4); } 
     else    { LCD_Str16(20,29+24*m,MU[m],15,1); } 
  } 
  //演示下拉菜单项的焦点移动...   
  for(n=0;n<4;n++) 
  { 
    switch(n) 
    { case 0: LCD_BoxF(10,25+n*24,99,22,1,4); LCD_Str16(20,29+24*n,MU[n],14,4); break; 
      case 1: 
      case 2: LCD_BoxF(10,25+n*24,99,22,0,4); LCD_Str16(20,29+24*n,MU[n],14,4); break;   
      case 3: LCD_BoxF(10,25+n*24,99,22,2,4); LCD_Str16(20,29+24*n,MU[n],14,4); break;   
    } 
    delay_ms(500); 
    switch(n) 
    { case 0: LCD_BoxF(10,25+n*24,99,22,1,1); LCD_Str16(20,29+24*n,MU[n],15,1); break; 
      case 1: 
      case 2: LCD_BoxF(10,25+n*24,99,22,0,1); LCD_Str16(20,29+24*n,MU[n],15,1); break;   
    } 
    delay_ms(10); 
  } 
} 
 
 
//==== Main.C END ===================================================================// 
 
 
工程文件: 包含彩屏驱动文件. 
 
基于STC32G12K128实验箱V6.92_实验之TFT彩屏驱动.rar
(132.83 KB, 下载次数: 313)
 
 
 
 
 
 |   
 
2
喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
 
- 
 
+2 
楼主威武~ 
 
- 
 
+1 
楼主威武~ 
 
 
 
 
 
 |