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

📄 jiemian.h

📁 51单片机SD卡TFT彩屏显示图片
💻 H
字号:
void shuxing()
{
	u16 ii;
	u8 DPT[16];			//储存DPT数据所用数组,一个分区表16字节
	u8 BPB[90];			//储存BPB数据所用数组,DBR前90字节有效
	u32 DBR;		   	//计算DBR扇区
	u32 DBRBye;			//计算DBR扇区地址
	u16 OneBlockBye;	//计算一个扇区有几个字节的变量
	u32 AnyMB;			//计算总容量的变量
	u8 Cluster;         //计算一簇有几个扇区的变量
	u16 Retain;			//计算保留扇区
	u32 Fat;			//计算Fat表扇区
	u32 OneFatBlock;    //一个Fat表的扇区数
	SD_ReadSingleBlock(0,buffer);
	if(buffer[0]!=0xeb)
	{
		for(ii=0;ii<16;ii++)
		{
			DPT[ii]=buffer[446+ii];
		}
		if(DPT[0]==0x00)
		{
			Show_Str(79,86,"非启动分区",16,1);
		}
		DBR=DPT[11]<<24|DPT[10]<<16|DPT[9]<<8|DPT[8];
		Show_Str(71,102,"DBR在",16,1);
		LCD_ShowNum(111,102,DBR,3,16);
		Show_Str(135,102,"扇区",16,1);
		DBRBye=DBR*512;	
	}
	else
	{
		DBR=0;
	}
	SD_ReadSingleBlock(DBRBye,buffer);
	for(ii=0;ii<90;ii++)
	{
		BPB[ii]=buffer[ii];
	}
	OneBlockBye=BPB[12]<<8|BPB[11];
	Show_Str(43,150,"一个扇区有",16,1);
	LCD_ShowNum(123,150,OneBlockBye,3,16);
	Show_Str(147,150,"个字节",16,1);
	Cluster=BPB[13];
	Show_Str(67,134,"一簇有",16,1);
	LCD_ShowNum(115,134,Cluster,1,16);
	Show_Str(123,134,"个扇区",16,1);
	AnyMB=BPB[35]<<24|BPB[34]<<16|BPB[33]<<8|BPB[32];
	AnyMB=AnyMB/2048;
	Show_Str(67,118,"总容量:",16,1);
	LCD_ShowNum(123,118,AnyMB,4,16);
	LCD_ShowString(155,118,"MB");

	Retain=BPB[15]<<8|BPB[14];
	Fat=DBR+Retain;
	OneFatBlock=BPB[39]<<24|BPB[38]<<16|BPB[37]<<8|BPB[36];
	FirstBlock=OneFatBlock*2+Fat;
	Show_Str(43,166,"根目录所在扇区:",16,1);
	LCD_ShowNum(163,166,FirstBlock,4,16);
}
void beijing()
{
	unsigned long j;
	unsigned long i;
	TFT_window(0,0,239,319); 
	for(i=0;i<300;i++)
	{
		SPI_Flash_Read(buffer,147048+i*512,512);
		for(j=0;j<256;j++)
		{
			LCD_RAM=(buffer[j*2+1]<<8|buffer[j*2]);
		}
	} 
}

void baocun(u16 x0,u16 y0,u16 x1,u16 y1,u8 *asd)
{
	unsigned int x;
	unsigned int y;
	for(y=y0;y<y1;y++)
	{
		for(x=x0;x<x1;x++)
		{
			*asd=LCD_ReadPoint(x,y)&0x00ff;
			asd++;
			*asd=LCD_ReadPoint(x,y)>>8;
			asd++;
		}
	} 
}

void huanyuan(u16 x0,u16 y0,u16 x1,u16 y1,u8 *asd)
{	
	unsigned int x;
	unsigned int y;
	for(y=y0;y<y1;y++)
	{
		for(x=x0;x<x1;x++)
		{
			LCD_SetCursor(x,y);//设置光标位置 
			LCD_WriteRAM_Prepare;//开始写入GRAM
			LCD_RAM=((*asd++)<<8|(*asd++));
		}
	} 
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -