参考
↓ここをクリック↓
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