LoginSignup
1
0

More than 1 year has passed since last update.

STM32G031と液晶、ACM1602K-NLW-BBWで3分タイマー(74HC164)(mbed)

Last updated at Posted at 2022-08-14

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

o_con679.jpg

o_con678.jpg

参考



// 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



1
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
1
0