📄 disp.c
字号:
else
LCD_Write(*ucpStr++, DATA, RIGHT);
}
else
{//反白显示
if (ucXStar < 8)
LCD_Write(~(*ucpStr++), DATA, LEFT);
else
LCD_Write(~(*ucpStr++), DATA, RIGHT);
}
}
return (0);
}
//****************************************************************************
//函数名称: LCD_Write_Str
//函数功能: 向LCD送字符串
//输入参数: UCHAR *ucpStr 数据
// UCHAR ucXStar X坐标
// UCHAR ucYStar Y坐标
// UCHAR ucLen 长度
// UCHAR ucType 0, 正常显示; 1, 反白显示
//输出参数: void
//返 回 值: void
//创建日期: 2007.12.24
//创 建 人: 罗德良
//参考文档: LPC2104开发板
//说 明:
//修改历史:
//****************************************************************************
static UCHAR LCD_Write_Str(UCHAR *ucpStr, UCHAR ucXStar,
UCHAR ucYStar, UCHAR ucLen, UCHAR ucType)
{
UCHAR ucLineStar; //行起始
UCHAR ucColStar; //列起始
UCHAR *ucpFont, ucTemp;
if (ucLen > 16) return (1); //长度超出一行
if ((ucXStar + ucLen) > 16) return (1);
if (ucYStar > 8) return (1); //行数超出一屏
ucColStar = ucXStar;
ucLineStar = ucYStar;
while (ucLen-- > 0)
{
ucTemp = *ucpStr++;
if (ucTemp >= 0x30 && ucTemp <= 0x39)
{//0 - 9
ucTemp -= 0x30;
}
else
{
switch (ucTemp)
{
case ' ':
ucTemp = 10;
break;
case '.':
ucTemp = 11;
break;
case ':':
ucTemp = 12;
break;
case '-':
ucTemp = 13;
break;
case 'A':
ucTemp = 14;
break;
case 'I':
ucTemp = 15;
break;
case 'D':
ucTemp = 16;
break;
case 'O':
ucTemp = 17;
break;
case 'C':
ucTemp = 18;
break;
case 'T':
ucTemp = 19;
break;
case 'e':
ucTemp = 20;
break;
case 'm':
ucTemp = 21;
break;
case 'p':
ucTemp = 22;
break;
default:
ucTemp = 10;
}
}
ucpFont = (UCHAR *)&ucFont8X16[ucTemp * 16];
/*********************上半字*********************/
//行起始地址
LCD_Write(PAGESTAR + ucLineStar, CMD, LEFT);
LCD_Write(PAGESTAR + ucLineStar, CMD, RIGHT);
//列起始地址
if (ucColStar < 8)
{//左半屏
LCD_Write(COLSTAR + ucColStar * 8, CMD, LEFT);
}
else
{//右半屏
LCD_Write(COLSTAR + (ucColStar - 8) * 8, CMD, RIGHT);
}
LCD_Write_Half(ucpFont, ucColStar, ucType);
ucpFont += 8;
/*********************下半字*********************/
//行起始地址
LCD_Write(PAGESTAR + ucLineStar + 1, CMD, LEFT);
LCD_Write(PAGESTAR + ucLineStar + 1, CMD, RIGHT);
//列起始地址
if (ucColStar < 8)
{//左半屏
LCD_Write(COLSTAR + ucColStar * 8, CMD, LEFT);
}
else
{//右半屏
LCD_Write(COLSTAR + (ucColStar - 8) * 8, CMD, RIGHT);
}
LCD_Write_Half(ucpFont, ucColStar, ucType);
ucColStar++;
}
return (0);
}
//****************************************************************************
//函数名称: Disp_Logo
//函数功能: 显示开机画面
//输入参数: UCHAR ucType 0, 正常显示; 1, 反白显示;
//输出参数: void
//返 回 值: void
//创建日期: 2007.12.24
//创 建 人: 罗德良
//参考文档: LPC2104开发板
//说 明:
//修改历史:
//****************************************************************************
//static void Disp_Logo(UCHAR ucType)
//{
// UCHAR i, j;
// UCHAR *ucpPic;
// ucpPic = (UCHAR *)&ucPic[0];
// for (i = 0; i < 8; i++)
// {
//行起始地址
// LCD_Write(PAGESTAR + i, CMD, LEFT);
// LCD_Write(PAGESTAR + i, CMD, RIGHT);
//列起始地址
// LCD_Write(COLSTAR, CMD, LEFT);
// LCD_Write(COLSTAR, CMD, RIGHT);
// for (j = 0; j < 16; j++)
// {
// LCD_Write_Half(ucpPic, j, ucType);
// ucpPic += 8;
// }
// }
//}
//****************************************************************************
//函数名称: TaskDisp
//函数功能: 显示任务
//输入参数: void *pdata
//输出参数: void
//返 回 值: void
//创建日期: 2007.05.12
//创 建 人: 罗德良
//参考文档:
//说 明:
//修改历史:
//****************************************************************************
void TaskDisp(void *pdata)
{
UCHAR ucStr[20];
UCHAR i, j ,m;
float fEGUL, fEGUH;
pdata = pdata; /* 避免编译警告 */
LCD_Init(); //显示初始化
//显示LOGO
//strcpy((char *)ucStr, "SRU326");
//LCD_Write_Str(ucStr, 5, 1, strlen((char *)ucStr), 0);
//strcpy((char *)ucStr, "SINYWAY");
//LCD_Write_Str(ucStr, 5, 4, strlen((char *)ucStr), 0);
//显示版本号
//sprintf((char *)ucStr, "V%1d.%1d.%1d", REV_1, REV_2, REV_3);
//LCD_Write_Str(ucStr, 10, 6, strlen((char *)ucStr), 1);
//OSTimeDly(1600);
while (1)
{
//************AI************
for (m = 0; m < 2; m++)
{
LCD_Cls(); //清屏
for (i = 0; i < 4; i++)
{
sprintf((char *)ucStr, "AI%1d:", i + m * 4);
LCD_Write_Str(ucStr, 2, i * 2, strlen((char *)ucStr), 0);
}
do
{
for (j = 0; j < 4; j++)
{
for (i = 0; i < 4; i++)
{
//显示变换
if (ui16AoReg[AI_DISPL_ADR + i + m * 4] >= 0x8000)
{//为负数
fEGUL = (ui16AoReg[AI_DISPL_ADR + i + m * 4] & 0x7fff) * -1.0;
}
else
{//为正数
fEGUL = ui16AoReg[AI_DISPL_ADR + i + m * 4] * 1.0;
}
if (ui16AoReg[AI_DISPH_ADR + i + m * 4] >= 0x8000)
{//为负数
fEGUH = (ui16AoReg[AI_DISPH_ADR + i + m * 4] & 0x7fff) * -1.0;
}
else
{//为正数
fEGUH = ui16AoReg[AI_DISPH_ADR + i + m * 4] * 1.0;
}
//采样结果
fAiDisp[0] = (UINT32)ui16AiReg[i + m * 4] * (fEGUH - fEGUL) / 4096 + fEGUL;
if (ui16AoReg[AI_DEC_ADR + i + m * 4] != 0) fAiDisp[0] /= ui16AoReg[AI_DEC_ADR + i + m * 4];
switch (ui16AoReg[AI_DEC_ADR + i + m * 4])
{
case 1: //无小数
sprintf((char *)ucStr, "%06.0f", fAiDisp[0]);
break;
case 10: //1位小数
sprintf((char *)ucStr, "%06.1f", fAiDisp[0]);
break;
case 100: //2位小数
sprintf((char *)ucStr, "%06.2f", fAiDisp[0]);
break;
case 1000: //3位小数
sprintf((char *)ucStr, "%06.3f", fAiDisp[0]);
break;
case 10000: //4位小数
sprintf((char *)ucStr, "%06.4f", fAiDisp[0]);
break;
default:
sprintf((char *)ucStr, "%06.0f", fAiDisp[0]);
break;
}
LCD_Write_Str(ucStr, 7, i * 2, strlen((char *)ucStr), 0);
}
OSTimeDly(200);
}
}while (DEFAULT_IN != _DEF);
}
//************CI************
for (m = 0; m < 2; m++)
{
LCD_Cls(); //清屏
for (i = 0; i < 4; i++)
{
sprintf((char *)ucStr, "CI%1d:", i + m * 4);
LCD_Write_Str(ucStr, 1, i * 2, strlen((char *)ucStr), 0);
}
do
{
for (j = 0; j < 4; j++)
{
for (i = 0; i < 4; i++)
{
sprintf((char *)ucStr, "%010ld", ui16AoReg[2 + ((i + m * 4) * 2) + 0] * 256ul * 256ul
+ ui16AoReg[2 + ((i +m * 4) * 2) + 1]);
LCD_Write_Str(ucStr, 5, i * 2, strlen((char *)ucStr), 0);
}
OSTimeDly(200);
}
}while (DEFAULT_IN != _DEF);
}
//************AO TEMP************
LCD_Cls(); //清屏
strcpy((char *)ucStr, "AO0:");
LCD_Write_Str(ucStr, 2, 0, strlen((char *)ucStr), 0);
strcpy((char *)ucStr, "AO1:");
LCD_Write_Str(ucStr, 2, 2, strlen((char *)ucStr), 0);
do
{
for (j = 0; j < 4; j++)
{
for (i = 0; i < 2; i++)
{
sprintf((char *)ucStr, "%06.2f", (float)ui16AoReg[i] * 16 / 4096 + 4);
LCD_Write_Str(ucStr, 7, i * 2, strlen((char *)ucStr), 0);
}
sprintf((char *)ucStr, "Temp: %05.1f", fAiDisp[1]);
LCD_Write_Str(ucStr, 2, 6, strlen((char *)ucStr), 0);
OSTimeDly(200);
}
}while (DEFAULT_IN != _DEF);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -