📄 lcm12864.c
字号:
,0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x22, 0x24, 0x20, 0xA0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00};
/* [ 定 ] 字体:楷体_GB2312 16*16点阵 编码3 */
unsigned char code DING[32]={
0x00, 0x10, 0x08, 0x07, 0x04, 0x08, 0x0F, 0x11, 0x11, 0x21, 0x20, 0x60, 0x60, 0x20, 0x20, 0x00
,0x00, 0x20, 0x38, 0x10, 0x50, 0x50, 0xCA, 0x2C, 0x28, 0x28, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00};
/* [ 跳 ] 字体:楷体_GB2312 16*16点阵 编码3 */
unsigned char code TIAO[32]={
0x10, 0x0F, 0x08, 0x07, 0x04, 0x12, 0x0A, 0x05, 0x03, 0x00, 0x0F, 0x10, 0x11, 0x10, 0x1C, 0x00
,0x00, 0x00, 0x38, 0xE4, 0xA4, 0x9C, 0x20, 0x40, 0xFC, 0x00, 0xFE, 0xA0, 0x10, 0x00, 0x00, 0x00};
/* [ 远 ] 字体:楷体_GB2312 16*16点阵 编码3 */
unsigned char code YUAN[32]={
0x08, 0x08, 0x0B, 0x0C, 0x08, 0x0A, 0x09, 0x10, 0x10, 0x11, 0x32, 0x32, 0x13, 0x10, 0x10, 0x00
,0x40, 0x40, 0x42, 0xCC, 0x00, 0x20, 0x24, 0xE4, 0x14, 0xF6, 0x12, 0x10, 0x90, 0x00, 0x00, 0x00};
/* [ 仰 ] 字体:楷体_GB2312 16*16点阵 编码3 */
unsigned char code YANG[32]={
0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x3F, 0x00, 0x01, 0x01, 0x00, 0x00
,0x80, 0x40, 0x20, 0xF8, 0x06, 0x00, 0xF0, 0x08, 0x86, 0x00, 0xF0, 0x08, 0x08, 0xF8, 0x00, 0x00};
/* [ 卧 ] 字体:楷体_GB2312 16*16点阵 编码3 */
unsigned char code WO1[32]={
0x00, 0x1F, 0x11, 0x09, 0x0F, 0x08, 0x08, 0x08, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
,0x00, 0xFC, 0x24, 0x24, 0x3C, 0xA2, 0xE2, 0x00, 0x00, 0xFF, 0x00, 0x20, 0x40, 0xC0, 0x00, 0x00};
/* [ 起 ] 字体:楷体_GB2312 16*16点阵 编码3 */
unsigned char code QI2[32]={
0x10, 0x08, 0x07, 0x04, 0x07, 0x09, 0x09, 0x10, 0x13, 0x24, 0x24, 0x24, 0x24, 0x23, 0x20, 0x00
,0x80, 0x80, 0x90, 0x90, 0xFF, 0x48, 0x48, 0x00, 0xC8, 0x48, 0x48, 0x38, 0x00, 0x00, 0x00, 0x00};
/* [ 反 ] 字体:楷体_GB2312 16*16点阵 编码3 */
unsigned char code FAN[32]={
0x20, 0x10, 0x0C, 0x23, 0x20, 0x11, 0x0A, 0x04, 0x06, 0x09, 0x10, 0x30, 0x20, 0x20, 0x20, 0x00
,0x00, 0x00, 0x00, 0xF8, 0x48, 0x48, 0x48, 0x44, 0x24, 0xE6, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00};
/* [ 映 ] 字体:楷体_GB2312 16*16点阵 编码3 */
unsigned char code YING[32]={
0x00, 0x0F, 0x04, 0x04, 0x2F, 0x21, 0x11, 0x0D, 0x03, 0x05, 0x08, 0x10, 0x30, 0x20, 0x20, 0x00
,0x00, 0xF0, 0x88, 0x88, 0xF8, 0x00, 0xE0, 0x20, 0xFF, 0x10, 0x90, 0xF0, 0x80, 0x80, 0x00, 0x00};
/* [ 时 ] 字体:楷体_GB2312 16*16点阵 编码3 */
unsigned char code SHI2[32]={
0x00, 0x0F, 0x04, 0x04, 0x0F, 0x00, 0x00, 0x01, 0x10, 0x20, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00
,0x00, 0xF8, 0x48, 0x44, 0xFC, 0x00, 0xA0, 0x20, 0x20, 0x20, 0xFE, 0x10, 0x10, 0x10, 0x00, 0x00};
/* [ 俯 ] 字体:楷体_GB2312 16*16点阵 编码3 */
unsigned char code FU[32]={
0x00, 0x00, 0x00, 0x1F, 0x08, 0x06, 0x01, 0x1F, 0x00, 0x02, 0x24, 0x3F, 0x00, 0x00, 0x00, 0x00
,0x80, 0x40, 0x20, 0xF8, 0x06, 0x00, 0xF0, 0x88, 0x69, 0x8A, 0x84, 0xF4, 0x44, 0x40, 0x40, 0x00};
/* [ 撑 ] 字体:楷体_GB2312 16*16点阵 编码3 */
unsigned char code CHENG[32]={
0x04, 0x02, 0x09, 0x1F, 0x00, 0x08, 0x08, 0x09, 0x25, 0x7F, 0x06, 0x04, 0x04, 0x04, 0x00, 0x00
,0x00, 0x20, 0x20, 0xFE, 0x90, 0x00, 0x30, 0x0C, 0x68, 0x5F, 0xF8, 0x8C, 0x0A, 0x18, 0x00, 0x00};
/* [ 纵 ] 字体:楷体_GB2312 16*16点阵 编码3 */
unsigned char code ZONG[32]={
0x10, 0x10, 0x0B, 0x0A, 0x15, 0x0C, 0x03, 0x20, 0x13, 0x0C, 0x03, 0x02, 0x04, 0x18, 0x10, 0x00
,0x00, 0x60, 0x58, 0xC6, 0x30, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x80, 0x7C, 0x00, 0x00, 0x00, 0x00};
/* [ 稳 ] 字体:楷体_GB2312 16*16点阵 编码3 */
unsigned char code WEN[32]={
0x04, 0x02, 0x01, 0x3F, 0x00, 0x19, 0x00, 0x0A, 0x12, 0x26, 0x29, 0x21, 0x30, 0x24, 0x08, 0x00
,0x40, 0x48, 0x48, 0xFC, 0xA4, 0x22, 0x00, 0xB0, 0xAC, 0xA7, 0x54, 0x1C, 0xF0, 0x00, 0x00, 0x00};
/* [ 性 ] 字体:楷体_GB2312 16*16点阵 编码3 */
unsigned char code XING[32]={
0x03, 0x01, 0x00, 0x3F, 0x00, 0x11, 0x10, 0x12, 0x12, 0x12, 0x0F, 0x09, 0x09, 0x08, 0x08, 0x00
,0x00, 0xC0, 0x00, 0xFE, 0x20, 0x40, 0x80, 0x70, 0x40, 0x40, 0xFE, 0x20, 0x20, 0x20, 0x00, 0x00};
/* [ 背 ] 字体:楷体_GB2312 16*16点阵 编码3 */
unsigned char code BEI4[32]={
0x00, 0x00, 0x00, 0x00, 0x7F, 0x0A, 0x0A, 0x0A, 0x20, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
,0x00, 0x40, 0x48, 0x48, 0x28, 0xBE, 0x80, 0x80, 0x9F, 0xA8, 0x24, 0x26, 0x20, 0x18, 0x00, 0x00};
/* [ 无 ] 字体:楷体_GB2312 16*16点阵 编码3 */
unsigned char code WU2[32]={
0x20, 0x20, 0x10, 0x08, 0x06, 0x01, 0x00, 0x0F, 0x10, 0x20, 0x20, 0x20, 0x20, 0x1C, 0x00, 0x00
,0x00, 0x00, 0x40, 0x40, 0x48, 0xC8, 0x78, 0xA4, 0x24, 0x24, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00};
void display_Cnum(uchar col,uchar *p,uchar page);
void lcm12864_int(void);
void clear_lcd(void);
void write_com(uchar a);
void write_dat(uchar a);
void display_bmp(uchar ln,uchar col);
void delay(uchar t);
void display_char(uchar col,uchar *p,uchar page);
void display_Fchar(uchar col,uchar *p,uchar page);
void display_char(uchar col,uchar *p,uchar page);
void display_Fnum(uchar col,uchar *p,uchar page);
void display_num(uchar col,uchar *P,uchar page);
uchar getkey(void);
void BCD_HEX(void);
void HEX_BCD(unsigned long dd);
uchar IC_read(uint address); //从24c02的地址address中读取一个字节数据
void IC_write(uint address,uchar info); //向24c02的address地址中写入一字节数据info
void delay1(uchar x); //延时2402
void nop(); //延时
void start(); //24c02起始位
void stop(); //24c02停止位
void writex(uchar j); //写卡
uchar readx(); //读卡
void clock(); //24c02 时钟
uchar BCD[13];//学号缓存区
uchar COM_read(void);
void COM_send(void);
void main(void)
{
uchar a,b,i,key,disp_ln,ln,page,temp,temp1,disp_page,yushu;
uint save,bb,cc;
P0=0xff;
P1=0xff;
P2=0xff;
P3=0xff;
xzxh_F=0;//选择学号标志位
a=IC_read(0xfffe);
if(a==0xff)
{
IC_write(0xfffe,0x00);
delay(10);
IC_write(0xffff,0x00);//存储器初始化
delay(10);
}
dispbmp:
lcm12864_int();
LCD_LED=1;
display_bmp(54,4);
//串口初始化
EA=0;
TMOD = 0x21;
TH0=0;TL0=0;
SCON = 0x50;
TL1 = 0xfd;
TH1 = 0xfd;
PCON = 0x00;
TR1 = 1;
///////////////
//COM_read();
//串口初始化
//************************同上位机通讯***********************************//
pclop:
bb=0;
while((RI==0)&&(bb!=10000))
bb++;
if(bb==10000)
{
if(getkey()!=0xff)
goto next;
goto pclop;
}
RI=0;
if(SBUF==0xaa)
{
combuf[0]=SBUF;
for(i=1;i<4;i++)
{
bb=0;
while((RI==0)&&(bb!=255))
bb++;
if(bb==255)
goto pclop;
RI=0;
combuf[i]=SBUF;
}
for(i=4;i<(4+combuf[3]);i++)
{
bb=0;
while((RI==0)&&(bb!=255))
bb++;
if(bb==255)
goto pclop;
RI=0;
combuf[i]=SBUF;
}
}
else
goto pclop;
//else
//{
if(combuf[4]!=0xcf)
goto pclop;
switch(combuf[1])
{
case 0xab://读当前测试数据
save=0;
a=IC_read(0xfffe);
i=IC_read(0xffff);
save=save+a*256;
save=save+i;
if(save==0)
{
combuf[0]=0xcc;
combuf[1]=0xab;
combuf[2]=0x00;
combuf[3]=0x04;
combuf[6]=0xdd;
combuf[4]=0xcf;//项目代码C0---Cf数据采集器
combuf[5]=00;//项目地址0-5
combuf[7]=combuf[0]^combuf[1]^combuf[2]^combuf[3]^combuf[4]^combuf[5]^combuf[6];
for(temp=0;temp<8;temp++)
{
SBUF=combuf[temp];
while(TI==0);
TI=0;
}
}
else
{
save--;
combuf[0]=0xcc;
combuf[1]=0x00;
combuf[2]=0x00;
combuf[3]=40;
combuf[4]=0xcf;
combuf[5]=0;
combuf[42]=0xdd;//项目代码C0---Cf数据采集器
for(i=6;i<42;i++)
combuf[i]=IC_read(save*36+(i-6));
//c=combuf[0];
temp=4+combuf[3];//整条指令长度
for(i=1;i<(temp-1);i++)
combuf[0]^=combuf[i];//校验和
combuf[temp-1]=combuf[0];
combuf[0]=0xcc;
for(i=0;i<temp;i++)
{
SBUF=combuf[i];
while(TI==0);
TI=0;
}
}
break;
case 0xbe://删除当前测试数据
for(i=0;i<36;i++)
{
IC_write((save*36+i),0xff);
delay(7);
}
a=save>>8;
i=save&0x00ff;
IC_write(0xfffe,a);
delay(10);
IC_write(0xffff,i);
delay(10);
combuf[0]=0xcc;
combuf[1]=0x00;
combuf[2]=0x00;
combuf[3]=0x04;
combuf[6]=0xdd;
combuf[4]=0xcf;//项目代码C0---Cf数据采集器
combuf[5]=00;//项目地址0-5
combuf[7]=combuf[0]^combuf[1]^combuf[2]^combuf[3]^combuf[4]^combuf[5]^combuf[6];
for(temp=0;temp<8;temp++)
{
SBUF=combuf[temp];
while(TI==0);
TI=0;
}
break;
//}
}
goto pclop;
//**********************************************************//
//key=0xff;
//while(getkey()==0xff);
next:
delay(255);
while(getkey()!=0xff);
//delay(255);
dispm1:
clear_lcd();
disp_ln=1;
write_com(0xc0);//设置显示起始行
menulop:
display_char(0,ZI,0);
display_char(16,DONG,0);
display_char(32,CE,0);
display_char(48,SHI5,0);//自动测试
display_char(0,SHOU,2);
display_char(16,DONG,2);
display_char(32,SHU1,2);
display_char(48,RU,2);//手动输入
display_char(0,SHU,4);
display_char(16,ZHI,4);//
display_char(32,CHA8,4);
display_char(48,XUN,4);//数拘查询
display_char(0,CUN,6);
display_char(16,CHU,6);
display_char(32,QI,6);//存储器
sdsr_F=0;
xzxh_F=0;//选择学号标志位
switch(disp_ln)
{
case 1:
display_Fchar(0,ZI,0);
display_Fchar(16,DONG,0);
display_Fchar(32,CE,0);
display_Fchar(48,SHI5,0);//自动测试
break;
case 2:
display_Fchar(0,SHOU,2);
display_Fchar(16,DONG,2);
display_Fchar(32,SHU1,2);
display_Fchar(48,RU,2);//手动输入
break;
case 3:
display_Fchar(0,SHU,4);
display_Fchar(16,ZHI,4);//
display_Fchar(32,CHA8,4);
display_Fchar(48,XUN,4);//数拘查询
break;
case 4:
display_Fchar(0,CUN,6);
display_Fchar(16,CHU,6);
display_Fchar(32,QI,6);//存储器
break;
}
gkey: key=getkey();
switch(key)
{
case DOWN:
disp_ln=disp_ln+1;
if(disp_ln>4)
disp_ln=1;
delay(255);
goto menulop;
case UP:
disp_ln=disp_ln-1;
if(disp_ln==0)
disp_ln=4;
delay(255);
goto menulop;
case K_EN:
while(getkey()!=0xff);
delay(255);
goto enter;
case K_CAL:
while(getkey()!=0xff);
delay(255);
goto dispbmp;
case 0x00:
while(getkey()!=0xff);
delay(255);
LCD_LED=~LCD_LED;
goto gkey;
}
goto gkey;
enter:
switch(disp_ln)
{
case 1://自动测试选项
//
clear_lcd();
write_com(0xc0);//设置显示起始行
disp_ln=1;
display_char(16,TONG,3);
display_char(32,XUN4,3);
display_char(48,ZHONG,3);
display_Cnum(64,dian,3);
display_Cnum(72,dian,3);//显示 通讯中
display_Cnum(80,dian,3);
display_Cnum(88,dian,3);
display_Cnum(96,dian,3);
//自动扫描设备,得到项目代码
for(i=0;i<15;i++)
combuf[i]=0;//清空缓存
for(i=0;i<6;i++)
{
for(key=0;key<13;key++)
{
combuf[0]=0xaa;
combuf[1]=0xaf;
combuf[2]=0x00;
combuf[3]=0x04;
combuf[6]=0xbb;
switch(key)
{
case 0:
combuf[4]=0xc0;//项目代码C0---CC身高、体重
break;
case 1:
combuf[4]=0xc1;//项目代码C0---CC握力
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -