LoginSignup
0
0

More than 1 year has passed since last update.

STM32G031と液晶、ACM1602K-NLW-BBWでHello Worldを表示(STM32G031J6M6)

Last updated at Posted at 2021-02-12

x 原因は、わからないが液晶がちらつく場合は、ウェートを調整してね!!

STM32G031J6M6でArduinoを使い16文字2行液晶に
Hello Worldを表示するプログラム

74hc164シフトレジスターを使用した。
液晶とのピン数を節約した。信号線10本から
信号線3本に減らした。

1 CLK クロック端子(緑色)
2 RSDATA RS端子とデータの共有端子(黄色)
3 E 読み込み書き込み同期信号(青色)

h_con39.jpg



#include <Arduino.h>

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

#define DW   digitalWrite

//#define swdclk   PA14 // 8pin
//#define swdio    PA13 // 7pin
//#define swdclk   PA11 // 5pin
//#define swdio    PA12 // 6pin
#define swdclk   PA12 // 6pin
#define swdio    PA11 // 5pin
//#define t_led1   PA12 // 6pin
//#define t_led2   PA11 // 5pin
#define en       PA0  // 4pin
#define in7      PB7  // 1pin

// tx PA14(PB6) 8PIN
// rx PC14(PB7) 1PIN

void setup() {
  // put your setup code here, to run once:

    delay(3000); //not Delete

    pinMode(swdclk,OUTPUT);
    pinMode(swdio,OUTPUT);
    pinMode(en,OUTPUT);
    pinMode(in7,INPUT_PULLUP);

    DW(en,0);
    DW(swdio,0);
    for(int i=0;i<10;i++){
        DW(swdclk,1);
        delay(15);
        DW(swdclk,0);
        delay(15);
    } //for
}


int v;
int rs;
void seg1()
{
    DW(swdio,(v>>7)&1);DW(swdclk,1);DW(swdclk,0); //7
    DW(swdio,(v>>6)&1);DW(swdclk,1);DW(swdclk,0); //6
    DW(swdio,(v>>5)&1);DW(swdclk,1);DW(swdclk,0); //5
    DW(swdio,(v>>4)&1);DW(swdclk,1);DW(swdclk,0); //4
    DW(swdio,(v>>3)&1);DW(swdclk,1);DW(swdclk,0); //3
    DW(swdio,(v>>2)&1);DW(swdclk,1);DW(swdclk,0); //2
    DW(swdio,(v>>1)&1);DW(swdclk,1);DW(swdclk,0); //1
    DW(swdio,(v>>0)&1);DW(swdclk,1);DW(swdclk,0); //0
    DW(swdio,rs);   
    DW(en,1);       delayMicroseconds(40);
    DW(en,0);       
}

void loop() {
  // put your main code here, to run repeatedly:

    //ファンクションセット1
    rs=0;
    v=0x30;seg1();
    delay(5);    
 
    //ファンクションセット2
    rs=0;
    v=0x30;seg1();
    delay(1);   
 
    //ファンクションセット3
    rs=0;
    v=0x30;seg1();   
 
    //ファンクションセット 2ラインモード
    rs=0;
    v=0x38;seg1();   
 
    //表示オフ
    rs=0;
    v=0x08;seg1();   
 
    //画面クリア
    rs=0;
    v=0x01;seg1();
    delay(2);         
 
    //エントリーモードセット
    rs=0;
    v=0x06;seg1();     
 
    //表示オン
    rs=0;
    v=0x08+0x04;seg1(); 
  
    //@文字の表示
    rs=1;
    v='@';seg1();
    delay(500); 
 
    //1ライン目にカーソルを移動
    rs=0;
    v=0x80+0x00;seg1();
 

    int ii;
    char ss1[]="Hello World !";
    ii=0;
    while(ss1[ii]!=0){
        //文字の表示
        rs=1;
        v=ss1[ii];ii++;seg1();
    } //while
 
while(1){} //無限ループ

} //loop

lcd_031_hloo_1.jpg

led_sift_1.jpg

7seg_b_g031_1.jpg

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0