LoginSignup
0
0

More than 1 year has passed since last update.

STM32L010と液晶、ACM1602K-NLW-BBWで3分タイマー

Last updated at Posted at 2021-09-05

x 原因は、わからないが液晶がちらつく場合は、ウェートを調整してね!!

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

アイテンドウ
8ビットシフトレジスタ [HD74LS164P] www.aitendo.com/product/12485

h_con39.jpg

h_con52.jpg



#include "mbed.h"

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

#define swclk1  PA_5    //A4
#define swdio1  PA_7    //A6
#define en1     PA_4    //A3

DigitalOut swdclk(swclk1);
DigitalOut swdio(swdio1);
DigitalOut en(en1);

int kk;
#define oun_min() for(kk=0;kk<60;kk++){wait_ms(1000);}

//             12345678   12345678   12345678   12345678
char b8[8] = {0b10000000,0b01000000,0b00100000,0b00010000,
              0b00001000,0b00000100,0b00000010,0b00000001 };

void seg1(int v,int rs)
{
    for(int jj=0;jj<8;jj++){
        if( (v & b8[jj]) == 0 ){
                swdio=0; //ビットが0
        } else {
                swdio=1; //ビットが1 
        }//endif
        swdclk=1;swdclk=0; //clk
    }//for

    swdio=rs;
    en=1;    wait_ms(1);
    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() {

    //GPIOの初期化
    en=0;

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

    seg1( 0x80+0x00 , 0  ); //1ライン目にカーソルを移動
    ns_printf( "START" ); wait_ms(500);

    //画面クリア
    seg1(   0x01  , 0  ); 
    wait_ms(5);

    ns_printf( "0," );
    oun_min()
    ns_printf( "1," );
    oun_min()
    ns_printf( "2," );
    oun_min()
    ns_printf( "3" );

    while(1){} //無限ループ

}


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