1、官网地址:前台 - 肇庆市金鹏实业有限公司 (gptlcm.cn)

2、屏参数:点阵数128*32,显示2行8列。供电5v,注意供电不足5v时显示不清或不显示。

3、手册上相关说明

每个调用码可以存一个16*16的图标,所以总共能存4个16*16的图标。根据40H-4FH等地址存入,显示时使用调用码。

 4、自定义图标放入CGROM操作步骤:

    存入步骤:

  1. 设置为扩充指令集;
  2. 设置SR=0,允许设定CGRAM地址;
  3. 设置为基本指令集;
  4. 循环执行以下操作写入16个字节数据(设定CGRAM的存储地址,写入自定义数据);
  • 显示步骤:
  • 设置DDRAM地址;
  • 写入CGRAM调用码

5、实现代码:

/*数据写入num:0,1,2,3,对应调用号0000H,0002H,0004H,0006Hpdat:图标数据
*/
void SET_CGRAM(uint8_t num,uint8_t *pdat)
{uint8_t i,add;wr_lcd (comm,0x34);//扩展指令集wr_lcd (comm,0x02); //允许写CGRAM地址wr_lcd (comm,0x30); //基本指令集add = (num <<4) | 0x40;//DB6=1,所以或0x40for(i=0;i<16;i++){wr_lcd (comm,add+i); wr_lcd (dat,pdat[i*2]);wr_lcd (dat,pdat[i*2+1]);        }
}
void Set_Cursor(uint8_t x1,uint8_t y1)
{uint8_t i=0;switch(x1){case 0:i=0x80;break;case 1:i=0x90;break;}i=y+i;wr_lcd (comm,i);
}
/*显示函数形参:x1,y1显示坐标,num:0,1,2,3,对应调用号0000H,0002H,0004H,0006H
*/
void Display_CGRAM(uint8_t x1,uint8_t y1,uint8_t num)
{Set_Cursor(x1,y1);wr_lcd (dat,0);  wr_lcd (dat,num*2);
}

6、代码解释:

wr_lcd (comm,0x34); 0x34=0011 0100 即DL=1 8bit接口,RE=1:扩充指令集 G=0 绘图OFF

wr_lcd (comm,0x02); 0x02: SR=0

CGRAM地址:从0x40开始,因为DB6=1 ,0100 0000=0x40

Display_CGRAM函数是写调用号。

 7、函数调用

在main.c里初始化SET_CGRAM(1,Ret);

显示时调用 Display_CGRAM(0,1,1);

 8、图片制作

  1. 先找图片,在阿里巴巴矢量库中找【返回】图片,下载-》字号16-》PNG下载,字模软件用的图片格式是bmp,所以图片用电脑自带的画图软件另存为bmp格式。
  2. 使用字模提取软件

基本操作-》打开图像图标;

参数设置-》其他选项-》选横向取模,字节倒序不选。

取模方式-》C51

16*16的图片生成的字节数16*16/8=32个字节。一行16个点对应2个字节。

uint8_t Ret[32]={

0x00,0x00,0x00,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x70,0x00,0x7F,0xF8,0x70,0x1C,

0x38,0x06,0x0C,0x06,0x06,0x02,0x02,0x06,0x00,0x0E,0x07,0xFC,0x07,0xF0,0x00,0x00,

};

参考:带字库12864超详细扩展操作,写自定义字符,画图,画直线,画圆,读取数据等操作.doc (book118.com)

附OCMJ2X8C的初始化,用的stm32f103c8t6

#define uint  unsigned int
#define uchar unsigned char
#define x     0x80
#define y     0x80
#define comm  0
#define dat   1#define Set_rs   GPIO_SetBits(GPIOB,GPIO_Pin_11)
#define Clr_rs  GPIO_ResetBits(GPIOB,GPIO_Pin_11)
#define Set_rw   GPIO_SetBits(GPIOB,GPIO_Pin_10)
#define Clr_rw   GPIO_ResetBits(GPIOB,GPIO_Pin_10)
#define Set_e  GPIO_SetBits(GPIOB,GPIO_Pin_1)
#define Clr_e  GPIO_ResetBits(GPIOB,GPIO_Pin_1)vu32 nTime;
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure; void wr_lcd (uchar dat_comm,uchar content);    void chk_busy (void)               //忙检测
{//PA7接DB7,设为输入,作为忙检测GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_Init(GPIOA, &GPIO_InitStructure);Clr_rs;Set_rw;Set_e;while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_7)!=0);Clr_e;//转为输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &GPIO_InitStructure);
}
/*---------------显示汉字或字符----------------*/
void chn_disp (uchar *chn)
{uchar i,j;wr_lcd (comm,0x30);wr_lcd (comm,0x80);j=0;for (i=0;i<16;i++)wr_lcd (dat,chn[j*16+i]);wr_lcd (comm,0x90);j=1;for (i=0;i<16;i++)wr_lcd (dat,chn[j*16+i]);
}
void Delay(vu32 time)
{nTime = time;while(nTime--);
}
void GPIO_Configuration(void)     //初始化IO口
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_10|GPIO_Pin_11;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOB, &GPIO_InitStructure);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &GPIO_InitStructure);
}void init_lcd (void)
{
//  rst=1;GPIO_Configuration();GPIO_SetBits(GPIOB,GPIO_Pin_0) ; //RST引脚置高Delay(1000);//Set_psb;wr_lcd (comm,0x30);  /*30---基本指令动作*/ wr_lcd (comm,0x01);  /*清屏,地址指针指向00H*/wr_lcd (comm,0x06);  /*光标的移动方向*/wr_lcd (comm,0x0c);  /*开显示,关游标*/
}/*--------------清DDRAM------------------*/
void clrram (void)
{wr_lcd (comm,0x30);wr_lcd (comm,0x01);Delay(5000);
}
/*---------------------------------------*/void wr_lcd (uchar dat_comm,uchar content)
{   uint a;chk_busy ();//Delay(20); a=(uint)content;   if(dat_comm){Set_rs;   //dataClr_rw;   //write}else {Clr_rs;   //commandClr_rw;   //write}//Delay(10);GPIO_Write(GPIOA,a);//Delay(20);Set_e;Delay(30);Clr_e;
}
/*----------------显示图形-----------------*/
void img_disp (uchar *img)
{uchar i,j;for(j=0;j<32;j++){for(i=0;i<8;i++){wr_lcd (comm,0x34);wr_lcd (comm,y+j);wr_lcd (comm,x+i);wr_lcd (comm,0x30);wr_lcd (dat,img[j*16+i*2]);wr_lcd (dat,img[j*16+i*2+1]);}}wr_lcd (comm,0x36);
}

st7920驱动OCMJ2X8C屏使用CGRAM自定义图标相关推荐

  1. qss 更改图标_Qt实现自定义图标功能

    Qt实现自定义图标功能 ​ 作者:hackett ​ ​ 微信公众号:加班猿 ​ 在上一节的基础上进行定义图标的功能 效果:要做的是应用的放大缩小.最小化功能,鼠标移动和点击图标变色 准备工作: 控件 ...

  2. ST7920驱动的LCD12864实现单行反白显示

    参考链接: ST7920驱动的LCD12864实现单行反白显示 - jqdy - 博客园 12864液晶模块的详细使用_Rainlee随笔记-CSDN博客_12864使用 GDRAM空间有64×256 ...

  3. arduino上ESP8266用Adafruit_SSD1306库驱动OLED屏

    关注.星标公众号,不错过精彩内容 编辑:Tony 来源:公众号TonyCode 在进行后续的ESP8266学习前,我们先来对OLED屏进行驱动,为后续学习提供直观的信息显示. 1. 安装驱动库 在之前 ...

  4. Android PC投屏简单尝试- 自定义协议章(Socket+Bitmap)

    代码地址 :https://github.com/deepsadness/MediaProjectionDemo 效果预览 投屏效果预览 简单说明: 使用Android MediaProjection ...

  5. Ubuntu登录后黑屏,或者桌面图标消失不见

    Ubuntu登录后黑屏,或者桌面图标消失不见 原因一 Ubuntu的图形界面模块损毁了 方法一 重新安装xserver-xorg-lts-quantal,如果提示没有包xserver-xorg-lts ...

  6. yota3墨水屏设置_使用ESP32驱动电子墨水屏

    未经私信同意禁止转载! 一.简介 显示技术发展很快,高中的时候大家还在学习阴极射线管显示,天天在算电子的轨迹.而如今随处可见LED显示液晶显示. 今天给大家介绍一下电子墨水屏.目前生活中比较常见的是在 ...

  7. iview weapp icon组件自定义图标 小程序

    写小程序图标没有想要的,需要自定义的时候.可以使用阿里巴巴矢量图标库自定义图标. 找到自己需要的,然后先加入购物车,点开购物车选择下载代码,然后解压压缩包. 复制 iconfont.css中的内容,到 ...

  8. elementUI-添加自定义图标

    elementui的小图标有限,跟UI给的不一样,这个时候咋办呢?百度走起....参考了两篇博主分享的 自定义elementui中的图标 和 建立图标库,这里主要用到第一种 实际中: elementU ...

  9. MSP430F5529 DriverLib 库函数学习笔记(十)SPI驱动墨水屏

    目录 上机实战 SPI 驱动 墨水屏 墨水屏介绍 电子纸的分类 电泳型电子纸技术详解 原理 结构 优势与不足 实验电路介绍 程序分析 引脚初始化 SPI模块初始化 发送和接收 全部源代码 main.c ...

最新文章

  1. js、css分别实现元素水平垂直居中
  2. Keepalived + LVS-DR搭建高可用Web服务器集群
  3. C++下简单的socket编程
  4. 八种架构设计模式及其优缺点概述
  5. [bzoj2400]Optimal Marks
  6. CSS中scoped的作用
  7. 大部分人其实根本就不上进,他们只是表现的很努力
  8. C/C++ Memory Layout
  9. 实验三:跟踪分析Linux内核的启动过程
  10. C++习题 对象数组输入与输出
  11. Kronecker 定理
  12. 通讯录管理软件Cardhop for Mac
  13. Golang 基础:接口使用、实现原理(eface iface)和设计模式
  14. html程序产品目录,产品目录(Catalog)制作大师
  15. 重新安装macOS 一直报no bag entry
  16. matlab中Rip是什么意思,rip什么意思
  17. 美团脱颖而出的经验_使用条件格式使重要的Outlook邮件脱颖而出
  18. 设施网络选址的基本方法,网络设施选址的方法
  19. python安装launcher要选吗_python launcher是什么
  20. OTT系统和IPTV系统不一样吗?有什么区别?

热门文章

  1. 典型工业数据分析场景解读:机械设备振动监测和故障诊断
  2. C语言字符串中 char char* char[] 区别
  3. 配置python环境变量_星座般配,星座般配图
  4. [debug004]_GPIO对地短路问题
  5. 2020部队技术干部计算机等级考试,带你了解专业技术军官
  6. 计算机专业符合直招士官吗,直招士官报名开始,这些专业可报名,你的专业符合吗?...
  7. 042-18 RMAN备份与恢复2
  8. MVC框架的简单描述
  9. js时间与当前时间比较
  10. IgnoreActorWhenMoving