这公司叫高通,但新版规格书不带地址运算,带地址运算规格书下载GT30L32S4W规格书,带地址运算

芯片管脚配置:

基础驱动及读取代码:

/********************************************************************* @brief   GT20 SPI发送指令* @param   [in] cmd 字符在芯片中的地址* @retval  None*******************************************************************/
static void GT30L32_Send_Byte(uint32_t cmd)
{uint8_t i;cmd=cmd|0x03000000;for(i=0;i<32;i++){GT20L_CLK_0;if(cmd&0x80000000){GT20L_MOSI_1;}else {GT20L_MOSI_0;}    GT20L_CLK_1;cmd=cmd<<1;}
}/********************************************************************* @brief   GT20 SPI读取一个字节* @param   [in]None* @retval  一个字节*******************************************************************/
static uint8_t GT30L32_Read_Byte(void)
{uint8_t i;uint8_t dat=0;cm_gpio_level_e S1Y_SO = CM_GPIO_LEVEL_LOW;GT20L_CLK_1;for(i=0;i<8;i++){GT20L_CLK_0;dat=dat<<1;cm_gpio_get_level(GT20L_SIMO,&S1Y_SO);if(S1Y_SO){dat=dat|0x01;}else{dat&=0xFE;}GT20L_CLK_1;    }   return dat;
}
/***************************************************** @brief   从字库中读数据* @param   [in] Address  : 表示字符点阵在芯片中的字节地址。* @param   [in] byte_long : 是读点阵数据字节数。* @param   [out] p_arr   : 是保存读出的点阵数据的数组。* @retval  None
*****************************************************/
static void GT30L32_Read( uint32_t  address, uint8_t  byte_long, uint8_t* p_arr )
{unsigned int j = 0;GT20L_CLK_1;GT20L_MOSI_1;GT20L_CS_0;GT30L32_Send_Byte( address );for( j = 0; j < byte_long; j++ ){p_arr[j] = GT30L32_Read_Byte();}GT20L_CS_1;
}

[GT30L32S4W所有字体数据都是横置横排]

排置: W(横置横排)
点阵大小为 8X16的字母"A"的
点阵数据: 00 10 28 28 28 44 44 7C 82 82 82 82 00 00 00 00

如果读到的数据不对请检查驱动是否正确

代码将横置横排转换为竖置竖排墨水屏显示

/**************************************** @brief   ASCII8x16* @param   [in] ASCIICode:表示ASCII 码(8bits)* @param   [in] BaseAdd:说明该套字库在芯片中的起始地址。* @param   [out] DZ_Data:是保存读出的点阵数据的数组。* @retval  1 成功 0 失败
***************************************/
void GT30L32_Ascii8x16_Data( uint8_t ASCIICode, uint8_t* S1YDZ_Data )
{uint32_t BaseAdd = 0x1DD780;uint32_t address = (ASCIICode - 0x20 ) * 16 + BaseAdd;uint8_t zk[16];uint8_t dat= 0;uint8_t dat_zk = 0;uint8_t i,z;unsigned int j = 0;if( ( ASCIICode >= 0x20 ) && ( ASCIICode <= 0x7e ) ){GT20L_CLK_1;GT20L_MOSI_1;GT20L_CS_0;GT30L32_Send_Byte( address );//htl_uart0_printf("-----\r\n");for( j = 0; j < 16; j++ ){zk[j] = GT30L32_Read_Byte();// htl_uart0_printf("[%02x]",zk[j]);               }// htl_uart0_printf("-----\r\n");GT20L_CS_1;}
/转换输出///j=0;for(z=0;z<8;z++){for(i=0;i<8;i++){dat=dat<<1;   dat_zk = zk[i];dat_zk =dat_zk<<z;if(dat_zk&0X80)dat=dat|0x01;else dat&=0xFE;}S1YDZ_Data[j]    = dat;dat =0;dat_zk =0;j++;for(i=0;i<8;i++)  {dat=dat<<1; dat_zk = zk[i+8];dat_zk =dat_zk<<z;if(dat_zk&0X80)dat=dat|0x01;else dat&=0xFE;   }S1YDZ_Data[j]= dat;j++;}
}

15X16中文代码

/********************************************************************************* @brief  GB2312_15X16汉字字符读取 30 byte* @param  [in] GB2312Code 汉字内码* @param  [out] BUF    缓存数组* @retval none*******************************************************************************/void GT30L32_GB2312_15X16(const unsigned char *GB2312Code , uint8_t *BUF){uint8_t i;uint8_t dat= 0;uint8_t dat_zk = 0;uint8_t z;uint8_t j = 0;uint8_t zk[32]; uint32_t Address ;               //表示汉字或ASCII字符点阵在芯片中的字节地址。uint32_t BaseAdd = 0x2C9D0;      //说明点阵数据在字库芯片中的起始地址。uint8_t MSB = *GB2312Code;       //表示汉字内码GBCode 的高8bits。uint8_t LSB = *(GB2312Code + 1); //表示汉字内码GBCode 的低8bits/*计算方法:*/if((MSB >=0xA1) && (MSB <= 0Xa9) && (LSB >=0xA1))Address =( (MSB - 0xA1) * 94 + (LSB - 0xA1))*32+ BaseAdd;else if((MSB >=0xB0) && (MSB <= 0xF7) && (LSB >=0xA1)) Address = ((MSB - 0xB0) * 94 + (LSB - 0xA1)+ 846)*32+ BaseAdd; /********* 获取字符点阵数据 ****************/GT20L_CLK_1;GT20L_MOSI_1;GT20L_CS_0;osDelay(1);//大约0.11SGT30L32_Send_Byte( Address );for( i = 0; i < 32; i++ ){zk[i] = GT30L32_Read_Byte();}  GT20L_CS_1;/*****************转换输出**************************/for(z=0;z<8;z++)//16个字节{for(i=0;i<8;i++){dat=dat<<1; dat_zk = zk[i*2];dat_zk =dat_zk<<z;if(dat_zk&0X80)dat=dat|0x01;else dat&=0xFE; }BUF[j]    = dat;dat =0;dat_zk =0;j++;for(i=0;i<8;i++)  {dat=dat<<1; dat_zk = zk[i*2+16];dat_zk =dat_zk<<z;if(dat_zk&0X80)dat=dat|0x01;else dat&=0xFE;}BUF[j]= dat;j++;}//*************************************for(z=0;z<7;z++)//16个字节{for(i=0;i<8;i++){dat=dat<<1; dat_zk = zk[i*2+1];dat_zk =dat_zk<<z;if(dat_zk&0X80) dat=dat|0x01;else    dat&=0xFE;}BUF[j]  = dat;dat =0;dat_zk =0;j++;for(i=0;i<8;i++)  {dat=dat<<1; dat_zk = zk[i*2+1+16];dat_zk =dat_zk<<z;if(dat_zk&0X80)   dat=dat|0x01;else  dat&=0xFE;}BUF[j]= dat;j++;}}

GT30L32S4W中文字库芯片+墨水屏显示调好程序分享相关推荐

  1. 使用ESP8266让4.2inch e-paper墨水屏显示更多汉字

    一直以来一直想让不论是OLED还是墨水屏显示任意汉字,但都没能成功,主要原因是显示任意汉字就需要字库,但MCU容量有限,放不下全字符汉字库,加装汉字芯片或增加Falsh都需要硬件,还要接线挺麻烦的,最 ...

  2. 使用micropython(ESP8266、ESP32)驱动SES 2.66寸墨水屏显示中文

    由于需要做一些低功耗的东西,所以最近在尝试玩墨水屏.出于成本考虑(没钱的另一种委婉说法)从咸鱼淘到2块便宜的二手SES 2.66寸三色墨水屏,并使用micropython将其驱动起来,并用字库的方法显 ...

  3. 【硬件】墨水屏显示改造方案

    一直很喜欢墨水屏,它通过模拟纸质反射自然光的原理实现不伤眼的显示效果,但它的一大致命缺点是切换时慢. 这里和 那里 介绍了电子墨水的工作原理,可以看到正是因为这些粒子上下移动需要时间导致屏幕刷新率非常 ...

  4. esp8266时钟_ESP8266(Non-OS SDK) 驱动 waveshare 2.9 寸墨水屏(二)- 程序移植、修改与测试

    开始移植 上一篇文章简单介绍了了墨水屏原理.例程代码以及移植工作的可行性.这一步的目的是把前面在 STM32 跑的程序,完整地搬到 esp8266 上,达到相同的运行显示效果,Let's get st ...

  5. c语言tft屏浮点数显示,LCD屏显示小数的程序与心得

    最近调程序用到了LCD屏,起初在论坛里找到了坛友分享的显示小数的程序,自己挪过去发现不好用,就在坛友的程序的基础上做了一些小的修改,能满足需求了,但是近几天发现该玩的程序有个BUG,比如说传入显示数据 ...

  6. 树莓派 java 驱动 微雪 墨水屏 epaper

    树莓派 java 驱动 微雪 墨水屏 epaper B站视频指导 驱动结果显示 官方驱动测试 接线 初步测试 java驱动(仅二值图片展示,非灰阶部分) 引脚初始化 初始化墨水屏 点阵排列 显示方法 ...

  7. 墨水屏可视化超高频电子标签技术优势与应用解决方案

    随着全球智能制造进度的推进以及物流智能化管理水平的升级,行业亟需一种既能实现RFID批量读取.又能替代纸质标签在循环作业.供应链管理以及实现动态条码标签显示的产品.在此种行业需求背景下,基于墨水屏显示 ...

  8. 树莓派:4.2寸墨水屏

    两个月前财务部有一兄弟知道我在玩树莓派,说想要做一个带天气预报的台历,并给了一个大神的链接.无奈大神的技术栈跟我不是一个方向,研究了一把最后也没彻底搞定,所以决定先按我的思路重新做一次.这次倒是几乎要 ...

  9. 基于Lua框架下的合宙ESP32C3+1.5‘’Eink墨水屏天气时钟+OLED开源项目分享

    基于Lua框架下的合宙ESP32C3+1.5''Eink墨水屏天气时钟+OLED项目分享

最新文章

  1. 机器学习验证集为什么不再有新意?
  2. python调用exe程序 传入参数_关于使用c#调用python脚本文件,脚本文件需要传递参数...
  3. [bzoj3926][Zjoi2015]诸神眷顾的幻想乡
  4. python函数的目的与意义_Python函数的概念和使用
  5. maven settings.xml国内仓库配置
  6. C#中sql备份与还原
  7. python分类算法评估模型_Python机器学习(sklearn)——分类模型评估与调参总结(下)...
  8. git配置取消代理_「高手」如何优雅的解决 git 超时
  9. Audio -- Music Playback 框图
  10. WIN7 X64完美卸载SQL2008 R2并重装SQL2008
  11. ubuntu18.04 卸载Anaconda3
  12. 用户帐户控制---为了对电脑进行保护,已经阻止此应用。---管理员已阻止你运行此应。有关详细信息,请与管理员联系。
  13. gmail如何配置163邮箱服务器端口,hotmail,gmail,live,QQ,163,yahoo邮箱服务器及端口号,outlook,foxmail 设置...
  14. IK分词器结合ES使用
  15. MyBatisX插件没有出现蓝色鸟
  16. python拼多多领现金_拼多多天天领现金最后都是1分怎么办?
  17. 通过ip能查服务器型号,通过ip地址查服务器归属
  18. 罗永浩跟罗振宇八个半小时都聊了些什么
  19. 做一个很出色的程序员
  20. 格鲁夫12年前惊人的预言,解释了今天美国对中国芯片所做的一切

热门文章

  1. 基于面向对象 来写一个简单的贪吃蛇小游戏(代码可直接用)
  2. 微信小程npm相关问题
  3. JVM虚拟机的理解(上)
  4. 在VS中使用Wind数据终端API的经验(一)
  5. 从全备中恢复单库或单表,小心有坑!
  6. ITOM(IT运维管理软件)
  7. js--计算两个时间相差几年、几月、几日
  8. 总结python中的乱码问题
  9. 学习OpenCV:海森矩阵(Hessian Matrix)
  10. fixed 和setprecision()的用法