0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

STM32L010と秋月シリアル7セグで3分タイマー GPIO

Last updated at Posted at 2021-05-18

x Mbedのリビジョンは、125
x Mbedでのボード設定は、NUCLEO-L011K4
x 赤色7セグメントLEDシリアルドライバモジュール 完成品
x OSL10564-74HC595-R M-12642
x 軽量コンパクト化6/22

動機
本当に出来るとは、思いませんでした。

説明
省略します。

すごく簡単なので勝手に何とかして

忙しい人よう

軽量コンパクト化


# 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);

# define s60()   for(ii=0;ii<60;ii++)wait_ms(1000);

char seg[32] = {
   0x00 , //0 @ -> ' '
   0x77 , //1 A  o
   0x7c , //2 B      combined use "6"
   0x39 , //3 C
   0x5e , //4 D
   0x79 , //5 E  o
   0x71 , //6 F
   0x3d , //7 G
             
   0x76 , //8 H  o
   0x06 , //9 I     combined use "1"
   0x1e , //10 J
   0x75 , //11 K 
   0x38 , //12 L  o
   0x15 , //13 M
   0x37 , //14 N  o
   0x3f , //15 O  o combined use "0"
              
   0x73  , //16 P
   0x67  , //17 Q combined use "9"
   0x50  , //18 R
   0x6d  , //19 S combined use "5"
   0x78  , //20 T
   0x3e  , //21 U
   0x1c  , //22 V
   0x2a  , //23 W  o
   0x64  , //24 X
               
   0x6e  , //25 Y
   0x5b  , //26 Z combined use "2"
   0x4f  , //27 [  --> "3"
   0x66  , //28 \  --> "4"
   0x27  , //29 ]  --> "7"
   0x7f  , //26 ^  --> "8"
   0x08    //31 _
};

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

void seg1(char v)
{
    v=seg[v-64];
    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
    en=1;
    en=0;       
}//seg1

int main() {
    
    int ii; //ループカウンター
    
    en=0;
    swdclk=0;
        
    //0分
    seg1('O');
    s60();  
    
    //1分
    seg1('I');
    s60();
    
    //2分
    seg1('Z');
    s60();
    
    //3分
    seg1('[');
    
    while(1){} //無限ループ
    
}//main



軽量コンパクト化前


# 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);

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 vc;
int ch_chvc(int s)
{
    s = s - 64;
    
    vc =0;
    vc = vc | ((!(seg[s][7])) << 7);
    vc = vc | ((!(seg[s][3])) << 6);
    vc = vc | ((!(seg[s][2])) << 5);
    vc = vc | ((!(seg[s][4])) << 4);
    vc = vc | ((!(seg[s][5])) << 3);
    vc = vc | ((!(seg[s][6])) << 2);
    vc = vc | ((!(seg[s][1])) << 1);
    vc = vc | ((!(seg[s][0])) << 0);
    
    return(vc);
}//ch_chvc

int v;
int rs;
void seg1()
{
    swdio=((v>>7)&1);   swdclk=1;swdclk=0; //7
    swdio=((v>>6)&1);   swdclk=1;swdclk=0; //6
    swdio=((v>>5)&1);   swdclk=1;swdclk=0; //5
    swdio=((v>>4)&1);   swdclk=1;swdclk=0; //4
    swdio=((v>>3)&1);   swdclk=1;swdclk=0; //3
    swdio=((v>>2)&1);   swdclk=1;swdclk=0; //2
    swdio=((v>>1)&1);   swdclk=1;swdclk=0; //1
    swdio=((v>>0)&1);   swdclk=1;swdclk=0; //0
    swdio=rs;   
    en=1; 
    wait_ms(1);      
    en=0;       
}//seg1

int main() {

//d    en=1;          //debug
//d    wait_ms(1000); //debug
//d    
//d    swdio=1;       //debug
//d    wait_ms(1000); //debug
    
    en=0;
    swdio=0;
    for(int i=0;i<16;i++){
        swdclk=1;
        wait_ms(15);
        swdclk=0;
        wait_ms(15);
    }//for

//d    v=0x55;seg1(); //debug
//d    wait_ms(1000); //debug
//d    v=0xaa;seg1(); //debug
//d    wait_ms(1000); //debug

    int ii; //ループカウンター

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

        //0分
        v=ch_chvc('O');seg1();
    
        for(ii = 0;ii < 60;ii++){
            wait_ms(1000);
        }//for

        //1分
        v=ch_chvc('I');seg1();
        
        for(ii = 0;ii < 60;ii++){
            wait_ms(1000);
        }//for

        //2分
        v=ch_chvc('Z');seg1();

        for(ii = 0;ii < 60;ii++){
            wait_ms(1000);
        }//for

        //3分
        v=ch_chvc('[');seg1();

        
        while(1){} //無限ループ
//d        while(1){           //debug
//d            swdclk=1;       //debug
//d            wait_ms(1000);  //debug
//d            swdclk=0;       //debug
//d            wait_ms(1000);  //debug
//d        }//while            //debug
        
    
    }//while //無限ループ
}//main



serial_raw_temp_010_r1_3.jpg

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?