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

    文章

    4218

    浏览量

    72587
  • OLED12864
    +关注

    关注

    1

    文章

    6

    浏览量

    8978
收藏 人收藏

    评论

    相关推荐

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

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

    51单片机12864显示屏怎么控制游标

    51单片机12864显示屏怎么控制游标上下移动,还有怎么控制显示器上的一个文字的上下移动?谢谢!
    发表于 03-03 21:16

    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

    关于OLED显示问题??新手求教

    请问用单片机PIC16F887可以直接驱动OLED12864?也就是说中间不需要驱动电路的情况下进行驱动。谢谢大家了
    发表于 07-06 16:41

    基于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

    如何利用STM32单片机驱动12864液晶

    STM32驱动0.96寸OLED屏幕(四脚)1 注意事项2 如何利用STM32单片机驱动12864液晶
    发表于 08-09 07:47

    LCD12864OLED12864有什么区别?

    LCD12864OLED12864有什么区别
    发表于 10-09 06:59

    IIC的12864OLED显示屏有带中文字库的显示屏吗?

    IIC的12864OLED显示屏有带中文字库的显示屏
    发表于 11-08 08:32

    基于单片机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 3625次阅读
    用Microchip Curiosity PIC32MX470<b class='flag-5'>驱动</b><b class='flag-5'>OLED12864</b><b class='flag-5'>显示屏</b>

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

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