📄 main.c
字号:
//======================================================================
// 工程名称: TFT_Driver
// 功能描述: TFT显示驱动程序使用举例
// IDE环境: SUNPLUS S+core IDE 2.2.0(or later)
// 涉及的库: 无
// 组成文件: main.c, TFT_Driver.c, TFT_API.c, TFT_User.c
// 硬件连接: TFT-LCD
// 维护记录: 2007-01-16 v1.0
//======================================================================
//=============================================================
// 文件名称: main.c
// 功能描述: TFT显示驱动程序使用举例
// 维护记录: 2007-01-16 v1.0
//=============================================================
#include "SPCE3200_Register.h"
#include "SPCE3200_Constant.h"
#include ".\TFT\TFT_API.h"
#include "resource.h"
int main()
{
WIN_HANDLE MessageText, MainFrame, ScollingText;
int Status = 0;
int StatusBK = 0;
int Delay = 0;
short ScollingPos = 640;
int LineCount = 0;
STR_FONT Font;
TFT_Init();
*P_TIMER0_CLK_CONF = C_TIMER_CLK_EN | C_TIMER_RST_DIS;
*P_CLK_32K_CONF = C_32K_CRY_EN;
*P_TIMER_CLK_SEL = C_TIMER0_CLK_32K;
*P_TIMER0_PRELOAD_DATA = 0xe000;
*P_TIMER0_CCP_CTRL = C_TIMER_NOR_MODE;
*P_TIMER0_MODE_CTRL = C_TIMER_CTRL_EN | C_TIMER_INT_EN | C_TIMER_INT_FLAG;
*P_INT_MASK_CTRL1 |= C_INT_TIMER_DIS;
MessageText = TFT_CreateWindowEx(0, 0, 640, 32, COLOR_YELLOW);
MainFrame = TFT_CreateWindowEx(0, 32, 640, 416, COLOR_BLACK);
ScollingText = TFT_CreateWindowEx(0, 448, 640, 24, COLOR_BLUE);
TFT_SetColor(MessageText, COLOR_BLUE);
TFT_SetColor(ScollingText, COLOR_RED);
while(1)
{
switch(Status)
{
case -1:
if(Delay >= 8)
{
Status = StatusBK;
Delay = 0;
}
break;
case 0:
TFT_SetTextPos(MessageText, 0, 8);
TFT_Print(MessageText, "现在测试绘图功能 -");
TFT_SetTextPos(MessageText, 160, 8);
TFT_Print(MessageText, "矩形(10,10)-(300,200)空心 ");
TFT_Rectangle(MainFrame, 10, 10, 300, 200, PAINT_HOLLOW);
StatusBK = Status + 1;
Status = -1;
break;
case 1:
// TFT_Print(MessageText, "现在测试绘图功能 -");
TFT_SetTextPos(MessageText, 160, 8);
TFT_Print(MessageText, "填充(12,12)-(298,198)红色 ");
TFT_SetColor(MainFrame, COLOR_RED);
TFT_Rectangle(MainFrame, 12, 12, 298, 198, PAINT_SOLID);
StatusBK = Status + 1;
Status = -1;
break;
case 2:
// TFT_Print(MessageText, "现在测试绘图功能 -");
TFT_SetTextPos(MessageText, 160, 8);
TFT_Print(MessageText, "圆形(200,100)-100空心 ");
TFT_ClearWindow(MainFrame);
TFT_SetColor(MainFrame, COLOR_WHITE);
TFT_Circle(MainFrame, 200, 100, 100, PAINT_HOLLOW);
StatusBK = Status + 1;
Status = -1;
break;
case 3:
// TFT_Print(MessageText, "现在测试绘图功能 -");
TFT_SetTextPos(MessageText, 160, 8);
TFT_Print(MessageText, "圆形(200,100)- 98实心 ");
TFT_SetColor(MainFrame, COLOR_RED);
TFT_Circle(MainFrame, 200, 100, 98, PAINT_SOLID);
StatusBK = Status + 1;
Status = -1;
break;
case 4:
TFT_SetTextPos(MessageText, 160, 8);
TFT_Print(MessageText, "叠加绿色外接矩形, 50%透明度");
TFT_SetTransparency(MainFrame, 50);
TFT_SetColor(MainFrame, COLOR_GREEN);
TFT_Rectangle(MainFrame, 100, 0, 300, 200, PAINT_SOLID);
StatusBK = Status + 1;
Status = -1;
break;
case 5:
TFT_SetTextPos(MessageText, 160, 8);
TFT_Print(MessageText, "绘制直线 ");
TFT_SetTransparency(MainFrame, 0);
TFT_SetColor(MainFrame, COLOR_WHITE);
Status++;
break;
case 6:
if(LineCount < 300)
{
LineCount+=4;
TFT_Line(MainFrame, 50, LineCount, 350, LineCount);
}
else
{
StatusBK = Status + 1;
Status = -1;
}
break;
case 7:
TFT_ClearWindow(MessageText);
TFT_SetTextPos(MessageText, 0, 8);
TFT_Print(MessageText, "现在测试文本功能 -");
TFT_SetTextPos(MessageText, 160, 8);
TFT_Print(MessageText, "0号字体(8*16 ASCII 16*16 汉字)");
TFT_ClearWindow(MainFrame);
TFT_SetAsciiFont(MainFrame, 0);
TFT_SetChineseFont(MainFrame, 0);
TFT_Print(MainFrame, " SPCE3200:32/16-bit S+core Processor\n");
Status++;
break;
case 8:
TFT_Print(MainFrame, "SPCE3200 是一款高度集成的芯片。");
Status++;
break;
case 9:
TFT_Print(MainFrame, "它以凌阳科技(SUNPLUS)开发的32 位S+core .处理器为内核,外扩累加器单元以及其它用于多媒体、机器人领域的功能模块。");
Status++;
break;
case 10:
TFT_Print(MainFrame, "它专长于图像、视频处理,可以输出图像、声音到电视机(NTSC 或PAL 制式)以及LCD 上显示。");
Status++;
break;
case 11:
TFT_Print(MainFrame, "具备强大的音频、视频、图像数据的处理能力,它可以输出丰富的视频画面、声音,并将这些数据存储到SD卡或NAND Flash 上。");
Status++;
break;
case 12:
TFT_Print(MainFrame, "其工作电压范围为3.0V~3.6V,CPU频率为27~162MHz。");
Status++;
break;
case 13:
TFT_Print(MainFrame, "此外,此款芯片提供32768Hz实时时钟、低电压检测、低电压复位、12 位模数转换(ADC)、UART 接口、SPI 接口、SIO 接口、I2C 主设备接口以及其它IO 设备接口,");
Status++;
break;
case 14:
TFT_Print(MainFrame, "例如TFT LCD、彩色STN、LCD、CMOS 图像传感器(CMOS image sensor)、TV解码器(TV decoder)、光笔、触摸屏等。");
Status++;
break;
case 15:
TFT_Print(MainFrame, "它不仅应用了最好的嵌入技术,还意味着SUNPLUS 的全方位服务与支持。");
Status++;
break;
case 16:
TFT_Print(MainFrame, "特性\n");
Status++;
break;
case 17:
TFT_Print(MainFrame, " 工作电压:I/O VDD 为3.0V ~ 3.6 V;内核VDD为1.62V ~ 1.98V\n");
Status++;
break;
case 18:
TFT_Print(MainFrame, " CPU 频率:27~162MHz\n");
Status++;
break;
case 19:
TFT_Print(MainFrame, " 最大存储空间为128M x32(512 M 字节)\n");
Status++;
break;
case 20:
TFT_Print(MainFrame, " 支持隔行/逐行扫描的NTSC/PAL 视频输出\n");
Status++;
break;
case 21:
TFT_Print(MainFrame, " 图像分辨率:VGA 模式(640x480 像素);CIF 模式(320x240 像素)\n");
Status++;
break;
case 22:
TFT_Print(MainFrame, " 可选择颜色模式:4/16/64/256/32768/65536\n");
Status++;
break;
case 23:
TFT_Print(MainFrame, " 硬件MPEG-4/JPEG 编解码\n");
Status++;
break;
case 24:
TFT_Print(MainFrame, " MPEG-4 帧率(frame rate):CIF 模式下,高达30帧/秒\n");
Status++;
break;
case 25:
TFT_Print(MainFrame, " 提供4 通道的APB DMA 数据传输方式:从APB设备到DRAM 或从DRAM 到APB 设备\n");
Status++;
break;
case 26:
TFT_Print(MainFrame, " 2个16 位高速DAC,可获得立体声(stereo)音质\n");
Status++;
break;
case 27:
TFT_Print(MainFrame, " 8通道12位AD转换器\n");
Status++;
break;
case 28:
TFT_Print(MainFrame, " USB1.1 主机或USB1.1 外设\n");
Status++;
break;
case 29:
TFT_Print(MainFrame, " 具备光笔接口\n");
Status++;
break;
case 30:
TFT_Print(MainFrame, " 具备TFT/CSTN LCD接口\n");
Status++;
break;
case 31:
TFT_Print(MainFrame, " 支持CCIR-601/656 CMOS 图像传感器/TV 解码器接口\n");
Status++;
break;
case 32:
TFT_Print(MainFrame, " 支持SD 卡及NAND Flash\n");
StatusBK = Status + 2;
Status = -1;
break;
case 34:
TFT_ClearWindow(MessageText);
TFT_SetTextPos(MessageText, 0, 8);
TFT_Print(MessageText, "现在测试图片功能 -");
TFT_SetTextPos(MessageText, 160, 8);
TFT_Print(MessageText, "BMP图片显示");
TFT_PutPicture(MainFrame, 0, 0, RES_CAT_BMP, IMAGE_NO_SCALE);
StatusBK = Status + 1;
Status = -1;
break;
case 35:
TFT_SetTextPos(MessageText, 160, 8);
TFT_Print(MessageText, "BMP图片显示(自适应窗口)");
TFT_ClearWindow(MainFrame);
TFT_PutPicture(MainFrame, 0, 0, RES_CAT_BMP, IMAGE_SCALE);
StatusBK = Status + 1;
Status = -1;
break;
case 36:
TFT_SetTextPos(MessageText, 160, 8);
TFT_Print(MessageText, "JPEG图片显示 ");
TFT_ClearWindow(MainFrame);
TFT_PutPicture(MainFrame, 0, 0, RES_A420_JPG, IMAGE_NO_SCALE);
StatusBK = Status + 1;
Status = -1;
break;
case 37:
TFT_ClearWindow(MessageText);
TFT_SetTextPos(MessageText, 0, 8);
TFT_Print(MessageText, "现在测试窗口特性 -");
TFT_SetTextPos(MessageText, 160, 8);
TFT_Print(MessageText, "移动窗口");
TFT_MoveWindow(MainFrame, 100, 132);
StatusBK = Status + 1;
Status = -1;
break;
case 38:
TFT_SetTextPos(MessageText, 160, 8);
TFT_Print(MessageText, "复制窗口");
TFT_ResetWindow(MainFrame, 100, 132, 640, 448);
TFT_CopyWindow(MainFrame, 0, 32);
StatusBK = Status + 1;
Status = -1;
break;
case 39:
TFT_DeleteWindow(MessageText);
TFT_DeleteWindow(MainFrame);
TFT_DeleteWindow(ScollingText);
MainFrame = TFT_CreateWindow(0, 0, 640, 480, COLOR_BLUE);
TFT_SetTextPos(MainFrame, 288, 232);
TFT_Print(MainFrame, "测试完毕");
Status++;
default:
break;
}
if(*P_TIMER0_MODE_CTRL & C_TIMER_INT_FLAG)
{
Delay++;
ScollingPos -= 32;
if(ScollingPos < 0)
ScollingPos = 640;
TFT_ClearWindow(ScollingText);
TFT_SetTextPos(ScollingText, ScollingPos, 8);
TFT_Print(ScollingText, "挑战百万年薪, 来http://www.61job.cn");
*P_TIMER0_MODE_CTRL |= C_TIMER_INT_FLAG;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -