⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 LCD实现的接口驱动程序
💻 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 + -