📄 drv_lcm12864.c
字号:
INT8U LcmReadData3(void) reentrant
{
idata INT8U buf;
// LcmDelay();
INPUT(LCM_DATA_3,buf);
}
/*********************************************************************************************************
** 函数名称: LcmBL_ON/OFF
** 功能描述: LCM背光开/关
**
** 输 入:
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**
** 作 者: 龚树强
** 日 期: 2005年4月5日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void LcmBL0_Off(void)
{
LCM_BL_state &= 0xFFFE;
OUTPUT(LCM_BL_CNTL,LCM_BL_state);
}
void LcmBL0_On(void)
{
LCM_BL_state |= 0x0001;
OUTPUT(LCM_BL_CNTL,LCM_BL_state);
}
void LcmBL1_Off(void)
{
LCM_BL_state &= 0xFFFD;
OUTPUT(LCM_BL_CNTL,LCM_BL_state);
}
void LcmBL1_On(void)
{
LCM_BL_state |= 0x0002;
OUTPUT(LCM_BL_CNTL,LCM_BL_state);
}
/*********************************************************************************************************
** 函数名称: LcmLoadData()
** 功能描述: 在LCM指定位置显示一个字符
**
** 输 入: x : 指定的地址
** y : 指定的行
** pData : 将要写入的数据开始地址
** len : 连续写入长度
** 输 出: 无
** 全局变量: 无
** 调用模块: LcmSendCmd(),LcmSendData()
**
** 作 者: 龚树强
** 日 期: 2005年4月5日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void LcmLoadData(INT8U x,INT8U y,INT8U * ppdata,INT8U len) reentrant
{
INT8U temp;
INT8U tx;
INT8U ty;
INT8U* tpdata;
tx = x;
ty = y;
tpdata = ppdata;
temp = len;
temp += tx;
LCM_SET_Y0(ty);
LCM_SET_Y1(ty);
LCM_SET_Z0(0);
LCM_SET_Z1(0);
LCM_SET_X0(tx);
for( ; (tx < temp)&&(tx<64) ; tx++)
LcmSendData0(*(tpdata++)); /* 显示一个字符 */
if (tx > 63) /* 有效的列号 */
{
LCM_SET_X1(tx-64);
for( ; (tx < temp)&&(tx<128) ; tx++)
LcmSendData1(*(tpdata++)); /* 显示一个字符 */
}
}
/*********************************************************************************************************
** 函数名称: LcmGetData()
** 功能描述: 在LCM指定位置读取一个字符
**
** 输 入: x : 指定的地址
** y : 指定的行
** pData : 将要写入的数据开始地址
** len : 连续写入长度
** 输 出: 无
** 全局变量: 无
** 调用模块: LcmSendCmd(),LcmSendData()
**
** 作 者: 龚树强
** 日 期: 2005年4月5日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void LcmGetData(INT8U x,INT8U y,INT8U * ppdata,INT8U len) reentrant
{
INT8U temp;
INT8U tx;
INT8U ty;
INT8U* tpdata;
tx = x;
ty = y;
tpdata = ppdata;
temp = len;
temp += tx;
LCM_SET_Y0(ty);
LCM_SET_Y1(ty);
LCM_SET_Z0(0);
LCM_SET_Z1(0);
LCM_SET_X0(tx);
for( ; (tx < temp)&&(tx<64) ; tx++)
*(tpdata++) = LcmReadData0(); /* 显示一个字符 */
if (tx > 63) /* 有效的列号 */
{
LCM_SET_X1(tx-64);
for( ; (tx < temp)&&(tx<128) ; tx++)
*(tpdata++) = LcmReadData1(); /* 显示一个字符 */
}
}
/*********************************************************************************************************
** 函数名称: Lcm_Init()
** 功能描述: LCM初始化
**
** 输 入: 无
**
** 输 出: 无
** 全局变量: 无
** 调用模块: LcmSendCmd(),LcmClr()
**
** 作 者: 龚树强
** 日 期: 2005年4月5日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void Lcm_Init(void) reentrant
{
LcmSendCmd0(0x3F); // 开始显示
LcmSendCmd1(0x3F); // 开始显示
LCM_SET_Z1(0);
LCM_SET_Z0(0);
LcmClr(0,0,128,8,LCM_NORMAL_DISP); // 清屏
DispSem = OSSemCreate(1);
}
/*********************************************************************************************************
** 函数名称: LcmDispInt()
** 功能描述: 在LCM指定位置显示一串数字
**
** 输 入: x : 指定的地址
** y : 指定的行
** ddata : 将要写入的数据
** anti : 反白标记
**
** 输 出: 无
** 全局变量: 无
** 调用模块: LcmSendCmd(),LcmSendData()
**
** 作 者: 龚树强
** 日 期: 2005年4月5日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void LcmDispInt(INT8U x, INT8U y, INT16S ddata,INT8U anti) reentrant
{
INT16U temp;
INT16U i;
INT8U* tpdata;
INT8U tx;
INT8U ty;
INT16S tdata;
INT8U bflag;
INT8U b0;
tx = x ;
ty = y ;
tdata = ddata;
bflag = 0;
i = 10000;
flag_anti_disp = anti;
LcmClr(tx,ty,36,1,flag_anti_disp);
if(tdata < 0)
{
b0 = 1;
tdata = -tdata;
}
else
b0 = 0;
tx += 6;
for(;i;)
{
temp = tdata / i;
temp %= 10;
if(temp || bflag)
{
if(!bflag)
{
bflag = 1;
if(b0)
{
tx -= 6;
tpdata = (INT8U*)ASCII_CODE[13];
LcmLoadData(tx, ty, tpdata , 6);
tx += 6;
}
}
tpdata = (INT8U*)ASCII_CODE[temp+16];
LcmLoadData(tx, ty, tpdata , 6);
}
tx += 6;
i /=10;
}
if(!bflag)
{
tx -= 6;
tpdata = (INT8U*)ASCII_CODE[16];
LcmLoadData(tx, ty, tpdata , 6);
}
}
/*********************************************************************************************************
** 函数名称: LcmDispFixP()
** 功能描述: 在LCM指定位置显示一串数字
**
** 输 入: x : 指定的地址
** y : 指定的行
** ddata : 将要写入的数据
** offset:定点偏移位数
** anti : 反白标记
**
** 输 出: 无
** 全局变量: 无
** 调用模块: LcmSendCmd(),LcmSendData()
**
** 作 者: 龚树强
** 日 期: 2005年4月5日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void LcmDispFixP(INT8U x, INT8U y, INT16S ddata,INT8U offset,INT8U anti) reentrant
{
INT16U tmp;
INT16U i;
INT8U* tpdata;
INT8U tx;
INT8U ty;
INT32S tdata;
INT8U bflag;
INT8U b0;
tx = x ;
ty = y ;
tdata = ddata;
bflag = 0;
flag_anti_disp = anti;
LcmClr(tx,ty,42,1,flag_anti_disp);
if(tdata < 0)
{
b0 = 1;
tdata = -tdata;
}
else
b0 = 0;
tdata >>= offset;
tx += 6;
for(i = 10000;i;i /=10)
{
tmp = tdata / i;
tmp %= 10;
if(tmp || bflag)
{
if(!bflag)
{
bflag = 1;
if(b0)
{
tx -= 6;
tpdata = (INT8U*)ASCII_CODE[13];
LcmLoadData(tx, ty, tpdata , 6);
tx += 6;
}
}
tpdata = (INT8U*)ASCII_CODE[tmp+16];
LcmLoadData(tx, ty, tpdata , 6);
tx += 6;
}
// tx += 6;
}
if(!bflag)
{
if(b0)
{
if(ddata != 0)
{
tx -= 6;
tpdata = (INT8U*)ASCII_CODE[13];
LcmLoadData(tx, ty, tpdata , 6);
tx += 6;
}
}
tpdata = (INT8U*)ASCII_CODE[16];
LcmLoadData(tx, ty, tpdata , 6);
tx += 6;
}
tpdata = (INT8U*)ASCII_CODE[14];
LcmLoadData(tx, ty, tpdata , 6);
tx += 6;
tdata = ddata;
if(b0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -