📄 0741.c
字号:
/********************************************************/
/* MAIN PROGRAM FOR DEMOTOOL FOR SHARP */
/* 1.01stn rohm REVION A */
/********************************************************/
#include <reg52.H>
#define tft19LCD 1
//#define atn13LCD 1
#define tft19LCDb8ud12
//#define tft19LCDb8ud17
#define baudrate38400
//#define baudrate19200
//#define baudrate9600
sfr FST = 0xb6;
sfr T2MOD = 0xc9;
sfr IP0 = 0xb8;
sfr IP0H = 0xb7;
sfr IP1 = 0xf8;
sfr IP1H = 0xf7;
sfr IEN0 = 0xa8;
sfr IEN1 = 0xe8;
sfr CCAP1H = 0xfb;
sfr CCAP1L = 0xeb;
sfr CCAPM1 = 0xdb;
sfr CCON = 0xd8;
sfr CH = 0xf9;
sfr CL = 0xe9;
sfr CMOD = 0xd9;
sfr AUXR =0x8e;
#define true 1
#define false 0
#define key_mask 0x0f
#define block_mask 0x07
#define key_up 0x0e
#define key_down 0x0d
#define key_shift 0x0b
#define key_playpause 0x07
#define key_poweroff 0x0c
#define setup_sector 0x07
#define BLOCK_ADDR_MASK 0xf8
#define FLASH_START 0x00
char xdata LCDREG _at_ 0xDC00;
char xdata LCDDATA _at_ 0xDD00;
char xdata LCDREG_SUB _at_ 0xDA00; //RS=L
char xdata LCDDATA_SUB _at_ 0xDB00;
char xdata LCDHBYTE _at_ 0xEF00;
char xdata AUXOUT _at_ 0xF700;
char xdata FLASH_5555 _at_ 0x5555;
char xdata FLASH_2AAA _at_ 0x2aaa;
sbit LCDcs=P1^6;
sbit Flashcs=P1^7;
sbit Led=P3^5;
sbit Dtr=P3^3;
sbit Dsr=P3^4;
sbit Bl1=P1^4;
unsigned char idata Auxdata;
unsigned char idata Bl_brightness;
unsigned char idata Block_addr;
unsigned char idata Contrast;
unsigned char idata Download_x;
unsigned char idata Picno;
bit Shift;
bit Power;
bit Partial;
bit DIP_TCK_STRING_FLAG;
bit pause;
bit chip_copy;
unsigned int DPTR0;
unsigned char PressKEY_counter;
void Cpu_init();
void Init_LCD();
void Init_SUB();
void Poweroff_main();
void Poweroff_sub();
void Key_int();
void Display_SUB(unsigned char block_addr);
void Pcam1_init();
void Hardreset();
void Chip_select_LCD();
void Chip_select_flash();
void Led_light(bit led);
void Led_flash(unsigned char cycle);
void Key_up_server();
void Key_down_server();
void Key_shift_server();
void Key_playpause_server();
void Auxdata_write(unsigned char data_mask,unsigned char auxa_data);
void Delayus(int value);
void Delayms(int value);
void CLR_Screen();
void black_Screen();
void poweroff();
void poweron();
void sleep_off();
void sleep_on();
void partial_display_on();
void partial_display_off();
void System_init();
void DIP_TCK_STRING();
void START4();
void START2();
void START3();
unsigned char code Image_Code1[];
unsigned char code Image_Code2[];
void main()
{
FST=0X08; //clock double disable
AUXR=0x02;
Bl_brightness=0; //init bightlight
Shift=1;
Contrast=0x25;
pause=0;
Auxdata=0x08;
//Power =1;
//Partial=1;
//PressKEY_counter=0;
IEN0=0;
Led_light(false);
Init_LCD();
System_init();
Bl_brightness=255; //init bightlight
CCAP1H=255-Bl_brightness; //set duty
mloop1:
a1:while(pause==1) goto a1;
DIP_TCK_STRING_FLAG=1;
DIP_TCK_STRING();
Delayms(600);
a2:while(pause==1) goto a2;
DIP_TCK_STRING_FLAG=0;
DIP_TCK_STRING();
Delayms(500);
a3:while(pause==1) goto a3;
START2();
Delayms(600);
a0:while(pause==1) goto a0;
CLR_Screen();
START3();
Delayms(600);
a4:while(pause==1) goto a4;
CLR_Screen();
START4();
Delayms(600);
a5:while(pause==1) goto a5;
CLR_Screen();
Delayms(600);
a6:while(pause==1) goto a6;
black_Screen();
Delayms(600);
goto mloop1;
//while(1);
}
void System_init()
{
unsigned char key;
P1=P1|key_mask;
key=P1&key_mask;
switch (key)
{
case key_mask: //demonstation
{
Pcam1_init();
IP0=0x01; //proitity setup :external i0
EX0=1; //open the io interrupt
EA=1;
IT0=1;
}
break;
default: //Block data receiver
{
}
break;
}
}
//============================================================================================================
void Auxdata_write(unsigned char data_mask,unsigned char auxa_data)
{
Chip_select_LCD();
Auxdata=(Auxdata&data_mask)+auxa_data;
AUXOUT=Auxdata;
}
//*****************************
void Pcam1_init()
{
TMOD=0x02; //timer 0 auto-loadmode
TH0=256-8950000/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:
break;
case key_down:
break;
case key_shift:
break;
case key_playpause: Key_playpause_server();
break;
default: ;
}
keyend: Delayus(10);
EA=true;
EX0=true;
}
void Key_playpause_server()
{
pause=!pause;
}
/*void Key_playpause_server()
{
unsigned int i;
i = 0;
PressKEY_counter++;
if(PressKEY_counter==1)
{
Bl1=0; poweroff();
}
else if(PressKEY_counter==2)
{
poweron();
}
else if(PressKEY_counter==3)
{
sleep_on();
}
else if(PressKEY_counter==4)
{
sleep_off();
}
else if(PressKEY_counter==5)
{
partial_display_on();
}
else if(PressKEY_counter==6)
{
partial_display_off();
PressKEY_counter=0;
}
}*/
//===========================================keyboard server end
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;
}
void Delayus(int value)
{
while(value) value--; /*delay 1us*/
}
void Delayms(int value)
{
int i;
for(i=0;i<value/2;i++)
{
Delayus(1000); /*delay 1ms*/
}
}
//=============================================================================================
void Init_LCD() /*Initialize LCD;Driver IC:*/
{
/************user application set up by internal instructions********/
Hardreset(); //Lcd hardware reset
Delayms(10);
Chip_select_LCD();
LCDREG=0xE2; // ;SOFT RESET
LCDREG=0x48;
LCDREG=0x52; //SET 82 DUTY
LCDREG=0xA0; //;set adc=0 normal direction (seg0-->seg119)
LCDREG=0xC8; // ;set shl=1 reverse direction(com112-->com30)
LCDREG=0x44;
LCDREG=0x1e; // set initial COM, from com30
/********set the LCD operating voltage by internal instructions********/
LCDREG=0xAB; // osciliator on
LCDREG=0x65; //DC-DC set up regoster set 4 times boosting
LCDREG=0x25/*0x25*/; //regulator resistor set 1+(Rb/Ra)=5.8
LCDREG=0x81;
LCDREG=0x18/*0x18*/; // SET VALUE VOP=10.5V
LCDREG=0x54; // LCD bias register set bias=1/9
LCDREG=0x93; // 4 FRC / 15 PWM
LCDREG=0x88; // SET WHITE 1/2
LCDREG=0x00;
LCDREG=0x89; // SET WHITE 3/4
LCDREG=0x00;
LCDREG=0x8A; // SET LIGHT GRAY 1/1
LCDREG=0x55;
LCDREG=0x8B; // SET LIGHT GRAY 3/4
LCDREG=0x55;
LCDREG=0x8C; // SET DARK GRAY 1/2
LCDREG=0xAA;
LCDREG=0x8D; // SET DARK GRAY 3/4
LCDREG=0xAA;
LCDREG=0x8E; // SET BLACK GRAY 1/2
LCDREG=0xFF;
LCDREG=0x8F; // SET BLACK GRAY 3/4
LCDREG=0xFF;
/********power control *******/
LCDREG=0x2C; // ;internal voltage convertor circuit is on
Delayms(5);
LCDREG=0x2E; // ;internal voltage regulator circuit is on
Delayms(5);
LCDREG=0x2F; // ;internal voltage follower circuit is on
Delayms(5);
LCDREG=0xaf; //display on
CLR_Screen();
}
void display_Address_initial_set()
{
LCDREG=0x40; //set display line
LCDREG=0x10; //set display line
LCDREG=0x10; //----COLUMN ADDRESS HIGHER---//
LCDREG=0x00; //----COLUMN ADDRESS HIGHER---//
LCDREG=0x44; //set initial COM
LCDREG=0x1e; //set initial COM
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -