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