OLED的驱动程序

在最近的制作的项目中,我们选用了OLED作为屏幕显示,它支持iic和spi两种总线方式

我们采用的是iic的方式,相对spi来说稍微简单一点,引脚也更少,但是iic的速度比起spi来说还是有较大差距的

下面是OLED的驱动,包括图形和字符显示


sbit LED_SCL = P1^0; 
sbit LED_SDA = P1^1;
sbit LED_RST = P1^2; 
sbit LED_DC = P1^3; 
 
const UCHAR8 code F6x8[][6] =
{
    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, //sp0
    { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 }, // !1
    { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 }, // "2
    { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // #3
    { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $4
    { 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 }, // %5
    { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 }, // &6
    { 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 }, // '7
    { 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 }, // (8
    { 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 }, // )9
    { 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 }, // *10
    { 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 }, // +11
    { 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 }, // ,12
    { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 }, // -13
    { 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 }, // .14
    { 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 }, // /15
    { 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 016
    { 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 117
    { 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 }, // 218
    { 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 319
    { 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 420
    { 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 }, // 521
    { 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 622
    { 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 }, // 723
    { 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 }, // 824
    { 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E }, // 925
    { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 }, // :26
    { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 }, // ;27
    { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 }, // <28
    { 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 }, // =29
    { 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 }, // >30
    { 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 }, // ?31
    { 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E }, // @32
    { 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C }, // A33
    { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 }, // B34
    { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C35
    { 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D36
    { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E37
    { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F38
    { 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G39
    { 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H40
    { 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 }, // I41
    { 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J42
    { 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K43
    { 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L44
    { 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M45
    { 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N46
    { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O47
    { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P48
    { 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q49
    { 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R50
    { 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 }, // S51
    { 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 }, // T52
    { 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U53
    { 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V54
    { 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F }, // W55
    { 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 }, // X56
    { 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y57
    { 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z58
    { 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [59
    { 0x00, 0x02, 0x04, 0x08, 0x10, 0x20 }, // \60
    { 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 }, // ]61
    { 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^62
    { 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 }, // _63
    { 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 }, // '64
    { 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 }, // a65
    { 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 }, // b66
    { 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 }, // c67
    { 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F }, // d68
    { 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 }, // e69
    { 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f70
    { 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C }, // g71
    { 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h72
    { 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i73
    { 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 }, // j74
    { 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 }, // k75
    { 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l76
    { 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m77
    { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n78
    { 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 }, // o79
    { 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 }, // p80
    { 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC }, // q81
    { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r82
    { 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 }, // s83
    { 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t84
    { 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u85
    { 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v86
    { 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C }, // w87
    { 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 }, // x88
    { 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C }, // y89
    { 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 }, // z90
    { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 } // horiz lines91
};


//中文字符串原字
const UCHAR8 code F14x16_Idx[] = 
{
    "科技屏幕测试"
};


//中文字符串编码
const UCHAR8 code F14x16[] = 

   
    0x00,0x00,0x48,0xFC,0x44,0x42,0x00,0x88,0x30,0x00,0xFE,0x02,0x00,0x00,
    0x00,0x0C,0x02,0x7F,0x01,0x01,0x08,0x08,0x05,0x04,0xFF,0x04,0x02,0x00,/*"科",4*/
    0x00,0x00,0x20,0xFE,0x20,0x90,0x20,0x20,0x20,0xFE,0x20,0xA0,0x10,0x00,
    0x00,0x02,0x41,0x7F,0x81,0x80,0x41,0x47,0x29,0x18,0x27,0x41,0x40,0x00,/*"技",5*/
    0x00,0x00,0xFE,0x14,0x14,0x34,0x54,0x14,0x94,0x74,0x14,0x9C,0x00,0x00,
    0x00,0x30,0x0F,0x88,0x48,0x39,0x0F,0x09,0x08,0x7F,0x09,0x04,0x04,0x00,/*"屏",6*/
    0x00,0x04,0x04,0xF4,0x54,0xCE,0x54,0x54,0x4E,0x4C,0xF4,0x04,0x04,0x00,
    0x00,0x08,0x0A,0x3E,0x0A,0x09,0x7E,0x0A,0x0A,0x7A,0x0E,0x0A,0x09,0x00,/*"幕",7*/
    0x00,0x20,0x04,0x80,0xFC,0x04,0xF4,0x04,0xFC,0x00,0xF0,0xFC,0x00,0x00,
    0x00,0x00,0x7F,0x40,0x27,0x18,0x07,0x10,0x67,0x00,0x4F,0xFF,0x00,0x00,/*"测",8*/
    0x00,0x80,0x88,0x98,0x20,0x20,0x20,0x20,0xA0,0xFE,0x24,0x2C,0x10,0x00,
    0x00,0x00,0x1F,0x60,0x10,0x28,0x21,0x1F,0x10,0x13,0x1C,0x20,0x70,0x00,/*"试",9*/
};


//======================================================
// 128X64OLED液晶底层驱动[8X16]字体库
// 设计者: Guokaiyi
// 描 述: [8X16]西文字符的字模数据 (纵向取模,字节倒序)
// !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
//======================================================
const UCHAR8 code F8X16[]=
{
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 0
    0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,//!1
    0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//"2
    0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,//#3
    0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,//$4
    0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,//%5
    0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,//&6
    0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//'7
    0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x0

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值