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

📄 rom.c

📁 TFT ILI9320在Keil c下完成成品测试的程序,包括TOUCHPANEL测试.
💻 C
字号:
#include "head.c"
/* 
sbit ROM_CS=P0^1;//ROM CS
sbit ROM_CLE=P3^2;//ROM COMMAND SELECT PIN
sbit ROM_ALE=P3^0;//ROM ADDRESS SELECT PIN
sbit ROM_BUSY=P3^4;//--ROM R/B PIN
#define  ROM_DATAPORT P2;//ROM PORT
sbit ROM_WR=P3^5;//WRITE
sbit ROM_RD=P3^7;//READ
*/
rom_send_com(unsigned char value)
{

ROM_RD=1;
ROM_CS=0;
ROM_CLE=1;//COMMAND
ROM_ALE=0;
ROM_DATAPORT=value;
ROM_WR=0;
ROM_WR=1;
ROM_CS=1;

//ROM_ALE=1;
}

rom_send_add(unsigned char value)
{
ROM_RD=1;

ROM_ALE=1;//ADDRESS
ROM_CLE=0;
ROM_CS=0;
ROM_DATAPORT=value;
ROM_WR=0;
ROM_WR=1;
ROM_CS=1;

}

rom_send_value(unsigned char value)
{
ROM_CLE=0; //value
ROM_ALE=0;//
ROM_RD=1;
ROM_CS=0;
ROM_DATAPORT=value;
ROM_WR=0;
ROM_WR=1;
ROM_CS=1;
//ROM_ALE=1;
}



void rom_check_busy() //NOT BUSY RETURN 
{
unsigned char value;
value=0;
while((value&0x40)==0)//is busy? yes-->check again
{//read the status
rom_send_com(0x70);//get status
ROM_DATAPORT=0xff;

ROM_CLE=0; //read the data?!
ROM_ALE=0;//
ROM_WR=1;
ROM_CS=0;
ROM_RD=0;
value=ROM_DATAPORT;
ROM_RD=1;
ROM_CS=1;
//delay(1);
}
//ROM_ALE=1;
}



//-------------->Erase whole block data<--------------------
unsigned char rom_erase_block(unsigned int add)
{
unsigned char value;
rom_send_com(0x60);
/*
rom_send_add(add>>8);
rom_send_add((unsigned char )add);
*/

rom_send_add((add&0x7)<<5);
rom_send_add(add>>3);

rom_send_com(0xd0);

//--busy check!
ROM_BUSY=1;
while(ROM_BUSY==0);

//value=0;
//while((value&0x40)==0)//is busy? yes-->check again
{//read the status
rom_send_com(0x70);//get status
ROM_DATAPORT=0xff;

ROM_CLE=0; //read the data?!
ROM_ALE=0;
ROM_WR=1;
ROM_CS=0;
ROM_RD=0;
value=ROM_DATAPORT;
ROM_RD=1;
ROM_CS=1;
delay(10);
}
//ROM_ALE=1;
/*
value=0;
rom_send_com(0x70);//get status
ROM_DATAPORT=0xff;

ROM_CLE=0; //read the data?!
ROM_ALE=0;
ROM_WR=1;
ROM_CS=0;
ROM_RD=0;
value=ROM_DATAPORT;
ROM_RD=1;
ROM_CS=1;
delay(10);
EA=1;
printc(value);
EA=0;
*/
if((value&1)==0)
return 0;//erase ok
else
return 1;//erase error
 

}


//-------------->write whole block data------<--------------
void rom_write_block_start(unsigned char addcol,unsigned int addrow)
{
rom_send_com(0x80);//program
rom_send_add(addcol);

rom_send_add((unsigned char)addrow);
rom_send_add(addrow>>8);

ROM_BUSY=1;
while(ROM_BUSY==0);
ROM_BUSY=1;
while(ROM_BUSY==0);

//----after this can write data to flash.............--- 
}



unsigned char rom_write_block_end()
{
//unsigned char value;
rom_send_com(0x10);

//--busy check!

ROM_BUSY=1;
while(ROM_BUSY==0);
ROM_BUSY=1;
while(ROM_BUSY==0);

 /*
value=0;
while((value&0x40)==0)//is busy? yes-->check again
{//read the status
rom_send_com(0x70);//get status
ROM_DATAPORT=0xff;
ROM_CLE=0; //read the data?!
ROM_ALE=0;//
ROM_WR=1;
ROM_CS=0;
ROM_RD=0;
value=ROM_DATAPORT;
ROM_RD=1;
ROM_CS=1;
ROM_ALE=1;
//delay(10);
 
}

if((value&1)==0)
return 0;//erase ok
else
return 1;//erase error
 */
 return 0;
}


