This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
屏幕分辨率250*122 用的spi接口 下面是例程里的代码 新手表示看不太懂。。 运行到for循环结束下面几行时开始闪然后图片出来 不知道为啥 有哪里可以优化下吗
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//xx 图片显示函数 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
void DIS_IMG(unsigned char num)
{
unsigned int row, col;
unsigned int pcnt;
SPI4W_WRITECOM(0x4E);
SPI4W_WRITEDATA(0x00); // set RAM x address count to 0;
SPI4W_WRITECOM(0x4F);
SPI4W_WRITEDATA(0xF9); // set RAM y address count to 250-1; 2D13
DELAY_S(5);
SPI4W_WRITECOM(0x24);
DELAY_S(5);
pcnt = 0; // 复位或保存提示字节序号
for(col=0; col<250; col++) // 总共250 GATE列 // send 128x250bits ram 2D13
{
for(row=0; row<16; row++) // 总共128 SOURCE行,每个像素1bit,即 128/8=16 字节
{
switch (num)
{
case 1:
SPI4W_WRITEDATA(DisBuffer[pcnt]);
break;
case 2:
SPI4W_WRITEDATA(gImage_logo[pcnt]);
break;
case 3:
SPI4W_WRITEDATA(gImage_Orientation[pcnt]);
break;
case PIC_WHITE:
SPI4W_WRITEDATA(0xff);
break;
default:
break;
}
pcnt++;
}
}
SPI4W_WRITECOM(0x22);
SPI4W_WRITEDATA(0xC7); // (Enable Clock Signal, Enable CP) (Display update,Disable CP,Disable Clock Signal)
// SPI4W_WRITEDATA(0xF7); // (Enable Clock Signal, Enable CP, Load Temperature value, Load LUT) (Display update,Disable CP,Disable Clock Signal)
SPI4W_WRITECOM(0x20);
DELAY_mS(1);
READBUSY();
DELAY_S(DELAY_TIME);
}
void SPI4W_WRITECOM(unsigned char INIT_COM)
{
unsigned char TEMPCOM;
unsigned char scnt;
TEMPCOM=INIT_COM;
nCS_H;
nCS_L;
SCLK_L;
nDC_L;
for(scnt=0;scnt<8;scnt++)
{
if(TEMPCOM&0x80)
SDA_H;
else
SDA_L;
DELAY_100nS(10);
SCLK_H;
DELAY_100nS(10);
SCLK_L;
TEMPCOM=TEMPCOM<<1;
DELAY_100nS(10);
}
nCS_H;
}
void SPI4W_WRITEDATA(unsigned char INIT_DATA)
{
unsigned char TEMPCOM;
unsigned char scnt;
TEMPCOM=INIT_DATA;
nCS_H;
nCS_L;
SCLK_L;
nDC_H;
for(scnt=0;scnt<8;scnt++)
{
if(TEMPCOM&0x80)
SDA_H;
else
SDA_L;
DELAY_100nS(10);
SCLK_H;
DELAY_100nS(10);
SCLK_L;
TEMPCOM=TEMPCOM<<1;
DELAY_100nS(10);
}
nCS_H;
}