SSD1306 128*32屏幕驱动

最近在做一个小项目,使用合宙air001做主控,arduino开发环境,项目设计一个小屏作为显示,本身使用u8g2库,奈何这个air001空间太小,没写多少就把程序储存空间占满了,log也没办法打印,对于调试分析问题很大,所以想着自己写一个驱动用,

在网上搜索后,现有的代码移植来难以正常显示,没过深研究,一直在摸索修改代码,

经过多天的试错后,基本上可以仿造u8g2的效果,避免以后重复造轮子,特来分享给大家参考。

主要是两个驱动文件,ssd1306.h是字库文件

#ifndef SSD1306_H
#define SSD1306_H

#include <stdint.h>

// 字符像素数据(以ASCII字符集中的部分字符为例)
const uint8_t font[105][5] = {
    {0x00, 0x00, 0x00, 0x00, 0x00}, // ASCII 32 (Space)
    {0x00, 0x00, 0x5F, 0x00, 0x00}, // ASCII 33 (!)
    {0x00, 0x07, 0x00, 0x07, 0x00}, // ASCII 34 (")
    {0x14, 0x7F, 0x14, 0x7F, 0x14}, // ASCII 35 (#)
    {0x24, 0x2A, 0x7F, 0x2A, 0x12}, // ASCII 36 ($)
    {0x23, 0x13, 0x08, 0x64, 0x62}, // ASCII 37 (%)
    {0x36, 0x49, 0x55, 0x22, 0x50}, // ASCII 38 (&)
    {0x00, 0x05, 0x03, 0x00, 0x00}, // ASCII 39 (')
    {0x00, 0x1C, 0x22, 0x41, 0x00}, // ASCII 40 (()
    {0x00, 0x41, 0x22, 0x1C, 0x00}, // ASCII 41 ())
    {0x14, 0x08, 0x3E, 0x08, 0x14}, // ASCII 42 (*)
    {0x08, 0x08, 0x3E, 0x08, 0x08}, // ASCII 43 (+)
    {0x00, 0x50, 0x30, 0x00, 0x00}, // ASCII 44 (,)
    {0x08, 0x08, 0x08, 0x08, 0x08}, // ASCII 45 (-)
    {0x00, 0x60, 0x60, 0x00, 0x00}, // ASCII 46 (.)
    {0x20, 0x10, 0x08, 0x04, 0x02}, // ASCII 47 (/)
    {0x3E, 0x51, 0x49, 0x45, 0x3E}, // ASCII 48 (0)
    {0x00, 0x42, 0x7F, 0x40, 0x00}, // ASCII 49 (1)
    {0x42, 0x61, 0x51, 0x49, 0x46}, // ASCII 50 (2)
    {0x21, 0x41, 0x45, 0x4B, 0x31}, // ASCII 51 (3)
    // {0x18, 0x14, 0x1E, 0x14, 0x18}, // ASCII 52 (4)
    // {0x12, 0x51, 0x51, 0x49, 0x46}, // ASCII 53 (5)
    // {0x12, 0x51, 0x59, 0x4F, 0x46}, // ASCII 54 (6)
    // {0x40, 0x48, 0x48, 0x48, 0x30}, // ASCII 55 (7)
    {0x10, 0x18, 0x1C, 0x18, 0x10}, // ASCII 52 (4)
    {0x12, 0x51, 0x51, 0x49, 0x46}, // ASCII 53 (5)
    {0x12, 0x51, 0x59, 0x4F, 0x46}, // ASCII 54 (6)
    {0x40, 0x48, 0x48, 0x48, 0x30}, // ASCII 55 (7)
    {0x36, 0x49, 0x49, 0x49, 0x36}, // ASCII 56 (8)
    {0x06, 0x49, 0x49, 0x29, 0x1E}, // ASCII 57 (9)
    {0x00, 0x36, 0x36, 0x00, 0x00}, // ASCII 58 (:)
    {0x00, 0x56, 0x36, 0x00, 0x00}, // ASCII 59 (;)
    {0x08, 0x14, 0x22, 0x41, 0x00}, // ASCII 60 (<)
    {0x14, 0x14, 0x14, 0x14, 0x14}, // ASCII 61 (=)
    {0x00, 0x41, 0x22, 0x14, 0x08}, // ASCII 62 (>)
    {0x02, 0x01, 0x51, 0x09, 0x06}, // ASCII 63 (?)
    {0x32, 0x49, 0x79, 0x41, 0x3E}, // ASCII 64 (@)
    {0x7E, 0x11, 0x11, 0x11, 0x7E}, // ASCII 65 (A)
    {0x7F, 0x49, 0x49, 0x49, 0x36}, // ASCII 66 (B)
    {0x3E, 0x41, 0x41, 0x41, 0x22}, // ASCII 67 (C)
    {0x7F, 0x41, 0x41, 0x22, 0x1C}, // ASCII 68 (D)
    {0x7F, 0x49, 0x49, 0x49, 0x41}, // ASCII 69 (E)
    {0x7F, 0x09, 0x09, 0x09, 0x01}, // ASCII 70 (F)
    {0x3E, 0x41, 0x49, 0x49, 0x7A}, // ASCII 71 (G)
    {0x7F, 0x08, 0x08, 0x08, 0x7F}, // ASCII 72 (H)
    {0x00, 0x41, 0x7F, 0x41, 0x00}, // ASCII 73 (I)
    {0x20, 0x40, 0x41, 0x3F, 0x01}, // ASCII 74 (J)
    {0x7F, 0x08, 0x14, 0x22, 0x41}, // ASCII 75 (K)
    {0x7F, 0x40, 0x40, 0x40, 0x40}, // ASCII 76 (L)
    {0x7F, 0x02, 0x0C, 0x02, 0x7F}, // ASCII 77 (M)
    {0x7F, 0x04, 0x08, 0x10, 0x7F}, // ASCII 78 (N)
    {0x3E, 0x41, 0x41, 0x41, 0x3E}, // ASCII 79 (O)
    {0x7F, 0x09, 0x09, 0x09, 0x06}, // ASCII 80 (P
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值