⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.c

📁 与Nucleus Plus配套的图形库
💻 C
字号:
#include "LCD.h"
int strlen(char *);
//-----------------------------------------------------------------------------
/*
    Here is how the LCD Registors are layed out:

                               Byte
               ARM Addr    0  1  2  3
               -----------------------
               0880 0000  R0 R1 xx xx
               0880 0004  R2 R3 xx xx
               0880 0008  R4 R5 xx xx
                   .           .
                   .           .
                   .           .

    R0 is a byte access at address 08800000,
    R1 is a byte access at address 08800001,
    R2 is a byte access at address 08800004,
    R3 is a byte access at address 08800005,
    and so on.


    LCD memory is layed out similarly:

                               Byte
               ARM Addr    0  1  2  3
               -----------------------
               0800 0000  P0 P1 xx xx
               0800 0004  P2 P3 xx xx
               0800 0008  P4 P5 xx xx
                   .           .
                   .           .
                   .           .

    Pixel 0 (P0) is a byte access at address 08000000,
    Pixel 1 (P1) is a byte access at address 08000001,
    Pixel 2 (P2) is a byte access at address 08000004,
    Pixel 3 (P3) is a byte access at address 08000005,
    and so on.  Note that you can also write the pixels
    in pairs using 16 bit wide accesses at 08000000,
    08000004, 08000008, etc.
*/

//-----------------------------------------------------------------------------

#define NUM_LUT_ENTRIES 8

static const unsigned char LUT[3][NUM_LUT_ENTRIES] =
{
   {0x00,0x02,0x04,0x06,0x09,0x0B,0x0D,0x0F},
   {0x00,0x02,0x04,0x06,0x09,0x0B,0x0D,0x0F},
   {0x00,0x05,0x0A,0x0F,0x0F,0x0F,0x0F,0x0F}
};

//-----------------------------------------------------------------------------
//
// Each letter in the font is 8 x 8 bits
//

#define MAX_FONT 97

