📄 lcdsub.c
字号:
#include "f2407_c.h"
#include "Delay.h"
#include "zimo.h"
#include "global.h"
#include "lcdsub.h"
#include "memcpy.h"
void LCD_INITIAL(void)
{ SUBMEAU2FLAG=0x0000;/*the second submeau2 flag*/
SUBMEAU3FLAG=0x0000;
SUBMEAU4FLAG=0x0000;
MAINMEAUFLAG=0x0000;
LCD_ORDER('A',0xFF3F);
LCD_ORDER('B',0xFF3F);
LCD_ORDER('C',0xFF3F);
}
void LCD_BUSY(char LCD_PART)
{ int i=1;
switch(LCD_PART)
{ case'A':*PBDATDIR=*PBDATDIR&0x0FF;
*PADATDIR=0xFF18;
while(i)
{ Delay24uS();
i=*PBDATDIR&0x0080;
}
*PADATDIR=0xFF00;
Delay12uS();
break;
case'B':
*PBDATDIR=*PBDATDIR&0x0FF;
*PADATDIR=0xFF98;
while(i)
{ Delay24uS();
i=*PBDATDIR&0x0080;
}
*PADATDIR=0xFF00;
Delay12uS();
break;
case'C':
*PBDATDIR=*PBDATDIR&0x0FF;
*PADATDIR=0xFF58;
while(i)
{ Delay24uS();
i=*PBDATDIR&0x0080;
}
*PADATDIR=0xFF00;
Delay12uS();
break;
default:break;
}
}
void LCD_ORDER(char LCD_PART,int command)
{ int i=command;
switch(LCD_PART)
{ case'A':
*PADATDIR=0xFF08;
Delay24uS();
*PBDATDIR=i;
Delay24uS();
*PADATDIR=0xFF00;
Delay24uS();
LCD_BUSY('A');
break;
case'B':
*PADATDIR=0xFF88;
Delay24uS();
*PBDATDIR=i;
Delay24uS();
*PADATDIR=0xFF80;
Delay24uS();
LCD_BUSY('B');
break;
case'C':
*PADATDIR=0xFF48;
Delay24uS();
*PBDATDIR=i;
Delay24uS();
*PADATDIR=0xFF40;
Delay24uS();
LCD_BUSY('C');
break;
default:break;
}
}
void LCD_WRITE(char LCD_PART,int LCD_WORD)
{ int i=LCD_WORD;
switch(LCD_PART)
{ case 'A':
*PADATDIR=0xFF28;
Delay12uS();
*PBDATDIR=i;
Delay24uS();
Delay24uS();
*PADATDIR=0xFF20;
Delay24uS();
Delay24uS();
LCD_BUSY('A');
LCD_ORDER('A',0xFF3F);
break;
case 'B':
*PADATDIR=0xFFA8;
Delay12uS();
*PBDATDIR=i;
Delay24uS();
Delay24uS();
*PADATDIR=0xFFA0;
Delay24uS();
Delay24uS();
LCD_BUSY('B');
LCD_ORDER('B',0xFF3F);
break;
case 'C':
*PADATDIR=0xFF68;
Delay12uS();
*PBDATDIR=i;
Delay24uS();
Delay24uS();
*PADATDIR=0xFF60;
Delay24uS();
Delay24uS();
LCD_BUSY('C');
LCD_ORDER('C',0xFF3F);
break;
default: break;
}
}
void LCD_1616(char LCD_PART,const int *HANZI_START,int LCD_PAGE,int LCD_COLUMN)
{
int hanzi[16];
pdmemcpy((void *)hanzi, (void *)HANZI_START, 16);
switch(LCD_PART)
{ case'A':
LCD_ORDER('A',LCD_PAGE);
LCD_ORDER('A',LCD_COLUMN);
LCD_HANZI('A',hanzi);
LCD_PAGE=LCD_PAGE-1;
LCD_ORDER('A',LCD_PAGE);
LCD_ORDER('A',LCD_COLUMN);
LCD_HANZI('A',hanzi+8);
break;
case'B':
LCD_ORDER('B',LCD_PAGE);
LCD_ORDER('B',LCD_COLUMN);
LCD_HANZI('B',hanzi);
LCD_PAGE=LCD_PAGE-1;
LCD_ORDER('B',LCD_PAGE);
LCD_ORDER('B',LCD_COLUMN);
LCD_HANZI('B',hanzi+8);
break;
case'C':
LCD_ORDER('C',LCD_PAGE);
LCD_ORDER('C',LCD_COLUMN);
LCD_HANZI('C',hanzi);
LCD_PAGE=LCD_PAGE-1;
LCD_ORDER('C',LCD_PAGE);
LCD_ORDER('C',LCD_COLUMN);
LCD_HANZI('C',hanzi+8);
break;
default:break;
}
}
void LCD_1616CON(char LCD_PART,const int *HANZI_START,int LCD_PAGE,int LCD_COLUMN)
{
switch(LCD_PART)
{ case'A':
LCD_ORDER('A',LCD_PAGE);
LCD_ORDER('A',LCD_COLUMN);
LCD_HANZI('A',HANZI_START);
LCD_PAGE=LCD_PAGE-1;
LCD_ORDER('A',LCD_PAGE);
LCD_ORDER('A',LCD_COLUMN);
LCD_HANZI('A',HANZI_START+8);
break;
case'B':
LCD_ORDER('B',LCD_PAGE);
LCD_ORDER('B',LCD_COLUMN);
LCD_HANZI('B',HANZI_START);
LCD_PAGE=LCD_PAGE-1;
LCD_ORDER('B',LCD_PAGE);
LCD_ORDER('B',LCD_COLUMN);
LCD_HANZI('B',HANZI_START+8);
break;
case'C':
LCD_ORDER('C',LCD_PAGE);
LCD_ORDER('C',LCD_COLUMN);
LCD_HANZI('C',HANZI_START);
LCD_PAGE=LCD_PAGE-1;
LCD_ORDER('C',LCD_PAGE);
LCD_ORDER('C',LCD_COLUMN);
LCD_HANZI('C',HANZI_START+8);
break;
default:break;
}
}
void LCD_NUM88(char LCD_PART,const int *HANZI_START,int LCD_PAGE,int LCD_COLUMN)
{
int hanzi[8];
pdmemcpy((void *)hanzi, (void *)HANZI_START, 8);
switch(LCD_PART)
{ case'A':
LCD_ORDER('A',LCD_PAGE);
LCD_ORDER('A',LCD_COLUMN);
LCD_NUMHANZI('A',hanzi);
LCD_PAGE=LCD_PAGE-1;
LCD_ORDER('A',LCD_PAGE);
LCD_ORDER('A',LCD_COLUMN);
LCD_NUMHANZI('A',hanzi+4);
break;
case'B':
LCD_ORDER('B',LCD_PAGE);
LCD_ORDER('B',LCD_COLUMN);
LCD_NUMHANZI('B',hanzi);
LCD_PAGE=LCD_PAGE-1;
LCD_ORDER('B',LCD_PAGE);
LCD_ORDER('B',LCD_COLUMN);
LCD_NUMHANZI('B',hanzi+4);
break;
case'C':
LCD_ORDER('C',LCD_PAGE);
LCD_ORDER('C',LCD_COLUMN);
LCD_NUMHANZI('C',hanzi);
LCD_PAGE=LCD_PAGE-1;
LCD_ORDER('C',LCD_PAGE);
LCD_ORDER('C',LCD_COLUMN);
LCD_NUMHANZI('C',hanzi+4);
break;
default:break;
}
}
void HAND_PINNUM(int pin_num) /******************/
{ int one_pin,ten_pin,hundred_pin;
hundred_pin=pin_num/100;
ten_pin=(pin_num-100*hundred_pin)/10;
one_pin=pin_num%10;
LCD_NUM88('B',HANZI_NUMBER+hundred_pin*8,0xFFBD,0xFF78);
LCD_NUM88('C',HANZI_NUMBER+ten_pin*8,0xFFBD,0xFF40);
LCD_NUM88('C',HANZI_NUMBER+one_pin*8,0xFFBD,0xFF48);
}
void LCD_GLOVETYPE(argument1,argument2,argument3,argument4,argument5,argument6,argument7,argument8)
{
int one_pin,ten_pin;
ten_pin=argument1/10;
one_pin=argument1%10;
LCD_NUM88('A',HANZI_NUMBER+ten_pin*8,0xFFBB,0xFF58);
LCD_NUM88('A',HANZI_NUMBER+one_pin*8,0xFFBB,0xFF60);
ten_pin=argument2/10;
one_pin=argument2%10;
LCD_NUM88('B',HANZI_NUMBER+ten_pin*8,0xFFBB,0xFF58);
LCD_NUM88('B',HANZI_NUMBER+one_pin*8,0xFFBB,0xFF60);
ten_pin=argument3/10;
one_pin=argument3%10;
LCD_NUM88('C',HANZI_NUMBER+ten_pin*8,0xFFBB,0xFF58);
LCD_NUM88('C',HANZI_NUMBER+one_pin*8,0xFFBB,0xFF60);
ten_pin=argument4/10;
one_pin=argument4%10;
LCD_NUM88('A',HANZI_NUMBER+ten_pin*8,0xFFBD,0xFF58);
LCD_NUM88('A',HANZI_NUMBER+one_pin*8,0xFFBD,0xFF60);
ten_pin=argument5/10;
one_pin=argument5%10;
LCD_NUM88('B',HANZI_NUMBER+ten_pin*8,0xFFBD,0xFF58);
LCD_NUM88('B',HANZI_NUMBER+one_pin*8,0xFFBD,0xFF60);
ten_pin=argument6/10;
one_pin=argument6%10;
LCD_NUM88('C',HANZI_NUMBER+ten_pin*8,0xFFBD,0xFF58);
LCD_NUM88('C',HANZI_NUMBER+one_pin*8,0xFFBD,0xFF60);
ten_pin=argument7/10;
one_pin=argument7%10;
LCD_NUM88('A',HANZI_NUMBER+ten_pin*8,0xFFBF,0xFF58);
LCD_NUM88('A',HANZI_NUMBER+one_pin*8,0xFFBF,0xFF60);
ten_pin=argument8/10;
one_pin=argument8%10;
LCD_NUM88('B',HANZI_NUMBER+ten_pin*8,0xFFBF,0xFF58);
LCD_NUM88('B',HANZI_NUMBER+one_pin*8,0xFFBF,0xFF60);
}
void LCD_HANZI(char LCD_PART,const int *HANZI_ADD)
{
/*int hanzi[32];*/
int i;
int k;
int j;
/*pdmemcpy((void *)hanzi, (void *)HANZI_ADD, 32);*/
switch(LCD_PART)
{ case'A':
for(i=0;i<8;i++)
{ j=*(HANZI_ADD+i);
k=(j>>8)|0xFF00;
LCD_WRITE('A',k);
k=j|0xFF00;
LCD_WRITE('A',k);
}
break;
case'B':
for(i=0;i<8;i++)
{ j=*(HANZI_ADD+i);
k=(j>>8)|0xFF00;
LCD_WRITE('B',k);
k=j|0xFF00;
LCD_WRITE('B',k);
}
break;
case'C':
for(i=0;i<8;i++)
{ j=*(HANZI_ADD+i);
k=(j>>8)|0xFF00;
LCD_WRITE('C',k);
k=j|0xFF00;
LCD_WRITE('C',k);
}
break;
default:break;
}
}
void LCD_NUMHANZI(char LCD_PART,const int *HANZI_ADD)
{
int i;
int k;
int j;
switch(LCD_PART)
{ case'A':
for(i=0;i<4;i++)
{ j=*(HANZI_ADD+i);
k=(j>>8)|0xFF00;
LCD_WRITE('A',k);
k=j|0xFF00;
LCD_WRITE('A',k);
}
break;
case'B':
for(i=0;i<4;i++)
{ j=*(HANZI_ADD+i);
k=(j>>8)|0xFF00;
LCD_WRITE('B',k);
k=j|0xFF00;
LCD_WRITE('B',k);
}
break;
case'C':
for(i=0;i<4;i++)
{ j=*(HANZI_ADD+i);
k=(j>>8)|0xFF00;
LCD_WRITE('C',k);
k=j|0xFF00;
LCD_WRITE('C',k);
}
break;
default:break;
}
}
void LCD_HANZIHALF(char LCD_PART,const int *HANZI_ADD)
{
int hanzi[32];
int i;
int j;
int k;
pdmemcpy((void *)hanzi, (void *)HANZI_ADD, 32);
switch(LCD_PART)
{ case'A':
for(i=0;i<4;i++)
{ j=*(hanzi+i);
k=(j>>8)|0xFF00;
LCD_WRITE('A',k);
k=j|0xFF00;
LCD_WRITE('A',k);
}
break;
case'B':
for(i=0;i<4;i++)
{ j=*(hanzi+i);
k=(j>>8)|0xFF00;
LCD_WRITE('B',k);
k=j|0xFF00;
LCD_WRITE('B',k);
}
break;
case'C':
for(i=0;i<4;i++)
{ j=*(hanzi+i);
k=(j>>8)|0xFF00;
LCD_WRITE('C',k);
k=j|0xFF00;
LCD_WRITE('C',k);
}
break;
default:break;
}
}
void LCD_HANZIHALFCON(char LCD_PART,const int *HANZI_ADD)
{
int i;
int j;
int k;
switch(LCD_PART)
{ case'A':
for(i=0;i<4;i++)
{ j=*(HANZI_ADD+i);
k=(j>>8)|0xFF00;
LCD_WRITE('A',k);
k=j|0xFF00;
LCD_WRITE('A',k);
}
break;
case'B':
for(i=0;i<4;i++)
{ j=*(HANZI_ADD+i);
k=(j>>8)|0xFF00;
LCD_WRITE('B',k);
k=j|0xFF00;
LCD_WRITE('B',k);
}
break;
case'C':
for(i=0;i<4;i++)
{ j=*(HANZI_ADD+i);
k=(j>>8)|0xFF00;
LCD_WRITE('C',k);
k=j|0xFF00;
LCD_WRITE('C',k);
}
break;
default:break;
}
}
int *CON_HANZI(int *HANZI_CON,const int *SOURCE_ADD)
{
int i,j;
int hanzi_con[16];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -