当前位置: 首页 > news >正文

MSP430G2553驱动0.96英寸OLED(硬件iic)

1.前言

最近需要用MSP430单片机做一个大作业,需要用到OLED模块,在这里记录一下

本篇文章主要讲解MSP430硬件iic的配置和OLED函数的调用,不会详细讲解OLED显示原理(其实就是江科大的OLED模块如何移植到msp430上).OLED显示原理以及底层函数讲解请参考其他文章

2.MSP430硬件iic

MSP430G2553的硬件iic是由USI模块提供的。USI 模块提供支持同步串行通信的基本功能性。在其最简单的形式中, 它是一个可被用于输出数据帧的 8 位或16位移位寄存器, 或者当与最少软件组合使用时, 它可执行串行通信。此外, USI 包括简化 SPI 和 I2C 通信的内置硬件功能性。 USI 模块还包括中断来进一步减少针对串行通信和保持 MSP430 超低功耗功能所需软件开销。MSP430G2553上有USCI_A 和 USCI_B,其中IIC通信部分是USCI_B模块支持的

3.寄存器介绍 

我们以USCI_B0为例,介绍一下我们所用的寄存器

(1)UCBxCTL0和UCBxCTL1
 

这两个寄存器主要用于工作模式的配置 

对于UCBxCTL0,我们需要配置的有UCSLA10(从设备的地址位数设置为7位),UCMST(配置为主器件模式)UCMODEX(配置为IIC模式),UCSYNC(配置为同步模式)

对于UCBxCTL1,则主要关注UCSSELX(选择合适的时钟源,我这里选择SMCLK,UCSWRST(复位USCL模块)

(2)UCBXBR0和UCBXBR1

这个两个寄存器主要是对输入时钟频率进行分屏,从而获得合适的传输速率,我在这里SMCLK选择1MHZ,所以获得100KHZ的标准速率,设置UCBXBR0=10,UCBXBR1=0即可

(3)UCBxRXBUF和UCBxTXBUF

 这两个寄存器用于存放我们需要发送和接受的数据。

(4)UCBxI2CSA

这个寄存器用于选择从设备地址,我们在发送数据前,需要向这个寄存器写入地址来选择从设备

(5)IFG2

我们常用这个寄存器来检测发送和接收的情况

4.端口配置以及数据收发

(1)端口初始化

我们先看初始化函数,首先手册上有这么一段备注

这段备注的大致意思时,我们在对模块进行配置时,需要先对UCSWRST寄存器置位,配置完成后再通过软件清除。这样我们就可以编写IIC的初始化代码 

在mian函数中,我们先设置SMCLK也就是DCO的时钟频率(我没有接外部晶振)

BCSCTL1 = CALBC1_1MHZ;   // 设置 DCO 范围为 1MHz(需从芯片信息段加载校准值)
DCOCTL = CALDCO_1MHZ;     // 设置 DCO 频率为 1MHz
void I2C_Init()
{P1SEL|=(BIT6+BIT7);              P1SEL2|=(BIT6+BIT7);                //配置硬件为第三功能(USI)UCB0CTL1|=UCSWRST;                   //置位UCSWRST,进行端口配置UCB0CTL0=UCMST+UCMODE_3+UCSYNC;    //选择IIC 主器件,同步模式UCB0CTL1|=UCSSEL_2+UCSWRST;      // 保持复位状态UCB0BR0 = 10;             // 分频系数整数部分 (100kHZ)UCB0BR1 = 0;             // 分频系数高位(未使用)UCB0CTL0 &= ~UCSLA10; // 7位地址模式UCB0I2CSA = (0x78>>1);        // 设置从机地址(后续通信时需修改)UCB0CTL1&=~UCSWRST;    // 退出复位模式,启用 I2C 模块
}

碎碎念:IIC从设备地址需要写入七位地址,但是江科大OLED的地址其实是留出读写位的8位地址,所以我们再设置的时候需要右移位

(2)发送命令

在手册中有这样的信息

 所以我这里再发送起始信号后 先检测一下CBXTXIFG是否被置位

void OLED_WriteCommand(unsigned char dat)
{while(UCB0CTL1&UCTXSTP);        //等待上一个数据发送完成UCB0I2CSA = 0x78>>1;            //设置从设备地址UCB0CTL1|=UCTR;                 //选择发送模式UCB0CTL1|=UCTXSTT;              //发出起始条件while(!(IFG2&UCB0TXIFG));UCB0TXBUF=0x00;                //发送写命令while((IFG2&UCB0TXIFG)==0);    //等待数据发送完成UCB0TXBUF=dat;                 //传输命令while((IFG2&UCB0TXIFG)==0);UCB0CTL1 |= UCTXSTP;           // 发送停止信号while(UCB0CTL1&UCTXSTP);       // 等待发送完成}

(3)发送数据 

其实和发送命令方法一样就是0x00改为0x40

void OLED_WriteCommand(unsigned char dat)
{while(UCB0CTL1&UCTXSTP);        //等待上一个数据发送完成UCB0I2CSA = 0x78>>1;            //设置从设备地址UCB0CTL1|=UCTR;                 //选择发送模式UCB0CTL1|=UCTXSTT;              //发出起始条件while(!(IFG2&UCB0TXIFG));UCB0TXBUF=0x40;                //发送写命令while((IFG2&UCB0TXIFG)==0);    //等待数据发送完成UCB0TXBUF=dat;                 //传输命令while((IFG2&UCB0TXIFG)==0);UCB0CTL1 |= UCTXSTP;           // 发送停止信号while(UCB0CTL1&UCTXSTP);       // 等待发送完成}

5.完整代码

我们端口配置到这里就结束了 接下来的任务就是将江科大OLED代码中发送命令和数据的函数替换位上述函数即可。我这里采用非缓冲区的方式(MSP430G2553没有那么大的RAM来使用缓冲区)

这里就选择几个函数,如果有需要的话,将江科大的代码直接拉过来就行

OLED.c

/** oled.c**  Created on: 2025年4月30日*      Author: 19594*/
#include <msp430.h>
#include "OLED.h"
#include "OLED_Data.h"
#include "stdint.h"
void I2C_Init()
{P1SEL|=(BIT6+BIT7);P1SEL2|=(BIT6+BIT7);UCB0CTL1|=UCSWRST;UCB0CTL0=UCMST+UCMODE_3+UCSYNC;UCB0CTL1|=UCSSEL_2+UCSWRST;      // 保持复位状态UCB0BR0 = 10;             // 分频系数整数部分UCB0BR1 = 0;             // 分频系数高位(未使用)UCB0CTL0 &= ~UCSLA10; // 7位地址模式UCB0I2CSA = (0x78>>1);        // 设置从机地址(后续通信时需修改)UCB0CTL1&=~UCSWRST;    // 退出复位模式,启用 I2C 模块
}void OLED_WriteData(unsigned char dat)
{while(UCB0CTL1&UCTXSTP);UCB0I2CSA = 0x78>>1;UCB0CTL1|=UCTR;UCB0CTL1|=UCTXSTT;while(!(IFG2&UCB0TXIFG));UCB0TXBUF=0x40;while((IFG2&UCB0TXIFG)==0);UCB0TXBUF=dat;while((IFG2&UCB0TXIFG)==0);UCB0CTL1 |= UCTXSTP;while(UCB0CTL1&UCTXSTP);       // 等待发送完成
}unsigned char OLED_WriteCommand(unsigned char dat)
{while(UCB0CTL1&UCTXSTP);UCB0I2CSA = 0x78>>1;UCB0CTL1|=UCTR;UCB0CTL1|=UCTXSTT;while(!(IFG2&UCB0TXIFG));UCB0TXBUF=0x00;while((IFG2&UCB0TXIFG)==0);UCB0TXBUF=dat;while((IFG2&UCB0TXIFG)==0);UCB0CTL1 |= UCTXSTP;while(UCB0CTL1&UCTXSTP);       // 等待发送完成return 0;
}
void OLED_Init()
{OLED_WriteCommand(0xAE);    //设置显示开启/关闭,0xAE关闭,0xAF开启OLED_WriteCommand(0xD5);    //设置显示时钟分频比/振荡器频率OLED_WriteCommand(0x80);    //0x00~0xFFOLED_WriteCommand(0xA8);    //设置多路复用率OLED_WriteCommand(0x3F);    //0x0E~0x3FOLED_WriteCommand(0xD3);    //设置显示偏移OLED_WriteCommand(0x00);    //0x00~0x7FOLED_WriteCommand(0x40);    //设置显示开始行,0x40~0x7FOLED_WriteCommand(0xA1);    //设置左右方向,0xA1正常,0xA0左右反置OLED_WriteCommand(0xC8);    //设置上下方向,0xC8正常,0xC0上下反置OLED_WriteCommand(0xDA);    //设置COM引脚硬件配置OLED_WriteCommand(0x12);OLED_WriteCommand(0x81);    //设置对比度OLED_WriteCommand(0xCF);    //0x00~0xFFOLED_WriteCommand(0xD9);    //设置预充电周期OLED_WriteCommand(0xF1);OLED_WriteCommand(0xDB);    //设置VCOMH取消选择级别OLED_WriteCommand(0x30);OLED_WriteCommand(0xA4);    //设置整个显示打开/关闭OLED_WriteCommand(0xA6);    //设置正常/反色显示,0xA6正常,0xA7反色OLED_WriteCommand(0x8D);    //设置充电泵OLED_WriteCommand(0x14);OLED_WriteCommand(0xAF);    //开启显示
}
void OLED_SetCursor(uint8_t page,uint8_t x)
{OLED_WriteCommand(0xB0 | page);OLED_WriteCommand(0x10 | ((x & 0xF0) >> 4));OLED_WriteCommand(0x00 | (x & 0x0F));
}
void OLED_Clear()
{unsigned char i,j;for(i=0;i<8;i++){for(j=0;j<128;j++){OLED_SetCursor(i,j);OLED_WriteData(0x00);}}
}
void OLED_ShowChar(unsigned char x,unsigned char y,char Char,unsigned char FontSize)
{unsigned char i;if(FontSize==6){OLED_SetCursor(y, x);for(i=0;i<6;i++){OLED_WriteData(OLED_F6x8[Char-' '][i]);}}if(FontSize){OLED_SetCursor(y, x);for(i=0;i<8;i++){OLED_WriteData(OLED_F8x16[Char-' '][i]);}OLED_SetCursor(y+1, x);for(i=0;i<8;i++){OLED_WriteData(OLED_F8x16[Char-' '][i+8]);}}
}
void OLED_ShowString(unsigned char x,unsigned char y,char *String,unsigned char FontSize)
{unsigned char i;for(i=0;String[i]!='\0';i++){OLED_ShowChar(x+FontSize*i,y,String[i],FontSize);}
}
uint32_t OLED_Pow(unsigned char x,unsigned char y)
{uint32_t result=1;while(y--){result*=x;}return result;
}
void OLED_ShowNum(uint8_t X, uint8_t Y, uint32_t Number, uint8_t Length, uint8_t FontSize)
{uint8_t i;for (i = 0; i < Length; i++){OLED_ShowChar(X + i * FontSize, Y, Number / OLED_Pow(10, Length - i - 1) % 10 + '0', FontSize);}
}
void OLED_ShowHexNum(uint8_t X, uint8_t Y, uint32_t Number, uint8_t Length, uint8_t FontSize)
{uint8_t i, SingleNumber;for (i = 0; i < Length; i++)        //遍历数字的每一位{SingleNumber = Number / OLED_Pow(16, Length - i - 1) % 16;if (SingleNumber < 10)          //单个数字小于10{OLED_ShowChar(X + i * FontSize, Y, SingleNumber + '0', FontSize);}else                            //单个数字大于10{OLED_ShowChar(X + i * FontSize, Y, SingleNumber - 10 + 'A', FontSize);}}
}

OLED.h

/** oled.h**  Created on: 2025年4月30日*      Author: 19594*/#ifndef OLED_H_
#define OLED_H_
#include "stdint.h"#define OLED_8X16               8
#define OLED_6X8                6void OLED_Init();
void OLED_SetCursor(uint8_t page,uint8_t x);
void I2C_Init();
void OLED_Clear();
void OLED_ShowChar(unsigned char x,unsigned char y,char Char,unsigned char FontSize);
void OLED_ShowString(unsigned char x,unsigned char y,char *String,unsigned char FontSize);
void OLED_ShowNum(uint8_t X, uint8_t Y, uint32_t Number, uint8_t Length, uint8_t FontSize);
void OLED_ShowHexNum(unsigned char X, unsigned char Y, uint32_t Number, uint8_t Length, uint8_t FontSize);#endif /* OLED_H_ */

OLED_Data.c

/** OLED_Data.c**  Created on: 2025年5月2日*      Author: 19594*/
const unsigned char OLED_F8x16[][16] =
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//   00x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,// ! 10x00,0x16,0x0E,0x00,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// " 20x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,// # 30x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,// $ 40xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,// % 50x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,// & 60x00,0x00,0x00,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// ' 70x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,// ( 80x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,// ) 90x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,// * 100x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,// + 110x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,// , 120x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,// - 130x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,// . 140x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,// / 150x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,// 0 160x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,// 1 170x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,// 2 180x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,// 3 190x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,// 4 200x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,// 5 210x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,// 6 220x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,// 7 230x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,// 8 240x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,// 9 250x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,// : 260x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,// ; 270x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,// < 280x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,// = 290x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,// > 300x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,// ? 310xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,// @ 320x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,// A 330x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,// B 340xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,// C 350x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,// D 360x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,// E 370x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,// F 380xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,// G 390x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,// H 400x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,// I 410x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,// J 420x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,// K 430x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,// L 440x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,// M 450x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,// N 460xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,// O 470x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,// P 480xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,// Q 490x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,// R 500x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,// S 510x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,// T 520x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,// U 530x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,// V 540xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,// W 550x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,// X 560x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,// Y 570x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,// Z 580x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,// [ 590x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,// \ 600x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,// ] 610x00,0x20,0x10,0x08,0x04,0x08,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// ^ 620x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,// _ 630x00,0x02,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// ` 640x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,// a 650x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,// b 660x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,// c 670x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,// d 680x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,// e 690x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,// f 700x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,// g 710x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,// h 720x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,// i 730x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,// j 740x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,// k 750x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,// l 760x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,// m 770x00,0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x20,0x3F,0x21,0x00,0x20,0x3F,0x20,// n 780x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,// o 790x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,// p 800x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,// q 810x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,// r 820x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,// s 830x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,// t 840x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,// u 850x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,// v 860x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,// w 870x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,// x 880x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,// y 890x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,// z 900x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,// { 910x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,// | 920x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,// } 930x00,0x80,0x40,0x40,0x80,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,// ~ 94
};/*宽6像素,高8像素*/
const unsigned char OLED_F6x8[][6] =
{0x00,0x00,0x00,0x00,0x00,0x00,//   00x00,0x00,0x00,0x2F,0x00,0x00,// ! 10x00,0x00,0x07,0x00,0x07,0x00,// " 20x00,0x14,0x7F,0x14,0x7F,0x14,// # 30x00,0x24,0x2A,0x7F,0x2A,0x12,// $ 40x00,0x23,0x13,0x08,0x64,0x62,// % 50x00,0x36,0x49,0x55,0x22,0x50,// & 60x00,0x00,0x00,0x07,0x00,0x00,// ' 70x00,0x00,0x1C,0x22,0x41,0x00,// ( 80x00,0x00,0x41,0x22,0x1C,0x00,// ) 90x00,0x14,0x08,0x3E,0x08,0x14,// * 100x00,0x08,0x08,0x3E,0x08,0x08,// + 110x00,0x00,0x00,0xA0,0x60,0x00,// , 120x00,0x08,0x08,0x08,0x08,0x08,// - 130x00,0x00,0x60,0x60,0x00,0x00,// . 140x00,0x20,0x10,0x08,0x04,0x02,// / 150x00,0x3E,0x51,0x49,0x45,0x3E,// 0 160x00,0x00,0x42,0x7F,0x40,0x00,// 1 170x00,0x42,0x61,0x51,0x49,0x46,// 2 180x00,0x21,0x41,0x45,0x4B,0x31,// 3 190x00,0x18,0x14,0x12,0x7F,0x10,// 4 200x00,0x27,0x45,0x45,0x45,0x39,// 5 210x00,0x3C,0x4A,0x49,0x49,0x30,// 6 220x00,0x01,0x71,0x09,0x05,0x03,// 7 230x00,0x36,0x49,0x49,0x49,0x36,// 8 240x00,0x06,0x49,0x49,0x29,0x1E,// 9 250x00,0x00,0x36,0x36,0x00,0x00,// : 260x00,0x00,0x56,0x36,0x00,0x00,// ; 270x00,0x08,0x14,0x22,0x41,0x00,// < 280x00,0x14,0x14,0x14,0x14,0x14,// = 290x00,0x00,0x41,0x22,0x14,0x08,// > 300x00,0x02,0x01,0x51,0x09,0x06,// ? 310x00,0x3E,0x49,0x55,0x59,0x2E,// @ 320x00,0x7C,0x12,0x11,0x12,0x7C,// A 330x00,0x7F,0x49,0x49,0x49,0x36,// B 340x00,0x3E,0x41,0x41,0x41,0x22,// C 350x00,0x7F,0x41,0x41,0x22,0x1C,// D 360x00,0x7F,0x49,0x49,0x49,0x41,// E 370x00,0x7F,0x09,0x09,0x09,0x01,// F 380x00,0x3E,0x41,0x49,0x49,0x7A,// G 390x00,0x7F,0x08,0x08,0x08,0x7F,// H 400x00,0x00,0x41,0x7F,0x41,0x00,// I 410x00,0x20,0x40,0x41,0x3F,0x01,// J 420x00,0x7F,0x08,0x14,0x22,0x41,// K 430x00,0x7F,0x40,0x40,0x40,0x40,// L 440x00,0x7F,0x02,0x0C,0x02,0x7F,// M 450x00,0x7F,0x04,0x08,0x10,0x7F,// N 460x00,0x3E,0x41,0x41,0x41,0x3E,// O 470x00,0x7F,0x09,0x09,0x09,0x06,// P 480x00,0x3E,0x41,0x51,0x21,0x5E,// Q 490x00,0x7F,0x09,0x19,0x29,0x46,// R 500x00,0x46,0x49,0x49,0x49,0x31,// S 510x00,0x01,0x01,0x7F,0x01,0x01,// T 520x00,0x3F,0x40,0x40,0x40,0x3F,// U 530x00,0x1F,0x20,0x40,0x20,0x1F,// V 540x00,0x3F,0x40,0x38,0x40,0x3F,// W 550x00,0x63,0x14,0x08,0x14,0x63,// X 560x00,0x07,0x08,0x70,0x08,0x07,// Y 570x00,0x61,0x51,0x49,0x45,0x43,// Z 580x00,0x00,0x7F,0x41,0x41,0x00,// [ 590x00,0x02,0x04,0x08,0x10,0x20,// \ 600x00,0x00,0x41,0x41,0x7F,0x00,// ] 610x00,0x04,0x02,0x01,0x02,0x04,// ^ 620x00,0x40,0x40,0x40,0x40,0x40,// _ 630x00,0x00,0x01,0x02,0x04,0x00,// ` 640x00,0x20,0x54,0x54,0x54,0x78,// a 650x00,0x7F,0x48,0x44,0x44,0x38,// b 660x00,0x38,0x44,0x44,0x44,0x20,// c 670x00,0x38,0x44,0x44,0x48,0x7F,// d 680x00,0x38,0x54,0x54,0x54,0x18,// e 690x00,0x08,0x7E,0x09,0x01,0x02,// f 700x00,0x18,0xA4,0xA4,0xA4,0x7C,// g 710x00,0x7F,0x08,0x04,0x04,0x78,// h 720x00,0x00,0x44,0x7D,0x40,0x00,// i 730x00,0x40,0x80,0x84,0x7D,0x00,// j 740x00,0x7F,0x10,0x28,0x44,0x00,// k 750x00,0x00,0x41,0x7F,0x40,0x00,// l 760x00,0x7C,0x04,0x18,0x04,0x78,// m 770x00,0x7C,0x08,0x04,0x04,0x78,// n 780x00,0x38,0x44,0x44,0x44,0x38,// o 790x00,0xFC,0x24,0x24,0x24,0x18,// p 800x00,0x18,0x24,0x24,0x18,0xFC,// q 810x00,0x7C,0x08,0x04,0x04,0x08,// r 820x00,0x48,0x54,0x54,0x54,0x20,// s 830x00,0x04,0x3F,0x44,0x40,0x20,// t 840x00,0x3C,0x40,0x40,0x20,0x7C,// u 850x00,0x1C,0x20,0x40,0x20,0x1C,// v 860x00,0x3C,0x40,0x30,0x40,0x3C,// w 870x00,0x44,0x28,0x10,0x28,0x44,// x 880x00,0x1C,0xA0,0xA0,0xA0,0x7C,// y 890x00,0x44,0x64,0x54,0x4C,0x44,// z 900x00,0x00,0x08,0x7F,0x41,0x00,// { 910x00,0x00,0x00,0x7F,0x00,0x00,// | 920x00,0x00,0x41,0x7F,0x08,0x00,// } 930x00,0x08,0x04,0x08,0x10,0x08,// ~ 94
};

OLED_Data.h

/** OLED_Data.h**  Created on: 2025年5月2日*      Author: 19594*/#ifndef OLED_DATA_H_
#define OLED_DATA_H_extern const uint8_t OLED_F8x16[][16];
extern const uint8_t OLED_F6x8[][6];#endif /* OLED_DATA_H_ */

main.c

#include <msp430.h> 
#include "OLED.h"
/*** main.c*/int main(void)
{WDTCTL = WDTPW | WDTHOLD;	// stop watchdog timerBCSCTL1 = CALBC1_1MHZ;   // 设置 DCO 范围为 1MHz(需从芯片信息段加载校准值)DCOCTL = CALDCO_1MHZ;     // 设置 DCO 频率为 1MHzI2C_Init();OLED_Init();OLED_Clear();OLED_ShowString(0, 0, "hello world",8);while(1);return 0;
}

相关文章:

  • 【AI面试准备】Azure DevOps沙箱实验全流程详解
  • 基于bert预训练模型的垃圾短信分类系统
  • React useMemo函数
  • 中小企业MES系统数据库设计
  • RabbitMQ的交换机
  • 【阿里云大模型高级工程师ACP习题集】2.9 大模型应用生产实践(上篇)
  • 超长8分钟Suno V4.5 – 支持一首歌多风格转换啦~~~
  • Nginx部署Vue+ElementPlus应用案例(基于腾讯云)
  • PDF转换工具xpdf-tools-4.05
  • 敏感词 v0.25.0 新特性之 wordCheck 策略支持用户自定义
  • 【安装指南】Chat2DB-集成了AI功能的数据库管理工具
  • 论文阅读笔记——TesserAct: Learning 4D Embodied World Models
  • 【安装指南】Centos7 在 Docker 上安装 RabbitMQ4.0.x
  • 【无需docker】mac本地部署dify
  • AI Rack架构高速互连的挑战:损耗设计与信号完整性的设计框架
  • 在运行 Hadoop 作业时,遇到“No such file or directory”,如何在windows里打包在虚拟机里运行
  • 计算机网络 - stp生成树实验
  • 【现代深度学习技术】现代循环神经网络03:深度循环神经网络
  • MCP 探索:微软 Microsoft MarkItDown MCP ,可把 Word、Excel 等转换成 MarkDown 格式
  • sys目录介绍
  • 重庆渝中警方:男子点燃摩托车欲寻衅滋事,被民警和群众合力制服
  • 一代名伶程砚秋经典影像:一箱旧影,芳华满堂
  • A股2024年年报披露收官,四分之三公司盈利
  • 大学2025丨对话深大人工智能学院负责人李坚强:产学研生态比“造天才”更重要
  • 李乐成任工业和信息化部部长
  • 媒体:黑话烂梗包围小学生,“有话好好说”很难吗?