2019年7月27日
做小车的第六天。
今天我实现了一个新的功能 OLED显示汉字。
刚开始学习这个显示汉字的时候也是一头污水,代码啊大部分看不懂,看OLED讲解的那个视频反复看了好几遍。还是没什么思路。
但是那自己慢慢的开始修改自带的源代码,尝试的去做,从显示点、线、字符、字符串一步步的开始进行,随着这个一步步的学会,显示汉字那,哈哈,原理也是差不多。
大致思路也就是调用.c中的函数,设置里面的变量,去调出自己想要的字符,汉字的代码(这些代码都是在一个数组里)
先说说重要的,怎么显示出汉字:
比如我们想让OLED显示屏显示一个字符串:“CODE”,
主函数是这么两条语句:
OLED_ShowString(63,48,“CODE:”,16); (63和48是字符串在屏幕中显示的位置,也就是坐标。)
//OLED_ShowString(u8 x,u8 y,u8 *chr,u8 size1)
//x:0~127
//y:0~63
//size选择字体大小 12/16/24
这两条语句的拆解步骤如下
1、既然是显示字符串,我们就得调用字符串显示函数:
void OLED_ShowString(u8 x,u8 y,u8 chr,u8 size1)
2、这个字符串显示函数通过指针p不断调用字符显示函数:
void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 size1)来显示字符中的每个字符
3、字符是怎么组成的?由点组成的嘛。。在OLED_ShowChar()函数中又调用画点函数:
void OLED_DrawPoint(u8 x,u8 y)
4、而第二条语句至关重要,这个语句把我们之前开辟的一块128*8字节的空间里面的数据传输到SSD1306(OLED模块控制器)的GRAM中。这样我们的汉字就显示出来了。
我来举一个例子:
比如我想在屏幕上显示 “河北科技大学”
1、我首先要把6个字的字模制作出来:
配置如图
之后我们在自己的库里这几个字模加进库里。
主函数这样写:
OK。
上一篇:STM32 串口通信简单测试
下一篇:基于STM32超声波测距
推荐阅读
史海拾趣
Embedded Planet公司自成立之初就注重技术创新和与业界领导者的合作。通过持续研发,公司成功开发出一款革命性的嵌入式系统解决方案,这一解决方案能够显著提升设备的性能和效率。同时,Embedded Planet积极与卓联半导体公司合作,共同推出了一款伪线模块,该模块能够大幅度降低通过分组网络传送TDM业务的网络设备的复杂性,并缩短开发时间。这一创新产品得到了市场的广泛认可,也为公司赢得了更多的合作机会。
随着业务的不断扩展和产品的不断创新,DEC在1966年决定公开上市。这次上市不仅为DEC带来了大量的资金,还提升了其在业界的知名度。借助资本市场的力量,DEC能够进一步扩大生产规模,加强研发能力,并推出更多具有竞争力的产品。在上市后的几年里,DEC的销售收入快速增长,成为计算机行业的重要参与者。
随着环保意识的不断提高,绿色环保已经成为电子行业的发展趋势。EHC公司积极响应这一趋势,致力于研发和生产绿色环保的电子产品。公司采用环保材料和工艺,减少生产过程中的污染排放。同时,EHC公司还积极推动废旧电子产品的回收和再利用工作,为环保事业做出了积极贡献。这种对环保的关注和行动让EHC公司在行业中树立了良好的形象。
早期,ABL Heatsink公司主要生产通用型散热器,但随着市场竞争的加剧,公司意识到必须调整市场定位。于是,公司开始专注于研发针对特定电子设备的高性能散热器。通过深入了解客户需求,ABL Heatsink成功开发出一系列定制化产品,赢得了市场的青睐。
在电子行业的浪潮中,一家名为“通信先锋”的公司凭借其前瞻性的技术创新,迅速崭露头角。公司创始人敏锐地捕捉到了无线通信市场的巨大潜力,并投入大量资源进行研发。经过数年的努力,他们成功开发出了一款具有革命性的无线通信技术,极大地提升了数据传输速度和稳定性。
随着这款技术的推广和应用,“通信先锋”迅速获得了市场的认可。他们不仅与各大运营商建立了紧密的合作关系,还积极开拓海外市场,将产品和技术推向全球。在激烈的市场竞争中,他们凭借卓越的技术实力和良好的口碑,逐渐成为了通信行业的领军企业。
迫不得已要公开ISE工程,其中几个核心的模块的源程序想隐藏掉,打包成IP Core可以实现吗?有两种方法帮忙实现: 1.可以编译后写成.vqm格式 2.直接把模块综合成网表给别人。让他们在用的时候直接实例化网表文件 大家还有什么好方法呢?认为可行 ...… 查看全部问答∨ |
我想做一个汽车仪表的界面,表盘和指针都是直接导入位图,wince6.0里面不能用函数PlgBlt(),大家有什么好方法能让位图旋转吗?(即让指针转动起来)… 查看全部问答∨ |
对于块传输,看到书上常用的方式如下: bc 是数据的长度 UCHAR *inContext = USBDevice->BulkInEndPt->BeginDataXfer(inbuf,bc,&inOvLap); &nbs ...… 查看全部问答∨ |
一个USB通信的驱动问题,涉及到访问权限,望高手支招,谢谢! 在开发U盘,想与PC机进行自定义命令的通信(例如:从PC发一个命令控制指示灯的亮与灭,U盘上的监测和处理程序已经写好),可是在非管理员用户下调用CreateFile()设备不能打开,用GetLastError()发现错误值为5,我应该怎么实现呢?请高手们指点 ...… 查看全部问答∨ |