[Linux项目实践] 物联网单板测试:OLED Dis_Menu

来源:互联网 发布:返利淘宝网红包怎么用 编辑:程序博客网 时间:2024/05/17 22:42

Dis_Menu(menu);       //display the menu content

/*******************************************************************************

* Function Name  : LED_Menu_01

* Description    : LED test Menu.

* Input          : - numb, Function number

* Output         : None

* Return         : None

*******************************************************************************/

void Dis_Menu(Menu_TypeDef menu)

{

  uint16_t page, row, i;

  page = (menu.numb-1) / 6;    //each 6 items for a page

  i = (page+1) * 6;            //the total item can be showed on the OLED

  if(i < menu.max_numb)          

    row = 5;

  else

    row = (menu.max_numb-1) % 6;

  //show the title:LED Test  pg 1, and yellow color

  OLED_ClearScreen();      

  OLED_DisStrLine(0, 0, (uint8_t *)menu.title);  //show the menu title

  OLED_DisChar(0, 6*17, 0, 'P');              //show the page indicate

  OLED_DisChar(0, 6*18, 0, 'g');

  OLED_DisChar(0, 6*19, 0, ' ');

  OLED_DisChar(0, 6*20, 0, 0x30+1+page);

  //show the menu items, and blue color

  for(i=0; i<=row; i++)

  {

    if(menu.numb == (page*6 + i + 1))

  OLED_DisStrLine(2+ i, 1, (uint8_t *)menu.item[page*6+i]);  //yellow or blue

else

  OLED_DisStrLine(2+ i, 0, (uint8_t *)menu.item[page*6+i]);  //black

  }

}

 

1OLED_ClearScreen();    //ClearScreen

void OLED_ClearScreen(void)

{

  Fill_RAM(0x00);   

}

1.1Fill_RAM(0x00);    /*Show Regular Pattern (Full Screen)*/

void Fill_RAM(unsigned char Data)

{

unsigned char i,j;

for(i=0;i<8;i++)

{

Set_Start_Page(i);

Set_Start_Column(0x00);

for(j=0;j<128;j++)

{

Write_Data(Data);

}

}

}

1.1.1Set_Start_Page(i);      /*// Set Page Start Address for Page Addressing Mode*/

void Set_Start_Page(unsigned char d)

{

Write_Command(0xB0|d); //   Default => 0xB0 (0x00)

}

1.1.1.1Write_Command(0xB0|d);    /*// 4-wire SPI*/

void Write_Command(unsigned char Data)

{

//unsigned char i;

OLED_DC(0);

OLED_CS(0);

/*

for(i=0; i<8; i++)

{

OLED_CLK(0);

OLED_MOSI((Data&0x80)>>7);

Data = Data << 1;

OLED_CLK(1);

}

*/

SSP_Send(0, (uint8_t *)&Data, 1);

SPI_PutGet(0, Data);

OLED_CS(1);

OLED_DC(1);

}

1.1.1.1.1OLED_DC(0); OLED_DC(1);

#define OLED_DC(x) GPIOSetValue(PORT2, 5, x)

1.1.1.1.2OLED_CS(0); OLED_CS(1);

#define OLED_CS(x) GPIOSetValue(PORT2, 4, x)

1.1.1.1.3OLED_CLK(0); OLED_CLK(1);

#define OLED_CLK(x) GPIOSetValue(PORT0, 6, x)

1.1.1.1.4OLED_MOSI((Data&0x80)>>7);

#define OLED_MOSI(x) GPIOSetValue(PORT0, 9, x)

1.1.1.1.5SPI_PutGet(0, Data);    Descriptions: SPI port send & receive

/*SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息*/

uint16_t SPI_PutGet(uint8_t portNum, uint16_t SendData)

{

if(portNum == 0)

{

/* Move on only if NOT busy and TX FIFO not full. */

while((LPC_SSP0->SR & (SSPSR_TNF|SSPSR_BSY)) != SSPSR_TNF);

LPC_SSP0->DR = SendData;

/* Wait until the Busy bit is cleared. */

while(LPC_SSP0->SR & SSPSR_BSY);

/* Wait until the Busy bit is cleared */

while((LPC_SSP0->SR & (SSPSR_BSY|SSPSR_RNE)) != SSPSR_RNE);

return LPC_SSP0->DR;

}

else

{

/* Move on only if NOT busy and TX FIFO not full. */

while((LPC_SSP1->SR & (SSPSR_TNF|SSPSR_BSY)) != SSPSR_TNF);

LPC_SSP1->DR = SendData;

/* Wait until the Busy bit is cleared. */

while(LPC_SSP1->SR & SSPSR_BSY);

/* Wait until the Busy bit is cleared */

while((LPC_SSP1->SR & (SSPSR_BSY|SSPSR_RNE)) != SSPSR_RNE);

return LPC_SSP1->DR;

}

}

1.1.1.1.5.1LPC_SSP0->SR

/*Peripheral declaration*/

#define LPC_SSP0              ((LPC_SSP_TypeDef *) LPC_SSP0_BASE)

typedef struct

{

  __IO uint32_t CR0;      /*!< Offset: 0x000 Control Register 0 (R/W) */

  __IO uint32_t CR1;      /*!< Offset: 0x004 Control Register 1 (R/W) */

  __IO uint32_t DR;       /*!< Offset: 0x008 Data Register (R/W) */

  __I  uint32_t SR;       /*!< Offset: 0x00C Status Registe (R/ ) */

  __IO uint32_t CPSR;    /*!< Offset: 0x010 Clock Prescale Register (R/W) */

  __IO uint32_t IMSC;    /*!< Offset: 0x014 Interrupt Mask Set and Clear Register (R/W) */

  __IO uint32_t RIS;      /*!< Offset: 0x018 Raw Interrupt Status Register (R/W) */

  __IO uint32_t MIS;      /*!< Offset: 0x01C Masked Interrupt Status Register (R/W) */

  __IO uint32_t ICR;      /*!< Offset: 0x020 SSPICR Interrupt Clear Register (R/W) */

} LPC_SSP_TypeDef;

/*Peripheral memory map  外围存储图*/

/* APB0 peripherals */   APB(Advanced Peripheral Bus),外围总线的意思

#define LPC_SSP0_BASE         (LPC_APB0_BASE + 0x40000)

/*Base addresses*/

#define LPC_APB0_BASE         (0x40000000UL)   

1.1.1.1.5.2SSPSR_TNF

#define SSPSR_TNF (1 << 1)             /* SSP Status register */

1.1.1.1.5.3SSPSR_BSY

#define SSPSR_BSY (1 << 4)            /* SSP Status register */

1.1.1.1.5.4LPC_SSP1->SR

/*Peripheral declaration*/

#define LPC_SSP1              ((LPC_SSP_TypeDef *) LPC_SSP1_BASE )

/*Peripheral memory map*/

/*APB0 peripherals*/

#define LPC_SSP1_BASE         (LPC_APB0_BASE + 0x58000)

/*Base addresses*/

#define LPC_APB0_BASE         (0x40000000UL)

1.1.1.1.5SSP_Send(0, (uint8_t *)&Data, 1);   /*同步串行协议*/

/*Send a block of data to the SSP port, 

the first parameter is the buffer pointer, the 2nd parameter is the block length.*/

void SSP_Send( uint8_t portNum, uint8_t *buf, uint32_t Length )

{

  uint32_t i;

  uint8_t Dummy = Dummy;

  for ( i = 0; i < Length; i++ )

  {

if ( portNum == 0 )

{

  /* Move on only if NOT busy and TX FIFO not full. */

  while ( (LPC_SSP0->SR & (SSPSR_TNF|SSPSR_BSY)) != SSPSR_TNF );

  LPC_SSP0->DR = *buf;

  buf++;

#if !LOOPBACK_MODE

  while ( (LPC_SSP0->SR & (SSPSR_BSY|SSPSR_RNE)) != SSPSR_RNE );

  /* Whenever a byte is written, MISO FIFO counter increments, Clear FIFO 

  on MISO. Otherwise, when SSP0Receive() is called, previous data byte

  is left in the FIFO. */

  Dummy = LPC_SSP0->DR;

#else

  /* Wait until the Busy bit is cleared. */

  while ( LPC_SSP0->SR & SSPSR_BSY );

#endif

}

else

{

  /* Move on only if NOT busy and TX FIFO not full. */

  while ( (LPC_SSP1->SR & (SSPSR_TNF|SSPSR_BSY)) != SSPSR_TNF );

  LPC_SSP1->DR = *buf;

  buf++;

#if !LOOPBACK_MODE

  while ( (LPC_SSP1->SR & (SSPSR_BSY|SSPSR_RNE)) != SSPSR_RNE );

  /* Whenever a byte is written, MISO FIFO counter increments, Clear FIFO 

  on MISO. Otherwise, when SSP0Receive() is called, previous data byte

  is left in the FIFO. */

  Dummy = LPC_SSP1->DR;

#else

  /* Wait until the Busy bit is cleared. */

  while ( LPC_SSP1->SR & SSPSR_BSY );

#endif

}

  }

  return; 

}

1.2Set_Start_Column(0x00);

/* Instruction Setting*/

void Set_Start_Column(unsigned char d)

{

Write_Command(0x00+d%16); // Set Lower Column Start Address for Page Addressing Mode

//   Default => 0x00

Write_Command(0x10+d/16); // Set Higher Column Start Address for Page Addressing Mode

//   Default => 0x10

}

1.2.1Write_Command(0x00+d%16);

/*4-wire SPI*/

void Write_Command(unsigned char Data)

{

//unsigned char i;

OLED_DC(0);

OLED_CS(0);

for(i=0; i<7; i++)

{

OLED_CLK(0);

OLED_MOSI((Data&0x80)>>7);

Data = Data << 1;

OLED_CLK(1);

}

SSP_Send(0, (uint8_t *)&Data, 1);

SPI_PutGet(0, Data);

OLED_CS(1);

OLED_DC(1);

}

1.3Write_Data(Data);

void Write_Data(unsigned char Data)

{

//unsigned char i;

OLED_DC(1);

OLED_CS(0);

/*

for(i=0; i<8; i++)

{

OLED_CLK(0);

OLED_MOSI((Data&0x80)>>7);

Data = Data << 1;

OLED_CLK(1);

}

*/

//SSP_Send(0, (uint8_t *)&Data, 1);

SPI_PutGet(0, Data);

OLED_CS(1);

OLED_DC(1);

}

2、OLED_DisChar(0, 6*17, 0, 'P');

/*******************************************************************************

* Function Name  : OLED_DisChar

* Description    : Displays a char on the OLED.

* Input          : - Line: the Line where to display the character shape .

*                    This parameter can be one of the following values:

*                       - Linex: where x can be 0..7

*                  - Column: start column address.

*                  - Color: display color

*                       - 0: dot is yellow or blue

*                       - 1: dot is black

*                  - Ascii: character ascii code, must be between 0x20 and 0x7E.

* Output         : None

* Return         : None

*******************************************************************************/

void OLED_DisChar(uint8_t Line, uint16_t Column, uint8_t Color, uint8_t Ascii)

{

  uint8_t *Src_Pointer;

  uint8_t i;

  

  Src_Pointer = (unsigned char *) &Ascii_1[(Ascii-32)][0];

  Set_Start_Page(Line);

  if(Column == 0)

  {

    Set_Start_Column(0);

if(Color == 0)

      Write_Data(0x00);

    else

      Write_Data(0xff);

  }

  Set_Start_Column(Column+1);

  for(i=0;i<5;i++)

  {

    if(Color == 0)

      Write_Data(*Src_Pointer);

else

  Write_Data(~(*Src_Pointer));

    Src_Pointer ++;

  }

  if(Color == 0)

    Write_Data(0x00);

  else

    Write_Data(0xff);

}

2.1Src_Pointer = (unsigned char *) &Ascii_1[(Ascii-32)][0];

const unsigned char Ascii_1[241][5]={ // Refer to "Times New Roman" Font Database...

//   Basic Characters

{0x00,0x00,0x00,0x00,0x00}, //   (  0)    - 0x0020 Space

{0x00,0x00,0x4F,0x00,0x00}, //   (  1)  ! - 0x0021 Exclamation Mark

{0x00,0x07,0x00,0x07,0x00}, //   (  2)  " - 0x0022 Quotation Mark

{0x14,0x7F,0x14,0x7F,0x14}, //   (  3)  # - 0x0023 Number Sign

{0x24,0x2A,0x7F,0x2A,0x12}, //   (  4)  $ - 0x0024 Dollar Sign

{0x23,0x13,0x08,0x64,0x62}, //   (  5)  % - 0x0025 Percent Sign

{0x36,0x49,0x55,0x22,0x50}, //   (  6)  & - 0x0026 Ampersand

{0x00,0x05,0x03,0x00,0x00}, //   (  7)  ' - 0x0027 Apostrophe

{0x00,0x1C,0x22,0x41,0x00}, //   (  8)  ( - 0x0028 Left Parenthesis

{0x00,0x41,0x22,0x1C,0x00}, //   (  9)  ) - 0x0029 Right Parenthesis

{0x14,0x08,0x3E,0x08,0x14}, //   ( 10)  * - 0x002A Asterisk

{0x08,0x08,0x3E,0x08,0x08}, //   ( 11)  + - 0x002B Plus Sign

{0x00,0x50,0x30,0x00,0x00}, //   ( 12)  , - 0x002C Comma

{0x08,0x08,0x08,0x08,0x08}, //   ( 13)  - - 0x002D Hyphen-Minus

{0x00,0x60,0x60,0x00,0x00}, //   ( 14)  . - 0x002E Full Stop

{0x20,0x10,0x08,0x04,0x02}, //   ( 15)  / - 0x002F Solidus

{0x3E,0x51,0x49,0x45,0x3E}, //   ( 16)  0 - 0x0030 Digit Zero

{0x00,0x42,0x7F,0x40,0x00}, //   ( 17)  1 - 0x0031 Digit One

{0x42,0x61,0x51,0x49,0x46}, //   ( 18)  2 - 0x0032 Digit Two

{0x21,0x41,0x45,0x4B,0x31}, //   ( 19)  3 - 0x0033 Digit Three

{0x18,0x14,0x12,0x7F,0x10}, //   ( 20)  4 - 0x0034 Digit Four

{0x27,0x45,0x45,0x45,0x39}, //   ( 21)  5 - 0x0035 Digit Five

{0x3C,0x4A,0x49,0x49,0x30}, //   ( 22)  6 - 0x0036 Digit Six

{0x01,0x71,0x09,0x05,0x03}, //   ( 23)  7 - 0x0037 Digit Seven

{0x36,0x49,0x49,0x49,0x36}, //   ( 24)  8 - 0x0038 Digit Eight

{0x06,0x49,0x49,0x29,0x1E}, //   ( 25)  9 - 0x0039 Dight Nine

{0x00,0x36,0x36,0x00,0x00}, //   ( 26)  : - 0x003A Colon

{0x00,0x56,0x36,0x00,0x00}, //   ( 27)  ; - 0x003B Semicolon

{0x08,0x14,0x22,0x41,0x00}, //   ( 28)  < - 0x003C Less-Than Sign

{0x14,0x14,0x14,0x14,0x14}, //   ( 29)  = - 0x003D Equals Sign

{0x00,0x41,0x22,0x14,0x08}, //   ( 30)  > - 0x003E Greater-Than Sign

{0x02,0x01,0x51,0x09,0x06}, //   ( 31)  ? - 0x003F Question Mark

{0x32,0x49,0x79,0x41,0x3E}, //   ( 32)  @ - 0x0040 Commercial At

{0x7E,0x11,0x11,0x11,0x7E}, //   ( 33)  A - 0x0041 Latin Capital Letter A

{0x7F,0x49,0x49,0x49,0x36}, //   ( 34)  B - 0x0042 Latin Capital Letter B

{0x3E,0x41,0x41,0x41,0x22}, //   ( 35)  C - 0x0043 Latin Capital Letter C

{0x7F,0x41,0x41,0x22,0x1C}, //   ( 36)  D - 0x0044 Latin Capital Letter D

{0x7F,0x49,0x49,0x49,0x41}, //   ( 37)  E - 0x0045 Latin Capital Letter E

{0x7F,0x09,0x09,0x09,0x01}, //   ( 38)  F - 0x0046 Latin Capital Letter F

{0x3E,0x41,0x49,0x49,0x7A}, //   ( 39)  G - 0x0047 Latin Capital Letter G

{0x7F,0x08,0x08,0x08,0x7F}, //   ( 40)  H - 0x0048 Latin Capital Letter H

{0x00,0x41,0x7F,0x41,0x00}, //   ( 41)  I - 0x0049 Latin Capital Letter I

{0x20,0x40,0x41,0x3F,0x01}, //   ( 42)  J - 0x004A Latin Capital Letter J

{0x7F,0x08,0x14,0x22,0x41}, //   ( 43)  K - 0x004B Latin Capital Letter K

{0x7F,0x40,0x40,0x40,0x40}, //   ( 44)  L - 0x004C Latin Capital Letter L

{0x7F,0x02,0x0C,0x02,0x7F}, //   ( 45)  M - 0x004D Latin Capital Letter M

{0x7F,0x04,0x08,0x10,0x7F}, //   ( 46)  N - 0x004E Latin Capital Letter N

{0x3E,0x41,0x41,0x41,0x3E}, //   ( 47)  O - 0x004F Latin Capital Letter O

{0x7F,0x09,0x09,0x09,0x06}, //   ( 48)  P - 0x0050 Latin Capital Letter P

{0x3E,0x41,0x51,0x21,0x5E}, //   ( 49)  Q - 0x0051 Latin Capital Letter Q

{0x7F,0x09,0x19,0x29,0x46}, //   ( 50)  R - 0x0052 Latin Capital Letter R

{0x46,0x49,0x49,0x49,0x31}, //   ( 51)  S - 0x0053 Latin Capital Letter S

{0x01,0x01,0x7F,0x01,0x01}, //   ( 52)  T - 0x0054 Latin Capital Letter T

{0x3F,0x40,0x40,0x40,0x3F}, //   ( 53)  U - 0x0055 Latin Capital Letter U

{0x1F,0x20,0x40,0x20,0x1F}, //   ( 54)  V - 0x0056 Latin Capital Letter V

{0x3F,0x40,0x38,0x40,0x3F}, //   ( 55)  W - 0x0057 Latin Capital Letter W

{0x63,0x14,0x08,0x14,0x63}, //   ( 56)  X - 0x0058 Latin Capital Letter X

{0x07,0x08,0x70,0x08,0x07}, //   ( 57)  Y - 0x0059 Latin Capital Letter Y

{0x61,0x51,0x49,0x45,0x43}, //   ( 58)  Z - 0x005A Latin Capital Letter Z

{0x00,0x7F,0x41,0x41,0x00}, //   ( 59)  [ - 0x005B Left Square Bracket

{0x02,0x04,0x08,0x10,0x20}, //   ( 60)  \ - 0x005C Reverse Solidus

{0x00,0x41,0x41,0x7F,0x00}, //   ( 61)  ] - 0x005D Right Square Bracket

{0x04,0x02,0x01,0x02,0x04}, //   ( 62)  ^ - 0x005E Circumflex Accent

{0x40,0x40,0x40,0x40,0x40}, //   ( 63)  _ - 0x005F Low Line

{0x01,0x02,0x04,0x00,0x00}, //   ( 64)  ` - 0x0060 Grave Accent

{0x20,0x54,0x54,0x54,0x78}, //   ( 65)  a - 0x0061 Latin Small Letter A

{0x7F,0x48,0x44,0x44,0x38}, //   ( 66)  b - 0x0062 Latin Small Letter B

{0x38,0x44,0x44,0x44,0x20}, //   ( 67)  c - 0x0063 Latin Small Letter C

{0x38,0x44,0x44,0x48,0x7F}, //   ( 68)  d - 0x0064 Latin Small Letter D

{0x38,0x54,0x54,0x54,0x18}, //   ( 69)  e - 0x0065 Latin Small Letter E

{0x08,0x7E,0x09,0x01,0x02}, //   ( 70)  f - 0x0066 Latin Small Letter F

{0x06,0x49,0x49,0x49,0x3F}, //   ( 71)  g - 0x0067 Latin Small Letter G

{0x7F,0x08,0x04,0x04,0x78}, //   ( 72)  h - 0x0068 Latin Small Letter H

{0x00,0x44,0x7D,0x40,0x00}, //   ( 73)  i - 0x0069 Latin Small Letter I

{0x20,0x40,0x44,0x3D,0x00}, //   ( 74)  j - 0x006A Latin Small Letter J

{0x7F,0x10,0x28,0x44,0x00}, //   ( 75)  k - 0x006B Latin Small Letter K

{0x00,0x41,0x7F,0x40,0x00}, //   ( 76)  l - 0x006C Latin Small Letter L

{0x7C,0x04,0x18,0x04,0x7C}, //   ( 77)  m - 0x006D Latin Small Letter M

{0x7C,0x08,0x04,0x04,0x78}, //   ( 78)  n - 0x006E Latin Small Letter N

{0x38,0x44,0x44,0x44,0x38}, //   ( 79)  o - 0x006F Latin Small Letter O

{0x7C,0x14,0x14,0x14,0x08},//   ( 80)  p - 0x0070 Latin Small Letter P

{0x08,0x14,0x14,0x18,0x7C}, //   ( 81)  q - 0x0071 Latin Small Letter Q

{0x7C,0x08,0x04,0x04,0x08}, //   ( 82)  r - 0x0072 Latin Small Letter R

{0x48,0x54,0x54,0x54,0x20}, //   ( 83)  s - 0x0073 Latin Small Letter S

{0x04,0x3F,0x44,0x40,0x20}, //   ( 84)  t - 0x0074 Latin Small Letter T

{0x3C,0x40,0x40,0x20,0x7C}, //   ( 85)  u - 0x0075 Latin Small Letter U

{0x1C,0x20,0x40,0x20,0x1C}, //   ( 86)  v - 0x0076 Latin Small Letter V

{0x3C,0x40,0x30,0x40,0x3C}, //   ( 87)  w - 0x0077 Latin Small Letter W

{0x44,0x28,0x10,0x28,0x44}, //   ( 88)  x - 0x0078 Latin Small Letter X

{0x0C,0x50,0x50,0x50,0x3C}, //   ( 89)  y - 0x0079 Latin Small Letter Y

{0x44,0x64,0x54,0x4C,0x44}, //   ( 90)  z - 0x007A Latin Small Letter Z

{0x00,0x08,0x36,0x41,0x00}, //   ( 91)  { - 0x007B Left Curly Bracket

{0x00,0x00,0x7F,0x00,0x00}, //   ( 92)  | - 0x007C Vertical Line

{0x00,0x41,0x36,0x08,0x00}, //   ( 93)  } - 0x007D Right Curly Bracket

{0x02,0x01,0x02,0x04,0x02}, //   ( 94)  ~ - 0x007E Tilde

{0x3E,0x55,0x55,0x41,0x22}, //   ( 95)  C - 0x0080 <Control>

{0x00,0x00,0x00,0x00,0x00}, //   ( 96)    - 0x00A0 No-Break Space

{0x00,0x00,0x79,0x00,0x00}, //   ( 97)  ! - 0x00A1 Inverted Exclamation Mark

{0x18,0x24,0x74,0x2E,0x24}, //   ( 98)  c - 0x00A2 Cent Sign

{0x48,0x7E,0x49,0x42,0x40}, //   ( 99)  L - 0x00A3 Pound Sign

{0x5D,0x22,0x22,0x22,0x5D}, //   (100)  o - 0x00A4 Currency Sign

{0x15,0x16,0x7C,0x16,0x15}, //   (101)  Y - 0x00A5 Yen Sign

{0x00,0x00,0x77,0x00,0x00}, //   (102)  | - 0x00A6 Broken Bar

{0x0A,0x55,0x55,0x55,0x28}, //   (103)    - 0x00A7 Section Sign

{0x00,0x01,0x00,0x01,0x00}, //   (104)  " - 0x00A8 Diaeresis

{0x00,0x0A,0x0D,0x0A,0x04}, //   (105)    - 0x00AA Feminine Ordinal Indicator

{0x08,0x14,0x2A,0x14,0x22}, //   (106) << - 0x00AB Left-Pointing Double Angle Quotation Mark

{0x04,0x04,0x04,0x04,0x1C}, //   (107)    - 0x00AC Not Sign

{0x00,0x08,0x08,0x08,0x00}, //   (108)  - - 0x00AD Soft Hyphen

{0x01,0x01,0x01,0x01,0x01}, //   (109)    - 0x00AF Macron

{0x00,0x02,0x05,0x02,0x00}, //   (110)    - 0x00B0 Degree Sign

{0x44,0x44,0x5F,0x44,0x44}, //   (111) +- - 0x00B1 Plus-Minus Sign

{0x00,0x00,0x04,0x02,0x01}, //   (112)  ` - 0x00B4 Acute Accent

{0x7E,0x20,0x20,0x10,0x3E}, //   (113)  u - 0x00B5 Micro Sign

{0x06,0x0F,0x7F,0x00,0x7F}, //   (114)    - 0x00B6 Pilcrow Sign

{0x00,0x18,0x18,0x00,0x00}, //   (115)  . - 0x00B7 Middle Dot

{0x00,0x40,0x50,0x20,0x00}, //   (116)    - 0x00B8 Cedilla

{0x00,0x0A,0x0D,0x0A,0x00}, //   (117)    - 0x00BA Masculine Ordinal Indicator

{0x22,0x14,0x2A,0x14,0x08}, //   (118) >> - 0x00BB Right-Pointing Double Angle Quotation Mark

{0x17,0x08,0x34,0x2A,0x7D}, //   (119) /4 - 0x00BC Vulgar Fraction One Quarter

{0x17,0x08,0x04,0x6A,0x59}, //   (120) /2 - 0x00BD Vulgar Fraction One Half

{0x30,0x48,0x45,0x40,0x20}, //   (121)  ? - 0x00BF Inverted Question Mark

{0x70,0x29,0x26,0x28,0x70}, //   (122) `A - 0x00C0 Latin Capital Letter A with Grave

{0x70,0x28,0x26,0x29,0x70}, //   (123) 'A - 0x00C1 Latin Capital Letter A with Acute

{0x70,0x2A,0x25,0x2A,0x70}, //   (124) ^A - 0x00C2 Latin Capital Letter A with Circumflex

{0x72,0x29,0x26,0x29,0x70}, //   (125) ~A - 0x00C3 Latin Capital Letter A with Tilde

{0x70,0x29,0x24,0x29,0x70}, //   (126) "A - 0x00C4 Latin Capital Letter A with Diaeresis

{0x70,0x2A,0x2D,0x2A,0x70}, //   (127)  A - 0x00C5 Latin Capital Letter A with Ring Above

{0x7E,0x11,0x7F,0x49,0x49}, //   (128) AE - 0x00C6 Latin Capital Letter Ae

{0x0E,0x51,0x51,0x71,0x11}, //   (129)  C - 0x00C7 Latin Capital Letter C with Cedilla

{0x7C,0x55,0x56,0x54,0x44}, //   (130) `E - 0x00C8 Latin Capital Letter E with Grave

{0x7C,0x55,0x56,0x54,0x44}, //   (131) 'E - 0x00C9 Latin Capital Letter E with Acute

{0x7C,0x56,0x55,0x56,0x44}, //   (132) ^E - 0x00CA Latin Capital Letter E with Circumflex

{0x7C,0x55,0x54,0x55,0x44}, //   (133) "E - 0x00CB Latin Capital Letter E with Diaeresis

{0x00,0x45,0x7E,0x44,0x00}, //   (134) `I - 0x00CC Latin Capital Letter I with Grave

{0x00,0x44,0x7E,0x45,0x00}, //   (135) 'I - 0x00CD Latin Capital Letter I with Acute

{0x00,0x46,0x7D,0x46,0x00}, //   (136) ^I - 0x00CE Latin Capital Letter I with Circumflex

{0x00,0x45,0x7C,0x45,0x00}, //   (137) "I - 0x00CF Latin Capital Letter I with Diaeresis

{0x7F,0x49,0x49,0x41,0x3E}, //   (138)  D - 0x00D0 Latin Capital Letter Eth

{0x7C,0x0A,0x11,0x22,0x7D}, //   (139) ~N - 0x00D1 Latin Capital Letter N with Tilde

{0x38,0x45,0x46,0x44,0x38}, //   (140) `O - 0x00D2 Latin Capital Letter O with Grave

{0x38,0x44,0x46,0x45,0x38}, //   (141) 'O - 0x00D3 Latin Capital Letter O with Acute

{0x38,0x46,0x45,0x46,0x38}, //   (142) ^O - 0x00D4 Latin Capital Letter O with Circumflex

{0x38,0x46,0x45,0x46,0x39}, //   (143) ~O - 0x00D5 Latin Capital Letter O with Tilde

{0x38,0x45,0x44,0x45,0x38}, //   (144) "O - 0x00D6 Latin Capital Letter O with Diaeresis

{0x22,0x14,0x08,0x14,0x22}, //   (145)  x - 0x00D7 Multiplcation Sign

{0x2E,0x51,0x49,0x45,0x3A}, //   (146)  O - 0x00D8 Latin Capital Letter O with Stroke

{0x3C,0x41,0x42,0x40,0x3C}, //   (147) `U - 0x00D9 Latin Capital Letter U with Grave

{0x3C,0x40,0x42,0x41,0x3C}, //   (148) 'U - 0x00DA Latin Capital Letter U with Acute

{0x3C,0x42,0x41,0x42,0x3C}, //   (149) ^U - 0x00DB Latin Capital Letter U with Circumflex

{0x3C,0x41,0x40,0x41,0x3C}, //   (150) "U - 0x00DC Latin Capital Letter U with Diaeresis

{0x0C,0x10,0x62,0x11,0x0C}, //   (151) `Y - 0x00DD Latin Capital Letter Y with Acute

{0x7F,0x12,0x12,0x12,0x0C}, //   (152)  P - 0x00DE Latin Capital Letter Thom

{0x40,0x3E,0x01,0x49,0x36}, //   (153)  B - 0x00DF Latin Capital Letter Sharp S

{0x20,0x55,0x56,0x54,0x78}, //   (154) `a - 0x00E0 Latin Small Letter A with Grave

{0x20,0x54,0x56,0x55,0x78}, //   (155) 'a - 0x00E1 Latin Small Letter A with Acute

{0x20,0x56,0x55,0x56,0x78}, //   (156) ^a - 0x00E2 Latin Small Letter A with Circumflex

{0x20,0x55,0x56,0x55,0x78}, //   (157) ~a - 0x00E3 Latin Small Letter A with Tilde

{0x20,0x55,0x54,0x55,0x78}, //   (158) "a - 0x00E4 Latin Small Letter A with Diaeresis

{0x20,0x56,0x57,0x56,0x78}, //   (159)  a - 0x00E5 Latin Small Letter A with Ring Above

{0x24,0x54,0x78,0x54,0x58}, //   (160) ae - 0x00E6 Latin Small Letter Ae

{0x0C,0x52,0x52,0x72,0x13}, //   (161)  c - 0x00E7 Latin Small Letter c with Cedilla

{0x38,0x55,0x56,0x54,0x18}, //   (162) `e - 0x00E8 Latin Small Letter E with Grave

{0x38,0x54,0x56,0x55,0x18}, //   (163) 'e - 0x00E9 Latin Small Letter E with Acute

{0x38,0x56,0x55,0x56,0x18}, //   (164) ^e - 0x00EA Latin Small Letter E with Circumflex

{0x38,0x55,0x54,0x55,0x18}, //   (165) "e - 0x00EB Latin Small Letter E with Diaeresis

{0x00,0x49,0x7A,0x40,0x00}, //   (166) `i - 0x00EC Latin Small Letter I with Grave

{0x00,0x48,0x7A,0x41,0x00}, //   (167) 'i - 0x00ED Latin Small Letter I with Acute

{0x00,0x4A,0x79,0x42,0x00}, //   (168) ^i - 0x00EE Latin Small Letter I with Circumflex

{0x00,0x4A,0x78,0x42,0x00}, //   (169) "i - 0x00EF Latin Small Letter I with Diaeresis

{0x31,0x4A,0x4E,0x4A,0x30}, //   (170)    - 0x00F0 Latin Small Letter Eth

{0x7A,0x11,0x0A,0x09,0x70}, //   (171) ~n - 0x00F1 Latin Small Letter N with Tilde

{0x30,0x49,0x4A,0x48,0x30}, //   (172) `o - 0x00F2 Latin Small Letter O with Grave

{0x30,0x48,0x4A,0x49,0x30}, //   (173) 'o - 0x00F3 Latin Small Letter O with Acute

{0x30,0x4A,0x49,0x4A,0x30}, //   (174) ^o - 0x00F4 Latin Small Letter O with Circumflex

{0x30,0x4A,0x49,0x4A,0x31}, //   (175) ~o - 0x00F5 Latin Small Letter O with Tilde

{0x30,0x4A,0x48,0x4A,0x30}, //   (176) "o - 0x00F6 Latin Small Letter O with Diaeresis

{0x08,0x08,0x2A,0x08,0x08}, //   (177)  + - 0x00F7 Division Sign

{0x38,0x64,0x54,0x4C,0x38}, //   (178)  o - 0x00F8 Latin Small Letter O with Stroke

{0x38,0x41,0x42,0x20,0x78}, //   (179) `u - 0x00F9 Latin Small Letter U with Grave

{0x38,0x40,0x42,0x21,0x78}, //   (180) 'u - 0x00FA Latin Small Letter U with Acute

{0x38,0x42,0x41,0x22,0x78}, //   (181) ^u - 0x00FB Latin Small Letter U with Circumflex

{0x38,0x42,0x40,0x22,0x78}, //   (182) "u - 0x00FC Latin Small Letter U with Diaeresis

{0x0C,0x50,0x52,0x51,0x3C}, //   (183) 'y - 0x00FD Latin Small Letter Y with Acute

{0x7E,0x14,0x14,0x14,0x08}, //   (184)  p - 0x00FE Latin Small Letter Thom

{0x0C,0x51,0x50,0x51,0x3C}, //   (185) "y - 0x00FF Latin Small Letter Y with Diaeresis

{0x1E,0x09,0x09,0x29,0x5E}, //   (186)  A - 0x0104 Latin Capital Letter A with Ogonek

{0x08,0x15,0x15,0x35,0x4E}, //   (187)  a - 0x0105 Latin Small Letter A with Ogonek

{0x38,0x44,0x46,0x45,0x20}, //   (188) 'C - 0x0106 Latin Capital Letter C with Acute

{0x30,0x48,0x4A,0x49,0x20}, //   (189) 'c - 0x0107 Latin Small Letter C with Acute

{0x38,0x45,0x46,0x45,0x20}, //   (190)  C - 0x010C Latin Capital Letter C with Caron

{0x30,0x49,0x4A,0x49,0x20}, //   (191)  c - 0x010D Latin Small Letter C with Caron

{0x7C,0x45,0x46,0x45,0x38}, //   (192)  D - 0x010E Latin Capital Letter D with Caron

{0x20,0x50,0x50,0x7C,0x03}, //   (193) d' - 0x010F Latin Small Letter D with Caron

{0x1F,0x15,0x15,0x35,0x51}, //   (194)  E - 0x0118 Latin Capital Letter E with Ogonek

{0x0E,0x15,0x15,0x35,0x46}, //   (195)  e - 0x0119 Latin Small Letter E with Ogonek

{0x7C,0x55,0x56,0x55,0x44}, //   (196)  E - 0x011A Latin Capital Letter E with Caron

{0x38,0x55,0x56,0x55,0x18}, //   (197)  e - 0x011B Latin Small Letter E with Caron

{0x00,0x44,0x7C,0x40,0x00}, //   (198)  i - 0x0131 Latin Small Letter Dotless I

{0x7F,0x48,0x44,0x40,0x40}, //   (199)  L - 0x0141 Latin Capital Letter L with Stroke

{0x00,0x49,0x7F,0x44,0x00}, //   (200)  l - 0x0142 Latin Small Letter L with Stroke

{0x7C,0x08,0x12,0x21,0x7C}, //   (201) 'N - 0x0143 Latin Capital Letter N with Acute

{0x78,0x10,0x0A,0x09,0x70}, //   (202) 'n - 0x0144 Latin Small Letter N with Acute

{0x7C,0x09,0x12,0x21,0x7C}, //   (203)  N - 0x0147 Latin Capital Letter N with Caron

{0x78,0x11,0x0A,0x09,0x70}, //   (204)  n - 0x0148 Latin Small Letter N with Caron

{0x38,0x47,0x44,0x47,0x38}, //   (205) "O - 0x0150 Latin Capital Letter O with Double Acute

{0x30,0x4B,0x48,0x4B,0x30}, //   (206) "o - 0x0151 Latin Small Letter O with Double Acute

{0x3E,0x41,0x7F,0x49,0x49}, //   (207) OE - 0x0152 Latin Capital Ligature Oe

{0x38,0x44,0x38,0x54,0x58}, //   (208) oe - 0x0153 Latin Small Ligature Oe

{0x7C,0x15,0x16,0x35,0x48}, //   (209)  R - 0x0158 Latin Capital Letter R with Caron

{0x78,0x11,0x0A,0x09,0x10}, //   (210)  r - 0x0159 Latin Small Letter R with Caron

{0x48,0x54,0x56,0x55,0x20}, //   (211) 'S - 0x015A Latin Capital Letter S with Acute

{0x20,0x48,0x56,0x55,0x20}, //   (212) 's - 0x015B Latin Small Letter S with Acute

{0x48,0x55,0x56,0x55,0x20}, //   (213)  S - 0x0160 Latin Capital Letter S with Caron

{0x20,0x49,0x56,0x55,0x20}, //   (214)  s - 0x0161 Latin Small Letter S with Caron

{0x04,0x05,0x7E,0x05,0x04}, //   (215)  T - 0x0164 Latin Capital Letter T with Caron

{0x08,0x3C,0x48,0x22,0x01}, //   (216) t' - 0x0165 Latin Small Letter T with Caron

{0x3C,0x42,0x45,0x42,0x3C}, //   (217)  U - 0x016E Latin Capital Letter U with Ring Above

{0x38,0x42,0x45,0x22,0x78}, //   (218)  u - 0x016F Latin Small Letter U with Ring Above

{0x3C,0x43,0x40,0x43,0x3C}, //   (219) "U - 0x0170 Latin Capital Letter U with Double Acute

{0x38,0x43,0x40,0x23,0x78}, //   (220) "u - 0x0171 Latin Small Letter U with Double Acute

{0x0C,0x11,0x60,0x11,0x0C}, //   (221) "Y - 0x0178 Latin Capital Letter Y with Diaeresis

{0x44,0x66,0x55,0x4C,0x44}, //   (222) 'Z - 0x0179 Latin Capital Letter Z with Acute

{0x48,0x6A,0x59,0x48,0x00}, //   (223) 'z - 0x017A Latin Small Letter Z with Acute

{0x44,0x64,0x55,0x4C,0x44}, //   (224)  Z - 0x017B Latin Capital Letter Z with Dot Above

{0x48,0x68,0x5A,0x48,0x00}, //   (225)  z - 0x017C Latin Small Letter Z with Dot Above

{0x44,0x65,0x56,0x4D,0x44}, //   (226)  Z - 0x017D Latin Capital Letter Z with Caron

{0x48,0x69,0x5A,0x49,0x00}, //   (227)  z - 0x017E Latin Small Letter Z with Caron

{0x00,0x02,0x01,0x02,0x00}, //   (228)  ^ - 0x02C6 Modifier Letter Circumflex Accent

{0x00,0x01,0x02,0x01,0x00}, //   (229)    - 0x02C7 Caron

{0x00,0x01,0x01,0x01,0x00}, //   (230)    - 0x02C9 Modifier Letter Macron

{0x01,0x02,0x02,0x01,0x00}, //   (231)    - 0x02D8 Breve

{0x00,0x00,0x01,0x00,0x00}, //   (232)    - 0x02D9 Dot Above

{0x00,0x02,0x05,0x02,0x00}, //   (233)    - 0x02DA Ring Above

{0x02,0x01,0x02,0x01,0x00}, //   (234)  ~ - 0x02DC Small Tilde

{0x7F,0x05,0x15,0x3A,0x50}, //   (235) Pt - 0x20A7 Peseta Sign

{0x3E,0x55,0x55,0x41,0x22}, //   (236)  C - 0x20AC Euro Sign

{0x18,0x14,0x08,0x14,0x0C}, //   (237)    - 0x221E Infinity

{0x44,0x4A,0x4A,0x51,0x51}, //   (238)  < - 0x2264 Less-Than or Equal to

{0x51,0x51,0x4A,0x4A,0x44}, //   (239)  > - 0x2265 Greater-Than or Equal to

{0x74,0x42,0x41,0x42,0x74}, //   (240)    - 0x2302 House

};

3、OLED_DisStrLine(0, 0, (uint8_t *)menu.title);  //show the content

/*******************************************************************************

* Function Name  : OLED_DisStrLine

* Description    : Displays a maximum of 21 char on the OLED.

* Input          : - Line: the Line where to display the character shape .

*                    This parameter can be one of the following values:

*                       - Linex: where x can be 0..9

*                  - Color: display color

*                       - 0: dot is yellow or blue

*                       - 1: dot is black

*                  - *ptr: pointer to string to display on LCD.

* Output         : None

* Return         : None

*******************************************************************************/

void OLED_DisStrLine(uint8_t Line, uint8_t Color, uint8_t *ptr)

{

  uint16_t refcolumn = 0;

  if(Line < 8)

  {

/* Send the string character by character on OLED */

while ((*ptr != 0) & (((refcolumn + 1) & 0xFFFF) < 128))

    {

  /* Display one character on OLED */

      OLED_DisChar(Line, refcolumn, Color, *ptr);

  /* Increment the column position by 6 */   

  refcolumn += 6;

  /* Point on the next character */

  ptr++;

}

  }

}

 

原创粉丝点击