📄 epower_lcd.c
字号:
0x04,0x98,0x40,0xFF,0x10,0x10,0x10,0xFF,
0x90,0x12,0x14,0x10,0x01,0x00,0x00,0x0F,
0x08,0x04,0x03,0x00,0x00,0x03,0x04,0x08
};
/* define the DELAY_US() function */
extern void DSP28x_usDelay(Uint32 Count);
Uint16 lcddata[8][128];
/* 设置LCD管脚 */
void ConfigLCD(void)
{
EALLOW;
GpioMuxRegs.GPAMUX.all &= 0x0FF9F;
GpioMuxRegs.GPADIR.all |= 0x0060;
GpioMuxRegs.GPBMUX.all &= 0x0F800;
GpioMuxRegs.GPBDIR.all |= 0x07FF;
GpioMuxRegs.GPDMUX.bit.T3CTRIP_PDPB_GPIOD5 = 0;
GpioMuxRegs.GPDDIR.bit.GPIOD5 = 1;
GpioMuxRegs.GPDMUX.bit.T4CTRIP_SOCB_GPIOD6 = 0;
GpioMuxRegs.GPDDIR.bit.GPIOD6 = 1;
EDIS;
}
/* LCD数据线输出数据 */
void LCDOut(Uint16 data)
{
data &= 0x00FF;
GpioDataRegs.GPBDAT.all |= data;
data |= 0x0FF00;
GpioDataRegs.GPBDAT.all &= data;
}
/* 写指令子程序(左) */
void LCDIns_L(Uint16 ins)
{
LCDCS1 = 0;
LCDCS2 = 1;
LCDOut(ins);
LCDC_D = 0;
LCDR_W = 0;
LCDE = 1;
DELAY_US(2L);
LCDE = 0;
DELAY_US(20L);
}
/* 写指令子程序(右) */
void LCDIns_R(Uint16 ins)
{
LCDCS1 = 1;
LCDCS2 = 0;
LCDOut(ins);
LCDC_D = 0;
LCDR_W = 0;
LCDE = 1;
DELAY_US(2L);
LCDE = 0;
DELAY_US(20L);
}
/* 写数据子程序(左) */
void LCDData_L(Uint16 data)
{
LCDCS1 = 0;
LCDCS2 = 1;
LCDOut(data);
LCDC_D = 1;
LCDR_W = 0;
LCDE = 1;
DELAY_US(2L);
LCDE = 0;
DELAY_US(20L);
}
/* 写数据子程序(右) */
void LCDData_R(Uint16 data)
{
LCDCS1 = 1;
LCDCS2 = 0;
LCDOut(data);
LCDC_D = 1;
LCDR_W = 0;
LCDE = 1;
DELAY_US(2L);
LCDE = 0;
DELAY_US(20L);
}
/* LCD显示RAM中的内容指令 */
void LCDOnpen(void)
{
LCDIns_L(0x3F); // 0 0 1 1 1 1 1 1
LCDIns_R(0x3F); // 0 0 1 1 1 1 1 1
}
/* LCD关闭显示指令 */
void LCDClose(void)
{
LCDIns_L(0x3E); // 0 0 1 1 1 1 1 0
LCDIns_R(0x3E); // 0 0 1 1 1 1 1 0
}
/* 显示起始行设置指令(左) */
void LCDRow_L(Uint16 data)
{
data |= 0x0C0;
LCDIns_L(data); // 1 1 * * * * * * *
}
/* 显示起始行设置指令(右) */
void LCDRow_R(Uint16 data)
{
data |= 0x0C0;
LCDIns_R(data); // 1 1 * * * * * * *
}
/* 页设置指令(左) */
void LCDPage_L(Uint16 data)
{
data |= 0x0B8;
data &= 0x0FFBF;
LCDIns_L(data); // 1 0 1 1 1 * * *
}
/* 页设置指令(右) */
void LCDPage_R(Uint16 data)
{
data |= 0x0B8;
data &= 0x0FFBF;
LCDIns_R(data); // 1 0 1 1 1 * * *
}
/* 列地址设置指令(左) */
void LCDLine_L(Uint16 data)
{
data |= 0x40;
data &= 0xFF7F;
LCDIns_L(data); // 0 1 * * * * * * *
}
/* 列地址设置指令(右) */
void LCDLine_R(Uint16 data)
{
data |= 0x40;
data &= 0xFF7F;
LCDIns_R(data); // 0 1 * * * * * * *
}
/* LCD初始化程序 */
void InitLCD(void)
{
LCDLED = 1;
LCDRST = 0;
DELAY_US(10L);
LCDRST = 1;
DELAY_US(1000L);
LCDRow_L(0);
LCDRow_R(0);
LCDOnpen();
}
/* 对LCD全屏做一次写操作 */
void LCDDisplay(void)
{
Uint16 i,j;
for(i=0;i<8;i++)
{
LCDPage_L(i);
LCDPage_R(i);
LCDLine_L(0);
LCDLine_R(0);
for(j=0;j<64;j++) LCDData_L(lcddata[i][j]);
for(j=64;j<128;j++) LCDData_R(lcddata[i][j]);
}
}
/* 电压、电流有效值输出 */
void Data1Display()
{
Uint16 i,j;
for(i=0;i<8;i++)
for(j=0;j<128;j++) lcddata[i][j] = 0x00;
for(i=0;i<12;i++) /* 有 */
{
lcddata[0][i + 46] = hzdot[360 + i];
lcddata[1][i + 46] = hzdot[360 + i + 12];
}
for(i=0;i<12;i++) /* 效 */
{
lcddata[0][i + 58] = hzdot[264 + i];
lcddata[1][i + 58] = hzdot[264 + i + 12];
}
for(i=0;i<12;i++) /* 值 */
{
lcddata[0][i + 70] = hzdot[432 + i];
lcddata[1][i + 70] = hzdot[432 + i + 12];
}
}
/* 对LCD清屏 */
void LCDClear(void)
{
Uint16 i,j;
for(i=0;i<8;i++)
for(j=0;j<128;j++) lcddata[i][j] = 0x00;
LCDDisplay();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -