This test is to drive the oled12864 display. Oled12864 module uses IIC interface, SDA is connected to rf4 pin, SCL is connected to RF5 pin, and the power supply is 3.3V. IIC timing is simulated by software and adopts forced read-write mode.1. IIC. H file#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);
elsePLIB_ 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 file#include "iic.h"
void IIC_ Start (void) / / generate the start sequenceIIC_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) / / generate stop sequence
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 initialization and drivervoid OLED_ Write_ CMD (uint8_t oled_cmd) / / write command function
IIC_Start();Iic_send_byte (0x78); / / module addressIIC_SCL(0);
DelayUs(2);IIC_SCL(1);DelayUs(2);
IIC_SCL(0);Delayus (2); / / skip the response bitIic_send_byte (0x00); / / write command
IIC_SCL(0);DelayUs(2);IIC_SCL(1);
DelayUs(2);IIC_SCL(0);Delayus (2); / / skip the response bit
Iic_send_byte (oled_cmd); / / command valueIIC_Stop();
4. App. C: display "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. Display effect
Bao’an District Shenzhen City, China
+86 189 3806 5764