📄 csygreen.c~rfc66464.tmp
字号:
Line_nums=6;
Col=8;
Line_str[4]='d';
Line_str[5]='B';
Disp1608();
strncpy(Line_str,Dsl.Remote_Line_Att,4);
Line=2;
Col=8;
Disp1608();
}
Line_str[0]=24;
Line=0;
Col=15;
Line_nums=1;
Disp1608();
Line_str[0]=25;
Line=3;
Disp1608();
}
void DisplayFive(void)
{
unsigned char i;
if(!Languageflag)
strncpy_P(Line_str,DisplayFourMenu,15);
else
strncpy_P(Line_str,DisplayFourMenuE,15);
Line=0;
Line_nums=15;
Col=0;
Disp1608();
Line_str[0]=24;
Line=0;
Col=15;
Line_nums=1;
Disp1608();
for(i=0;i<5;i++)
{
Line_str[3+i]=EE_RecordDown1[i];
Line_str[10+i]=EE_RecordUP1[i];
}
strncpy_P(Line_str,number,2);
Line_str[2]=' ';
Line_str[8]='K';
Line_str[9]='/';
Line_str[15]='K';
Line=1;
Line_nums=16;
Col=0;
Disp1608();
for(i=0;i<5;i++)
{
Line_str[3+i]=EE_RecordDown2[i];
Line_str[10+i]=EE_RecordUP2[i];
}
strncpy_P(Line_str,&number[2],2);
Line=2;
Disp1608();
for(i=0;i<5;i++)
{
Line_str[3+i]=EE_RecordDown3[i];
Line_str[10+i]=EE_RecordUP3[i];
}
strncpy_P(Line_str,&number[4],2);
Line=3;
Disp1608();
}
void DisplayFour(void)
{
if(!Languageflag)
strncpy_P(Line_str,DisplayFiveMenu,15);
else
strncpy_P(Line_str,DisplayFiveMenuE,15);
Line=0;
Line_nums=15;
Col=0;
Disp1608();
Line_str[0]=25;
Line=3;
Col=15;
Line_nums=1;
Disp1608();
Line_str[0]=24;
Line=0;
Disp1608();
Disp2();
}
void Disp2(void)
{
char i,j,k;
for(i=0;i<113;i++)
{
DrawDot(31,7+i);
DrawDot(48,7+i);
}
for(i=0;i<2;i++)
{
DrawLine(4+i,7);
DrawLine(4+i,119);
}
k=Battery;//*8;
for(i=0;i<2;i++)
{
for(j=0;j<k;j++)
DrawLine(4+i,7+j);
}
}
void DrawLine(unsigned char x,unsigned char y)
{
char CSY_addr;
IniLCD();
SET_CS1;
CLR_CS2;
CSY_addr=y;//;Y_address;
if(CSY_addr>63)//Y_address>63)
{
CSY_addr-=64;
SET_CS2;
CLR_CS1;
}
Read_BF();
DDRB=0xff;
CLR_RW;
CLR_RS;
PORTB=CSY_addr+0x40;
SET_E;
CLR_E;
Read_BF();
DDRB=0xff;
CLR_RW;
CLR_RS;
PORTB=x+0xb8;//X_address+0xb8;
SET_E;
CLR_E;
Read_BF();
CLR_RW;
SET_RS;
DDRB=0xff;
PORTB=0xff;
SET_E;
CLR_E;
}
void DrawDot(unsigned char x,unsigned char y)
{
char CSY_addr;
char dot[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
IniLCD();
SET_CS1;
CLR_CS2;
CSY_addr=y;//;Y_address;
if(CSY_addr>63)//Y_address>63)
{
CSY_addr-=64;
SET_CS2;
CLR_CS1;
}
Read_BF();
DDRB=0xff;
CLR_RW;
CLR_RS;
PORTB=CSY_addr+0x40;
SET_E;
CLR_E;
Read_BF();
DDRB=0xff;
CLR_RW;
CLR_RS;
PORTB=x/8+0xb8;//X_address+0xb8;
SET_E;
CLR_E;
Read_BF();
CLR_RW;
SET_RS;
DDRB=0xff;
PORTB=dot[x%8];
SET_E;
CLR_E;
}
void DelayTime(unsigned int Time)
{
unsigned int count,i;
for(i=0;i<Time;i++)
for(count=0;count<1730;count++);
}
void Initial(void)
{
unsigned int i=0;
WDTCR=(1<<4)|(1<<3);
WDTCR=0x00;
MCUCR=0;
for(i=0;i<10000;i++);
Clr_LCD();
PORTD&=0xdf;
Key();
if(Key_pressed)
{
Get_Keycode();
if(KeyCode==BG_KEY)
{
SetupLanguage();
}
}
PORTD|=0x03;
UBRRH=0x00;
UBRRL=5;
UCSRA=0x02;
UCSRB=0x18;
UCSRC=0x86;
TCCR1B=0x1a;
TCCR1A=2;
ICR1=15000;
TIMSK=0x04;
_SEI();
}
void DisplayInitial(void)
{
int i,j;
strncpy(Line_str,"VER 5.30",8);
Line_nums=8;
Line=0;
Col=0;
Disp1608();
if(Languageflag)
{
strncpy_P(Line_str,IniMenuE,16);
Line_nums=16;
Line=1;
Col=0;
Disp1608();
}
else
{
strncpy_P(Line_str,IniMenu,10);
Line_nums=10;
Line=1;
Col=3;
Disp1608();
}
for(i=0;i<1000;i++)
{
for(j=0;j<3000;j++);
}
Clr_LCD();
}
void Disp1608(void)
{
char i,k,m,n,Cur_Y,Y_address,X_address,CSY_addr;
unsigned int HZK_ptr;
Cur_Y=Col;
IniLCD();
for(i=0;i<Line_nums;i++)
{
if(Line_str[i]>=0x80)
{
HZK_ptr=(Line_str[i]&0x7f)*0x80+(Line_str[i+1]&0x7f);
HZK_ptr*=32;
for(m=0;m<2;m++)
{
Y_address=Cur_Y*8;
X_address=Line*2+m;
for(n=0;n<2;n++)
{
SET_CS1;
CLR_CS2;
Y_address+=n*8;
CSY_addr=Y_address;
if(Y_address>63)
{
CSY_addr-=64;
SET_CS2;
CLR_CS1;
}
Read_BF();
DDRB=0xff;
CLR_RW;
CLR_RS;
PORTB=CSY_addr+0x40;
SET_E;
CLR_E;
Read_BF();
DDRB=0xff;
CLR_RW;
CLR_RS;
PORTB=X_address+0xb8;
SET_E;
CLR_E;
for(k=0;k<8;k++)
{
Read_BF();
CLR_RW;
SET_RS;
DDRB=0xff;
if(M_flag==1)
PORTB=0xff-HZK[HZK_ptr];
else
PORTB=HZK[HZK_ptr];
SET_E;
CLR_E;
HZK_ptr++;
}
}
}
i++;Cur_Y++;
}
else
{
HZK_ptr=Line_str[i]*16;
for(m=0;m<2;m++)
{
Y_address=Cur_Y*8;
X_address=Line*2+m;
SET_CS1;
CLR_CS2;
if(Y_address>63)
{
Y_address-=64;
SET_CS2;
CLR_CS1;
}
Read_BF();
CLR_RW;
CLR_RS;
DDRB=0xff;
PORTB=Y_address+0x40;
SET_E;
CLR_E;
Read_BF();
CLR_RW;
CLR_RS;
DDRB=0xff;
PORTB=X_address+0xb8;
SET_E;
CLR_E;
for(k=0;k<8;k++)
{
Read_BF();
CLR_RW;
SET_RS;
DDRB=0xff;
if(M_flag==1)
PORTB=0xff-asc000[HZK_ptr];//+k+m*8];
else
PORTB=asc000[HZK_ptr];//+k+m*8];
SET_E;
CLR_E;
HZK_ptr++;
}
}
}
Cur_Y++;
}
M_flag=0;
}
void Read_BF(void)
{
unsigned char ch,ch1;
while(1)
{
CLR_E;
SET_RW;CLR_RS;//SET_CS1;CLR_CS2;
DDRB=0x00;
PORTB=0x00;
SET_E;
CLR_E;
ch=PINB;
ch1=ch&0x90;
if(ch1==0)
break;
}
}
void Clr_Row(char Row)
{
memcpy_P(Line_str,SPACE,16);
Col=0;Line=Row;
Line_nums=16;
CLR1608();
}
void CLR1608(void)
{
char i,m,j,X_address;
for(j=0;j<2;j++)
{
if(j==0)
{
SET_CS1;
CLR_CS2;
}
else
{
SET_CS2;
CLR_CS1;
}
for(m=0;m<2;m++)
{
X_address=Line*2+m;
Read_BF();
CLR_RW;
CLR_RS;
DDRB=0xff;
SET_E;
CLR_E;
Read_BF();
CLR_RW;
CLR_RS;
DDRB=0xff;
PORTB=X_address+0xb8;
SET_E;
CLR_E;
for(i=0;i<64;i++)
{
Read_BF();
CLR_RW;
SET_RS;
DDRB=0xff;
PORTB=0;
SET_E;
CLR_E;
}
}
}
}
void Clr_LCD(void)
{
char i;
for(i=0;i<4;i++)
Clr_Row(i);
}
void Clr_4Row(void)
{
char i;
for(i=1;i<4;i++)
Clr_Row(i);
}
void IniLCD(void)
{
SET_CS1;
CLR_CS2;
Read_BF();
DDRB=0xff;
PORTB=0x3f;
LCDCommand();
SET_CS2;
CLR_CS1;
Read_BF();
DDRB=0xff;
PORTB=0x3f;
LCDCommand();
SET_CS1 ;
CLR_CS2;
DDRB=0xff;
PORTB=0xc0;
LCDCommand();
SET_CS2;
CLR_CS1;
DDRB=0xff;
PORTB=0xc0;
LCDCommand();
}
void LCDCommand(void)
{
CLR_E;
CLR_RW;
CLR_RS;
SET_E;
CLR_E;
}
void Key(void)
{
unsigned int i;
char temp;
BackLight();
Key_pressed=0;
DDRA=0x0;
temp=PINA;
temp|=0xf5;
if(temp!=0xff)
{
for(i=0;i<100;i++);
temp=PINA;
temp|=0xf5;
if(temp!=0xff)
{
Key_pressed=1;
_CLI();
TimerOff=0;
_SEI();
}
}
}
void Get_Keycode(void)
{
KeyCode=0xff;
DDRA=0x00;
KeyCode=PINA|0xf5;
}
void KeyWaite(void)
{
while(1)
{
BackLight();
Get_Keycode();
if(KeyCode==0xff)
break;
}
}
void SetupLanguage(void)
{
char CurRow1;
CurRow1=CurRow;
Clr_LCD();
CurRow=Languageflag;
while(1)
{
SetupLanguageUpdate();
if(!Get_BackLightKey())
break;
}
while(1)
{
SetupLanguageUpdate();
Key();
if(Key_pressed)
{
Get_Keycode();
if(KeyCode==UP_KEY)
{
KeyWaite();
if(CurRow>0)
CurRow--;
}
else if(KeyCode==DOWN_KEY)
{
KeyWaite();
if(CurRow<1)
CurRow++;
}
}
if(Get_BackLightKey())
{
Languageflag=CurRow;
EE_Languageflag=CurRow;
break;
}
}
CurRow=CurRow1;
}
void SetupLanguageUpdate(void)
{
char i;
if(!Languageflag)
strncpy_P(Line_str,SetupLanguageMenu,16);
else
strncpy_P(Line_str,SetupLanguageMenuE,16);
Line_nums=16;
Col=0;
Line=0;
M_flag=1;
Disp1608();
for(i=0;i<2;i++)
{
strncpy_P(Line_str,&SetupLanguageMenu1[7*i],7);
if(CurRow==i)
M_flag=1;
Line_nums=7;
Col=4;
Line=2+i;
Disp1608();
if(CurRow==i)
strncpy_P(Line_str,&SetupDisplayMenu1[2],2);
else
strncpy_P(Line_str,SetupDisplayMenu1,2);
Line_nums=2;
Col=0;
Line=2+i;
Disp1608();
}
}
__interrupt void TIMER1VF_Handler(void)
{
DDRA&=0x7f;
PORTA&=0x7f;
ICR1=15000;
if(!(PINA&0x80))
{
if(TimerCount<100)
{
TimerCount++;
TimerOff++;
}
else
{
Synflag=1;
TimerOff=0;
TimerOffflag=0;
}
}
else
{
TimerOff++;
if(TimerOff>10000)
{
TimerOff=10001;
TimerOffflag=1;
}
TimerCount=0;
Synflag=0;
}
}
void ADCBattery(void)
{
ADCSRA|=0x40;
while(!(ADCSRA&0x10));
Battery=ADCH;
if(Battery<200)
{
Battery=0;
LowOffflag=1;
}
else if(Battery<210)//<6.8V Turn off
{
LowOffflag=1;
Battery-=200;
}
else if(Battery<220)//<7.0V Alarm
{
LowAlarmCount++;
Battery-=200;
}
else
{
Battery-=200;
LowAlarmCount=0;
}
if(LowAlarmCount>0x1fff)
{
LowAlarmCount=0;
BeeSpeak(10);
}
Battery=Battery*2+2;
if(Battery>87)//if(Battery>112)
Battery=112;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -