微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > t6963c驱动程序-驱动代码

t6963c驱动程序-驱动代码

时间:04-25 来源:互联网 点击:

for( i= column,j=0; i column+14 ; )
{ byte=linehead[j];
if(byte 0x80) //字母
{
ShowChar(lin, i , byte);
i=i+1;j=j+1;
}
else // byte >= 0x80(汉字)
{
byte=byte 0x7f; //最高位置0,即:减去0x8000
hzcode=byte*256 + linehead[j+1]; //加低8位,组合成整型数地址
ShowHZ( lin,i,hzcode);
i=i+2;j=j+2;
}
}
}

/*-----------------------------------------------------------------------------------*/
//显示一屏汉字
//pageheadaddr:此屏汉字代码地址区首地址
void ShowPage(unsigned char lin,unsigned char column1,unsigned char pagehead[][14])
{
unsigned char i;
for(i=0;i 4 ;i++)
ShowLine((lin+i*20),column1,pagehead[i]); //1行8个汉字,16字节
}

/*----------------------------------------------------------------------------------------------------*/
//反显一个字符
//lin:行(0-7), column: 列(0-15)
void ReverseShowChar(unsigned char lin,unsigned char column)
{
unsigned char i;
unsigned char dat;
unsigned int StartAddr;

StartAddr=lin*LineChar +column; //定位起始行

for(i=0;i16;i++)
{
OutPortCom3( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8), 0x24); //set address
OutPortCom1( 0xc5 ); //数据一次读,地址不变
dat=InPortData(); //读入数据
dat=~dat; //取反
OutPortCom2( dat, 0xc4); //送回

StartAddr=StartAddr+ LineChar;
}
}


/*----------------------------------------------------------------------------------------------------*/
//反显一个汉字
//lin:行(0-7), column: 列(0-15)
void ReverseShowHZ(unsigned char lin,unsigned char column)
{
ReverseShowChar(lin,column);
ReverseShowChar(lin,column+1);
}
/*----------------------------------------------------------------------------------------------------*/
//反显一行汉字
//lin:行(0-7)
void ReverseShowLine(unsigned char lin)
{
unsigned char column;
for(column=0; column ColumnChar; column++) ReverseShowChar(lin,column);
}


//////////////////////////////////////////////////////////////////////////////////////
void ShowPicture(unsigned char Startline,unsigned char Startcolumn,unsigned char LineWidth,unsigned char ColumnWidth,unsigned int address)
{
unsigned char i,j;
unsigned int StartAddr;

StartAddr=Startline*LineChar + Startcolumn; //定位起始位置

for(i=0;iColumnWidth;i++)
{

OutPortCom3( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8), 0x24); //set address
for(j=0;jLineWidth;j++)
{
OutPortCom2( CBYTE[address + i*LineWidth+ j ], 0xc0);
}
StartAddr=StartAddr + LineChar;
}
}

///////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
//图形函数,用于描点画图
//---------------------------------------------------------------------------
//在指定位置显示一个点
//如果显示屏超过了256*256,请修改这个函数 PointX,PointY的类型
//Mode 1:显示 0:清除该点
Pixel(unsigned char PointX,unsigned char PointY, bit Mode)
{
unsigned int StartAddr=0;
unsigned char dat;

StartAddr=PointX*LineChar + PointY/8;
dat=0xf0+7-PointY%8;
if(Mode) dat=dat 0x08;

OutPortCom3( (unsigned char)(StartAddr),(unsigned char)(StartAddr>>8),0x24 ); //设置该点所在单元地址
OutPortCom1(dat);
}

//-------------------------------------------------------------------------------
//划线函数
void Line( unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, bit Mode)
{
unsigned char x,y;
double k,b;

if( abs(y1-y2) = abs(x1-x2) ) // k =1
{
k=(float)(y2-y1) / (float)(x2-x1) ;
b=y1-k*x1;

if( x1 = x2 )
{
for(x=x1;x=x2;x++)
{
y=k*x+b;
Pixel(x, y, Mode);
}
}
else
{
for(x=x2;x=x1;x++)
{ y=k*x+b;
Pixel(x, y, Mode);
}
}
}
else // abs(y1-y2) > abs(x1-x2) K >1
{
k=(float)(x2-x1) / (float)(y2-y1) ;
b=x1-k*y1;

if( y1 = y2 )
{
for(y=y1;y=y2;y++)
{ x=k*y+b;
Pixel( x , y,Mode );
}
}
else
{
for(y=y2;y=y1;y++)
{ x=k*y+b;
Pixel( x , y,Mode );
}
}
}
}

/*-----------------------------------------

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top