📄 2.0tft demomain 1.c
字号:
void Display_chipcopy_receiving()
{
unsigned char l;
unsigned char x;
unsigned char y;
Chip_select_LCD();
LCDREG=0x12; LCDREG=0x87;
//VRAM access area setting register(X direction/start and pointer)
LCDREG=0x13; LCDREG=0xDB;
//VRAM access area setting register(Y direction/start and pointer)
LCDREG=0x15; LCDREG=0x28;
//VRAM access area setting register(X direction/end)
LCDREG=0x16; LCDREG=0x00;
//VRAM access area setting register(Y direction/end)
LCDREG=0x18; LCDREG=0x03;
//Address auto increment setting register
LCDREG=0x14; LCDREG=0x87; // X address register
LCDREG=0x17; LCDREG=0x80;
for(y=0;y<40;y++)
{
for(x=0;x<12;x++)
{
for(l=0x80;l>=1;l=l>>1)
{
if((Receiving[(39-y)*12+x]&l)!=0)
{
LCDDATA=0;
LCDDATA=0;
LCDDATA=0;
}
else
{
LCDDATA=0xff;
LCDDATA=0xff;
LCDDATA=0xff;
}
}
}
}
}
//============================================================================================================
void Program_flash(unsigned char xdata *image_data_addr,unsigned char io_data)
{
Chip_select_flash();
FLASH_5555=0xaa;
FLASH_2AAA=0x55;
FLASH_5555=0xa0;
*image_data_addr=io_data;
}
void Chip_erase_flash()
{
unsigned char i;
Chip_select_flash();
FLASH_5555=0xaa;
FLASH_2AAA=0x55;
FLASH_5555=0x80;
FLASH_5555=0xaa;
FLASH_2AAA=0x55;
FLASH_5555=0x10;
for (i=0;i<15;i++)
{
Led_light(true);
Delayms(200);
Led_light(false);
Delayms(200);
}
}
void Auxdata_write(unsigned char data_mask,unsigned char auxa_data)
{
Chip_select_LCD();
Auxdata=(Auxdata&data_mask)+auxa_data;
AUXOUT=Auxdata;
}
//*****************************************
void serial () interrupt 4
{
unsigned char image_data;
unsigned char block_addr;
block_addr=Block_addr<<1;
EA=0;
if (Chip_copy)
{
if (RI)
{
RI=0;
image_data=SBUF;
Auxdata_write(BLOCK_ADDR_MASK,Block_addr&block_mask);
Program_flash(Image_data_addr,image_data);
Image_data_addr++;
if (Image_data_addr==0x0000)
{ Block_addr++;
if (Block_addr==8) Chip_copy_over=true;
Auxdata_write(BLOCK_ADDR_MASK,Block_addr&block_mask);
Chip_select_Flash();
Chip_select_LCD();
LCDREG=0x12; LCDREG=175-(Block_addr<<3)-48;
//VRAM access area setting register(X direction/start and pointer)
LCDREG=0x13; LCDREG=0x5E;
//VRAM access area setting register(Y direction/start and pointer)
LCDREG=0x15; LCDREG=175-(Block_addr<<3)-55;
//VRAM access area setting register(X direction/end)
LCDREG=0x16; LCDREG=0x5A;
//VRAM access area setting register(Y direction/end)
LCDREG=0x18; LCDREG=0x03;
//Address auto increment setting register
LCDREG=0x14; LCDREG=175-(Block_addr<<3)-48; // X address register
LCDREG=0x17; LCDREG=0x5E;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
Chip_select_flash();
}
}
else
{
TI = 0;
SBUF=*(Image_data_addr);
Image_data_addr++;
if (Image_data_addr==0x0000)
{
Block_addr++;
if (Block_addr==8) Chip_copy_over=true;
Auxdata_write(BLOCK_ADDR_MASK,Block_addr&block_mask);
Chip_select_LCD();
LCDREG=0x12; LCDREG=175-(Block_addr<<3)-48;
//VRAM access area setting register(X direction/start and pointer)
LCDREG=0x13; LCDREG=0x5E;
//VRAM access area setting register(Y direction/start and pointer)
LCDREG=0x15; LCDREG=175-(Block_addr<<3)-55;
//VRAM access area setting register(X direction/end)
LCDREG=0x16; LCDREG=0x5A;
//VRAM access area setting register(Y direction/end)
LCDREG=0x18; LCDREG=0x03;
//Address auto increment setting register
LCDREG=0x14; LCDREG=175-(Block_addr<<3)-48; // X address register
LCDREG=0x17; LCDREG=0x5E;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
Chip_select_flash();
}
}
}
else
{
if (RI )
{
RI=0;
image_data=SBUF;
Program_flash(Image_data_addr,image_data);
Image_data_addr++;
if (Image_data_addr==0x0000)
{ block_addr++;
Auxdata_write(BLOCK_ADDR_MASK,block_addr&block_mask);
Chip_select_Flash();
}
if (Download_counter==2) Download_total=image_data;
if (Download_counter==3) Download_total=image_data*256+Download_total;
if (Download_counter==4) Download_total=image_data*256*256+Download_total;
if (Download_counter==70145) Download_over=true;
Download_counter++;
Download_process++;
/* Chip_select_LCD();
if (Download_process==0xf1)
{
LCDREG=0x12; LCDREG=175-Download_x/8-58;
//VRAM access area setting register(X direction/start and pointer)
LCDREG=0x13; LCDREG=0x63;
//VRAM access area setting register(Y direction/start and pointer)
LCDREG=0x15; LCDREG=175-Download_x/8-58;
//VRAM access area setting register(X direction/end)
LCDREG=0x16; LCDREG=0x60;
//VRAM access area setting register(Y direction/end)
LCDREG=0x18; LCDREG=0x03;
//Address auto increment setting register
LCDREG=0x14; LCDREG=175-Download_x/8-58; // X address register
LCDREG=0x17; LCDREG=0x63;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
Download_x++;
Download_process=0xff;
}*/
}
}
EA=1;
}
//*****************************
void Serial_init() //serial port setup
{
IP0H=0x10; //proitity setup
EA=1; //interrupt enable
T2CON=0x30; //timer2
T2MOD=0x00; //timer2mode
PCON=0; //SMOD baudrate double disable
SCON=0x50; //8bitsUART, baud rate variable
RCAP2L = 0xf0; //bf 9600 df 19200 f0 38400
RCAP2H = 0xff; //baudrate setup:
TR2=true; //run timer2
}
void Pcam1_init()
{
TMOD=0x02; //timer 0 auto-loadmode
TH0=256-20000000/6/51200; //timer0=51.2kHz=50us
TR0=true;
CMOD=0x04; //PCA's input :timer0:20kHz;pwm :51.2k/256=200Hz
CCON=0x40; //RUN the pca
CCAPM1=0x42; //PWM mode
CCAP1H=255-Bl_brightness; //set duty
}
//===========================================keyboard server begin
void Key_int() interrupt 0
{
unsigned char key;
EA=false;
EX0=false;
Delayms(10);
P1=P1|key_mask;
key=P1&key_mask;
Delayms(5);
if(key!=(P1&key_mask)) goto keyend;
Delayms(5);
if(key!=(P1&key_mask)) goto keyend;
switch(key)
{
case key_up: Key_up_server();
break;
case key_down: Key_down_server();
break;
case key_shift: Key_shift_server();
break;
case key_playpause: Key_playpause_server();
break;
default: ;
}
keyend: Delayus(10);
EA=true;
EX0=true;
}
//keyboand sever sub program===========================
void Key_up_server()
{
if (Shift==0)
{
switch(Bl_brightness)
{
case 255: Bl_brightness=255;
break;
case 127: Bl_brightness=255;
break;
case 25: Bl_brightness=127;
break;
case 0: Bl1=1; Pcam1_init(); Bl_brightness=25;
break;
default: ;
}
CCAP1H=255-Bl_brightness;
}
else
{
switch(Contrast)
{
}
}
}
void Key_down_server()
{
if (Shift==0)
{
switch(Bl_brightness)
{
case 255: Bl_brightness=127;
break;
case 127: Bl_brightness=25;
break;
case 25: Bl1=0;Bl_brightness=0;
break;
case 0: Poweroff(); Led_flash(3);
break;
default: ;
}
CCAP1H=255-Bl_brightness;
}
else
{
switch(Contrast)
{
}
}
}
void Key_shift_server()
{
Shift=!Shift;
Led_light(Shift);
}
void Key_playpause_server()
{
Pause=!Pause;
}
//===========================================keyboard server end
//chip select program===============================
void Chip_select_flash()
{
LCDcs=true;
Flashcs=false;
}
void Chip_select_LCD()
{ Flashcs=true;
LCDcs=false;
}
void Led_light(bit led)
{
Led=led;
}
void Led_flash(unsigned char cycle)
{
ledflash:
Led=true;
Delayms(cycle*100);
Led=false;
Delayms(cycle*100);
goto ledflash;
}
void Hardreset() /*lcd hardware reset*/
{
Chip_select_LCD();
Auxdata_write(0xf7,0x00);
Delayms(10);
Auxdata_write(0xf7,0x08);
AUXOUT=Auxdata;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -