链接:https://pan.baidu.com/s/1ov-lE3sD2nMpV33Q9E7omw
提取码:2333
一、引脚说明
1.1 接口定义
引脚 | 功能说明 |
---|---|
GND | 电源地 |
VCC | 电源正 3.3~5V |
D0 | SPI接口时为SPI时钟线,IIC接口时为IIC时钟线 |
D1 | SPI接口时为SPI数据线,IIC接口时为IIC数据线 |
RST | OLED复位,OLED在上电后需做一次复位 |
DC | SPI接口时SPI数据/命令选择脚,IIC接口时用来设置IIC地址 |
CS | 片选 |
1.2 硬件连接
OLED引脚 | MSP430F149引脚 |
---|---|
GND | GND |
VCC | VCC |
D0 | P1.3 |
D1 | P1.4 |
RST | P1.1 |
DC | P1.2 |
CS | P1.0 |
1.3 总线协议
IO口软件模拟SPI
1.4 软件控制流程
①IO初始化。
②根据时序初始化LCD。
③显示。
二、移植文件
将 oled.c 、 oled.h 、bmp.h文件加入到工程文件夹下
2.1 oled.c
#include "oled.h"
#include "oledfont.h"
//向SSD1306写入一个字节。
//dat:要写入的数据/命令
//cmd:数据/命令标志 0,表示命令;1,表示数据;
void OLED_WR_Byte(u8 dat, u8 cmd)
{
u8 i;
if (cmd)
OLED_DC_Set();
else
OLED_DC_Clr();
OLED_CS_Clr();
for (i = 0; i<8; i++)
{
OLED_SCLK_Clr();
if (dat & 0x80)
{
OLED_SDIN_Set();
}
else
OLED_SDIN_Clr();
OLED_SCLK_Set();
dat <<= 1;
}
OLED_CS_Set();
OLED_DC_Set();
}
void OLED_Set_Pos(unsigned char x, unsigned char y)
{
OLED_WR_Byte(0xb0 + y, OLED_CMD);
OLED_WR_Byte(((x & 0xf0) >> 4) | 0x10, OLED_CMD);
OLED_WR_Byte((x & 0x0f) | 0x01, OLED_CMD);
}
//开启OLED显示
void OLED_Display_On(void)
{
OLED_WR_Byte(0X8D, OLED_CMD); //SET DCDC命令
OLED_WR_Byte(0X14, OLED_CMD); //DCDC ON
OLED_WR_Byte(0XAF, OLED_CMD); //DISPLAY ON
}
//关闭OLED显示
void OLED_Display_Off(void)
{
OLED_WR_Byte(0X8D, OLED_CMD); //SET DCDC命令
OLED_WR_Byte(0X10, OLED_CMD); //DCDC OFF
OLED_WR_Byte(0XAE, OLED_CMD); //DISPLAY OFF
}
//清屏函数,清完屏,整个屏幕是黑色的!和没点亮一样!!!
void OLED_Clear(void)
{
u8 i, n;
for (i = 0; i<8; i++)
{
OLED_WR_Byte(0xb0 + i, OLED_CMD); //设置页地址(0~7)
OLED_WR_Byte(0x00, OLED_CMD); //设置显示位置—列低地址
OLED_WR_Byte(0x10, OLED_CMD); //设置显示位置—列高地址
for (n = 0; n<128; n++)OLED_WR_Byte(0, OLED_DATA);
} //更新显示
}
//在指定位置显示一个字符,包括部分字符
//x:0~127
//y:0~63
//mode:0,反白显示;1,正常显示
//size:选择字体 16/12
void OLED_ShowChar(u8 x, u8 y, u8 chr)
{
unsigned char c = 0, i = 0;
c = chr - ' ';//得到偏移后的值
if (x>Max_Column - 1){ x = 0; y = y + 2; }
if (SIZE == 16)
{
OLED_Set_Pos(x, y);
for (i = 0; i<8; i++)
OLED_WR_Byte(F8X16[c * 16 + i], OLED_DATA);
OLED_Set_Pos(x, y + 1);
for (i = 0; i<8; i++)
OLED_WR_Byte(F8X16[c * 16 + i + 8], OLED_DATA);
}
else {
OLED_Set_Pos(x, y + 1);
for (i = 0; i<6; i++)
OLED_WR_Byte(F6x8[c][i], OLED_DATA);
}
}
//m^n函数
u32 oled_pow(u8 m, u8 n)
{
u32 result = 1;
while (n--)result *= m;
return result;
}
//显示2个数字
//x,y :起点坐标
//len :数字的位数
//size:字体大小
//mode:模式 0,填充模式;1,叠加模式
//num:数值(0~4294967295);
void OLED_ShowNum(u8 x, u8 y, u32 num, u8 len, u8 size2)
{
u8 t, temp;
u8 enshow = 0;
for (t = 0; t<len; t++)
{
temp = (num / oled_pow(10, len - t - 1)) % 10;
if (enshow == 0 && t<(len - 1))
{
if (temp == 0)
{
OLED_ShowChar(x + (size2 / 2)*t, y, ' ');
continue;
}
else enshow = 1;
}
OLED_ShowChar(x + (size2 / 2)*t, y, temp + '0');
}
}
//显示一个字符号串
void OLED_ShowString(u8 x, u8 y, u8 *chr)
{
unsigned char j = 0;
while (chr[j] != '\0')
{
OLED_ShowChar(x, y, chr[j]);
x += 8;
if (x>120){ x = 0; y += 2; }
j++;
}
}
//显示汉字
void OLED_ShowCHinese(u8 x, u8 y, u8 no)
{
u8 t, adder = 0;
OLED_Set_Pos(x, y);
for (t = 0; t<16; t++)
{
OLED_WR_Byte(Hzk[2 * no][t], OLED_DATA);
adder += 1;
}
OLED_Set_Pos(x, y + 1);
for (t = 0; t<16; t++)
{
OLED_WR_Byte(Hzk[2 * no + 1][t], OLED_DATA);
adder += 1;
}
}
/***********功能描述:显示显示BMP图片128×64起始点坐标(x,y),x的范围0~127,y为页的范围0~7*****************/
void OLED_DrawBMP(unsigned char x0, unsigned char y0, unsigned char x1, unsigned char y1, unsigned char BMP[])
{
unsigned int j = 0;
unsigned char x, y;
if (y1 % 8 == 0) y = y1 / 8;
else y = y1 / 8 + 1;
for (y = y0; y<y1; y++)
{
OLED_Set_Pos(x0, y);
for (x = x0; x<x1; x++)
{
OLED_WR_Byte(BMP[j++], OLED_DATA);
}
}
}
//初始化SSD1306
void OLED_Init(void)
{
OLED_SSD1306_SCLK_IO_INIT;
OLED_SSD1306_SDIN_IO_INIT;
OLED_SSD1306_DC_IO_INIT;
OLED_SSD1306_CE_IO_INIT;
OLED_SSD1306_RST_IO_INIT;
OLED_RST_Set();
delay_ms(100);
OLED_RST_Clr();
delay_ms(100);
OLED_RST_Set();
OLED_WR_Byte(0xAE, OLED_CMD);//--turn off oled panel
OLED_WR_Byte(0x00, OLED_CMD);//---set low column address
OLED_WR_Byte(0x10, OLED_CMD);//---set high column address
OLED_WR_Byte(0x40, OLED_CMD);//--set start line address Set Mapping RAM Display Start Line (0x00~0x3F)
OLED_WR_Byte(0x81, OLED_CMD);//--set contrast control register
OLED_WR_Byte(0xCF, OLED_CMD); // Set SEG Output Current Brightness
OLED_WR_Byte(0xA1, OLED_CMD);//--Set SEG/Column Mapping 0xa0左右反置 0xa1正常
OLED_WR_Byte(0xC8, OLED_CMD);//Set COM/Row Scan Direction 0xc0上下反置 0xc8正常
OLED_WR_Byte(0xA6, OLED_CMD);//--set normal display
OLED_WR_Byte(0xA8, OLED_CMD);//--set multiplex ratio(1 to 64)
OLED_WR_Byte(0x3f, OLED_CMD);//--1/64 duty
OLED_WR_Byte(0xD3, OLED_CMD);//-set display offset Shift Mapping RAM Counter (0x00~0x3F)
OLED_WR_Byte(0x00, OLED_CMD);//-not offset
OLED_WR_Byte(0xd5, OLED_CMD);//--set display clock divide ratio/oscillator frequency
OLED_WR_Byte(0x80, OLED_CMD);//--set divide ratio, Set Clock as 100 Frames/Sec
OLED_WR_Byte(0xD9, OLED_CMD);//--set pre-charge period
OLED_WR_Byte(0xF1, OLED_CMD);//Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
OLED_WR_Byte(0xDA, OLED_CMD);//--set com pins hardware configuration
OLED_WR_Byte(0x12, OLED_CMD);
OLED_WR_Byte(0xDB, OLED_CMD);//--set vcomh
OLED_WR_Byte(0x40, OLED_CMD);//Set VCOM Deselect Level
OLED_WR_Byte(0x20, OLED_CMD);//-Set Page Addressing Mode (0x00/0x01/0x02)
OLED_WR_Byte(0x02, OLED_CMD);//
OLED_WR_Byte(0x8D, OLED_CMD);//--set Charge Pump enable/disable
OLED_WR_Byte(0x14, OLED_CMD);//--set(0x10) disable
OLED_WR_Byte(0xA4, OLED_CMD);// Disable Entire Display On (0xa4/0xa5)
OLED_WR_Byte(0xA6, OLED_CMD);// Disable Inverse Display On (0xa6/a7)
OLED_WR_Byte(0xAF, OLED_CMD);//--turn on oled panel
OLED_WR_Byte(0xAF, OLED_CMD); /*display ON*/
OLED_Clear();
OLED_Set_Pos(0, 0);
}
//显示一个字符号的首个字符
void LCD_WriteChar(u8 x, u8 y, u8 *chr)
{
if (*chr != '\0')
{
OLED_ShowChar(x, y, *chr);
}
}
void LCD_WriteStrings(u8 x, u8 y, char *str, u8 Len)
{
u8 i, j, Val_H, Val_L;
u16 Val;
if (Len == 0)
Len = strlen(str);
for (i = 0; i<Len; i++)
{
Val_H = *(str + i);
if (Val_H >= 0xA1)
{
Val_L = *(str + i + 1);
if (Val_L >= 0xA1)
{
Val = Val_H * 256 + Val_L;
i = i + 1;
for (j = 0; j<ALL_CN_NUM; j++)
{
if (ALL_CN_Font[j].ASC_Value == Val) break;
}
if (j == ALL_CN_NUM) continue;
OLED_ShowCHinese(x + 8 * i - 8, y, j);
}
}
else
{
LCD_WriteChar(x + 8 * i, y, str + i);
}
}
}
2.oled.h
#ifndef __OLED_H
#define __OLED_H
// GND 电源地
// VCC 接5V或3.3v电源
// D0 P1.3(SCL)
// D1 P1.4(SDA)
// RES 接P1.1
// DC 接P1.2
// CS 接P1.0
#include <io430.h>
#include <in430.h>
#include <intrinsics.h>
#define u8 unsigned char
#define u32 unsigned int
#define OLED_CMD 0 //写命令
#define OLED_DATA 1 //写数据
#define Set_Bit(val, bitn) (val |= (bitn))
#define Clr_Bit(val, bitn) (val &= ~(bitn))
#define Get_Bit(val, bitn) (val & (1<<(bitn)))
//----------------------------------------------------------------------------------
//OLED SSD1306 SPI 时钟D0
//#define OLED_SSD1306_SCLK_DIR (P1DIR)
//#define OLED_SSD1306_SCLK_OUT (P1OUT)
#define OLED_SSD1306_SCLK_PIN_NUM (BIT3)
#define OLED_SSD1306_SCLK_IO_INIT (Set_Bit(P1DIR,OLED_SSD1306_SCLK_PIN_NUM))
#define OLED_SCLK_Set() (Set_Bit(P1OUT,OLED_SSD1306_SCLK_PIN_NUM))
#define OLED_SCLK_Clr() (Clr_Bit(P1OUT,OLED_SSD1306_SCLK_PIN_NUM))
//----------------------------------------------------------------------------------
//OLED SSD1306 SPI 数据D1
//#define OLED_SSD1306_SDIN_DIR (P1DIR)
//#define OLED_SSD1306_SDIN_OUT (P1OUT)
#define OLED_SSD1306_SDIN_PIN_NUM (BIT4)
#define OLED_SSD1306_SDIN_IO_INIT (Set_Bit(P1DIR,OLED_SSD1306_SDIN_PIN_NUM))
#define OLED_SDIN_Set() (Set_Bit(P1OUT,OLED_SSD1306_SDIN_PIN_NUM))
#define OLED_SDIN_Clr() (Clr_Bit(P1OUT,OLED_SSD1306_SDIN_PIN_NUM))
//----------------------------------------------------------------------------------
//OLED SSD1306 数据/命令DC
//#define OLED_SSD1306_DC_DIR (P1DIR)
//#define OLED_SSD1306_DC_OUT (P1OUT)
#define OLED_SSD1306_DC_PIN_NUM (BIT2)
#define OLED_SSD1306_DC_IO_INIT (Set_Bit(P1DIR,OLED_SSD1306_DC_PIN_NUM))
#define OLED_DC_Set() (Set_Bit(P1OUT,OLED_SSD1306_DC_PIN_NUM))
#define OLED_DC_Clr() (Clr_Bit(P1OUT,OLED_SSD1306_DC_PIN_NUM))
//----------------------------------------------------------------------------------
//OLED SSD1306 片选CS
//#define OLED_SSD1306_CE_DIR (P1DIR)
//#define OLED_SSD1306_CE_OUT (P1OUT)
#define OLED_SSD1306_CE_PIN_NUM (BIT0)
#define OLED_SSD1306_CE_IO_INIT (Set_Bit(P1DIR,OLED_SSD1306_CE_PIN_NUM))
#define OLED_CS_Set() (Set_Bit(P1OUT,OLED_SSD1306_CE_PIN_NUM))
#define OLED_CS_Clr() (Clr_Bit(P1OUT,OLED_SSD1306_CE_PIN_NUM))
//----------------------------------------------------------------------------------
//OLED SSD1306 复位/RES
//#define OLED_SSD1306_RST_DIR (P1DIR)
//#define OLED_SSD1306_RST_OUT (P1OUT)
#define OLED_SSD1306_RST_PIN_NUM (BIT1)
#define OLED_SSD1306_RST_IO_INIT (Set_Bit(P1DIR,OLED_SSD1306_RST_PIN_NUM))
#define OLED_RST_Set() (Set_Bit(P1OUT,OLED_SSD1306_RST_PIN_NUM))
#define OLED_RST_Clr() (Clr_Bit(P1OUT,OLED_SSD1306_RST_PIN_NUM))
#define SIZE 16
#define XLevelL 0x02
#define XLevelH 0x10
#define Max_Column 128
#define Max_Row 64
#define Brightness 0xFF
#define X_WIDTH 128
#define Y_WIDTH 64
//-----------------OLED端口定义----------------
#define CPU_F ((double)12000000) //延时函数所需时钟频率/Hz
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)(x)/1000.0))
//OLED控制用函数
void OLED_WR_Byte(u8 dat,u8 cmd);
void OLED_Display_On(void);
void OLED_Display_Off(void);
void OLED_Init(void);
void OLED_Clear(void);
void OLED_DrawPoint(u8 x,u8 y,u8 t);
void OLED_Fill(u8 x1,u8 y1,u8 x2,u8 y2,u8 dot);
void OLED_ShowChar(u8 x,u8 y,u8 chr);
void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size2);
void OLED_ShowString(u8 x,u8 y, u8 *p);
void OLED_Set_Pos(unsigned char x, unsigned char y);
void OLED_ShowCHinese(u8 x,u8 y,u8 no);
void OLED_DrawBMP(unsigned char x0, unsigned char y0,unsigned char x1, unsigned char y1,unsigned char BMP[]);
void LCD_WriteChar(u8 x, u8 y, u8 *chr);
void LCD_WriteStrings(u8 x, u8 y, char *str, u8 Len);
#endif
bmp.h
#ifndef __BMP_H
#define __BMP_H
#include <io430.h>
#include <in430.h>
#include <intrinsics.h>
unsigned char BMP1[] =
{
0x00,0x03,0x05,0x09,0x11,0xFF,0x11,0x89,0x05,0xC3,0x00,0xE0,0x00,0xF0,0x00,0xF8,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x28,0xFF,0x11,0xAA,0x44,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,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,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x83,0x01,0x38,0x44,0x82,0x92,
0x92,0x74,0x01,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x44,0xFF,0x01,0x7D,
0x7D,0x7D,0x01,0x7D,0x7D,0x7D,0x7D,0x01,0x7D,0x7D,0x7D,0x7D,0x7D,0x01,0xFF,0x00,
0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,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,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,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,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,0x00,0x00,0x00,0x00,0x3F,0x3F,0x03,0x03,
0xF3,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x01,0xF1,0x11,0x61,0x81,0x01,0x01,0x01,
0x81,0x61,0x11,0xF1,0x01,0x01,0x01,0x01,0x41,0x41,0xF1,0x01,0x01,0x01,0x01,0x01,
0xC1,0x21,0x11,0x11,0x11,0x11,0x21,0xC1,0x01,0x01,0x01,0x01,0x41,0x41,0xF1,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x11,0x11,0x11,0x11,0x11,0xD3,0x33,
0x03,0x03,0x3F,0x3F,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,
0x7F,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x7F,0x00,0x00,0x01,0x06,0x18,0x06,
0x01,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x40,0x40,0x7F,0x40,0x40,0x00,0x00,0x00,
0x1F,0x20,0x40,0x40,0x40,0x40,0x20,0x1F,0x00,0x00,0x00,0x00,0x40,0x40,0x7F,0x40,
0x40,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x40,0x30,0x0C,0x03,0x00,0x00,
0x00,0x00,0xE0,0xE0,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x06,0x06,
0x06,0x06,0x04,0x04,0x04,0x84,0x44,0x44,0x44,0x84,0x04,0x04,0x84,0x44,0x44,0x44,
0x84,0x04,0x04,0x04,0x84,0xC4,0x04,0x04,0x04,0x04,0x84,0x44,0x44,0x44,0x84,0x04,
0x04,0x04,0x04,0x04,0x84,0x44,0x44,0x44,0x84,0x04,0x04,0x04,0x04,0x04,0x84,0x44,
0x44,0x44,0x84,0x04,0x04,0x84,0x44,0x44,0x44,0x84,0x04,0x04,0x04,0x04,0x06,0x06,
0x06,0x06,0x07,0x07,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x10,0x18,0x14,0x12,0x11,0x00,0x00,0x0F,0x10,0x10,0x10,
0x0F,0x00,0x00,0x00,0x10,0x1F,0x10,0x00,0x00,0x00,0x08,0x10,0x12,0x12,0x0D,0x00,
0x00,0x18,0x00,0x00,0x0D,0x12,0x12,0x12,0x0D,0x00,0x00,0x18,0x00,0x00,0x10,0x18,
0x14,0x12,0x11,0x00,0x00,0x10,0x18,0x14,0x12,0x11,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,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,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,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,0x80,
0x80,0x80,0x80,0x80,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x7F,0x03,0x0C,0x30,0x0C,0x03,0x7F,0x00,0x00,0x38,0x54,0x54,0x58,0x00,0x00,
0x7C,0x04,0x04,0x78,0x00,0x00,0x3C,0x40,0x40,0x7C,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xAA,0xAA,0xAA,
0x28,0x08,0x00,0xFF,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,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x03,0x0C,0x30,0x0C,0x03,0x7F,
0x00,0x00,0x26,0x49,0x49,0x49,0x32,0x00,0x00,0x7F,0x02,0x04,0x08,0x10,0x7F,0x00,
};
#endif
main.c
#include <io430.h>
#include "oled.h"
#include "bmp.h"
int main( void )
{
int t=0;
WDTCTL = WDTPW + WDTHOLD;
OLED_Init(void);
while(1)
{
OLED_Clear();
/*
OLED_ShowCHinese(0,0,0);//中
OLED_ShowCHinese(18,0,1);//景
OLED_ShowCHinese(36,0,2);//园
*/
LCD_WriteStrings(0, 0, "0.96OLED中景园SPI", 0);
OLED_ShowString(0,2,"1.3' OLED TEST");
OLED_ShowString(20,4,"2014/05/01");
OLED_ShowString(0,6,"ASCII:");
OLED_ShowString(63,6,"CODE:");
OLED_ShowChar(48,6,t);//显示ASCII字符
t++;
if(t>'~')t=' ';
OLED_ShowNum(103,6,t,3,16);//显示ASCII字符的码值
delay_ms(50);
OLED_Clear();
delay_ms(50);
OLED_DrawBMP(0,0,128,8,BMP1); //图片显示(图片显示慎用,生成的字表较大,会占用较多空间,FLASH空间8K以下慎用)
delay_ms(50);
}
}
由 LiangJian 写于 2019 年 10 月 11 日