const unsigned char font6x8[][6] =
{
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },// sp 。。。。。。。 } SPILCD_Init(); for (l=0;l<=5;l++) { LCD_Write_String(1,l,"SPI_LCD TEST."); //显示英文字符串"SPI_LCD TEST." Delay(1000); /***************************************************************** * 函数名 : LCD_Write_Byte * 功能 : 逐字节传输数据 * 参数 : data ,command * 返回值 : void ******************************************************************/ void LCD_Write_Byte(unsigned char data, unsigned char command) { CHIP_ENABLE;// 使能LCD if (command == 0) CMD_MODE;// 传送命令 else DATA_MODE;// 传送数据
rSPTDAT1 = data;// 传送数据到SPI寄存器 while ((rSPSTA1 & 0x01) == 0);// 等待数据传送完毕 CHIP_DISABLE;// 关闭LCD
}
/***************************************************************** * 函数名 : LCD_Write_String * 功能 : 逐字符传送 * 参数 : X,Y,*S * 返回值 : VOID ******************************************************************/ void LCD_Write_String(unsigned char X,unsigned char Y,char *s) { char *y; y=s; y=y+10; LCD_Set_XY(X,Y); while (*s) { LCD_Write_Char(*s); s++; } while (*y) {LCD_Write_Char(*y); y++;} }
/***************************************************************** * 函数名 : LCD_Write_Char * 功能 : 传输字符串 * 参数 : c * 返回值 : void ******************************************************************/ void LCD_Write_Char(unsigned char c) { unsigned char line; c -= 32; for (line=0; line<6; line++) LCD_Write_Byte(font6x8[c][line], 1); }
/***************************************************************** * 函数名 : LCD_Set_XY * 功能 : 设置显示位置 * 参数 : x,y * 返回值 : void ******************************************************************/ void LCD_Set_XY(unsigned char X, unsigned char Y) { LCD_Write_Byte(0x40 | Y, 0);// column LCD_Write_Byte(0x80 | X, 0);// row } 我的是点阵48*84LCD,如何显示中文,我是想显示中文字16*16的大小,修改了char font16*16,for (line=0; line<16; line++) LCD_Write_Byte(font16x16[c][line], 1); 为什么显示的中文是乱码了,而且大小只是变长了,没有变大???那位大哥知道呀! |