参考
↓ここをクリック↓
x 74HC164を使いピン数を減らしています。
x なぜか知らないが、表示速度を速くするとジャムるので各自で調整してくざさい。
x 秋月のACM1602K-NLW-BBWを使っています。
目的
GPIOのテスト
基板パターン ACM1602K-NLW-BBW
o_con88.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

