x 超超重要 なぜか秋月STM32G031J6M6がうり切れていた。注意!!(2022/8/27現在)
x 過去ログを見よ!!
x 原因は、わからないが液晶がちらつく場合は、ウェートを調整してね!!
(電源-GND間のパスコン(47μF~100μF...するといいらしい)
x STM32G031とは、秋月で売っているSTM32G031J6M6の事
目的
パラレルLCDのテスト
STM32L010でMbedを使い16文字2行液晶に3分を
表示するプログラム
74hc164シフトレジスターを使用した。
液晶とのピン数を節約した。信号線10本から
信号線3本に減らした。
1 CLK クロック端子(緑色)
2 RSDATA RS端子とデータの共有端子(黄色)
3 E 読み込み書き込み同期信号(青色)
秋月電子
キャラクター液晶 [ACM1602K-NLW-BBW] 通販コード P-10185
半固定ボリューム10kΩ [TSR-065-103-R] 通販コード P-06063
CD74AC164E 通販コード I-11356
アイテンドウ
8ビットシフトレジスタ [HD74LS164P] www.aitendo.com/product/12485
参考
// gpio_P_LCD_3min_031_1
#include "mbed.h"
//* ***** ***** *** * *
//* * * * * * * *
//* * * * * * * *
//* * * * * * * *
//* * * * * * * *
//******** ***** ***** *** * *
#define swclk1 PA_11 //
#define swdio1 PA_12 //
#define en1 PB_7 //
DigitalOut swdclk(swclk1);
DigitalOut swdio(swdio1);
DigitalOut en(en1);
int kk;
#define oun_min() for(kk=0;kk<60;kk++){wait_us(1000*1000);}
void seg1(int v,int rs)
{
for(int jj=0;jj<8;jj++){
if( (v<<jj) & 0x80 ){
swdio=1; //ビットが1
} else {
swdio=0; //ビットが0
}//endif
swdclk=1;swdclk=0; //clk
}//for
swdio=rs;
en=1; wait_us(1000);
en=0;
}
//文字列の表示 nana_seg
int ns_printf(char *str1) {
//文字の中身がゼロか
while(*str1){
//一文字出力
seg1( *str1 ++ , 1 );
} //while
//戻り値
return(0);
}//ns_printf
int lcd_int[]={
0x30,0x30,0x30,0x38,0x08,0x01,0x06,0x08+0x04
};//lcd_init
int main() {
// 3s wait not delete
wait_us(3*1000);
//GPIOの初期化
en=0;
//液晶の初期化
for(int ii=0;ii<8;ii++){
seg1( lcd_int[ii] , 0);wait_us(2000);
}//for
seg1( 0x80+0x00 , 0 ); //1ライン目にカーソルを移動
ns_printf( (char *)"START" ); wait_us(500*1000);
//画面クリア
seg1( 0x01 , 0 );
wait_us(5*1000);
ns_printf( (char *)"0," );
oun_min()
ns_printf( (char *)"1," );
oun_min()
ns_printf( (char *)"2," );
oun_min()
ns_printf( (char *)"3" );
while(1){} //無限ループ
}//main