LoginSignup
0
0

STM32C011とキャラクター液晶でHello Worldを表示して遊ぶ。(PA14)(PA13)(ターゲットリセット)

Last updated at Posted at 2024-02-02

参考

↓ここをクリック↓

STM32C011とキャラクター液晶でHello Worldを表示して遊ぶ。(PA14)(PA13)(ターゲットリセット)

x 過去ログを見よ
x 「Arduino」関連を見てください

x 自己責任の意味がわかる人がお読みください。
x 間違った操作を行うと二度と書き込めなくなります。
x なぜか知らないが、表示速度を速くするとジャムるので各自で調整してくざさい。
x 74HC164を使いピン数を減らしています。
x ターゲットリセットを接続してください。
x 非常用として「3秒ルール」があり、起動後、3秒以内に接続してください。

接続

1
2 VCC
3 GND
4 ターゲットリセット

8 液晶 CLK (SWCLK)
7 液晶 DATA (SWDIO)
6 液晶 EN
5

基板パターン ACM1602K-NLW-BBW

o_con88.jpg
o_con88.jpg

結果

o_cop918.jpg

プログラム




//GPIO_LCD_Hello World_C011_1

//インクルド
#include <Arduino.h>


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


//定義
#define DW   digitalWrite

//STM32G031J6M6 i2cピンの定義
//#define sdaPin PA12    // ArduinoA4
//#define sclPin PA11    // ArduinoA5

//#define S5851A 0x48

#define swdclk   PA14 // 8pin
#define swdio    PA13 // 7pin
//#define swdclk   PA11 // 5pin
//#define swdio    PA12 // 6pin
//#define swdclk   PA12 // 6pin
//#define swdio    PA11 // 5pin
//#define t_led1   PA12 // 6pin
//#define t_led2   PA11 // 5pin
//#define en       PA0  // 4pin
//#define in7      PB7  // 1pin
//#define en      PB7  // 1pin
#define en      PA12  // 6pin

// tx PA14(PB6) 8PIN
// rx PC14(PB7) 1PIN

//シフトパターン
//              12345678   12345678   12345678   12345678
char b8[8] = {0b10000000,0b01000000,0b00100000,0b00010000,
              0b00001000,0b00000100,0b00000010,0b00000001 };

//液晶の初期化配列
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 & b8[jj]) == 0 ){
                DW(swdio,0); //ビットが0
        } else {
                DW(swdio,1); //ビットが1
        }//endif
        DW(swdclk,1);
        DW(swdclk,0);
    }//for
    
    DW(swdio,rs);   //コマンド/データ
    DW(en,1); delay(1);  //イネーブルオン
    DW(en,0);       //イネーブルオフ
}//seg1


//文字列の表示 nana_seg
int ns_printf(char *str1) {

    //文字の中身がゼロか
    while(*str1){

        //一文字出力
        seg1( *str1 ++ , 1  );

    } //while

    //戻り値
    return(0);
}//ns_printf


//初期化
void setup() {

  delay(3000); //not Delete (絶対消すな)(消しちゃィゃーん)

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



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