11845|4

327

帖子

1

TA的资源

纯净的硅(初级)

楼主
 

各种LCD12864取模总结 [复制链接]

突然觉得很有必要总结一下各种LCD12864的取模方式,以作为一份备忘录。
1.不带字库的12864屏以HTG13264液晶屏为例,取模方式为:

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


取模工具: 字模提取.zip (913 KB, 下载次数: 103, 售价: 1 分芯积分)

字模提取.zip (913 KB, 下载次数: 103, 售价: 1 分芯积分)

此帖出自单片机论坛

最新回复

写的不够详细啊 我是特别菜的的小白  详情 回复 发表于 2018-4-19 19:50
点赞 关注(2)
个人签名模电临时工
 

回复
举报

1

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
顶上,很实用
此帖出自单片机论坛
 
 

回复

327

帖子

1

TA的资源

纯净的硅(初级)

板凳
 
本帖最后由 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);
                }
  }  
}
//--------------------------------------------------------------------------------------------


此帖出自单片机论坛
 
个人签名模电临时工
 
 

回复

203

帖子

0

TA的资源

一粒金砂(高级)

4
 
学习了.
此帖出自单片机论坛
 
个人签名北京长信物联科技有限公司
专业的USB温湿度传感器、485温湿度传感器、气体传感器、64路DS18B20温度采集模块厂商。
www.lct2000.cn
QQ:1930227091
 
 

回复

28

帖子

0

TA的资源

一粒金砂(中级)

5
 
写的不够详细啊
我是特别菜的的小白
此帖出自单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表