⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 epower_lcd.c

📁 在TI的TMSF2812平台上
💻 C
📖 第 1 页 / 共 2 页
字号:
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 + -