1
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?

8x8、0度、90度、180度、270度、回転(電光表示板用)(ビット操作

Last updated at Posted at 2025-05-25

いろいろ注意

  • arduinoでの予定は、未定

プログラム

オンラインコンパイラpaiza



#include <iostream>
using namespace std;

#define b_put(aa) for(int ii=8;ii!=0;ii--){if(aa & 0x80){printf("#");}else{printf(" ");}aa=aa<<1;}
#define bit8_put(bb) for(int jj=0;jj<8;jj++){b_put(bb[jj]);printf("\n");}

//8ビットの並び順を逆転させるデータセット(テーブル)
unsigned char rev[] = {
0x00,0x80,0x40,0xc0,0x20,0xa0,0x60,0xe0,0x10,0x90,0x50,0xd0,0x30,0xb0,0x70,0xf0,
0x08,0x88,0x48,0xc8,0x28,0xa8,0x68,0xe8,0x18,0x98,0x58,0xd8,0x38,0xb8,0x78,0xf8,
0x04,0x84,0x44,0xc4,0x24,0xa4,0x64,0xe4,0x14,0x94,0x54,0xd4,0x34,0xb4,0x74,0xf4,
0x0c,0x8c,0x4c,0xcc,0x2c,0xac,0x6c,0xec,0x1c,0x9c,0x5c,0xdc,0x3c,0xbc,0x7c,0xfc,
0x02,0x82,0x42,0xc2,0x22,0xa2,0x62,0xe2,0x12,0x92,0x52,0xd2,0x32,0xb2,0x72,0xf2,
0x0a,0x8a,0x4a,0xca,0x2a,0xaa,0x6a,0xea,0x1a,0x9a,0x5a,0xda,0x3a,0xba,0x7a,0xfa,
0x06,0x86,0x46,0xc6,0x26,0xa6,0x66,0xe6,0x16,0x96,0x56,0xd6,0x36,0xb6,0x76,0xf6,
0x0e,0x8e,0x4e,0xce,0x2e,0xae,0x6e,0xee,0x1e,0x9e,0x5e,0xde,0x3e,0xbe,0x7e,0xfe,
0x01,0x81,0x41,0xc1,0x21,0xa1,0x61,0xe1,0x11,0x91,0x51,0xd1,0x31,0xb1,0x71,0xf1,
0x09,0x89,0x49,0xc9,0x29,0xa9,0x69,0xe9,0x19,0x99,0x59,0xd9,0x39,0xb9,0x79,0xf9,
0x05,0x85,0x45,0xc5,0x25,0xa5,0x65,0xe5,0x15,0x95,0x55,0xd5,0x35,0xb5,0x75,0xf5,
0x0d,0x8d,0x4d,0xcd,0x2d,0xad,0x6d,0xed,0x1d,0x9d,0x5d,0xdd,0x3d,0xbd,0x7d,0xfd,
0x03,0x83,0x43,0xc3,0x23,0xa3,0x63,0xe3,0x13,0x93,0x53,0xd3,0x33,0xb3,0x73,0xf3,
0x0b,0x8b,0x4b,0xcb,0x2b,0xab,0x6b,0xeb,0x1b,0x9b,0x5b,0xdb,0x3b,0xbb,0x7b,0xfb,
0x07,0x87,0x47,0xc7,0x27,0xa7,0x67,0xe7,0x17,0x97,0x57,0xd7,0x37,0xb7,0x77,0xf7,
0x0f,0x8f,0x4f,0xcf,0x2f,0xaf,0x6f,0xef,0x1f,0x9f,0x5f,0xdf,0x3f,0xbf,0x7f,0xff
};

void font180(unsigned char *font){

    int c;
    c = font[0];
    font[0] = rev[font[7]];
    font[7] = rev[c];

    c = font[1];
    font[1] = rev[font[6]];
    font[6] = rev[c];

    c = font[2];
    font[2] = rev[font[5]];
    font[5] = rev[c];

    c = font[3];
    font[3] = rev[font[4]];
    font[4] = rev[c];

}


void font90(unsigned char *font){

    int a = font[0];

    int a0 = (a & 1); a = a >> 1;  
    int a1 = (a & 1); a = a >> 1;
    int a2 = (a & 1); a = a >> 1;
    int a3 = (a & 1); a = a >> 1;

    int a4 = (a & 1); a = a >> 1;
    int a5 = (a & 1); a = a >> 1;
    int a6 = (a & 1); a = a >> 1;
    int a7 = (a & 1);

    
    for(int i=1;i<8;i++){

        //処理

        a7 = a7 << 1;
        a6 = a6 << 1;
        a5 = a5 << 1;
        a4 = a4 << 1;

        a3 = a3 << 1;
        a2 = a2 << 1;
        a1 = a1 << 1;
        a0 = a0 << 1;

        a = font[i];

        a0 = a0|(a & 1); a = a >> 1;  
        a1 = a1|(a & 1); a = a >> 1;
        a2 = a2|(a & 1); a = a >> 1;
        a3 = a3|(a & 1); a = a >> 1;

        a4 = a4|(a & 1); a = a >> 1;
        a5 = a5|(a & 1); a = a >> 1;
        a6 = a6|(a & 1); a = a >> 1;
        a7 = a7|(a & 1);

    }//for i

    font[0] = a0;
    font[1] = a1;
    font[2] = a2;
    font[3] = a3;

    font[4] = a4;
    font[5] = a5;
    font[6] = a6;
    font[7] = a7;

}//font90


void font360(unsigned char *font,int l){

   l = l & 0b00000011;

   if(l == 1 | l == 3) {

      font90(font);

   }//if

   if(l == 2 | l == 3) {

      font180(font);

   }//if

}

int main(void){
    // Your code here!

    unsigned char font[] = {
        0b00100000, //  #     
        0b01111100, // #####  
        0b00100000, //  #     
        0b01111100, // #####  
        0b10101010, //# # # # 
        0b10110010, //# ##  # 
        0b01100100, // ##  #  
        0b00000000  //
    };     
    
    unsigned char fontO[8];
    
    printf("\n[0]\n");
    
    fontO[0]=font[0];fontO[1]=font[1];
    fontO[2]=font[2];fontO[3]=font[3];
    fontO[4]=font[4];fontO[5]=font[5];
    fontO[6]=font[6];fontO[7]=font[7];
    
    font360(fontO,0);
    
    bit8_put(fontO);
    

    printf("\n[1]\n");
    
    fontO[0]=font[0];fontO[1]=font[1];
    fontO[2]=font[2];fontO[3]=font[3];
    fontO[4]=font[4];fontO[5]=font[5];
    fontO[6]=font[6];fontO[7]=font[7];
    
    font360(fontO,1);
    
    bit8_put(fontO);

    printf("\n[2]\n");
    
    fontO[0]=font[0];fontO[1]=font[1];
    fontO[2]=font[2];fontO[3]=font[3];
    fontO[4]=font[4];fontO[5]=font[5];
    fontO[6]=font[6];fontO[7]=font[7];
    
    font360(fontO,2);
    
    bit8_put(fontO);


    printf("\n[3]\n");
    
    fontO[0]=font[0];fontO[1]=font[1];
    fontO[2]=font[2];fontO[3]=font[3];
    fontO[4]=font[4];fontO[5]=font[5];
    fontO[6]=font[6];fontO[7]=font[7];
    
    font360(fontO,3);
    
    bit8_put(fontO);

}




[0]
  #     
 #####  
  #     
 #####  
# # # # 
# ##  # 
 ##  #  
        

[1]
        
    ##  
 # #  # 
 # ##   
 # # #  
####### 
 # #  # 
    ##  

[2]
        
  #  ## 
 #  ## #
 # # # #
  ##### 
     #  
  ##### 
     #  

[3]
  ##    
 #  # # 
 #######
  # # # 
   ## # 
 #  # # 
  ##    
       


1
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
1
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?