忍者ブログ

覚え書き

パソコン・マイコン関連の、あとで必要になりそうな情報を残しておくための、健忘録てきななにかです。

[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

STM32F030F4P6で7735LCD表示(EmBitz-サンプルプログラム)





/*
**********************************************************************
**
**                     Main.c
**                     SPI-7735(128x128 LCD)
**                     EmBitz
**
**                      旧-現在
**                      A5-A2-Output    RESRT/RS   (Reset)
**                      A6-A6-Output    CS/CE      (Master In Slave Out:Low=GND)
**                      A7-A5-Output    A0/DC
**                          5110=PCD8544        (Data/Command:Data=High_Command=Low)
**                          ST7735              (Data/Command:Data=High_Command=Low)
**                      A2-A7-Output    SDA/DIN    (Serial Input/SDA:送信Data)
**                      A3-A4-Output    SCK/CLK    (Serial Clock)
**                      A4-A3-Output    LED        (Back Light)
**
**********************************************************************/
/*
    Last committed:     $Revision:   31$
    Last changed by:    $Author:     Masaomi.Takahashi.$
    Last changed date:  $Date:       2019-09-15
    ID:                 $Id:         02
**********************************************************************/
#include "stm32f0xx.h"

unsigned char w_00[][14]={
    { 23, 21, 22, 30,108, 21, 30,109, 22, 26,110,  0,  0,0xFF},    //  [00]    2019年09月15日
    {124,  2,128,  0, 24, 21,  2,127,  0, 21, 23,  0,  0,0xFF},    //  [01]    VER 30EZ02
    {115,  4,  3,  4,  0,  3, 12,127,  7,  2,107,  0,  0,0xFF},    //  [02]    MOLO LIZWE!
    {134,117,135,  8,  2,122,  0,136,135,117,  0,  0,  0,0xFF},    //  [03]
    {118,119,  0, 19, 20,  0,  0,  0,  0,  0,  0,  0,  0,0xFF},    //  [04]
    {  9, 12,  5,  4,  0,115,  4,116, 11,  4,107,  0,  0,0xFF},    //  [05]    CIAO MONDO!
    { 13, 14, 15, 16, 53,  0, 19, 20,  0,  0,  0,  0,  0,0xFF},    //  [06]    こんにちは 世界
    {  1,  2,  3,  3,  4,  0,  7,  4,128,  3, 11,107,  0,0xFF},    //  [07]    HELLO WORLD!
    {121,122,115, 24, 23,  6, 21, 24, 21,  6, 25,117, 27,0xFF}     //  [08]    STM32F030F4P6

};

unsigned char font[] =  {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   //  Space   0
    0x00, 0xFE, 0x10, 0x10, 0x10, 0x10, 0xFE,   //  H       1
    0x00, 0xFE, 0x92, 0x92, 0x92, 0x92, 0x82,   //  E       2
    0x00, 0xFE, 0x80, 0x80, 0x80, 0x80, 0x80,   //  L       3
    0x00, 0x38, 0x44, 0x82, 0x82, 0x44, 0x38,   //  O       4
    0xC0, 0x30, 0x2C, 0x22, 0x2C, 0x30, 0xC0,   //  A       5
    0x00, 0xFE, 0x12, 0x12, 0x12, 0x12, 0x02,   //  F       6
    0x3E, 0xC0, 0x30, 0x0C, 0x30, 0xC0, 0x3E,   //  W       7
    0x00, 0xFE, 0x92, 0x92, 0x92, 0x92, 0x66,   //  B       8
    0x00, 0x38, 0x44, 0x82, 0x82, 0x82, 0x44,   //  C       9
    0x00, 0x38, 0x44, 0x82, 0x92, 0x92, 0x74,   //  G       10
    0x00, 0xFE, 0x82, 0x82, 0x82, 0x44, 0x38,   //  D       11
    0x00, 0x00, 0x82, 0xFE, 0x82, 0x00, 0x00,   //  I       12
    0x00, 0x40, 0xA4, 0x84, 0x84, 0x84, 0x80,   //  こ       13
    0x80, 0x60, 0x18, 0x66, 0x80, 0x80, 0x40,   //  ん       14
    0xFE, 0x00, 0x40, 0xA4, 0x84, 0x84, 0x80,   //  に       15
    0x00, 0x04, 0x24, 0x9C, 0x96, 0x94, 0x64,   //  ち       16
    0x48, 0x28, 0xFE, 0x08, 0x84, 0x84, 0x78,   //  わ       17
    0x00, 0x40, 0x80, 0x80, 0x80, 0x80, 0x7E,   //  J        18
    0x04, 0xFF, 0x84, 0xBF, 0xA4, 0xBF, 0x84,   //  世       19
    0x00, 0x5F, 0xF5, 0x3F, 0x1F, 0xF5, 0x5F,   //  界       20
    0x00, 0x7C, 0x82, 0x82, 0x82, 0x82, 0x7C,   //  0        21
    0x00, 0x00, 0x84, 0xFE, 0x80, 0x00, 0x00,   //  1        22
    0x00, 0xC4, 0xA2, 0xA2, 0x92, 0x92, 0x8C,   //  2        23
    0x00, 0x44, 0x82, 0x92, 0x92, 0x92, 0x6C,   //  3        24
    0x00, 0x60, 0x50, 0x48, 0x44, 0xFE, 0x40,   //  4        25
    0x00, 0x5E, 0x8A, 0x8A, 0x8A, 0x8A, 0x72,   //  5        26
    0x00, 0x7C, 0x92, 0x92, 0x92, 0x92, 0x74,   //  6        27
    0x00, 0x02, 0x02, 0xC2, 0x32, 0x0A, 0x06,   //  7        28
    0x00, 0x6C, 0x92, 0x92, 0x92, 0x92, 0x6C,   //  8        29
    0x00, 0x4C, 0x92, 0x92, 0x92, 0x92, 0x7C,   //  9        30
    0x40, 0xA4, 0xFE, 0x54, 0x34, 0x94, 0x60,   //  あ        31
    0x3C, 0x40, 0x80, 0x40, 0x04, 0x08, 0x30,   //  い        32
    0x00, 0x10, 0x8A, 0x8A, 0x8A, 0x4A, 0x30,   //  う        33
    0x00, 0x80, 0x4A, 0x2A, 0x7A, 0x80, 0x80,   //  え        34
    0x44, 0xA4, 0xFE, 0x14, 0x90, 0x94, 0x68,   //  お        35
    0x88, 0x68, 0x9E, 0x88, 0x70, 0x08, 0x30,   //  か        36
    0x00, 0x54, 0xB4, 0x94, 0x9C, 0xB4, 0x10,   //  き        37
    0x00, 0x10, 0x28, 0x28, 0x44, 0x82, 0x00,   //  く         38
    0x7E, 0x00, 0x08, 0x88, 0x7E, 0x08, 0x08,   //  け         39
    0x00, 0x48, 0xA8, 0x88, 0x8E, 0xB8, 0x08,   //  さ         40
    0x00, 0x00, 0x7E, 0x80, 0x80, 0x80, 0x40,   //  し         41
    0x04, 0x04, 0x14, 0xAC, 0x7E, 0x04, 0x04,   //  す         42
    0x08, 0x08, 0x7E, 0x88, 0xA8, 0xBE, 0x88,   //  せ         43
    0x00, 0x10, 0x12, 0x7A, 0x96, 0x92, 0x10,   //  そ         44
    0x84, 0x74, 0x0E, 0x44, 0xA8, 0x88, 0x88,   //  た         45
    0x08, 0x08, 0x04, 0x44, 0x44, 0x44, 0x38,   //  つ         46
    0x00, 0x04, 0x04, 0x34, 0x4A, 0x86, 0x82,   //  て         47
    0x00, 0x40, 0xAE, 0x90, 0x90, 0x88, 0x88,   //  と         48
    0x24, 0x14, 0x4E, 0xA4, 0xA0, 0x74, 0x48,   //  な         49
    0x60, 0x9C, 0x70, 0xA0, 0x1E, 0xC8, 0xF0,   //  ぬ.        50
    0x48, 0x28, 0xFE, 0x08, 0x44, 0xA4, 0x78,   //  ね         51
    0x30, 0x48, 0x24, 0x9C, 0x84, 0x48, 0x03,   //  の         52
    0xFE, 0x00, 0x48, 0xA8, 0xA8, 0x7E, 0x88,   //  は         53
    0x04, 0x74, 0x8E, 0x80, 0x82, 0x7C, 0x08,   //  ひ         54
    0x80, 0x60, 0x80, 0x9A, 0x64, 0x20, 0xC0,   //  ふ         55
    0x10, 0x08, 0x04, 0x08, 0x10, 0x20, 0x20,   //  へ         56
    0xFE, 0x00, 0xD4, 0xD4, 0xFC, 0x54, 0x94,   //  ほ         57
    0x00, 0xD4, 0xD4, 0xD4, 0xFE, 0x54, 0x94,   //  ま         58
    0x60, 0x52, 0x32, 0x96, 0x90, 0x78, 0x20,   //  み         59
    0x24, 0x54, 0xFE, 0x84, 0x80, 0x84, 0x48,   //  む         60
    0x60, 0x9C, 0x70, 0xA8, 0x1E, 0x88, 0x70,   //  め         61
    0x00, 0x14, 0x7C, 0x96, 0x94, 0x94, 0x60,   //  も         62
    0x08, 0x0E, 0x38, 0xC4, 0x06, 0x14, 0x08,   //  や         63
    0x3C, 0x08, 0xA4, 0x7E, 0x24, 0x24, 0x18,   //  ゆ         64
    0x00, 0x40, 0xA0, 0xA0, 0x7E, 0x48, 0x88,   //  よ         65
    0x20, 0x14, 0x5C, 0xB6, 0xE4, 0x94, 0x90,   //  を         66
    0x00, 0x10, 0x1C, 0x70, 0x8C, 0x28, 0x10,   //  ゃ         67
    0x00, 0x38, 0x90, 0x7C, 0x48, 0x30, 0x00,   //  ゅ         68
    0x00, 0x40, 0xA0, 0xA0, 0x7C, 0x90, 0x00,   //  ょ         69
    0x00, 0x20, 0x20, 0x90, 0x90, 0x60, 0x00,   //  っ         70
    0x00, 0x40, 0xA8, 0xFC, 0x68, 0x28, 0xC0,   //  ぁ         71
    0x00, 0x78, 0x80, 0x40, 0x08, 0x30, 0x00,   //  ぃ         72
    0x00, 0x20, 0x94, 0x94, 0x54, 0x20, 0x00,   //  ぅ         73
    0x00, 0x90, 0x54, 0x74, 0x94, 0x80, 0x00,   //  ぇ         74
    0x00, 0x48, 0xFC, 0x28, 0xA0, 0x48, 0x00,   //  ぉ         75
    0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,   //  ー         76
    0x88, 0x68, 0x9E, 0x88, 0x72, 0x08, 0x32,   //  が         77
    0x00, 0x54, 0xB4, 0x96, 0x9C, 0xB6, 0x10,   //  ぎ         78
    0x00, 0x10, 0x28, 0x28, 0x44, 0x8A, 0x08,   //  ぐ         79
    0x7E, 0x00, 0x08, 0x88, 0x7E, 0x08, 0x0A,   //  げ         80
    0x00, 0x40, 0xA4, 0x84, 0x86, 0x84, 0x82,   //  ご         81
    0x00, 0x58, 0xA8, 0x88, 0x8E, 0xB8, 0x0A,   //  ざ         82
    0x00, 0x00, 0x7E, 0x80, 0x82, 0x80, 0x42,   //  じ         83
    0x04, 0x04, 0x14, 0xAC, 0x7E, 0x04, 0x06,   //  ず         84
    0x08, 0x08, 0x7E, 0x88, 0xA8, 0xBE, 0x8A,   //  ぜ         85
    0x00, 0x10, 0x12, 0x7A, 0x96, 0x92, 0x14,   //  ぞ         86
    0x84, 0x74, 0x0E, 0x44, 0xAA, 0x88, 0x8A,   //  だ         87
    0x00, 0x04, 0x24, 0x9C, 0x96, 0x94, 0x66,   //  ぢ         88
    0x08, 0x08, 0x04, 0x44, 0x46, 0x44, 0x3A,   //  づ         89
    0x00, 0x04, 0x04, 0x34, 0x4A, 0x86, 0x8A,   //  で         90
    0x00, 0x40, 0xAE, 0x90, 0x92, 0x88, 0x8A,   //  ど         91
    0xFE, 0x00, 0x48, 0xA8, 0xA8, 0x7E, 0x8A,   //  ば         92
    0x04, 0x74, 0x8E, 0x80, 0x82, 0x7C, 0x0C,   //  び         93
    0x80, 0x60, 0x80, 0x9A, 0x64, 0x22, 0xC2,   //  ぶ         94
    0x10, 0x08, 0x04, 0x08, 0x12, 0x20, 0x22,   //  べ         95
    0xFE, 0x00, 0xD4, 0xD4, 0xFE, 0x54, 0x96,   //  ぼ         96
    0xFE, 0x00, 0x48, 0xA8, 0xAC, 0x7A, 0x8C,   //  ぱ         97
    0x04, 0x74, 0x8E, 0x80, 0x86, 0x7A, 0x0C,   //  ぴ         98
    0x80, 0x60, 0x80, 0x9A, 0x64, 0x2A, 0xC4,   //  ぷ         99
    0x10, 0x08, 0x04, 0x08, 0x14, 0x2A, 0x24,   //  ぺ         100
    0xFE, 0x00, 0xD4, 0xD4, 0xFE, 0x54, 0x96,   //  ぽ         101
    0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,   //  、         102
    0x40, 0xA0, 0x40, 0x00, 0x00, 0x00, 0x00,   //  。         103
    0x00, 0x00, 0x00, 0x7E, 0x02, 0x02, 0x02,   //  「         104
    0x80, 0x80, 0x80, 0xFC, 0x00, 0x00, 0x00,   //  」         105
    0x00, 0x04, 0x02, 0xA2, 0x12, 0x12, 0x0C,   //  ?        106
    0x00, 0x00, 0x00, 0xBE, 0x00, 0x00, 0x00,   //  !        107
    0x48, 0x76, 0x54, 0xFC, 0x54, 0x54, 0x44,   //  年        108
    0x80, 0x40, 0x3E, 0x2A, 0x2A, 0xAA, 0xFE,   //  月        109
    0x00, 0xFE, 0x92, 0x92, 0x92, 0x92, 0xFE,   //  日        110
    0x7C, 0x54, 0x7C, 0xC4, 0x5E, 0xF4, 0x50,   //  時        111
    0x90, 0x88, 0x56, 0x30, 0x96, 0xF8, 0x10,   //  分        112
    0x6A, 0xFE, 0x10, 0x8C, 0xBE, 0x44, 0x28,   //  秒        113
    0x00, 0xFE, 0x20, 0x10, 0x28, 0x44, 0x82,   //  K         114
    0xFE, 0x04, 0x18, 0x60, 0x18, 0x04, 0xFE,   //  M         115
    0x00, 0xFE, 0x04, 0x08, 0x10, 0x20, 0xFE,   //  N         116
    0x00, 0xFE, 0x12, 0x12, 0x12, 0x12, 0x06,   //  P         117
    0x08, 0xFC, 0x4A, 0x2C, 0xFE, 0x04, 0x6C,   //  ニィ(ハオ)   118
    0x88, 0xB8, 0x6E, 0x58, 0x92, 0xFA, 0x16,   //  好        119
    0x00, 0x38, 0x44, 0x82, 0xA2, 0x44, 0xB8,   //  Q         120
    0x00, 0x4C, 0x92, 0x92, 0x92, 0x92, 0x64,   //  S         121
    0x02, 0x02, 0x02, 0xFE, 0x02, 0x02, 0x02,   //  T         122
    0x00, 0x7E, 0x80, 0x80, 0x80, 0x80, 0x7E,   //  U         123
    0x06, 0x18, 0x60, 0x80, 0x60, 0x18, 0x06,   //  V         124
    0x82, 0x44, 0x28, 0x10, 0x28, 0x44, 0x82,   //  X         125
    0x02, 0x04, 0x08, 0xF0, 0x08, 0x04, 0x02,   //  Y         126
    0x00, 0x82, 0xC2, 0xA2, 0x92, 0x8A, 0x86,   //  Z         127
    0x00, 0xFE, 0x12, 0x12, 0x32, 0x52, 0x8C,   //  R         128
    0x30, 0x2A, 0x92, 0x92, 0x94, 0x50, 0x20,   //  ら         129
    0x00, 0x1E, 0x84, 0x82, 0x42, 0x3C, 0x00,   //  り         130
    0x20, 0x52, 0xAA, 0xAE, 0xCA, 0x8A, 0x70,   //  る         131
    0x44, 0x34, 0xFE, 0x08, 0x04, 0xFC, 0x80,   //  れ         132
    0x20, 0x12, 0x9A, 0x96, 0x96, 0x92, 0x60,   //  ろ         133
    0x00, 0xFE, 0x02, 0x02, 0x02, 0x02, 0xFE,   //  П РИВЕТ МИР   134
    0x00, 0xFE, 0x40, 0x20, 0x20, 0x08, 0xFE,   //  И             135
    0xF0, 0x0E, 0x30, 0xC0, 0x30, 0x0E, 0xF0,   //  М             136


};

int main(void)
{

    RCC   ->AHBENR |= (1<<17);  // GPIO-Aの初期化(最初は0クロックで無可動状態)

    GPIOA -> MODER |= (1<<4);   // ピン A - 2 を出力モードに
    GPIOA -> PUPDR |= (1<<4);   // ピン A - 2 を プルアップ指定
    GPIOA -> MODER |= (1<<6);   // ピン A - 3 を出力モードに
    GPIOA -> PUPDR |= (1<<6);   // ピン A - 3 を プルアップ指定
    GPIOA -> MODER |= (1<<8);   // ピン A - 4 を出力モードに
    GPIOA -> PUPDR |= (1<<8);   // ピン A - 4 を プルアップ指定
    GPIOA -> MODER |= (1<<10);  // ピン A - 5 を出力モードに
    GPIOA -> PUPDR |= (1<<10);  // ピン A - 5 を プルアップ指定
    GPIOA -> MODER |= (1<<12);  // ピン A - 6 を出力モードに
    GPIOA -> PUPDR |= (1<<12);  // ピン A - 6 を プルアップ指定
    GPIOA -> MODER |= (1<<14);  // ピン A - 7 を出力モードに
    GPIOA -> PUPDR |= (1<<14);  // ピン A - 7 を プルアップ指定

    GPIOA ->ODR &= ~(1<<2);     //GPIOA-Pin2をOffにする
//    GPIOA ->ODR &= ~(1<<3);     //GPIOA-Pin3をOffにする バックライト無し
    GPIOA ->ODR |= (1<<3);      //GPIOA-Pin3をOnにする バックライト有り
    GPIOA ->ODR &= ~(1<<4);     //GPIOA-Pin4をOffにする
    GPIOA ->ODR &= ~(1<<5);     //GPIOA-Pin5をOffにする
    GPIOA ->ODR &= ~(1<<6);     //GPIOA-Pin6をOffにする
    GPIOA ->ODR &= ~(1<<7);     //GPIOA-Pin7をOffにする

    delay_ms(100);
  lcd_init();

while(1){
    lcd_position(110,118,119,127);

    delay_ms(1500);

    lcd_clear_2();
    lcd_clear_0();
    lcd_clear_2();
    lcd_clear_1();
    lcd_clear_0();

    lcd_put_w2(w_00[6],4);
    lcd_put_w2(w_00[7],5);
    lcd_put_w2(w_00[5],6);
    lcd_put_w2(w_00[4],7);
    lcd_put_w2(w_00[3],8);
    lcd_put_w2(w_00[2],9);
    lcd_put_w2(w_00[1],11);
    lcd_put_w2(w_00[0],12);
    lcd_put_w2(w_00[8],13);

    delay_ms(5000);
    lcd_position(100,108,119,127);

    }
}

//---------- 文字出力2 ----------
//      *sc:文字列の先頭ポインタ
void lcd_put_w2(char w[],int y) {

    int j=0;
    char *sc;
    while(w[j]<254){
    sc=font+(w[j])*7;

    lcd_position(128-(y*8),128-(y*8-7),(10+j*8),(3+j*8));// Nokia5110のデータを流用するため、こんな奇っ怪な式になった
    lcd_put_cmd(0x36);     //   メモリ制御方法指定(描写方法)    Nokia5110との互換性をある程度維持するため、このような命令が必要になった
        lcd_put_ch(0x70);  //                               Nokia5110との互換性をある程度維持するため、このような命令が必要になった

    lcd_put_cmd(0x2C);

    int i=7;       //データー読み出し量
    while(i>0){
        lcd_ch(*(sc++));

    i--;
    }
    j++;
    }
    lcd_put_cmd(0x36);     //   メモリ制御方法指定(描写方法)
        lcd_put_ch(0xC8);  //

}

//---------- データ出力 ----------
//      ch:出力するデータ
void lcd_ch(char ch)
{

    lcd_4bit(ch);       //上位4bit出力
    lcd_4bit(ch<<4);    //下位4bit出力

}

//---------- データ4bit処理 ----------
void lcd_4bit(char code)
{

    if(code & 0x80){
        lcd_put_ch(0xFF);  //
        lcd_put_ch(0xFF);  //
        }else{
        lcd_put_ch(0x00);  //
        lcd_put_ch(0x00);  //
}
    if(code & 0x40){
        lcd_put_ch(0xFF);  //
        lcd_put_ch(0xFF);  //
        }else{
        lcd_put_ch(0x00);  //
        lcd_put_ch(0x00);  //
}
    if(code & 0x20){
        lcd_put_ch(0xFF);  //
        lcd_put_ch(0xFF);  //
        }else{
        lcd_put_ch(0x00);  //
        lcd_put_ch(0x00);  //
}
    if(code & 0x10){
        lcd_put_ch(0xFF);  //
        lcd_put_ch(0xFF);  //
        }else{
        lcd_put_ch(0x00);  //
        lcd_put_ch(0x00);  //
}
}


//---------- 表示位置設定 ----------
//      xx:x座標  yy:y座標
void lcd_position(short x1,short x2,short y1,short y2)
{
    lcd_put_cmd(0x2A);
        lcd_put_ch(x1 >>8);  //
        lcd_put_ch(x1);      //
        lcd_put_ch(x2 >>8);  //
        lcd_put_ch(x2);      //

    lcd_put_cmd(0x2B);
        lcd_put_ch(y1 >>8);  //
        lcd_put_ch(y1);      //
        lcd_put_ch(y2 >>8);  //
        lcd_put_ch(y2);      //

}

//---------- データ4bit出力 ----------
void lcd_put_4bit(char code)
{

    GPIOA ->ODR &= ~(1<<4);     //GPIOA-Pin4をOffにする
    if(code & 0x80)
        GPIOA ->ODR |= (1<<7);  //GPIOA-Pin7をOnにする
        else
        GPIOA ->ODR &= ~(1<<7); //GPIOA-Pin7をOffにする

    GPIOA ->ODR |= (1<<4);      //GPIOA-Pin4をOnにする
    GPIOA ->ODR &= ~(1<<4);     //GPIOA-Pin4をOffにする
    if(code & 0x40)
        GPIOA ->ODR |= (1<<7);  //GPIOA-Pin7をOnにする
        else
        GPIOA ->ODR &= ~(1<<7); //GPIOA-Pin7をOffにする

    GPIOA ->ODR |= (1<<4);      //GPIOA-Pin4をOnにする
    GPIOA ->ODR &= ~(1<<4);     //GPIOA-Pin4をOffにする
    if(code & 0x20)
        GPIOA ->ODR |= (1<<7);  //GPIOA-Pin7をOnにする
        else
        GPIOA ->ODR &= ~(1<<7); //GPIOA-Pin7をOffにする

    GPIOA ->ODR |= (1<<4);      //GPIOA-Pin4をOnにする
    GPIOA ->ODR &= ~(1<<4);     //GPIOA-Pin4をOffにする

    if(code & 0x10)
        GPIOA ->ODR |= (1<<7);  //GPIOA-Pin7をOnにする
        else
        GPIOA ->ODR &= ~(1<<7); //GPIOA-Pin7をOffにする

    GPIOA ->ODR |= (1<<4);      //GPIOA-Pin4をOnにする

}

//---------- データ出力 ----------
//      ch:出力するデータ
void lcd_put_ch(char ch)
{

    GPIOA ->ODR &= ~(1<<6); //GPIOA-Pin6(CE)をOffにする
    GPIOA ->ODR |= (1<<5);  //GPIOA-Pin5(DC)をOnにする
    lcd_put_4bit(ch);       //上位4bit出力
    lcd_put_4bit(ch<<4);    //下位4bit出力

    GPIOA ->ODR |= (1<<6);  //GPIOA-Pin6(CE)をOnにする

}

//---------- コマンド送信 ----------
void lcd_put_cmd(char cmd)
{
    GPIOA ->ODR &= ~(1<<6); //GPIOA-Pin6(CE)をOffにする
    GPIOA ->ODR &= ~(1<<5); //GPIOA-Pin5(DC)をOffにする
    lcd_put_4bit(cmd);   //上位4bit出力
    lcd_put_4bit(cmd<<4);//下位4bit出力

    GPIOA ->ODR |= (1<<6);  //GPIOA-Pin6(CE)をOnにする

}

//---------- 塗りつぶし(消去) ----------
void lcd_clear_0()
{
    lcd_position(0x02,0x81,0x03,0x82);
    lcd_put_cmd(0x2C);

    int i=128*128*2;
    while(i>0){
        lcd_put_ch(0x00);
    i--;
}    }

void lcd_clear_1()
{
    lcd_position(0x02,0x81,0x03,0x82);
    lcd_put_cmd(0x2C);

    int i=128*128*2;
    while(i>0){
        lcd_put_ch(i*2);
    i--;
}    }

void lcd_clear_2()
{
    lcd_put_cmd(0x2C);

    int i=32*128;
    while(i>0){
        lcd_put_ch(0x88);
        lcd_put_ch(0xE2);
        lcd_put_ch(0x2F);
        lcd_put_ch(0xCC);
        lcd_put_ch(0x70);
        lcd_put_ch(0x15);
        lcd_put_ch(0x55);
        lcd_put_ch(0x55);
    i--;
}    }

//---------- LCD初期化 ----------
void lcd_init()
{
    GPIOA ->ODR &= ~(1<<2); //GPIOA-Pin2(RS)をOffにする
    delay_ms(20);
    GPIOA ->ODR |= (1<<2);  //GPIOA-Pin2(RS)をOnにする
    delay_ms(20);

    lcd_put_cmd(0x11);     //   スリープ解除
    delay_ms(30);

    lcd_put_cmd(0xB2);     //   パワーセット
        lcd_put_ch(0x01);  //
        lcd_put_ch(0x2C);  //
        lcd_put_ch(0x2D);  //

    lcd_put_cmd(0xB4);      //液晶反転設定
        lcd_put_ch(0x07);  //

    lcd_put_cmd(0xC3);      //電源設定-(8色)
        lcd_put_ch(0x8A);  //
        lcd_put_ch(0x2A);  //

    lcd_put_cmd(0xC5);      //VMCTR1 VCOM control 1
        lcd_put_ch(0x0E);  //

    lcd_put_cmd(0x36);     //   メモリ制御方法指定(描写方法)
        lcd_put_ch(0xC8);  //

    lcd_put_cmd(0xE0);     //   ガンマシーケンス
        lcd_put_ch(0x02);  //
        lcd_put_ch(0x1C);  //
        lcd_put_ch(0x07);  //
        lcd_put_ch(0x12);  //
        lcd_put_ch(0x37);  //
        lcd_put_ch(0x32);  //
        lcd_put_ch(0x29);  //
        lcd_put_ch(0x2D);  //
        lcd_put_ch(0x29);  //
        lcd_put_ch(0x25);  //
        lcd_put_ch(0x2B);  //
        lcd_put_ch(0x39);  //
        lcd_put_ch(0x00);  //
        lcd_put_ch(0x01);  //
        lcd_put_ch(0x03);  //
        lcd_put_ch(0x10);  //
    lcd_put_cmd(0xE1);
        lcd_put_ch(0x03);  //
        lcd_put_ch(0x1D);  //
        lcd_put_ch(0x07);  //
        lcd_put_ch(0x06);  //
        lcd_put_ch(0x2E);  //
        lcd_put_ch(0x2C);  //
        lcd_put_ch(0x29);  //
        lcd_put_ch(0x2D);  //
        lcd_put_ch(0x2E);  //
        lcd_put_ch(0x2E);  //
        lcd_put_ch(0x37);  //
        lcd_put_ch(0x3F);  //
        lcd_put_ch(0x00);  //
        lcd_put_ch(0x00);  //
        lcd_put_ch(0x02);  //
        lcd_put_ch(0x10);  //

    lcd_put_cmd(0x2A);      //列アドレス設定
        lcd_put_ch(0x00);  //上
        lcd_put_ch(0x02);  //下  開始アドレス0002h
        lcd_put_ch(0x00);  //上
        lcd_put_ch(0x81);  //下  開始アドレス0081h=129

    lcd_put_cmd(0x2B);      // リセット行アドレスセット
        lcd_put_ch(0x00);  //上
        lcd_put_ch(0x01);  //下  開始アドレス0003h
        lcd_put_ch(0x00);  //上
        lcd_put_ch(0x82);  //下  開始アドレス0082h=130

    lcd_put_cmd(0x3A);      // RGB転送タイプ/0x05=16ビットモード
        lcd_put_ch(0x05);  //

    lcd_put_cmd(0x29);      // ディスプレイ・表示開始
}

void delay_ms(uint32_t i)
{
    i=i*100;
    while(i>0){
        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");
    i--;
}   }

void delay_us(uint32_t i)
{
    while(i>0){
        asm("NOP");        asm("NOP");        asm("NOP");        asm("NOP");        asm("NOP");
    i--;
}   }

 

拍手[1回]

PR

コメント

コメントを書く