基于 32G12K128实验箱V9.62_实验之TFT彩屏驱动
32G12K128实验箱V9.62_实验之TFT-320*240,彩屏 驱动
===后续 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={
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;
for(i=0;i<150;i++)
{//画正弦波形线
y1=SIN;
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={ "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,14,4); }
else { LCD_Str16(20,29+24*m,MU,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,14,4); break;
case 1:
case 2: LCD_BoxF(10,25+n*24,99,22,0,4); LCD_Str16(20,29+24*n,MU,14,4); break;
case 3: LCD_BoxF(10,25+n*24,99,22,2,4); LCD_Str16(20,29+24*n,MU,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,15,1); break;
case 1:
case 2: LCD_BoxF(10,25+n*24,99,22,0,1); LCD_Str16(20,29+24*n,MU,15,1); break;
}
delay_ms(10);
}
}
//==== Main.C END ===================================================================//
工程文件: 包含彩屏驱动文件.
没有屏,没有箱,只能看,除了屠龙刀和有4键的1.8TFT,可以试试,羡慕 STC8051U全球大学计划实验箱,大国风范
用 STC8051U-PDIP40, LQFP44, LQFP48
点亮 i8080-TFT, QSPI-TFT, SPI-TFT, 点灯
追风剑-II@STC8051USB 实验箱,极致音频,示波器,波形发生器
管脚兼容天王级别的: STC89C52RC, STC12C5A60S2
兼容 8位8051,可以用 Keil C51/IAR/SDCC 编译器
===STC-ISP 烧录时,指定 STC8051U-8Bit
兼容 32位8051,可以用 Keil C251 编译器,双核兼容设计
===STC-ISP 烧录时,指定 STC8051U-32Bit
34K SRAM(2K edata, 32K xdata), 64K Flash
DMA支持PWM, DMA支持外设直接到外设, P2P
135MHz-PWM支持硬件移相,16位PWM; 真12位ADC
USB, I2S, QSPI, 4组串口,I2C, SPI
LQFP48/LQFP44,PDIP40 封装已到位
TFPU32:【硬件三角函数/反三角函数,硬件浮点运算器】
不用的PSEN 改成 USB-3.3V-LDO-UCAP, 外挂 0.1uF电容
不用USB, 不用 USB直接下载/USB仿真,可不挂这个电容
【新提醒】STC8051U全球大学计划实验箱,大国风范 ! 数据手册 - 单片机创意设计大赛 @【STC & 嘉立创EDA】 国芯技术交流网站 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)
感谢神管和版主的鲜花鼓励。
新品 8051U实验箱,大国风范,刮目相看了,希望有机会,能再学习、实验和享受一下。
显示屏在哪买的,给个链接可以吗 fxg2024 发表于 2024-9-15 16:06
显示屏在哪买的,给个链接可以吗
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=10452&extra=&page=2
在此贴的5#楼... 请楼主移植到 Ai8051U实验箱上,
用DMA来支持,用 DMA-P2P来支持
有网友要
立即送楼主 Ai8051U实验箱 非常感谢神农鼎管理员的关注和厚爱.
AI8051U相对32G12K128有不少新的知识点, 值得研究学习.
十分期待AI8051U实验箱的到来...
顺丰快递,顺利神速,仅时隔一日,
制作精良、功能强大的AI8051U_V1.2_实验箱,
已出现在我的工作台上了,
这非梦,而是真的,太令人惊喜、深感荣幸了。
这事本身,就足以又一次成为我人生的美好记忆了。
感谢神管对本贴实验习作的认可和鼓励,
感谢老总的钦批送箱,
感谢江苏国芯科技的大气馈赠。
接下来将尽快熟悉了解新实验箱,
继而将有“基于AI8051U实验箱之...”的学习心得汇报...
首选即是考虑本帖主题的移植...