OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4659|回复: 6

我的12864为什么不能显示图形 求大神指导!!!

[复制链接]

6

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2013-5-5
在线时间
0 小时
发表于 2013-5-31 18:58:11 | 显示全部楼层 |阅读模式
其他数字,汉字和字符都可以显示   里面的图像显示程序为什么不能用啊 上网看了好多 改了好几次  这个程序也是在网上找的  下面是图像显示的部分  烧到单片机没反应

/****************************************************************************
【功能说明】 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);
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

27

主题

274

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
472
金钱
472
注册时间
2011-11-2
在线时间
11 小时
发表于 2013-5-31 20:12:38 | 显示全部楼层
难。没人愿意看估计。
回复 支持 反对

使用道具 举报

6

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2013-5-5
在线时间
0 小时
 楼主| 发表于 2013-6-1 09:38:14 | 显示全部楼层
回复【2楼】zenghi:
---------------------------------
唉  那能给个能用的显示函数吗?
回复 支持 反对

使用道具 举报

6

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2013-5-5
在线时间
0 小时
 楼主| 发表于 2013-6-1 09:50:42 | 显示全部楼层
回复【2楼】zenghi:
---------------------------------
边框的显示函数不难看的    但边框也不能用  不知道为什么
回复 支持 反对

使用道具 举报

头像被屏蔽

88

主题

231

帖子

2

精华

高级会员

Rank: 4

积分
844
金钱
844
注册时间
2013-4-11
在线时间
40 小时
发表于 2013-6-15 17:24:16 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

6

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2013-5-5
在线时间
0 小时
 楼主| 发表于 2013-6-22 10:03:17 | 显示全部楼层
知道了  先LCD_Write(LCD_Write_Con_Cmd,0x36);  后面LCD_Write(LCD_Write_Con_Cmd,0x06);  不能用0x34   现在能显示图片了
回复 支持 反对

使用道具 举报

头像被屏蔽

6168

主题

7036

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
19705
金钱
19705
注册时间
2012-12-27
在线时间
25 小时
发表于 2013-6-22 14:11:50 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-18 18:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表