這次要測(cè)試的是驅(qū)動(dòng)OLED12864顯示屏。OLED12864模塊使用的是IIC接口,SDA接RF4引腳,SCL接RF5引腳,電源為3.3V。IIC時(shí)序使用軟件模擬,采用強(qiáng)制讀寫(xiě)模式。
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)//產(chǎn)生啟動(dòng)時(shí)序
{
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)//產(chǎn)生停止時(shí)序
{
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初始化與驅(qū)動(dòng)程序
void OLED_Write_CMD(uint8_t oled_cmd)//寫(xiě)命令函數(shù)
{
IIC_Start();
IIC_Send_Byte(0x78);//模塊地址
IIC_SCL(0);
DelayUs(2);
IIC_SCL(1);
DelayUs(2);
IIC_SCL(0);
DelayUs(2);//跳過(guò)應(yīng)答位
IIC_Send_Byte(0x00);//寫(xiě)命令
IIC_SCL(0);
DelayUs(2);
IIC_SCL(1);
DelayUs(2);
IIC_SCL(0);
DelayUs(2);//跳過(guò)應(yīng)答位
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.顯示效果
-
顯示屏
+關(guān)注
關(guān)注
28文章
4583瀏覽量
76008 -
OLED12864
+關(guān)注
關(guān)注
1文章
6瀏覽量
9211
發(fā)布評(píng)論請(qǐng)先 登錄

uCGUI 在 OLED12864 上的運(yùn)行效果
轉(zhuǎn): GD32驅(qū)動(dòng)12832OLED顯示屏
基于PROTEUS軟件的OLED12864仿真問(wèn)題
用51單片機(jī)驅(qū)動(dòng)oled顯示屏
0.96寸OLED12864顯示屏設(shè)計(jì)方案
STC12C5A60S2單片機(jī)控制OLED12864顯示屏的程序
基于OLED12864液晶顯示屏的直觀賽道描繪方法
基于單片機(jī)的OLED顯示系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
用Microchip Curiosity PIC32MX470驅(qū)動(dòng)OLED12864顯示屏

使用STM32單片機(jī)核心板應(yīng)用0.96OLED顯示屏的驅(qū)動(dòng)程序免費(fèi)下載

使用51單片機(jī)實(shí)現(xiàn)LCD12864顯示屏顯示的仿真文件免費(fèi)下載
使用51單片機(jī)實(shí)現(xiàn)LCD12864顯示屏顯示的仿真文件免費(fèi)下載
I2C OLED顯示屏的51單片機(jī)/STM32/Arduino驅(qū)動(dòng)程序
單片機(jī)控制OLED12864顯示屏之模塊化編程

評(píng)論