Enjoy programming more!
Kidspod is a post site which supports young programmers.
First step to join us.
Register as a member
For members

2020/10/15 11:02:18

MixJuice GET URL : kidspod.club/mj/1021

ハロウィン Halloween 専用表示器 STM32L010

ハロウィン専用の表示装置
ローマ字の場合は5ビット必要
5ビットが ばける 可能性があるので
5ビットと6ビットを同じ物を送る

ソフトウェアシリアル通信する。
HALLOWEEN専用にすることで開発、検証時間の短縮 ただし、英数字表示可能
mbedでソースコードを公開しました。
プログラムを見るからmbedに飛びます。
ユーチューブで動画を公開しました。キーワードは、
stm32l010f4p6です。書き込み動画もアップしました。
githubで公開しました。
キーワードは7seg_halloween_011_1です。

電源投入後、テストパターンとして
HALLOWEENと連続表示する、問題があればソースを戻す。

!!2020/10/24
!!stm32l010f4p6は、USARTシリアル書き込み出来ました。
!!(st-link nBOOT0を立ててください。)古いねた
!!ユーチューブ キーワード STM32L010F4P6
!!新品 USART書き込み成功

SOURCE CODE

mbed側

#include "mbed.h"

DigitalOut myled1(PA_1); // A
DigitalOut myled2(PA_2); // B
DigitalOut myled3(PA_3); // F
DigitalOut myled4(PA_4); // G
DigitalOut myled5(PA_5); // E
DigitalOut myled6(PA_6); // D
DigitalOut myled7(PA_7); // C

DigitalOut myled8(PB_1); // DP

//DigitalIn myin10(PA_10); // for out 10 (in3)
DigitalIn myin9(PA_9);     // for out 11 (in4)

char seg[32][8] = {
 { 1,1,1,1,1,1,1,1 }, //0 @ -> ' '
 { 0,0,0,0,0,1,0,1 }, //1 A  o
 { 1,1,0,0,0,0,0,1 }, //2 B      combined use "6"
 { 0,1,0,1,0,0,1,1 }, //3 C
 { 1,0,1,0,0,0,0,1 }, //4 D
 { 0,1,0,0,0,0,1,1 }, //5 E  o
 { 0,1,0,0,0,1,1,1 }, //6 F
 { 0,1,0,1,0,0,0,1 }, //7 G

 { 1,0,0,0,0,1,0,1 }, //8 H  o
 { 1,0,1,1,1,1,0,1 }, //9 I     combined use "1"
 { 1,0,1,1,0,0,0,1 }, //10 J
 { 0,1,0,0,0,1,0,1 }, //11 K 
 { 1,1,0,1,0,0,1,1 }, //12 L  o
 { 0,1,1,1,0,1,0,1 }, //13 M
 { 0,0,0,1,0,1,0,1 }, //14 N  o
 { 0,0,0,1,0,0,0,1 }, //15 O  o combined use "0"

 { 0,0,0,0,0,1,1,1 }, //16 P
 { 0,0,0,0,1,1,0,1 }, //17 Q combined use "9"
 { 1,1,1,0,0,1,1,1 }, //18 R
 { 0,1,0,0,1,0,0,1 }, //19 S combined use "5"
 { 1,1,0,0,0,0,1,1 }, //20 T
 { 1,0,0,1,0,0,0,1 }, //21 U
 { 1,1,1,1,0,0,0,1 }, //22 V
 { 1,0,0,1,1,0,1,1 }, //23 W  o
 { 1,1,0,0,1,1,0,1 }, //24 X
 
 { 1,0,0,0,1,0,0,1 }, //25 Y
 { 0,0,1,0,0,0,1,1 }, //26 Z combined use "2"
 { 0,0,1,0,1,0,0,1 }, //27 [  --> "3"
 { 1,0,0,0,1,1,0,1 }, //28 \  --> "4"
 { 0,0,0,1,1,1,0,1 }, //29 ]  --> "7"
 { 0,0,0,0,0,0,0,1 }, //26 ^  --> "8"
 { 1,1,1,1,1,0,1,1 }  //31 _
};

int main() {
    int a;
    int b;
    int c;
    int d;
    
    //int e; //5bit
    int f; //6bit
    
    int s;

//s=8;    // HALLOWEEN
          // 001112001
          // 812253554
          // 0  1  2  3  4  5  6  7  8
          // H  A  L  L  O  W  E  E  N
  char v[]={ 8, 1,12,12,15,23, 5, 5,14};
  f=0;
  while(1) {
   s = v[f];
   myled1 = seg[s][0];myled2 = seg[s][1];myled3 = seg[s][2];myled4 = seg[s][3];
   myled5 = seg[s][4];myled6 = seg[s][5];myled7 = seg[s][6];myled8 = seg[s][7];

   for(c=0;c<100;c++){
     for(d=0;d<10000;d++){if(myin9 == 0)goto L_START;} 
   }
   
   f=f+1;
   if (f >=9) { f=0;}  
  }

L_START:

    while(1) {
        
        while( myin9 == 1 ) {}
        wait(0.035);
        a=!(myin9);
        wait(0.035);
        b=!(myin9);
        wait(0.035);
        c=!(myin9);
        wait(0.035);
        d=!(myin9);
        wait(0.035);
        
        //e=!(myin9);  // 5bit
        wait(0.035);
        f=!(myin9);  // 6bit
        wait(0.035);
       
        
        s=f*16+d*8+c*4+b*2+a;
    
        myled1 = seg[s][0];myled2 = seg[s][1];myled3 = seg[s][2];myled4 = seg[s][3];
        myled5 = seg[s][4];myled6 = seg[s][5];myled7 = seg[s][6];myled8 = seg[s][7];
      
        
    }
}

// ichigojam
//
//10 'START 0.5 DATA 6BIT SOTP 1
//20 OUT 12,1:WAIT 15
//30 [0]=ASC("H")
//40 [1]=ASC("A")
//50 [2]=ASC("L")
//60 [3]=ASC("L")
//70 [4]=ASC("O")
//80 [5]=ASC("W")
//90 [6]=ASC("E")
//100 [7]=ASC("E")
//110 [8]=ASC("N")
//160 FOR I=0 TO 8
//170 R=[I]:GOSUB 200:WAIT 60
//180 NEXT
//190 GOTO 160
//200 '
//210 R=R-64:OUT 11,0:WAIT 1
//220 FOR S=0 TO 3+1
//230 OUT 11,!( (R >> S)&1 )
//240 WAIT 2
//250 NEXT:WAIT 2:'6BIT
//260 OUT 11,1
//270 WAIT 2
//280 RETURN

ichigojam側

10 'START 0.5 DATA 6BIT SOTP 1
20 OUT 12,1:WAIT 15
30 [0]=ASC("H")
40 [1]=ASC("A")
50 [2]=ASC("L")
60 [3]=ASC("L")
70 [4]=ASC("O")
80 [5]=ASC("W")
90 [6]=ASC("E")
100 [7]=ASC("E")
110 [8]=ASC("N")
160 FOR I=0 TO 8
170 R=[I]:GOSUB 200:WAIT 60
180 NEXT
190 GOTO 160
200 '
210 R=R-64:OUT 11,0:WAIT 1
220 FOR S=0 TO 3+1
230 OUT 11,!( (R >> S)&1 )
240 WAIT 2
250 NEXT:WAIT 2:'6BIT
260 OUT 11,1
270 WAIT 2
280 RETURN

COMMENT