搜索
bottom↓
12
返回列表 发新帖
楼主: xylch101

3310/5110 LCD 驱动,一个函数实现任意位置放中英文字符,图片

[复制链接]

出0入0汤圆

发表于 2010-10-16 08:56:10 | 显示全部楼层
Mark。。。。。。。。。。

出0入0汤圆

发表于 2010-11-8 11:00:02 | 显示全部楼层
现在MARK不算晚吧...哈哈

出0入0汤圆

发表于 2010-11-8 11:23:45 | 显示全部楼层
回复【楼主位】xylch101
-----------------------------------------------------------------------

不错,有用的帖子。标记。

出0入0汤圆

发表于 2010-11-8 12:01:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-8 12:27:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-8 13:47:46 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-8 17:15:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-31 17:16:30 | 显示全部楼层
楼主的思路是不错   就是太占内存了 光缓存就占了512字节。现在单片机的RAM都比较小,所以单片机选型要注意了

出0入0汤圆

发表于 2011-4-1 18:46:49 | 显示全部楼层
学习学习

出0入0汤圆

发表于 2011-4-11 09:39:39 | 显示全部楼层
好贴  顶

出0入0汤圆

发表于 2011-5-4 19:25:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-16 23:45:00 | 显示全部楼层
mark!!!!!!!

出0入0汤圆

发表于 2011-5-16 23:48:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-26 22:47:10 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-5-27 12:56:52 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-26 20:17:02 | 显示全部楼层
好东西

出0入0汤圆

发表于 2011-7-11 16:47:12 | 显示全部楼层
好东西,学习了

出115入0汤圆

发表于 2011-7-17 21:24:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-17 21:43:02 | 显示全部楼层
mARK..

出0入0汤圆

发表于 2011-8-12 11:15:02 | 显示全部楼层
用记事本打开就不乱码。很好看的文件

出0入0汤圆

发表于 2011-8-14 14:19:48 | 显示全部楼层
发现BufferPixelStuff()函数存在问题。
如果连续调用
        BufferPixelStuff( 3, 0, 0, 11, 12, 12);
        BufferPixelStuff( 3, 0, 0, 2, 12, 12);
则下面的字有部分被擦除了。
修正如下:
/*********************************************
函数名        :        BufferPixelStuff
功能        :        把图片、文字点阵写入全屏缓存(精确定位,右上角坐标可以为LCD上任意位置。
                                字符大小不限,自行修改数组点阵数据,单个字符的宽高参数不要传错了,16号
                                字模不要传成12,12了,12号字模不要传成16,16了)
参数        :        byte type                type=1-->图片点阵 / type=2-->ascii字符 / type=3-->中文字符
                        byte index                数据在数组中的位置(当type=2时,直接传ascii字符,如:'A')
                        byte x                        横坐标:0~83
                        byte y                        纵坐标:0~47
                        byte width                点阵数据的宽度(位数) 如果是字符就为一个字符的宽度、如果是图片就为整个图片的宽度
                        byte height                点阵数据的高度(位数) 如果是字符就为一个字符的高度、如果是图片就为整个图片的高度
返回        :        无
编辑器        :        Notepad 2
*********************************************/
void BufferPixelStuff( byte type, byte index, byte x, byte y, byte width, byte height)
{
        byte i, j, tmpRow;
        byte row = y / 8;
        byte offset = y % 8;
        byte level = ( (height % 8 == 0) ? (height / 8) : ( height / 8 + 1 ) );       
        byte bytes[ 2 ] = { 0 };
        byte byteTmp;
       
        for( j=0; j < width; j++ )
        {
                tmpRow = row;
                byteTmp = UnClear( LcdPixelBuffer[ tmpRow ][ x + j ], 8 - offset );
                for( i=0; i < level; i++ )
                {
                        if( type == 1 )
                        {
                                SplitByte( pgm_read_byte( &PIXEL_BMP[ index ][ i * width + j ] ), offset, bytes);
                        }
                        else if( type == 2 )
                        {
                                SplitByte( pgm_read_byte( &PIXEL_ENGLISH_CHAR[ index - 32 ][ i * width + j ] ), offset, bytes);
                        }
                        else if( type == 3 )
                        {
                                SplitByte( pgm_read_byte( &PIXEL_CHINESE_CHAR[ index ][ i * width + j ] ), offset, bytes);
                        }
                        else
                        {
                                return;
                        }
                        if((offset < height % 8) && (i == level - 1))
                        {
                                byteTmp |= bytes[ 0 ];
                        }
                        else
                        {
                                LcdPixelBuffer[ tmpRow++ ][ x + j ] = byteTmp | bytes[ 0 ];
                                byteTmp = bytes[ 1 ];                       
                        }               
                }
                LcdPixelBuffer[ tmpRow ][ x + j ] = byteTmp | LnClear( LcdPixelBuffer[ tmpRow ] [x + j ], ( offset + height ) % 8 );
        }
}

出0入0汤圆

发表于 2011-8-17 08:33:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-29 15:37:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-5 17:16:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-6 10:19:05 | 显示全部楼层
也在玩这种液晶,老是没反应

出0入0汤圆

发表于 2011-9-6 13:15:03 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-9-14 23:34:19 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-15 11:09:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-15 16:16:48 | 显示全部楼层
jihao

出0入0汤圆

发表于 2011-11-14 23:15:58 | 显示全部楼层
正用这屏,便宜又实用,mark