static const unsigned char font[MAX_FONT][8] =
{
   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // (blank)
   { 0x30, 0x78, 0x78, 0x30, 0x30, 0x00, 0x30, 0x00}, // !
   { 0x6C, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00}, // "
   { 0x6C, 0x6C, 0xFE, 0x6C, 0xFE, 0x6C, 0x6C, 0x00}, // #
   { 0x30, 0x7C, 0xC0, 0x78, 0x0C, 0xF8, 0x30, 0x00}, // $
   { 0x00, 0xC6, 0xCC, 0x18, 0x30, 0x66, 0xC6, 0x00}, // %
   { 0x38, 0x6C, 0x38, 0x76, 0xDC, 0xCC, 0x76, 0x00}, // &
   { 0x60, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00}, // '
   { 0x18, 0x30, 0x60, 0x60, 0x60, 0x30, 0x18, 0x00}, // (
   { 0x60, 0x30, 0x18, 0x18, 0x18, 0x30, 0x60, 0x00}, // )
   { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // *
   { 0x00, 0x30, 0x30, 0xFC, 0x30, 0x30, 0x00, 0x00}, // +
   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x60}, // ,
   { 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00}, // -
   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00}, // .
   { 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00}, // /
   { 0x7C, 0xC6, 0xCE, 0xDE, 0xF6, 0xE6, 0x7C, 0x00}, // 0
   { 0x30, 0x70, 0x30, 0x30, 0x30, 0x30, 0xFC, 0x00}, // 1
   { 0x78, 0xCC, 0x0C, 0x38, 0x60, 0xCC, 0xFC, 0x00}, // 2
   { 0x78, 0xCC, 0x0C, 0x38, 0x0C, 0xCC, 0x78, 0x00}, // 3
   { 0x1C, 0x3C, 0x6C, 0xCC, 0xFE, 0x0C, 0x1E, 0x00}, // 4
   { 0xFC, 0xC0, 0xF8, 0x0C, 0x0C, 0xCC, 0x78, 0x00}, // 5
   { 0x38, 0x60, 0xC0, 0xF8, 0xCC, 0xCC, 0x78, 0x00}, // 6
   { 0xFC, 0xCC, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x00}, // 7
   { 0x78, 0xCC, 0xCC, 0x78, 0xCC, 0xCC, 0x78, 0x00}, // 8
   { 0x78, 0xCC, 0xCC, 0x7C, 0x0C, 0x18, 0x70, 0x00}, // 9
   { 0x00, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, 0x00}, // :
   { 0x00, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, 0x60}, // ;
   { 0x18, 0x30, 0x60, 0xC0, 0x60, 0x30, 0x18, 0x00}, // <
   { 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00}, // =
   { 0x60, 0x30, 0x18, 0x0C, 0x18, 0x30, 0x60, 0x00}, // >
   { 0x78, 0xCC, 0x0C, 0x18, 0x30, 0x00, 0x30, 0x00}, // ?
   { 0x7C, 0xC6, 0xDE, 0xDE, 0xDE, 0xC0, 0x78, 0x00}, // @
   { 0x30, 0x78, 0xCC, 0xCC, 0xFC, 0xCC, 0xCC, 0x00}, // A
   { 0xFC, 0x66, 0x66, 0x7C, 0x66, 0x66, 0xFC, 0x00}, // B
   { 0x3C, 0x66, 0xC0, 0xC0, 0xC0, 0x66, 0x3C, 0x00}, // C
   { 0xF8, 0x6C, 0x66, 0x66, 0x66, 0x6C, 0xF8, 0x00}, // D
   { 0xFE, 0x62, 0x68, 0x78, 0x68, 0x62, 0xFE, 0x00}, // E
   { 0xFE, 0x62, 0x68, 0x78, 0x68, 0x60, 0xF0, 0x00}, // F
   { 0x3C, 0x66, 0xC0, 0xC0, 0xCE, 0x66, 0x3E, 0x00}, // G
   { 0xCC, 0xCC, 0xCC, 0xFC, 0xCC, 0xCC, 0xCC, 0x00}, // H
   { 0x78, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00}, // I
   { 0x1E, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0x78, 0x00}, // J
   { 0xE6, 0x66, 0x6C, 0x78, 0x6C, 0x66, 0xE6, 0x00}, // K
   { 0xF0, 0x60, 0x60, 0x60, 0x62, 0x66, 0xFE, 0x00}, // L
   { 0xC6, 0xEE, 0xFE, 0xFE, 0xD6, 0xC6, 0xC6, 0x00}, // M
   { 0xC6, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0xC6, 0x00}, // N
   { 0x38, 0x6C, 0xC6, 0xC6, 0xC6, 0x6C, 0x38, 0x00}, // O
   { 0xFC, 0x66, 0x66, 0x7C, 0x60, 0x60, 0xF0, 0x00}, // P
   { 0x78, 0xCC, 0xCC, 0xCC, 0xDC, 0x78, 0x1C, 0x00}, // Q
   { 0xFC, 0x66, 0x66, 0x7C, 0x6C, 0x66, 0xE6, 0x00}, // R
   { 0x78, 0xCC, 0xE0, 0x70, 0x1C, 0xCC, 0x78, 0x00}, // S
   { 0xFC, 0xB4, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00}, // T
   { 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xFC, 0x00}, // U
   { 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x00}, // V
   { 0xC6, 0xC6, 0xC6, 0xD6, 0xFE, 0xEE, 0xC6, 0x00}, // W
   { 0xC6, 0xC6, 0x6C, 0x38, 0x38, 0x6C, 0xC6, 0x00}, // X
   { 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x30, 0x78, 0x00}, // Y
   { 0xFE, 0xC6, 0x8C, 0x18, 0x32, 0x66, 0xFE, 0x00}, // Z
   { 0x78, 0x60, 0x60, 0x60, 0x60, 0x60, 0x78, 0x00}, // [
   { 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x02, 0x00}, // (backslash)
   { 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x78, 0x00}, // ]
   { 0x10, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x00, 0x00}, // ^
   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // _
   { 0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -