⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcm12864.c

📁 手持终端方案
💻 C
📖 第 1 页 / 共 5 页
字号:
  ,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 + -