社区导航

 

搜索
查看: 6228|回复: 4

[资料分享] 各种LCD12864取模总结

[复制链接]

263

TA的帖子

1

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2017-11-20 17:32 | 显示全部楼层 |阅读模式
突然觉得很有必要总结一下各种LCD12864的取模方式,以作为一份备忘录。
1.不带字库的12864屏以HTG13264液晶屏为例,取模方式为:

不带字库取模

不带字库取模

2.带字库的12864屏自定义字符取模:

带字库自符取模

带字库自符取模


取模工具: 字模提取.zip (913 KB, 下载次数: 71, 售价: 1 枚芯币)
模电临时工

回复

使用道具 举报

1

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2017-11-20 23:06 | 显示全部楼层
顶上,很实用

回复

使用道具 举报

263

TA的帖子

1

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2017-11-21 14:55 | 显示全部楼层
本帖最后由 shipeng 于 2017-11-21 15:01 编辑

再附上我的带字库12864的自定义字符的例程:
const u8 pic16x16[][32]=
{
        {
                0x0C,0x00,0x0E,0x00,0x09,0x00,0x08,0x80,0x08,0x40,0x08,0x20,0x08,0x10,0x08,0x08,
                0x08,0x04,0x08,0x3C,0x09,0x20,0x0A,0x90,0x0C,0x90,0x00,0x48,0x00,0x48,0x00,0x30,/*"Mouse1.bmp",0*/
        },
        {
                0x07,0xE0,0x18,0x18,0x20,0x04,0x43,0x02,0x47,0x02,0x8E,0x01,0x9C,0x01,0xBF,0xFD,
                0xBF,0xFD,0x9C,0x01,0x8E,0x01,0x47,0x02,0x43,0x02,0x20,0x04,0x18,0x18,0x07,0xE0,/*"LeftDirection.bmp",1*/
        },
        {
                0x00,0x00,0x03,0xFC,0x19,0x0C,0x25,0x04,0x25,0x04,0x19,0x10,0x01,0x10,0x01,0xF0,
                0x01,0x10,0x01,0x10,0x01,0x00,0x01,0x00,0x01,0x00,0x03,0x80,0x00,0x00,0x00,0x00,/*"¡®F",2*/
        },
        {
                0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x04,0x20,0x04,0x20,0x02,0x40,0x01,0x80,
                0x01,0x80,0x01,0xC0,0x01,0xC0,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"16x16key.bmp",3*/
        },
}; unsigned char Byte_Conv(unsigned char sou)
{
        unsigned char i,j=sou;
        for (i=0;i<7;i++)
        {
                j<<=1;
                sou>>=1;
                j|=sou&1;
        }
        return (j);
}
//--------------------------------------------------------------------------------------------
//¼ì2éLCDÃ|×′ì¬
//·μ»Ø1ÎaÃ|,·μ»Ø0ÎaÏD
u8 ReadStatusLCD(void)
{
        u8 buf;
        LCD_DATA_OUTPORT |= 0xff; //GOIOB->ODR êy¾Yêä3ö¶Ë¿ú
  LCD_DATA_IN();           //éèÖÃêy¾Y¶Ë¿úÎaéÏà-êäèë
        LCD_EN = 0;
        delay_us(5);
  LCD_RS = 0;//RSÎaμí RWÎa¸ß ¶á3öÃ|±êÖ¾¼°μØÖ·¼ÆêyÆ÷μÄ×′ì¬
  LCD_RW = 1;
        delay_us(5);
  LCD_EN = 1;
        delay_us(5);
  while (LCD_DATA_INPORT&1);
        buf = LCD_DATA_INPORT;
        LCD_EN = 0;

  return Byte_Conv(buf); //由于我的屏DB0-DB7对应我的IO口的P7-P0所以MSB,LSB要颠倒一下,Byte_Conv()是一个字节高低位转换函数
}
//--------------------------------------------------------------------------------------------
//D′Ö¸áîμ½LCD
void LCD_Wcmd(u8 cmd)
{                          
  ReadStatusLCD();

  LCD_RS = 0;
  LCD_RW = 0; //D′Ö¸áî

  LCD_EN = 0; //èôEÎa¸ßÔòÎa¶á2ù×÷
  delay_us(5);
  LCD_DATA_OUTPORT &= 0xFF00;
        LCD_DATA_OUTPORT |= Byte_Conv(cmd);
  LCD_DATA_OUT();
  delay_us(5);

  LCD_EN = 1; //E′ó¸ßμ½μíÅäoÏ/WÃüáî½øDDD′êy¾Y»òÖ¸áî
  delay_us(5);
  LCD_EN = 0;  
}
//--------------------------------------------------------------------------------------------
///D′ÏÔê¾êy¾Yμ½LCD
void LCD_Wdata(u8 data)
{                          
  ReadStatusLCD();

  LCD_RS = 1;
  LCD_RW = 0; //D′êy¾Y

  LCD_EN = 0;
  delay_us(5);
  LCD_DATA_OUTPORT &= 0xFF00;
        LCD_DATA_OUTPORT |= Byte_Conv(data);
  LCD_DATA_OUT();
  delay_us(5);
  LCD_EN = 1;
  delay_us(5);
  LCD_EN = 0;
}
void WriteCGRAM(void)
{
        u8 i,j;
        LCD_Wcmd(0x30);//»ù±¾Ö¸áî delay(1);
        LCD_Wcmd(0x02);//ÔêDíDT¸ÄCGμØÖ· delay(1);
        LCD_Wcmd(0x40);//CGμØÖ· delay(1);
        for (i=0;i<4;i++)
        {
                for(j=0;j<32;j++)
                {
                        LCD_Wdata(pic16x16[j]);
                }
        }
}
//--------------------------------------------------------------------------------------------
//LCD3õê¼»ˉ
void LCD_Init(void)
{
  LCD_Wcmd(0x34);      //à©3äÖ¸áî2ù×÷
  delay_ms(100);
  LCD_Wcmd(0x30);      //»ù±¾Ö¸áî2ù×÷
  delay_us(100);
  LCD_Wcmd(0x0C);      //ÏÔ꾿a£¬1Ø1a±ê
  delay_us(100);
  LCD_Wcmd(0x01);      //Çå3yLCDμÄÏÔê¾ÄúèY
  delay_ms(5);
        WriteCGRAM();
}
//--------------------------------------------------------------------------------------------
void LCD_Clear(void)
{                          
  LCD_Wcmd(0x01);      //Çå3yLCDμÄÏÔê¾ÄúèY
  delay_ms(5);
}
//--------------------------------------------------------------------------------------------
//é趨ÏÔê¾Î»ÖÃ
//x=0-3,y=0-7
void LCD_SetCursor(u8 x,u8 y)
{
        y=y>>1|y<<1&3;
  y=0x80+y*8;
  LCD_Wcmd(x+y);    //ÏÔê¾μØÖ·
}
void Disp1Char(u8 x,u8 y,u8 ascii)
{
        LCD_SetCursor(x,y);
        LCD_Wdata(ascii);
}
//--------------------------------------------------------------------------------------------
//′ó(x,y)′|¿aê¼ÏÔê¾ò»¸ö×Ö·û′®
//*p:′yÏÔê¾×Ö·û′®
void LCD_ShowString(u8 x,u8 y,const unsigned char *p)
{
        u8 i=(8-x)*2;
  LCD_SetCursor(x,y);
  while(*p!='\0')
  {      
    LCD_Wdata(*p++);
                if (--i==0)
                {
                        if (y==3)break;
                        else LCD_SetCursor(0,y+1);
                }
  }  
}
//--------------------------------------------------------------------------------------------


模电临时工

回复

使用道具 举报

249

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2017-11-29 10:28 | 显示全部楼层
学习了.
北京长信物联科技有限公司
专业的USB温湿度传感器、485温湿度传感器、气体传感器、64路DS18B20温度采集模块厂商。
www.lct2000.cn
QQ:1930227091

回复

使用道具 举报

25

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2018-4-19 19:50 | 显示全部楼层
写的不够详细啊
我是特别菜的的小白

回复

使用道具 举报

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

关闭

站长推荐上一条 1/7 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-5-26 16:48 , Processed in 0.202607 second(s), 26 queries , Gzip On, MemCache On.

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