void rom_read_block_start(unsigned char addcol,unsigned int addrow)
{
//unsigned char value;
rom_send_com(0x00);

rom_send_add(addcol);

rom_send_add((unsigned char)addrow);

//rom_send_add(addrow>>8);
ROM_CLE=0;
ROM_ALE=1;//ADDRESS
ROM_RD=1;
ROM_CS=0;
ROM_DATAPORT=addrow>>8;
ROM_WR=0;
ROM_WR=1;
 

ROM_BUSY=1;
while(ROM_BUSY==0);
ROM_BUSY=1;
while(ROM_BUSY==0);
//delay(1);
ROM_CS=1;
 
 

}
/*
void rom_read_write_lcm()//
{
unsigned char value;
unsigned int k,k2;

ROM_CLE=0; //read the data?!
ROM_ALE=0;
ROM_WR=1;
ROM_CS=0;
	LCM_CS=0;
	LCM_RS=1;
	W_C(0x22);
for(k2=1800;k2>0;k2--)//动画的总的帧数,10/s,total  1800 frame,3分
for(k=32767;k>0;k--)
{
ROM_RD=0;
value=ROM_DATAPORT;//data read from flash
ROM_RD=1;
	LCM_DATAPORT=value;//data write to lcm-----------xxxx-------------------------
	LCM_WR=0;//write data to lcm---------------------xxxx-------------------------
	LCM_WR=1;//write data to lcm---------------------xxxx-------------------------
}

ROM_CS=1;


}
*/




void putenter()
{
SBUF=0x0d;//send num
while(0==TI);
TI=0;
SBUF=0x0a;//send num
while(0==TI);
TI=0;

}

void putok()
{
SBUF=79;//send num
while(0==TI);
TI=0;
SBUF=75;//send num
while(0==TI);
TI=0;


SBUF=45;//send num
while(0==TI);
TI=0;
SBUF=45;//send num
while(0==TI);
TI=0;
SBUF=62;//send num
while(0==TI);
TI=0;

}



void puterror()
{//ERROR-->
SBUF=69;//send num
while(0==TI);
TI=0;
SBUF=82;//send num
while(0==TI);
TI=0;
SBUF=82;//send num
while(0==TI);
TI=0;
SBUF=79;//send num
while(0==TI);
TI=0;
SBUF=82;//send num
while(0==TI);
TI=0;

SBUF=45;//send num
while(0==TI);
TI=0;
SBUF=45;//send num
while(0==TI);
TI=0;
SBUF=62;//send num
while(0==TI);
TI=0;

}

void putspace()
{
SBUF=0x20;//send num
while(0==TI);
TI=0;

}
void putnum(unsigned char value)
{
SBUF=value|0x30;//send num
while(0==TI);
TI=0;
}

void printi(unsigned int value )
{
unsigned int a;
unsigned char temp;
a=value;

if(a>=10000)
{
temp=a/10000;
putnum(temp);
a=a%10000;
}



if(a>=1000)
{
temp=a/1000;
putnum(temp);
a=a%1000;
}else if(value>=10000)
putnum(0);

//---------------->>>>
if(a>=100)
{
temp=a/100;
putnum(temp);
a=a%100;
}else if(value>=1000)
putnum(0);

//---------------->>>>>>
if(a>=10)
{
temp=a/10;
putnum(temp);
a=a%10;
}else if(value>=100)
putnum(0);


if(a>0)
{
temp=a;
putnum(temp);
}
else
putnum(0);

putspace();
}



void printc(unsigned char value )
{
unsigned char a;
unsigned char temp;
a=value;
//---------------->>>>
if(a>=100)
{
temp=a/100;
putnum(temp);
a=a%100;
}

//---------------->>>>>>
if(a>=10)
{
temp=a/10;
putnum(temp);
a=a%10;
}else if(value>=100)
{
putnum(0);
}

if(a>0)
{
temp=a;
putnum(temp);
}
else
putnum(0);


putspace();
}


unsigned char rom_readID() //read the rom ID
{
unsigned char value;
//rom_send_com(0x90);

ROM_RD=1;
ROM_CS=0;
ROM_CLE=1;//COMMAND
ROM_ALE=0;
ROM_DATAPORT=0x90;
ROM_WR=0;
ROM_WR=1;
 

//rom_send_add(0x00);
 
 
ROM_CLE=0;
ROM_ALE=1;
ROM_DATAPORT=00;
ROM_WR=0;
ROM_WR=1;



ROM_CLE=0; //read the data?!
ROM_ALE=0;//

ROM_DATAPORT=0xff; 
 
ROM_RD=0;
value=ROM_DATAPORT;
ROM_RD=1;
ROM_CS=1;

ROM_ALE=1;
return value;

}
















⌨️ 快捷键说明

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