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

📄 ziku.c

📁 51单片机的GSM收发短信C程序
💻 C
字号:
/*************************************
文件名:ziku.c
功  能:处理编码转换和与字库相关的操作
*************************************/
#include <W77C32.h>
#include <absacc.h>
#include "hal.h"
#include "ziku.h"
#include "unicode.h"

//把unicode码转换为其在GB2312字库中的地址
ulong UNI2CBSP(uint hanzi)
{ulong abspad;
 uchar x,y;
 for(y=0;y<72;y++)
  {for(x=0;x<96;x++)
    {if(hanzi==Unicode[y][x])
       {break;}
     }
     if(hanzi==Unicode[y][x])
            break;
    }
  abspad=((ulong)(((y+0x0f)*94)+(x-1)))*32;
  return(abspad);
 }

//两个ASCII码转为单字节
uchar DoubleAscii2Byte(uchar ValH,uchar ValL)
{
	uchar cHigh,cLow;
	if(ValH >= '0' && ValH <= '9')
	{
		cHigh = (ValH-'0')<<4;
	}
	else if(ValH >= 'A' && ValH <= 'F')
	{
		cHigh = (ValH-'A'+10)<<4;
	}
	else if(ValH >= 'a' && ValH <= 'f')
	{
		cHigh = (ValH-'a'+10)<<4;
	}
	else
		cHigh = 0;

	if(ValL >= '0' && ValL <= '9')
	{
		cLow = (ValL-'0');
	}
	else if(ValL >= 'A' && ValL <= 'F')
	{
		cLow = (ValL-'A'+10);
	}
	else if(ValL >= 'a' && ValL <= 'f')
	{
		cLow = (ValL-'a'+10);
	}
	else
		cLow = 0;

	return ((cHigh & 0xf0)+(cLow & 0x0f));
}

//设置分页,获取总线地址
uint DEAL_BANK(ulong zkad)
{PAGE0 = zkad&0x008000;
 PAGE1 = zkad&0x010000;
 PAGE2 = zkad&0x020000;
 return((uint)zkad&0x7f);
 }

//计算出最终的显示数据
void GET_DISDATA(void)
{uint i;
 uchar j;
 for(i=0;i<datalen;i+=2)
   {databuff[i/2]=DoubleAscii2Byte(databuff[i],databuff[i+1]);}
 for(i=0;i<datalen/2;i+=2)
   {for(j=0;j<32;j++)
    disdata[i*16+j]=XBYTE[DEAL_BANK(UNI2CBSP((uint *)(&databuff)[i]))+j];
	}
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -