0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机编程及驱动OLED12864显示屏测试

算法&编程学院 来源:网络整理 2018-02-01 05:07 次阅读

这次要测试的是驱动OLED12864显示屏。OLED12864模块使用的是IIC接口SDA接RF4引脚,SCL接RF5引脚,电源为3.3V。IIC时序使用软件模拟,采用强制读写模式。

1.iic.h文件

#ifndef __IIC_H

#define __IIC_H

#include

#include "system_config.h"

#define IIC_SCL(status) if(status)

PLIB_PORTS_PinSet(PORTS_ID_0, PORT_CHANNEL_F, PORTS_BIT_POS_5);

else

PLIB_PORTS_PinClear(PORTS_ID_0, PORT_CHANNEL_F, PORTS_BIT_POS_5)

#define IIC_SDA_OUT(status) if(status)

PLIB_PORTS_PinSet(PORTS_ID_0, PORT_CHANNEL_F, PORTS_BIT_POS_4);

else

PLIB_PORTS_PinClear(PORTS_ID_0, PORT_CHANNEL_F, PORTS_BIT_POS_4)

#define DELAY_US asm("nop");asm("nop");asm("nop"); asm("nop");

asm("nop");asm("nop");asm("nop"); asm("nop");

asm("nop");asm("nop");asm("nop"); asm("nop");

asm("nop");asm("nop");asm("nop"); asm("nop");

asm("nop");asm("nop");asm("nop"); asm("nop");

asm("nop");asm("nop");asm("nop"); asm("nop");

asm("nop");asm("nop");asm("nop"); asm("nop");

asm("nop");asm("nop");asm("nop"); asm("nop");

asm("nop");asm("nop");asm("nop"); asm("nop");

asm("nop");asm("nop");asm("nop"); asm("nop");

asm("nop");asm("nop");asm("nop"); asm("nop");

asm("nop");asm("nop");asm("nop"); asm("nop");

asm("nop");asm("nop");asm("nop"); asm("nop");

asm("nop");asm("nop");asm("nop"); asm("nop");

asm("nop");asm("nop");asm("nop"); asm("nop");

asm("nop");asm("nop");asm("nop"); asm("nop");

asm("nop");asm("nop");asm("nop"); asm("nop");

asm("nop");asm("nop");asm("nop"); asm("nop");

asm("nop");asm("nop");asm("nop"); asm("nop");

asm("nop");asm("nop");asm("nop"); asm("nop")

void IIC_Init(void);

void IIC_Start(void);

void IIC_Stop(void);

void IIC_Send_Byte(uint8_t data);

void DelayMs(uint32_t msDelay );

void DelayUs(uint32_t usDelay );

2.iic.c文件

#include "iic.h"

void IIC_Start(void)//产生启动时序

{

IIC_SCL(0);

DelayUs(2);

IIC_SDA_OUT(1);

DelayUs(2);

IIC_SCL(1);

DelayUs(2);

IIC_SDA_OUT(0);

DelayUs(2);

IIC_SCL(0);

DelayUs(2);

}

void IIC_Stop(void)//产生停止时序

{

IIC_SCL(0);

DelayUs(2);

IIC_SDA_OUT(0);

DelayUs(2);

IIC_SCL(1);

DelayUs(2);

IIC_SDA_OUT(1);

DelayUs(2);

}

3.oled.c:OLED初始化与驱动程序

void OLED_Write_CMD(uint8_t oled_cmd)//写命令函数

{

IIC_Start();

IIC_Send_Byte(0x78);//模块地址

IIC_SCL(0);

DelayUs(2);

IIC_SCL(1);

DelayUs(2);

IIC_SCL(0);

DelayUs(2);//跳过应答位

IIC_Send_Byte(0x00);//写命令

IIC_SCL(0);

DelayUs(2);

IIC_SCL(1);

DelayUs(2);

IIC_SCL(0);

DelayUs(2);//跳过应答位

IIC_Send_Byte(oled_cmd);//命令值

IIC_Stop();

}

4.app.c:显示“1234”.

#include "app.h"

#include "oled.h"

#include "iic.h"

#include "bsp.h"

APP_DATA appData;

void APP_Initialize ( void )

{

appData.state = APP_STATE_INIT;

}

void APP_Tasks ( void )

{

switch ( appData.state )

{

case APP_STATE_INIT:

{

DelayMs(100);

OLED_Init();

OLED_Clear();

appData.state = APP_STATE_SERVICE_TASKS;

break;

}

case APP_STATE_SERVICE_TASKS:

{

OLED_Show_Char0816((16 + 1), 0,0); //"1"

OLED_Show_Char0816((16 + 2), 0,8); //"2"

OLED_Show_Char0816((16 + 3), 0,16);//"3"

OLED_Show_Char0816((16 + 4), 0,24);//"4"

DelayMs(1000);

break;

}

}

}

5.显示效果

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 显示屏
    +关注

    关注

    28

    文章

    4483

    浏览量

    74238
  • OLED12864
    +关注

    关注

    1

    文章

    6

    浏览量

    9075
收藏 人收藏

    评论

    相关推荐

    #单片机 OLED显示屏 兑换的显示屏到了!#单片机

    OLED显示屏
    efans
    发布于 :2023年04月24日 16:51:22

    uCGUI 在 OLED12864 上的运行效果

    OLED12864的控制器是SSD1325,支持16级灰度,SPI模式,不支持回读,直接另辟显存(128*64/2=4096字节)普通的51单片机不用想了,主控使用的是STM32F103VCT6,uCGUI3.9http://v.youku.com/v_show/id_X
    发表于 01-31 13:26

    转: GD32驱动12832OLED显示屏

    一直没玩过OLED,前段时间买了个oled显示屏,不过不是常见的12864,而是12832,可惜店家没有提供资料。。。还好12832的驱动I
    发表于 07-18 11:28

    基于PROTEUS软件的OLED12864仿真问题

    想利用proteus软件搭建一个仿真电路,通过单片机PIC16F887控制OLED12864显示数字,但是在软件里面找不到OLED12684的模型,请问我该如何搭建?里面有功能跟
    发表于 07-07 15:27

    用51单片机驱动oled显示屏

    文章目录51单片机一.前言二.代码三.总结51单片机一.前言说起51,可以说是老古董了,刚开始接触单片机就是从51开始,今天就来用51单片机驱动
    发表于 07-15 07:11

    0.96寸OLED12864显示屏设计方案

    0.96寸OLED12864显示屏设计方案,一、简介OLED 屏幕作为一种新型的显示技术,其自身可以发光,亮度,对比度高,功耗低,在当下备受追捧。而在我们正常的
    发表于 07-21 07:55

    STC12C5A60S2单片机控制OLED12864显示屏的程序

    这里将我写的STC12C5A60S2单片机控制OLED12864显示屏的程序共享一下,如有不足,敬请指出!
    发表于 07-21 07:14

    基于OLED12864液晶显示屏的直观赛道描绘方法

    本文提出的基于 OLED12864 的赛道描绘方法,利用 OLED12864 实时描绘 赛道情况,很好的解决了摄像头修正的问题,大大简化了修车步骤,提高了调试效率,同时也可应用于其他多种调试场合,实用性强,适用范围广。
    发表于 11-23 14:25 37次下载

    基于单片机OLED显示系统设计与实现

    为了提高图形信息的显示速度,并得到更多的显示效果,文章基于FG_V1.2单片机开发板,依据OLED12864显示屏的操作时序要求,用51
    发表于 12-31 09:20 23次下载

    用Microchip Curiosity PIC32MX470驱动OLED12864显示屏

    这次要测试的是驱动OLED12864显示屏OLED12864模块使用的是IIC接口,SDA接RF4引脚,SCL接RF5引脚,电源为3.3V
    发表于 02-20 20:24 3822次阅读
    用Microchip Curiosity PIC32MX470<b class='flag-5'>驱动</b><b class='flag-5'>OLED12864</b><b class='flag-5'>显示屏</b>

    使用STM32单片机核心板应用0.96OLED显示屏驱动程序免费下载

    本文档的主要内容详细介绍的是使用STM32单片机核心板应用0.96OLED显示屏驱动程序和工程文件免费下载。
    发表于 08-01 08:00 36次下载
    使用STM32<b class='flag-5'>单片机</b>核心板应用0.96<b class='flag-5'>OLED</b><b class='flag-5'>显示屏</b>的<b class='flag-5'>驱动</b>程序免费下载

    使用51单片机实现LCD12864显示屏显示的仿真文件免费下载

    本文档的主要内容详细介绍的是使用51单片机实现LCD12864显示屏显示的仿真文件免费下载。
    发表于 03-23 11:05 34次下载

    使用51单片机实现LCD12864显示屏显示的仿真文件免费下载

    本文档的主要内容详细介绍的是使用51单片机实现LCD12864显示屏显示的仿真文件免费下载。
    发表于 03-23 11:05 90次下载

    I2C OLED显示屏的51单片机/STM32/Arduino驱动程序

    I2C OLED显示屏的51单片机/STM32/Arduino驱动程序说明。
    发表于 03-26 09:37 66次下载

    单片机控制OLED12864显示屏之模块化编程

    这里将我写的STC12C5A60S2单片机控制OLED12864显示屏的程序共享一下,如有不足,敬请指出!
    发表于 11-23 17:51 53次下载
    <b class='flag-5'>单片机</b>控制<b class='flag-5'>OLED12864</b><b class='flag-5'>显示屏</b>之模块化<b class='flag-5'>编程</b>