📄 drv_lcm12864.c
字号:
tdata = -ddata;
tdata = ((INT16U)tdata<<(15-offset))>>(15-offset);
tmp = 0x0001<<offset;
tdata *= 1000;
tdata /= tmp;
for(i = 100;i;i /=10)
{
tmp = tdata / i;
tmp %= 10;
tpdata = (INT8U*)ASCII_CODE[tmp+16];
LcmLoadData(tx, ty, tpdata , 6);
tx += 6;
}
}
/*********************************************************************************************************
** 函数名称: LcmDispHEX()
** 功能描述: 在LCM指定位置显示一十六进制数
**
** 输 入: x : 指定的地址
** y : 指定的行
** ddata : 将要写入的数据
** anti : 反白标记
**
** 输 出: 无
** 全局变量: 无
** 调用模块: LcmSendCmd(),LcmSendData()
**
** 作 者: 龚树强
** 日 期: 2005年4月5日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void LcmDispHEX(INT8U x, INT8U y, INT8U Data,INT8U anti) reentrant
{
INT8U temp;
INT8U tx;
INT8U ty;
INT8U* tpdata;
tx = x;
ty = y;
flag_anti_disp = anti;
Data &= 0x00FF;
temp = Data >> 4;
if(temp >0x09)
temp = temp + 'A' - '0' - 10;
tpdata = (INT8U*)ASCII_CODE[temp+16];
LcmLoadData(tx, ty, tpdata , 6);
temp = Data & 0x0F;
if(temp >0x09)
temp = temp + 'A' - '0' - 10;
tpdata = (INT8U*)ASCII_CODE[temp+16];
LcmLoadData(tx+6, ty, tpdata , 6);
}
/*********************************************************************************************************
** 函数名称: LcmDispBar()
** 功能描述: 在LCM指定位置显示进度条
**
** 输 入: ddata: 进度条的长度
**
** 输 出: 无
** 全局变量: 无
** 调用模块: LcmSendCmd(),LcmSendData()
**
** 作 者: 龚树强
** 日 期: 2005年4月5日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
/* void LcmDispBar( INT8U ddata)
{
INT8U x;
INT16U temp;
temp= ddata*124;
temp>>=8;
temp+=2;
LCM_SET_Y1(3);
LCM_SET_Y0(3);
LCM_SET_Z0(0);
LCM_SET_Z1(0);
LCM_SET_X0(1);
LcmSendData0(0X7E);
for(x=2 ; x < 64 ; x++)
{
if(x<temp)
{
LCM_SET_X0(x);
LcmSendData0(0XFF);
}
else if(x==temp)
{
LCM_SET_X0(x);
LcmSendData0(0X7E);
}
else
{
LCM_SET_X0(x);
LcmSendData0(0X81);
}
}
for(x=64 ; x < 126 ; x++)
{
if(x<temp)
{
LCM_SET_X1(x-64);
LcmSendData1(0XFF);
}
else if(x==temp)
{
LCM_SET_X1(x-64);
LcmSendData1(0X7E);
}
else
{
LCM_SET_X1(x-64);
LcmSendData1(0X81);
}
}
LCM_SET_X1(62);
LcmSendData1(0X7E);
}
*/
/*********************************************************************************************************
** 函数名称: LcmDispChnChar()
** 功能描述: 在LCM指定位置显示一个中文字符
**
** 输 入: x : 指定的地址
** y : 指定的行
** pData : 将要写入的数据开始地址
** anti : 反白标记
** 输 出: 无
** 全局变量: 无
** 调用模块: LcmLoadData()
**
** 作 者: 龚树强
** 日 期: 2005年4月5日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
/* void LcmDispChnChar(INT8U x, INT8U y, INT8U *pData, INT8U anti) reentrant
{
INT8U tx;
INT8U ty;
INT8U* tpdata;
tx = x;
ty = y;
tpdata = pData;
LcmLoadData(tx, ty, tpdata , 16);
ty++;
tpdata += 16;
LcmLoadData(tx, ty, tpdata, 16);
} */
void LcmDispChnChar(INT8U x, INT8U y, INT8U *pData, INT8U anti) reentrant
{
idata INT8U i;
INT8U tx;
INT8U ty;
INT8U *tpdata;
idata INT8U tmp0,tmp1,j;
tx = x;
ty = y;
tpdata = pData;
flag_anti_disp = anti;
LCM_SET_Y0(ty);
LCM_SET_Y1(ty);
LCM_SET_Z0(0);
LCM_SET_Z1(0);
LCM_SET_X0(tx);
for( ; (tx < x+16)&&(tx<64) ; tx++)
{
for(j=8,tmp1=0,tmp0=*tpdata;tmp0&&(j--);tmp0>>=1)
{
tmp1<<=1;
tmp1|=(tmp0&0x01);
}
LcmSendData0(tmp1<<j); /* 显示一个字符 */
tpdata+=2;
}
if (tx > 63) /* 有效的列号 */
{
LCM_SET_X1(tx-64);
for( ; (tx < x+16)&&(tx<128) ; tx++)
{
for(j=8,tmp1=0,tmp0=*tpdata;tmp0&&(j--);tmp0>>=1)
{
tmp1<<=1;
tmp1|=(tmp0&0x01);
}
LcmSendData1(tmp1<<j); /* 显示一个字符 */
tpdata+=2;
}
}
tx = x;
ty = y+1;
tpdata = pData+1;
LCM_SET_Y0(ty);
LCM_SET_Y1(ty);
LCM_SET_X0(tx);
for( ; (tx < x+16)&&(tx<64) ; tx++)
{
for(j=8,tmp1=0,tmp0=*tpdata;tmp0&&(j--);tmp0>>=1)
{
tmp1<<=1;
tmp1|=(tmp0&0x01);
}
LcmSendData0(tmp1<<j); /* 显示一个字符 */
tpdata+=2;
}
if (tx > 63) /* 有效的列号 */
{
LCM_SET_X1(tx-64);
for( ; (tx < x+16)&&(tx<128) ; tx++)
{
for(j=8,tmp1=0,tmp0=*tpdata;tmp0&&(j--);tmp0>>=1)
{
tmp1<<=1;
tmp1|=(tmp0&0x01);
}
LcmSendData1(tmp1<<j); /* 显示一个字符 */
tpdata+=2;
}
}
}
/*********************************************************************************************************
** 函数名称: LcmClr()
** 功能描述: 清除LCM的指定区域
**
** 输 入: x : 指定的地址
** y : 指定的行
** dx : 偏置列数
** dy : 偏置行数
** anti : 反白标记
** 输 出: 无
**
** 输 出: 无
** 全局变量: 无
** 调用模块: LcmDispStr()
**
** 作 者: 龚树强
** 日 期: 2005年4月5日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void LcmClr(INT8U x,INT8U y,INT8U dx,INT8U dy,INT8U anti) reentrant
{
INT8U tx;
INT8U ty;
INT8U tdx;
INT8U tdy;
tx = x;
ty = y;
tdx = x + dx;
tdy = y + dy;
flag_anti_disp = anti;
for(;(ty<tdy)&&(ty<8);ty++)
{
LCM_SET_Y0(ty);
LCM_SET_X0(tx);
for(;(tx<tdx)&&(tx<64);tx++)
LcmSendData0(0x00);
if(tx<tdx)
{
LCM_SET_Y1(ty);
LCM_SET_X1(tx-64);
for(;(tx<tdx)&&(tx<128);tx++)
LcmSendData1(0x00);
}
tx=x;
}
}
/*********************************************************************************************************
** 函数名称: LcmDispChar()
** 功能描述: 从LCM指定地址处写多个字节数据
**
** 输 入: x : 指定的地址
** y : 指定的行
** pData : 将要写入的数据开始地址
** anti : 反白标记
** 输 出: 无
** 全局变量: 无
** 调用模块: LcmLoadData();
**
** 作 者: 龚树强
** 日 期: 2005年4月5日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void LcmDispChar(INT8U x,INT8U y, INT8U *pData ,INT8U anti) reentrant
{
INT8U* tpdata;
INT8U* tdata;
idata INT8U i;
INT8U tx;
INT8U ty;
tx = x;
ty = y;
tpdata = pData;
flag_anti_disp = anti;
for(i=0;((*tpdata)!='\0')&&(i<22)&&((i*6+tx+6)<128);i++)
{
tdata = (INT8U *)(ASCII_CODE + (*tpdata) - 0x20);
LcmLoadData((tx+i*6), ty, tdata , 6);
tpdata++;
}
}
/**********************end****************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -