📄 show.c
字号:
#define set_E1 P6OUT|=BIT7
#define cls_E1 P6OUT&=~BIT7
#define set_E2 P6OUT|=BIT6
#define cls_E2 P6OUT&=~BIT6
#define set_RW P6OUT|=BIT4
#define cls_RW P6OUT&=~BIT4
#define set_A0 P6OUT|=BIT5
#define cls_A0 P6OUT&=~BIT5
void w_com_1(unsigned char COM)
{
unsigned char flag;
flag=0;
cls_A0;
set_RW;
do
{
P2OUT=0xff;
set_E1;
P2DIR=0X00; //P5 INPUT
flag=P2IN;
P2DIR=0XFF; //P5 OUTPUT
cls_E1;
}while(flag&BIT7);
cls_RW;
P2OUT=COM;
set_E1;
cls_E1;
}
void w_com_2(unsigned char COM)
{
unsigned char flag;
flag=0;
cls_A0;
set_RW;
do
{
P2OUT=0xff;
set_E2;
P2DIR=0X00; //P5 INPUT
flag=P2IN;
P2DIR=0XFF; //P5 OUTPUT
cls_E2;
}while(flag&BIT7);
cls_RW;
P2OUT=COM;
set_E2;
cls_E2;
}
void w_data_1(char DAT)
{
unsigned char flag;
flag=0;
cls_A0;
set_RW;
do
{
P2OUT=0xff;
set_E1;
P2DIR=0X00; //P5 INPUT
flag=P2IN;
P2DIR=0XFF; //P5 OUTPUT
cls_E1;
}while(flag&BIT7);
set_A0;
cls_RW;
P2OUT=DAT;
set_E1;
cls_E1;
}
void w_data_2(char DAT)
{
unsigned char flag;
flag=0;
cls_A0;
set_RW;
do
{
P2OUT=0xff;
set_E2;
P2DIR=0X00; //P5 INPUT
flag=P2IN;
P2DIR=0XFF; //P5 OUTPUT
cls_E2;
}while(flag&BIT7);
set_A0;
cls_RW;
P2OUT=DAT;
set_E2;
cls_E2;
}
void init_lcd(void)
{
w_com_1(0xe2);
w_com_2(0xe2);
w_com_1(0xa4);
w_com_2(0xa4);
w_com_1(0xa9);
w_com_2(0xa9);
w_com_1(0xa0);
w_com_2(0xa0);
w_com_1(0xc0);
w_com_2(0xc0);
w_com_1(0xaf);
w_com_2(0xaf);
}
/* 清除LCD所有显示 */
void clear_lcd(void)
{
char pageadd;
char pagebits;
char COM;
char DAT;
for(pageadd=0;pageadd<4;pageadd++)
{
COM=pageadd|0xb8;
w_com_1(COM);
w_com_2(COM);
COM=0x00;
w_com_1(COM);
w_com_2(COM);
for(pagebits=0;pagebits<80;pagebits++)
{
DAT=0X00;
w_data_1(DAT);
w_data_2(DAT);
}
}
}
/* 以 16*16 点阵写入中文字符 */
/* STR:中文字符数组 SHOWPAGE:显示所在页数 SHOWCOL:显示所在列数*/
void WriteChinese(const unsigned char STR[32],unsigned char SHOWPAGE,unsigned char SHOWCOL)
{
char right;
char i,k;
char COM,DAT;
char col;
//** 用于显能模块 **
if(SHOWPAGE==0)
SHOWPAGE=2;
else
SHOWPAGE=0;
//************************
for (k=0;k<2;k++)
{
COM=SHOWPAGE&0x03;
COM=COM|0xb8;
w_com_1(COM);
w_com_2(COM);
if(SHOWCOL>=0x3d)
{
right=1;
col=SHOWCOL-0x3d;
COM=col;
w_com_2(COM);
}
else
{
right=0;
COM=SHOWCOL;
w_com_1(COM);
}
col=SHOWCOL;
for(i=0;i<16;i++)
{
DAT=STR[i+k*16];
if (right) w_data_2(DAT);
else w_data_1(DAT);
/*col=SHOWCOL;*/
col++;
if (col==0x3d&&(!right))
{
if (!right)
{
col=0x00;
COM=0X00;
w_com_2(COM);
right=1;
}
else continue;
}
}
col++;
right=0;
SHOWPAGE++;
}
}
/*显示单个数字*/
/* num:单个数字 page:页 col:列 */
void show_num(const unsigned char num,unsigned char page,unsigned char col)
{
switch (num)
{
case 0:WriteChinese(n0,page,col) ;break;
case 1:WriteChinese(n1,page,col) ;break;
case 2:WriteChinese(n2,page,col) ;break;
case 3:WriteChinese(n3,page,col) ;break;
case 4:WriteChinese(n4,page,col) ;break;
case 5:WriteChinese(n5,page,col) ;break;
case 6:WriteChinese(n6,page,col) ;break;
case 7:WriteChinese(n7,page,col) ;break;
case 8:WriteChinese(n8,page,col) ;break;
case 9:WriteChinese(n9,page,col) ;break;
}
}
void show_vol0(unsigned int num)
{
char g,s,b,q;
if(num>9999) num=9999;
g=num%10;
s=(num%100)/10;
b=(num%1000)/100;
q=(num%10000)/1000;
show_num(g,0,106);
show_num(s,0,92);
show_num(b,0,71);
if(num>=1000)
show_num(q,0,58);
else
WriteChinese(space,0,58);
}
void show_vol21(unsigned int num)
{
char g,s,b;
g=num%10;
s=(num%100)/10;
b=(num%1000)/100;
if(num>=100)
show_num(b,2,0);
else
WriteChinese(space,2,0);
show_num(s,2,12);
show_num(g,2,30);
}
void show_vol22(unsigned int num)
{
char g,s,b;
g=num%10;
s=(num%100)/10;
b=(num%1000)/100;
if(num>=100)
show_num(b,2,66);
else
WriteChinese(space,2,66);
show_num(s,2,78);
show_num(g,2,96);
}
void show_vol3(unsigned long num1,unsigned long num2)
{
char g,s,b,q;
WriteChinese(space,0,16);
WriteChinese(space,0,64);
WriteChinese(space,0,80);
WriteChinese(space,0,96);
WriteChinese(space,0,112);
WriteChinese(space,2,0);
WriteChinese(pin,0,0);
WriteChinese(lv,0,32);
WriteChinese(mh,0,48);
WriteChinese(dot,2,54);
WriteChinese(mhz,2,106);
g=num1%10;
s=(num1%100)/10;
b=(num1%1000)/100;
show_num(b,2,0);
show_num(s,2,12);
show_num(g,2,26);
g=num2%10;
s=(num2%100)/10;
b=(num2%1000)/100;
q=(num2%10000)/1000;
show_num(q,2,40);
show_num(b,2,62);
show_num(s,2,76);
show_num(g,2,90);
}
void show_cm(void)
{
WriteChinese(B,0,16);
WriteChinese(G,0,32);
WriteChinese(n4l,0,50);
WriteChinese(S,0,68);
WriteChinese(F,0,86);
WriteChinese(Cc,0,102);
WriteChinese(zu,2,5);
WriteChinese(bo,2,21);
WriteChinese(gon,2,37);
WriteChinese(lv,2,53);
WriteChinese(pin,2,69);
WriteChinese(lv,2,85);
WriteChinese(biao,2,101);
}
void show_face0(void) //测驻波 face
{
clear_lcd();
WriteChinese(zu,0,0);
WriteChinese(bo,0,16);
WriteChinese(bi,0,32);
WriteChinese(mh,0,48);
WriteChinese(dot,0,85);
WriteChinese(dot,2,26);
WriteChinese(dot,2,92);
WriteChinese(W,2,46);
WriteChinese(W,2,112);
WriteChinese(pie,2,58);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -