其他数字,汉字和字符都可以显示 里面的图像显示程序为什么不能用啊 上网看了好多 改了好几次 这个程序也是在网上找的 下面是图像显示的部分 烧到单片机没反应
/****************************************************************************
【功能说明】 LCD显示边框 图形模式
****************************************************************************/
void LCD_Dis_Frame(void)
{
uint8_t x,y;
//LCD清除绘图RAM
LCD_Clear_GDRAM();
LCD_Write(LCD_Write_Con_Cmd,0x34);
for(x=0;x<9;x += 8)
{
for(y=0;y < 32;y++)
{
//左竖
LCD_Write(LCD_Write_Con_Cmd, y+0x80);
LCD_Write(LCD_Write_Con_Cmd, x+0x80);
LCD_Write(LCD_Write_Dis_Data,0x80);
LCD_Write(LCD_Write_Dis_Data,0x00);
//右竖
LCD_Write(LCD_Write_Con_Cmd, y+0x80);
LCD_Write(LCD_Write_Con_Cmd, x+0x87);
LCD_Write(LCD_Write_Dis_Data,0x00);
LCD_Write(LCD_Write_Dis_Data,0x01);
}
}
for(y=0;y<2;y++)
{
for(x=0;x<8;x++)
{
LCD_Write(LCD_Write_Con_Cmd, y*31+0x80);
LCD_Write(LCD_Write_Con_Cmd, x+0x80+8*y);
LCD_Write(LCD_Write_Dis_Data,0xff);
LCD_Write(LCD_Write_Dis_Data,0xff);
}
}
LCD_Write(LCD_Write_Con_Cmd,0x36);
//LCD_Write(LCD_Write_Con_Cmd,0x30);
}
/****************************************************************************
【功能说明】 LCD清除全部绘图RAM GDRAM 64*32字节空间
0 1 2****13 14 15
1****************
2****************
*****************
*
*
62
63
****************************************************************************/
void LCD_Clear_GDRAM(void)
{
uint8_t x,y;
LCD_Write(LCD_Write_Con_Cmd,0x34);
for(y=0;y<64;y++)
{
for(x=0;x<16;x++)
{
LCD_Write(LCD_Write_Con_Cmd, y+0x80);
LCD_Write(LCD_Write_Con_Cmd, x+0x80);
LCD_Write(LCD_Write_Dis_Data,0x00);
LCD_Write(LCD_Write_Dis_Data,0x00);
}
}
LCD_Write(LCD_Write_Con_Cmd,0x36);
LCD_Write(LCD_Write_Con_Cmd,0x30);
}
/******************************************************************************
【功能说明】 在指定行列显示自定义图形(定义为 64X8像素)
【入口参数】 u8 row: 行坐标 取值范围(0-63)
u8 col: 列坐标 取值范围(0-7)
u8 row_Pixel: 行像素个数 取值范围(1-64)
u8 col_Pixel: 列像素个数 取值范围(1-8)
u8 *Dis_Data: 显示数据指针
【注意事项】 : 行坐标加行偏移不能超过 63
列坐标加列偏移不能超过 7
******************************************************************************/
void LCD_Dis_Graphics(u8 row, u8 col, u8 row_Pixel, u8 col_Pixel, u8 *Dis_Data)
{
uint8_t r,c,r_count,c_count;
//打开绘图模式
LCD_Write(LCD_Write_Con_Cmd,0x34);
for(r_count = row; r_count < row + row_Pixel; r_count++)
{
if(r_count > 31) r = r_count - 32;
else r = r_count;
for(c_count = col; c_count < col + col_Pixel; c_count++)
{
if(r_count > 31) c = c_count + 8;
else c = c_count;
LCD_Write(LCD_Write_Con_Cmd, r+0x80);
LCD_Write(LCD_Write_Con_Cmd, c+0x80);
LCD_Write(LCD_Write_Dis_Data,*Dis_Data++);
LCD_Write(LCD_Write_Dis_Data,*Dis_Data++);
}
}
LCD_Write(LCD_Write_Con_Cmd,0x36);
LCD_Write(LCD_Write_Con_Cmd,0x30);
}
/******************************************************************************
【功能说明】 在指定行列清除自定义图形(定义为 64X8像素)
【入口参数】 u8 row: 行坐标 取值范围(0-63)
u8 col: 列坐标 取值范围(0-7)
u8 row_Pixel: 行像素个数 取值范围(1-64)
u8 col_Pixel: 列像素个数 取值范围(1-8)
【注意事项】 : 行坐标加行偏移不能超过 63
列坐标加列偏移不能超过 7
******************************************************************************/
void LCD_Clear_Graphics(u8 row, u8 col, u8 row_Pixel, u8 col_Pixel)
{
uint8_t r,c,r_count,c_count;
//扩充指令
LCD_Write(LCD_Write_Con_Cmd,0x34);
for(r_count = row; r_count < row + row_Pixel; r_count++)
{
if(r_count > 31) r = r_count - 32;
else r = r_count;
for(c_count = col; c_count < col + col_Pixel; c_count++)
{
if(r_count > 31) c = c_count + 8;
else c = c_count;
LCD_Write(LCD_Write_Con_Cmd, r+0x80);
LCD_Write(LCD_Write_Con_Cmd, c+0x80);
LCD_Write(LCD_Write_Dis_Data,0x00);
LCD_Write(LCD_Write_Dis_Data,0x00);
}
}
LCD_Write(LCD_Write_Con_Cmd,0x36);
LCD_Write(LCD_Write_Con_Cmd,0x30);
}
|