单片机OLED屏幕进行数字,字符,图片的显示程序

2020-11-21来源: 51hei关键字:单片机  OLED屏幕  显示程序

找到一块OLED显示屏,便写了一个可以显示字符,数字,图片的程序(这里一显示51黑电子和QQ图标为例,显示其他,可通过取模软件进行更改)在压缩包中附有工程文件,和取模软件,以及使用方法

制作出来的实物图如下:
  

#include "OLED.h"

#inclide "intrins.h"




/******************************************************************************/

// 定义显示字符:51

/******************************************************************************/


uint8 code oledTable2[] = {

0x00,0xF8,0x88,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x20,0x20,0x20,0x11,0x0E,0x00,//5


0x00,0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00};//1


/******************************************************************************/

// 定义显示汉字:黑电子

/******************************************************************************/

uint8 code oledTable3[]={

        0x00,0x00,0x3E,0x22,0x2A,0x32,0x22,0xFE,0x22,0x32,0x2A,0x22,0x3E,0x00,0x00,0x00,

0x88,0x68,0x09,0x09,0x29,0xC9,0x09,0x0F,0x29,0xC9,0x09,0x09,0x29,0xC8,0x08,0x00,//黑0


0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x88,0xF8,0x00,0x00,0x00,

0x00,0x00,0x1F,0x08,0x08,0x08,0x08,0x7F,0x88,0x88,0x88,0x88,0x9F,0x80,0xF0,0x00,//电1


0x80,0x82,0x82,0x82,0x82,0x82,0x82,0xE2,0xA2,0x92,0x8A,0x86,0x82,0x80,0x80,0x00,

0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//子2


/******************************************************************************/

// 定义显示图画

/******************************************************************************/

//QQ图标

uint8 code oledTable4[]={

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

......详见附件...........

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00};//C:UsersxzsDesktop捕获.bmp0//C:UsersxzsDesktop捕获.bmp0



        void display2(uint8 page,uint8 lie,uint8 *p)

        {//显示一个字符

        uint8 i;

        


        Oled_Write_Cmd(0xb0+page); //page 0

Oled_Write_Cmd(0x00+lie); //low

        Oled_Write_Cmd(0x10+lie); //high        

        for(i=0;i<8;i++){

        Oled_Write_Data(p[i]);//写数据oledTable1

        }


        Oled_Write_Cmd(0xb1+page); //page 1

        Oled_Write_Cmd(0x00+lie); //low

        Oled_Write_Cmd(0x10+lie); //high

        for(i=0;i<8;i++){

                Oled_Write_Data(p[i+8]);//写数据oledTable1

        }}

        

        void display3(uint8 page,uint8 lie,uint8 *p)

        {//显示汉字

        uint8 i;

        Oled_Write_Cmd(0xb0+page); //page 0

        Oled_Write_Cmd(0x00+lie); //low

        Oled_Write_Cmd(0x10+lie); //high        

        for(i=0;i<16;i++){

                Oled_Write_Data(p[i]);//写数据oledTable1

        }


        Oled_Write_Cmd(0xb1+page); //page 1

        Oled_Write_Cmd(0x00+lie); //low

        Oled_Write_Cmd(0x10+lie); //high

        for(i=0;i<16;i++){

                Oled_Write_Data(p[i+16]);//写数据oledTable1

        }}

               

        void display4()

        {//显示一幅图

        uint8 i;

        Oled_Init();

        Oled_Screen_Clear();


        Oled_Write_Cmd(0xb0); //page 0

        Oled_Write_Cmd(0x00); //low

        Oled_Write_Cmd(0x10); //high        

        for(i=0;i<128;i++){

                Oled_Write_Data(oledTable4[i]);//写数据oledTable1

        }


        Oled_Write_Cmd(0xb1); //page 1

        Oled_Write_Cmd(0x00); //low

        Oled_Write_Cmd(0x10); //high

        for(i=0;i<128;i++){

                Oled_Write_Data(oledTable4[i+128]);//写数据oledTable1

        }


        Oled_Write_Cmd(0xb2); //page 2

        Oled_Write_Cmd(0x00); //low

        Oled_Write_Cmd(0x10); //high        

        for(i=0;i<128;i++){

                Oled_Write_Data(oledTable4[i+256]);//写数据oledTable1

        }


        Oled_Write_Cmd(0xb3); //page 3

        Oled_Write_Cmd(0x00); //low

        Oled_Write_Cmd(0x10); //high

        for(i=0;i<128;i++){

                Oled_Write_Data(oledTable4[i+384]);//写数据oledTable1

        }


        Oled_Write_Cmd(0xb4); //page 4

        Oled_Write_Cmd(0x00); //low

        Oled_Write_Cmd(0x10); //high        

        for(i=0;i<128;i++){

                Oled_Write_Data(oledTable4[i+512]);//写数据oledTable1

        }


        Oled_Write_Cmd(0xb5); //page 5

        Oled_Write_Cmd(0x00); //low

        Oled_Write_Cmd(0x10); //high

        for(i=0;i<128;i++){

                Oled_Write_Data(oledTable4[i+640]);//写数据oledTable1

        }


        Oled_Write_Cmd(0xb6); //page 6

        Oled_Write_Cmd(0x00); //low

        Oled_Write_Cmd(0x10); //high        

        for(i=0;i<128;i++){

                Oled_Write_Data(oledTable4[i+768]);//写数据oledTable1

        }


        Oled_Write_Cmd(0xb7); //page 7

        Oled_Write_Cmd(0x00); //low

        Oled_Write_Cmd(0x10); //high

        for(i=0;i<128;i++){

                Oled_Write_Data(oledTable4[i+896]);//写数据oledTable1

        }

}


int main(void)

        {        Oled_Init();

        Oled_Screen_Clear();


display2(0,0,oledTable2);//51黑电子

display2(0,1,oledTable2+16);

                display3(0,2,oledTable3);

                display3(0,3,oledTable3+32);

                display3(0,4,oledTable3+64);

                //display4();//qq图标的显示

        

               

        while(1);        


}


关键字:单片机  OLED屏幕  显示程序 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic517317.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:单片机+NRF2401+DHT11远程温湿度控制程序
下一篇:单片机LED调光程序,状态机按键处理,效果比较好

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

基于51单片机控温程序及电路原理图
所需要 ** 的温度值。并且能够稳定在你所设定的温度下。当 ** 实际温度超过你设定的温度,蜂鸣器报警 。 ** ** 包括各个模块及详细的注释 ** 方便 C51 单片机入门级别者阅读 *电路原理图如下:
发表于 2020-11-04
基于51<font color='red'>单片机</font>控温程序及电路原理图
单片机+LCD12864数字电压表设计
单片机源程序如下://---库函数声明及相关定义---//#include <reg51.h>#include <intrins.h>#define unint unsigned int#define unchar unsigned char#define Databus P1 /*液晶数据总线*/sbit RS=P3^3;      /*数据指令 选择*/sbit RW=P3^4;      /*读写 选择*/sbit EN=P3^2;      /*读写使能*/sbit cs1=P3^6;   
发表于 2020-11-04
<font color='red'>单片机</font>+LCD12864数字电压表设计
51单片机控制模拟交通信号灯
采用单片机的I/O口PO口通过上拉电阻和交通灯相连接,P3.0、P3.1口接到数码管控制位上,控制数码管的显示,程序放在STC89C52RC单片机的ROM中,在十字路口的四组红、黄、绿交通灯中,由单片机的 P1.0-P1.2 、P1.5-P1.7、P2.0-P2.2、P2.5-P2.7控制,由于交通灯为发光二极管且阳极通过限流电阻和电源正极相连,因此I/0口输出低电平时,与之相连的指示灯会亮,并通过数码管显示时间倒计时。I/0口输出高电平时,相应指示灯会灭。当交通出现障碍需要恢复到初始状态时,按下复位键即可,此键由单片机的9脚RST键控制。制作出来的实物图如下:Altium Designer画的原理图和PCB图如下:(51hei
发表于 2020-11-04
51<font color='red'>单片机</font>控制模拟交通信号灯
风速风向传感器在单片机上的应用
/*本风速传感器采用小型直流有刷电机与三杯式旋转风杯组装  而成,其工作原理为,当环境有水平流动风时,旋转风杯能够产生旋转,并带动小型电机产生电压,其电压与旋转速度基本成正比。利用此信号电压,可以对环境风速进行测量。这款风速传感器采用海洋军用的高精度测量风速传感器,与传统产品先别,具有更高精度;是建筑机械(起重机、履带吊、门吊、塔吊)、铁路、港口、码头、风力发电、光伏发电、电厂、气象、索道、环境、温室、养殖等领域不可缺少的风速检测装置。用它可以实现设备风速指示数字化及自动化,是相关设备不可缺少的风速检测设备。*///使用该程序和电路再搭配我们的风速风向传感器就可以实时显示风速风向数据#冠拓电子#include <
发表于 2020-11-04
风速风向传感器在<font color='red'>单片机</font>上的应用
51单片机中的ROM和RAM分别是什么?
众所周知,51 内部的存储器分为数据存储器 RAM 和程序存储器 ROM。以 AT89c51 为例,其中有 128 字节随机存储器(又称数据储存器 RAM)和 4K 字节的只读存 储器(又称程序存储器 ROM)。先说说这个 4K 字节的程序存储器或者说只读存储器,我们写的程序经过编译器 编译成机器码都是存在这个区域,所以称为程序存储器;但单片机上电执行的时 候,此区域内的数据只能读取而不能写入,他的只读存储器的名称从这而来。89c51 的 ROM 采用的是 FPEROM(Flash Programmable and Erasable Read OnlyMemory),具体工艺我也不太清楚,号称可以擦写 1000 次,也就是说你每天
发表于 2020-11-04
Proteus超声波测距仿真电路图+单片机源程序
大多数人感觉超声波测距proteus仿真是无法实现的,虽然proteus自带的库有GUR03和SRF04两种模型,但是却与实际传感器使用方法相差甚远,即使求助度娘也很难找到简单易懂的教程。之前很多人想做超声波测距仿真但都没有找到很好的办法去实现,在软件里没有这样的元件,有人用一个按键开关去模拟仿真,这样仿真出来的效果,非常不好。还有人用555时基电路产生一个延时信号(555电路作为超声波仿真的内部元件),来模拟超声波头发送后遇到回波返射回来的这阶段时间,来对单片机超声波测距单片机系统进行模拟,能完成对超声波测距模块大致仿真,但需要繁杂的设计。下面是一个超声波测距模块的proteus模型,能直接用于proteus仿真,且使用方法
发表于 2020-11-04
Proteus超声波测距仿真电路图+<font color='red'>单片机</font>源程序
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved