LoginSignup
0
0

StampS3とキャラクター液晶でHello Worldを表示して遊ぶ。

Last updated at Posted at 2024-04-13

参考

↓ここをクリック↓

x 74HC164を使いピン数を減らしています。
x なぜか知らないが、表示速度を速くするとジャムるので各自で調整してくざさい。
x 秋月のACM1602K-NLW-BBWを使っています。

目的
GPIOのテスト

基板パターン ACM1602K-NLW-BBW

o_con88.jpg

o_con88.jpg

結果

o_coq031.jpg

プログラム

GPIO_LCD_Hello World_M5S3_1




//GPIO_LCD_Hello World_M5S3_1


//インクルド
#include <Arduino.h>


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


//定義
#define DW   digitalWrite

#define swdclk   15  // ?pin
#define swdio    13  // ?pin
#define en        5  // ?pin


//液晶の初期化配列
int lcd_int[] = {
  0x30, 0x30, 0x30, 0x38, 0x08, 0x01, 0x06, 0x08 + 0x04
}; //lcd_init


//液晶に一文字を表示する。
void seg1(int v, int rs)
{
  //一文字分のデータをセット
  for (int jj = 0; jj < 8; jj++) {
    if ( (v & 0x80) == 0 ) {
      DW(swdio, 0); //ビットが0
    } else {
      DW(swdio, 1); //ビットが1
    }//endif
    DW(swdclk, 1);
    DW(swdclk, 0);
    v = v << 1;
  }//for

  DW(swdio, rs);  //コマンド/データ
  DW(en, 1); delay(1); //イネーブルオン
  DW(en, 0);      //イネーブルオフ
} //seg1


//文字列の表示 nana_seg
void ns_printf(char *str1) {

  //文字の中身がゼロか
  while (*str1) {

    //一文字出力
    seg1( *str1 ++ , 1  );

  } //while

} //ns_printf


//初期化
void setup() {

  //GPIO初期化
  pinMode(swdclk, OUTPUT);
  pinMode(swdio, OUTPUT);
  pinMode(en, OUTPUT);
  DW(en, 0);

  //液晶の初期化
  for (int ii = 0; ii < 8; ii++) {
    seg1( lcd_int[ii] , 0); delay(2);
  }//for

  //スタートアップ表示
  seg1( 0x80 + 0x00 , 0  ); //1ライン目にカーソルを移動
  ns_printf( "Hello World" ); delay(500);
  //seg1(   0x01  , 0  ); delay(5); //画面クリア

} //setup


//メインループ
void loop() {
} //loop




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