出0入0汤圆

发表于 2011-11-14 23:36:57 | 显示全部楼层
貌似不错。mark!

出0入59汤圆

发表于 2011-11-15 01:04:32 | 显示全部楼层
留用,谢谢!

出0入0汤圆

发表于 2011-11-15 01:20:13 | 显示全部楼层
mark

出0入10汤圆

发表于 2011-11-15 21:49:35 | 显示全部楼层
先记号一下,还没玩过液晶

出0入0汤圆

发表于 2012-1-18 12:12:00 | 显示全部楼层
标记

出0入0汤圆

发表于 2012-1-18 22:32:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-8 12:10:16 | 显示全部楼层
恩,做得很不错

出0入0汤圆

发表于 2012-2-8 12:35:18 | 显示全部楼层
MARK!

出0入0汤圆

发表于 2012-2-9 23:36:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-3-11 13:20:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-3-25 17:15:26 | 显示全部楼层
学习了——————

出0入0汤圆

发表于 2014-12-7 16:52:36 | 显示全部楼层
楼主程序存在俩个问题,使用过程序中会擦除下面的字,对于高度小于8的图片或字模也会出问题修改如下
/*********************************************
函数名        :        BufferPixelStuff
功能        :        把图片、文字点阵写入全屏缓存(精确定位,右上角坐标可以为LCD上任意位置。
                字符大小不限,自行修改数组点阵数据,单个字符的宽高参数不要传错了,16号
                字模不要传成12,12了,12号字模不要传成16,16了)
参数        :        type        type = 1-->图片点阵 / type = 2-->ascii字符 / type = 3-->中文字符
                index        数据在数组中的位置(当type=2时,直接传ascii字符,如:'A')
                x        横坐标:0~83
                y        纵坐标:0~47
                width        点阵数据的宽度(位数) 如果是字符就为一个字符的宽度、如果是图片就为整个图片的宽度
                height        点阵数据的高度(位数) 如果是字符就为一个字符的高度、如果是图片就为整个图片的高度
返回        :        无
编辑器        :        Notepad 2
*********************************************/
void Buffer_Pixel_Stuff(unsigned char type,unsigned char *index,unsigned char x, unsigned char y, unsigned char width, unsigned char height)
{
  unsigned char i, j,tmpRow;
  unsigned char row;
  unsigned char offset;
  unsigned char level;
  unsigned char bytes[2];
  unsigned char byteTmp;
  unsigned char gb_buf[72];
  row = y / 8;
  offset = y & 0x07;
  level = height >> 3;
  level = (height & 0x07) == 0 ? level : level + 1;
  if(type == 3)
  {
    bytes[0] = index[0];
    bytes[1] = index[1];
    switch(width)
    {
    case 12:
      SPI_Read_Flash((unsigned long)(((bytes[0]-0xa1)*94)+(bytes[1]-0xa1))*24,gb_buf,24);
      break;
    case 16:
      SPI_Read_Flash((unsigned long)(((bytes[0]-0xa1)*94)+(bytes[1]-0xa1))*32 + (unsigned long)0x2FEB0,gb_buf,32);
      break;
    default:
      SPI_Read_Flash((unsigned long)(((bytes[0]-0xa1)*94)+(bytes[1]-0xa1))*72 + +(unsigned long)0x6FCF0,gb_buf,72);
      break;
    }
  }
  
  for(j = 0; j < width;j++ )
  {
    tmpRow = row;
    y = height;
    if(x + j < 84)
    {
      if(offset + height < 8)
        byteTmp = Mid_Clear(Display_Buf[tmpRow][x + j],8 - offset,8 - (offset + height));
      else
        byteTmp = UnClear(Display_Buf[tmpRow][x + j],8 - offset);
    }
   
    for(i = 0;i < level;i++ )
    {
      if(type == 1)
        Split_Byte(index[i * width + j],offset,bytes);
      else if(type == 2)
        Split_Byte(font6x8[*index - 32][i * width + j],offset,bytes);
      else if(type == 3)
        Split_Byte(gb_buf[i * width + j],offset,bytes);
      else if(type == 4)
        Split_Byte(font8x16[*index][i * width + j],offset,bytes);
      else
        Split_Byte(0x00,offset,bytes);
      
      if(i > 0)
      {
        if(y > 7)
        {
          if(x + j < 84)
            Display_Buf[tmpRow++][x + j] = byteTmp | bytes[0];
          byteTmp = bytes[1];
          y -= 8;
        }
        else
        {
          byteTmp |= bytes[0];
          break;
        }
      }
      else
      {
        if(x + j < 84)
          Display_Buf[tmpRow++][x + j] = byteTmp | bytes[0];
        byteTmp = bytes[1];
         if(offset + height < 8)
           y = 0;
         else
         {   
           y += offset;
           y -=  8;
         }
      }
      if(tmpRow > 6)
        tmpRow = 0;
    }
    Display_Buf[tmpRow][x + j] = byteTmp | LnClear(Display_Buf[tmpRow][x + j],y);
  }
}

出0入0汤圆

发表于 2014-12-7 17:04:03 | 显示全部楼层
显示很漂亮!

出0入0汤圆

发表于 2015-5-22 16:49:37 | 显示全部楼层
为何楼主针对坛友们提出的问题没有回复呀!!

出0入0汤圆

发表于 2015-5-23 09:17:33 | 显示全部楼层
有用,先收藏!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-8 11:49

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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