Тема: Управление панелькой от магнитолы aura с драйвером ht1621

#define CS   13  
#define WR   12  
#define DATA 10  

#define CS1    digitalWrite(CS, HIGH) 
#define CS0    digitalWrite(CS, LOW)
#define WR1    digitalWrite(WR, HIGH) 
#define WR0    digitalWrite(WR, LOW)
#define DATA1  digitalWrite(DATA, HIGH) 
#define DATA0  digitalWrite(DATA, LOW)

#define sbi(x, y)  (x |= (1 << y))   
#define cbi(x, y)  (x &= ~(1 <<y ))  
#define uchar   unsigned char 
#define uint   unsigned int 

 
#define  ComMode    0x52  //4COM,1/3bias  1000    010 1001  0  
#define  RCosc      0x30  //1000 0011 0000 
#define  LCD_on     0x06  //1000     0000 0 11 0 
#define  LCD_off    0x04  
#define  Sys_en     0x02  //1000   0000 0010 
#define  CTRl_cmd   0x80  
#define  Data_cmd   0xa0  

/*0,1,2,3,4,5,6,7,8,9,A,b,C,c,d,E,F,H,h,L,n,N,o,P,r,t,U,-, ,*/

const char buk[]={B10000000,B11111111,B10110110,B11110010,B01100011,B11010011,B11010111,B01110000,B11110111,B11110011,B00000000,B00001000}; // биты чисел
                 //    0        1          2         3        4         5         6          7          8       9      
char dispnum[6]={0x00,0x00,0x00,0x00,0x00,0x00};

void SendBit_1621(uchar sdata,uchar cnt)
{ 
  //data cnt HT1621
  uchar i; 
  for(i=0;i<cnt;i++) 
  { 
    WR0;
    if(sdata&0x80) DATA1; 
    else DATA0;
    WR1;
    sdata<<=1; 
  } 
}
void SendCmd_1621(uchar command) 
{ 
  CS0; 
  SendBit_1621(0x80,4);  
  SendBit_1621(command,8); 
  CS1;                     
}
void Write_1621(uchar addr,uchar sdata)
{ 
  addr<<=2; 
  CS0; 
  SendBit_1621(0xa0,3);     
  SendBit_1621(addr,6);     
  SendBit_1621(sdata,10);   
  CS1; 
} 
void HT1621_all_off(uchar num) 
{
  uchar i; 
  uchar addr=0; 
  for(i=0;i<num;i++) 
  { 
    Write_1621(addr,0x00); 
    addr+=2; 
  } 
}

void Init_1621(void)
{
  SendCmd_1621(Sys_en);
  SendCmd_1621(RCosc);    
  SendCmd_1621(ComMode);  
  SendCmd_1621(LCD_on);
}    
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup() {
   Serial.begin(9600);  //открыть порт
	pinMode(2, INPUT_PULLUP);
  pinMode(CS, OUTPUT); // 
  pinMode(WR, OUTPUT); // 
  pinMode(DATA, OUTPUT); //
  CS1;
  DATA1;
  WR1;
  delay(50);
  Init_1621();
  HT1621_all_off(16);
  delay(50);
   // set the motor speed to 30 RPM (360 PPS aprox.).
Write_1621( 32,buk[1]);
//Write_1621( 30,buk[1]);




  


}  

void loop(){
 
}

           

2

Re: Управление панелькой от магнитолы aura с драйвером ht1621

Должный загореться все сегменты

#define LCD_CS    6
#define LCD_WR    7
#define LCD_DATA  8

#define HT1621_BIAS                 0x52                    // 1/3duty 4com
#define HT1621_SYS_DIS              0x00                    // Turn off the oscillator system oscillator and LCD bias generator
#define HT1621_SYS_EN               0x02                    // Turn on the system oscillator
#define HT1621_LCD_OFF              0x04                    // Turn off LCD bias
#define HT1621_LCD_ON               0x06                    // Turn on the LCE bias
#define HT1621_XTAL                 0x28                    // external clock
#define HT1621_RC256                0x30                    // internal clock


void setup() {
  pinMode(LCD_CS, OUTPUT);
  pinMode(LCD_WR, OUTPUT);
  pinMode(LCD_DATA, OUTPUT);
  digitalWrite(LCD_CS,HIGH);
  digitalWrite(LCD_WR,HIGH);
  data_100(HT1621_SYS_EN); // Turn on the system oscillator
  data_100(HT1621_BIAS);   // BIAS 13 4 public ports
  data_100(HT1621_RC256);  // Use RC_256K system clock source, on-chip RC oscillator
  data_100(HT1621_LCD_ON);
  clear_lcd();
}

void loop(){
  clear_lcd();
  delay(500);
}



void clear_lcd(){for(int a=0;a<=32;a++){data_101(a,1);}}

void data_100(int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (0b100 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     } 
   for(int i = 8; i >=0; i--){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     } 
     delayMicroseconds(10);digitalWrite(LCD_CS,HIGH);
     delayMicroseconds(10);digitalWrite(LCD_WR,LOW);
     delayMicroseconds(10);
  }

void data_101(int addr, int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (0b101 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     } 
   for(int i = 5; i >=0; i--){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (addr >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     } 
   for(int i = 0; i <=3; i++){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     }   
     delayMicroseconds(10);digitalWrite(LCD_CS,HIGH);
     delayMicroseconds(10);digitalWrite(LCD_WR,LOW);
  }  

3

Re: Управление панелькой от магнитолы aura с драйвером ht1621

#define LCD_CS    6
#define LCD_WR    7
#define LCD_DATA  8

#define HT1621_BIAS                 0x52                    // 1/3duty 4com
#define HT1621_SYS_DIS              0x00                    // Turn off the oscillator system oscillator and LCD bias generator
#define HT1621_SYS_EN               0x02                    // Turn on the system oscillator
#define HT1621_LCD_OFF              0x04                    // Turn off LCD bias
#define HT1621_LCD_ON               0x06                    // Turn on the LCE bias
#define HT1621_XTAL                 0x28                    // external clock
#define HT1621_RC256                0x30                    // internal clock


void setup() {
  pinMode(LCD_CS, OUTPUT);
  pinMode(LCD_WR, OUTPUT);
  pinMode(LCD_DATA, OUTPUT);
  digitalWrite(LCD_CS,HIGH);
  digitalWrite(LCD_WR,HIGH);
  data_100(HT1621_SYS_EN); // Turn on the system oscillator
  data_100(HT1621_BIAS);   // BIAS 13 4 public ports
  data_100(HT1621_RC256);  // Use RC_256K system clock source, on-chip RC oscillator
  data_100(HT1621_LCD_ON);
  clear_lcd();
}

void loop(){
  clear_lcd();
  delay(500);
}



void clear_lcd(){for(int a=0;a<=32;a++){data_101(a,0b1111);}}

void data_100(int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (0b100 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     } 
   for(int i = 8; i >=0; i--){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     } 
     delayMicroseconds(10);digitalWrite(LCD_CS,HIGH);
     delayMicroseconds(10);digitalWrite(LCD_WR,LOW);
     delayMicroseconds(10);
  }

void data_101(int addr, int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (0b101 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     } 
   for(int i = 5; i >=0; i--){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (addr >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     } 
   for(int i = 0; i <=3; i++){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     }   
     delayMicroseconds(10);digitalWrite(LCD_CS,HIGH);
     delayMicroseconds(10);digitalWrite(LCD_WR,LOW);
  }  

4

Re: Управление панелькой от магнитолы aura с драйвером ht1621

#define LCD_CS    13
#define LCD_WR    12
#define LCD_DATA  10

#define HT1621_BIAS                 0x52                    // 1/3duty 4com
#define HT1621_SYS_DIS              0x00                    // Turn off the oscillator system oscillator and LCD bias generator
#define HT1621_SYS_EN               0x02                    // Turn on the system oscillator
#define HT1621_LCD_OFF              0x04                    // Turn off LCD bias
#define HT1621_LCD_ON               0x06                    // Turn on the LCE bias
#define HT1621_XTAL                 0x28                    // external clock
#define HT1621_RC256                0x30                    // internal clock


void setup() {
  Serial.begin(9600);
  pinMode(LCD_CS, OUTPUT);
  pinMode(LCD_WR, OUTPUT);
  pinMode(LCD_DATA, OUTPUT);
  digitalWrite(LCD_CS,HIGH);
  digitalWrite(LCD_WR,HIGH);
  data_100(HT1621_SYS_EN); // Turn on the system oscillator
  data_100(HT1621_BIAS);   // BIAS 13 4 public ports
  data_100(HT1621_RC256);  // Use RC_256K system clock source, on-chip RC oscillator
  data_100(HT1621_LCD_ON);
  clear_lcd();
}

void loop(){
  lcd_read(0,0b11111111);
  delay(500);
}



void clear_lcd(){for(int a=0;a<=32;a++){data_101(a,0);}}

void lcd_read(int addr_, int data_){
  data_101(addr_,data_ >> 4);data_101(addr_+1,data_ &0b1111);
  Serial.print(data_ >> 4,BIN);
  Serial.println(data_ &0b1111,BIN);
  
  }

void data_100(int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (0b100 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     } 
   for(int i = 8; i >=0; i--){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     } 
     delayMicroseconds(10);digitalWrite(LCD_CS,HIGH);
     delayMicroseconds(10);digitalWrite(LCD_WR,LOW);
     delayMicroseconds(10);
  }

void data_101(int addr, int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (0b101 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     } 
   for(int i = 5; i >=0; i--){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (addr >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     } 
   for(int i = 0; i <=3; i++){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     }   
     delayMicroseconds(10);digitalWrite(LCD_CS,HIGH);
     delayMicroseconds(10);digitalWrite(LCD_WR,LOW);
  }  

5

Re: Управление панелькой от магнитолы aura с драйвером ht1621

четные адреса

#define LCD_CS    13
#define LCD_WR    12
#define LCD_DATA  10

#define HT1621_BIAS                 0x52                    // 1/3duty 4com
#define HT1621_SYS_DIS              0x00                    // Turn off the oscillator system oscillator and LCD bias generator
#define HT1621_SYS_EN               0x02                    // Turn on the system oscillator
#define HT1621_LCD_OFF              0x04                    // Turn off LCD bias
#define HT1621_LCD_ON               0x06                    // Turn on the LCE bias
#define HT1621_XTAL                 0x28                    // external clock
#define HT1621_RC256                0x30                    // internal clock


void setup() {
  Serial.begin(9600);
  pinMode(LCD_CS, OUTPUT);
  pinMode(LCD_WR, OUTPUT);
  pinMode(LCD_DATA, OUTPUT);
  digitalWrite(LCD_CS,HIGH);
  digitalWrite(LCD_WR,HIGH);
  data_100(HT1621_SYS_EN); // Turn on the system oscillator
  data_100(HT1621_BIAS);   // BIAS 13 4 public ports
  data_100(HT1621_RC256);  // Use RC_256K system clock source, on-chip RC oscillator
  data_100(HT1621_LCD_ON);
  clear_lcd();
}

void loop(){
  lcd_write(0,0b11111111);

  delay(500);
}



void clear_lcd(){for(int a=0;a<=32;a++){data_101(a,0);}}

void lcd_write(int addr_, int data_){
  data_101(addr_,data_ >> 4);data_101(addr_+1,data_ &0b1111);
  Serial.print(data_ >> 4,BIN);
  Serial.println(data_ &0b1111,BIN);
  
  }

void data_100(int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (0b100 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     } 
   for(int i = 8; i >=0; i--){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     } 
     delayMicroseconds(10);digitalWrite(LCD_CS,HIGH);
     delayMicroseconds(10);digitalWrite(LCD_WR,LOW);
     delayMicroseconds(10);
  }

void data_101(int addr, int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (0b101 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     } 
   for(int i = 5; i >=0; i--){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (addr >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     } 
   for(int i = 0; i <=3; i++){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     }   
     delayMicroseconds(10);digitalWrite(LCD_CS,HIGH);
     delayMicroseconds(10);digitalWrite(LCD_WR,LOW);
  }  

6

Re: Управление панелькой от магнитолы aura с драйвером ht1621

Должны гореть все сегменты

#define LCD_CS    13
#define LCD_WR    12
#define LCD_DATA  10

#define HT1621_BIAS                 0x52                    // 1/3duty 4com
#define HT1621_SYS_DIS              0x00                    // Turn off the oscillator system oscillator and LCD bias generator
#define HT1621_SYS_EN               0x02                    // Turn on the system oscillator
#define HT1621_LCD_OFF              0x04                    // Turn off LCD bias
#define HT1621_LCD_ON               0x06                    // Turn on the LCE bias
#define HT1621_XTAL                 0x28                    // external clock
#define HT1621_RC256                0x30                    // internal clock


void setup() {
  Serial.begin(9600);
  pinMode(LCD_CS, OUTPUT);
  pinMode(LCD_WR, OUTPUT);
  pinMode(LCD_DATA, OUTPUT);
  digitalWrite(LCD_CS,HIGH);
  digitalWrite(LCD_WR,HIGH);
  data_100(HT1621_SYS_EN); // Turn on the system oscillator
  data_100(HT1621_BIAS);   // BIAS 13 4 public ports
  data_100(HT1621_RC256);  // Use RC_256K system clock source, on-chip RC oscillator
  data_100(HT1621_LCD_ON);
  clear_lcd();
}

void loop(){
  lcd_write(0,0b11111111);lcd_write(2,0b11111111);lcd_write(4,0b11111111);lcd_write(6,0b11111111);lcd_write(8,0b11111111);lcd_write(10,0b11111111);
  lcd_write(12,0b11111111);lcd_write(14,0b11111111);lcd_write(16,0b11111111);lcd_write(18,0b11111111);lcd_write(20,0b11111111);lcd_write(22,0b11111111);
  lcd_write(24,0b11111111);lcd_write(26,0b11111111);lcd_write(28,0b11111111);lcd_write(30,0b11111111);lcd_write(32,0b11111111);
  delay(500);
}



void clear_lcd(){for(int a=0;a<=32;a++){data_101(a,0);}}

void lcd_write(int addr_, int data_){
  data_101(addr_,data_ >> 4);data_101(addr_+1,data_ &0b1111);
  Serial.print(data_ >> 4,BIN);
  Serial.println(data_ &0b1111,BIN);
  
  }

void data_100(int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (0b100 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     } 
   for(int i = 8; i >=0; i--){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     } 
     delayMicroseconds(10);digitalWrite(LCD_CS,HIGH);
     delayMicroseconds(10);digitalWrite(LCD_WR,LOW);
     delayMicroseconds(10);
  }

void data_101(int addr, int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (0b101 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     } 
   for(int i = 5; i >=0; i--){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (addr >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     } 
   for(int i = 0; i <=3; i++){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     }   
     delayMicroseconds(10);digitalWrite(LCD_CS,HIGH);
     delayMicroseconds(10);digitalWrite(LCD_WR,LOW);
  }  

7

Re: Управление панелькой от магнитолы aura с драйвером ht1621

#define LCD_CS    13
#define LCD_WR    12
#define LCD_DATA  10

#define HT1621_BIAS                 0x52                    // 1/3duty 4com
#define HT1621_SYS_DIS              0x00                    // Turn off the oscillator system oscillator and LCD bias generator
#define HT1621_SYS_EN               0x02                    // Turn on the system oscillator
#define HT1621_LCD_OFF              0x04                    // Turn off LCD bias
#define HT1621_LCD_ON               0x06                    // Turn on the LCE bias
#define HT1621_XTAL                 0x28                    // external clock
#define HT1621_RC256                0x30                    // internal clock


void setup() {
  Serial.begin(9600);
  pinMode(LCD_CS, OUTPUT);
  pinMode(LCD_WR, OUTPUT);
  pinMode(LCD_DATA, OUTPUT);
  digitalWrite(LCD_CS,HIGH);
  digitalWrite(LCD_WR,HIGH);
  data_100(HT1621_SYS_EN); // Turn on the system oscillator
  data_100(HT1621_BIAS);   // BIAS 13 4 public ports
  data_100(HT1621_RC256);  // Use RC_256K system clock source, on-chip RC oscillator
  data_100(HT1621_LCD_ON);
  clear_lcd();
}

void loop(){
  lcd_write(0,0b11111111);lcd_write(2,0b11111111);lcd_write(4,0b11111111);lcd_write(6,0b11111111);lcd_write(8,0b11111111);lcd_write(10,0b11111111);
  lcd_write(12,0b11111111);lcd_write(14,0b11111111);lcd_write(16,0b11111111);lcd_write(18,0b11111111);lcd_write(20,0b11111111);lcd_write(22,0b11111111);
  lcd_write(24,0b11111111);lcd_write(26,0b11111111);lcd_write(28,0b11111111);lcd_write(30,0b11111111);lcd_write(32,0b11111111);
  delay(500);
}



void clear_lcd(){for(int a=0;a<=32;a++){data_101(a,0);}}

void lcd_write(int addr_, int data_){
  data_101(addr_,data_ >> 4);data_101(addr_+1,data_ &0b1111);
  Serial.print(data_ >> 4,BIN);
  Serial.println(data_ &0b1111,BIN);
  
  }

void data_100(int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (0b100 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     } 
   for(int i = 8; i >=0; i--){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(10);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(10);
     } 
     delayMicroseconds(10);digitalWrite(LCD_CS,HIGH);
     delayMicroseconds(10);digitalWrite(LCD_WR,LOW);
     delayMicroseconds(10);
  }

void data_101(int addr, int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(1);
     digitalWrite(LCD_DATA, (0b101 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(1);
     } 
   for(int i = 5; i >=0; i--){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(1);
     digitalWrite(LCD_DATA, (addr >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(1);
     } 
   for(int i = 0; i <=3; i++){
     digitalWrite(LCD_WR,LOW);delayMicroseconds(1);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);delayMicroseconds(1);
     }   
     delayMicroseconds(10);digitalWrite(LCD_CS,HIGH);
     delayMicroseconds(10);digitalWrite(LCD_WR,LOW);
  }  

8

Re: Управление панелькой от магнитолы aura с драйвером ht1621

#define LCD_CS    13
#define LCD_WR    12
#define LCD_DATA  10

#define HT1621_BIAS                 0x52                    // 1/3duty 4com
#define HT1621_SYS_DIS              0x00                    // Turn off the oscillator system oscillator and LCD bias generator
#define HT1621_SYS_EN               0x02                    // Turn on the system oscillator
#define HT1621_LCD_OFF              0x04                    // Turn off LCD bias
#define HT1621_LCD_ON               0x06                    // Turn on the LCE bias
#define HT1621_XTAL                 0x28                    // external clock
#define HT1621_RC256                0x30                    // internal clock


void setup() {
  Serial.begin(9600);
  pinMode(LCD_CS, OUTPUT);
  pinMode(LCD_WR, OUTPUT);
  pinMode(LCD_DATA, OUTPUT);
  digitalWrite(LCD_CS,HIGH);
  digitalWrite(LCD_WR,HIGH);
  data_100(HT1621_SYS_EN); // Turn on the system oscillator
  data_100(HT1621_BIAS);   // BIAS 13 4 public ports
  data_100(HT1621_RC256);  // Use RC_256K system clock source, on-chip RC oscillator
  data_100(HT1621_LCD_ON);
  clear_lcd();
}

void loop(){
  lcd_write(0,0b11111111);lcd_write(2,0b11111111);lcd_write(4,0b11111111);lcd_write(6,0b11111111);lcd_write(8,0b11111111);lcd_write(10,0b11111111);
  lcd_write(12,0b11111111);lcd_write(14,0b11111111);lcd_write(16,0b11111111);lcd_write(18,0b11111111);lcd_write(20,0b11111111);lcd_write(22,0b11111111);
  lcd_write(24,0b11111111);lcd_write(26,0b11111111);lcd_write(28,0b11111111);lcd_write(30,0b11111111);lcd_write(32,0b11111111);
  delay(500);
}



void clear_lcd(){for(int a=0;a<=32;a++){data_101(a,0);}}

void lcd_write(int addr_, int data_){
  data_101(addr_,data_ >> 4);data_101(addr_+1,data_ &0b1111);
  Serial.print(data_ >> 4,BIN);
  Serial.println(data_ &0b1111,BIN);
  
  }

void data_100(int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b100 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 8; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
     delayMicroseconds(10);digitalWrite(LCD_CS,HIGH);
     delayMicroseconds(10);digitalWrite(LCD_WR,LOW);
     delayMicroseconds(10);
  }

void data_101(int addr, int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b101 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 5; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (addr >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 0; i <=3; i++){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     }   
     delayMicroseconds(10);digitalWrite(LCD_CS,HIGH);
     delayMicroseconds(10);digitalWrite(LCD_WR,LOW);
  }  

9

Re: Управление панелькой от магнитолы aura с драйвером ht1621

еще одна попытка

#define LCD_CS    13
#define LCD_WR    12
#define LCD_DATA  10

#define HT1621_BIAS                 0x52                    // 1/3duty 4com
#define HT1621_SYS_DIS              0x00                    // Turn off the oscillator system oscillator and LCD bias generator
#define HT1621_SYS_EN               0x02                    // Turn on the system oscillator
#define HT1621_LCD_OFF              0x04                    // Turn off LCD bias
#define HT1621_LCD_ON               0x06                    // Turn on the LCE bias
#define HT1621_XTAL                 0x28                    // external clock
#define HT1621_RC256                0x30                    // internal clock


void setup() {
  Serial.begin(9600);
  pinMode(LCD_CS, OUTPUT);
  pinMode(LCD_WR, OUTPUT);
  pinMode(LCD_DATA, OUTPUT);
  digitalWrite(LCD_CS,HIGH);
  digitalWrite(LCD_WR,HIGH);
  data_100(HT1621_SYS_EN); // Turn on the system oscillator
  data_100(HT1621_BIAS);   // BIAS 13 4 public ports
  data_100(HT1621_RC256);  // Use RC_256K system clock source, on-chip RC oscillator
  data_100(HT1621_LCD_ON);
  clear_lcd();
}

void loop(){
  lcd_write(0,0b11111111);lcd_write(2,0b11111111);lcd_write(4,0b11111111);lcd_write(6,0b11111111);lcd_write(8,0b11111111);lcd_write(10,0b11111111);
  lcd_write(12,0b11111111);lcd_write(14,0b11111111);lcd_write(16,0b11111111);lcd_write(18,0b11111111);lcd_write(20,0b11111111);lcd_write(22,0b11111111);
  lcd_write(24,0b11111111);lcd_write(26,0b11111111);lcd_write(28,0b11111111);lcd_write(30,0b11111111);lcd_write(32,0b11111111);
  delay(500);
}



void clear_lcd(){for(int a=0;a<=32;a++){data_101(a,0);}}

void lcd_write(int addr_, int data_){
  data_101(addr_,data_ >> 4);data_101(addr_+1,data_ &0b1111);
  Serial.print(data_ >> 4,BIN);
  Serial.println(data_ &0b1111,BIN);
  
  }

void data_100(int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b100 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 8; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
     delayMicroseconds(10);
  }

void data_101(int addr, int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b101 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 5; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (addr >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 0; i <=3; i++){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     }   
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
  }  

10

Re: Управление панелькой от магнитолы aura с драйвером ht1621

#define LCD_CS    13
#define LCD_WR    12
#define LCD_DATA  10

#define HT1621_BIAS                 0x52                    // 1/3duty 4com
#define HT1621_SYS_DIS              0x00                    // Turn off the oscillator system oscillator and LCD bias generator
#define HT1621_SYS_EN               0x02                    // Turn on the system oscillator
#define HT1621_LCD_OFF              0x04                    // Turn off LCD bias
#define HT1621_LCD_ON               0x06                    // Turn on the LCE bias
#define HT1621_XTAL                 0x28                    // external clock
#define HT1621_RC256                0x30                    // internal clock


void setup() {
  Serial.begin(9600);
  pinMode(LCD_CS, OUTPUT);
  pinMode(LCD_WR, OUTPUT);
  pinMode(LCD_DATA, OUTPUT);
  digitalWrite(LCD_CS,HIGH);
  digitalWrite(LCD_WR,HIGH);
  data_100(HT1621_SYS_EN); // Turn on the system oscillator
  data_100(HT1621_BIAS);   // BIAS 13 4 public ports
  data_100(HT1621_RC256);  // Use RC_256K system clock source, on-chip RC oscillator
  data_100(HT1621_LCD_ON);
  //clear_lcd();
}

void loop(){
  lcd_write(0,0b11111111);lcd_write(2,0b11111111);lcd_write(4,0b11111111);lcd_write(6,0b11111111);lcd_write(8,0b11111111);lcd_write(10,0b11111111);
  lcd_write(12,0b11111111);lcd_write(14,0b11111111);lcd_write(16,0b11111111);lcd_write(18,0b11111111);lcd_write(20,0b11111111);lcd_write(22,0b11111111);
  lcd_write(24,0b11111111);lcd_write(26,0b11111111);lcd_write(28,0b11111111);lcd_write(30,0b11111111);lcd_write(32,0b11111111);
  delay(500);
}



void clear_lcd(){for(int a=0;a<=32;a++){data_101(a,0);}}

void lcd_write(int addr_, int data_){
  data_101(addr_,data_ >> 4);data_101(addr_+1,data_ &0b1111);
  }

void data_100(int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b100 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 8; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
     delayMicroseconds(10);
  }

void data_101(int addr, int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b101 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 5; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (addr >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 0; i <=3; i++){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     }   
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
  }  

11

Re: Управление панелькой от магнитолы aura с драйвером ht1621

Побитовое смещение

Вот функция вывода

lcd_write(0,0b11111111);

Число 0b11111111 надо заменить на переменные

Каждая переменная это сегмент

Одноименные сегменты , например сегменты цифр-символов, должны называться одинаково, но и иметь информацию о разряде цифры - символа


lcd_write(0, num1[a_h1 << 7 | b_h1 << 6 | c_h1 << 5  | d_h1 << 4 | e_h1 << 3 | f_h1 << 2 | g_h1 << 1  | h_h1 ]);

Вот пример вывода 1 цифры которую я назвал h1

12

Re: Управление панелькой от магнитолы aura с драйвером ht1621

Вот скетч, он зажгет первые 8 сегментов, но медлено, что бы Вы могли пометить какой сегмент за что отвечает

#define LCD_CS    13
#define LCD_WR    12
#define LCD_DATA  10

#define HT1621_BIAS                 0x52                    // 1/3duty 4com
#define HT1621_SYS_DIS              0x00                    // Turn off the oscillator system oscillator and LCD bias generator
#define HT1621_SYS_EN               0x02                    // Turn on the system oscillator
#define HT1621_LCD_OFF              0x04                    // Turn off LCD bias
#define HT1621_LCD_ON               0x06                    // Turn on the LCE bias
#define HT1621_XTAL                 0x28                    // external clock
#define HT1621_RC256                0x30                    // internal clock


void setup() {
  Serial.begin(9600);
  pinMode(LCD_CS, OUTPUT);
  pinMode(LCD_WR, OUTPUT);
  pinMode(LCD_DATA, OUTPUT);
  digitalWrite(LCD_CS,HIGH);
  digitalWrite(LCD_WR,HIGH);
  data_100(HT1621_SYS_EN); // Turn on the system oscillator
  data_100(HT1621_BIAS);   // BIAS 13 4 public ports
  data_100(HT1621_RC256);  // Use RC_256K system clock source, on-chip RC oscillator
  data_100(HT1621_LCD_ON);
  clear_lcd();
}

void loop(){
  for(int i=0;i<8;i++){
  lcd_write(0,0b10000000 >> i);
  
  delay(1000);
  }
}



void clear_lcd(){for(int a=0;a<=32;a++){data_101(a,0);}}

void lcd_write(int addr_, int data_){
  data_101(addr_,data_ >> 4);data_101(addr_+1,data_ &0b1111);
  }

void data_100(int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b100 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 8; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
     delayMicroseconds(10);
  }

void data_101(int addr, int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b101 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 5; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (addr >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 0; i <=3; i++){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     }   
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
  }  

13

Re: Управление панелькой от магнитолы aura с драйвером ht1621

Поправьте delay(3000); если сильно медленно или наоборот быстро

#define LCD_CS    13
#define LCD_WR    12
#define LCD_DATA  10

#define HT1621_BIAS                 0x52                    // 1/3duty 4com
#define HT1621_SYS_DIS              0x00                    // Turn off the oscillator system oscillator and LCD bias generator
#define HT1621_SYS_EN               0x02                    // Turn on the system oscillator
#define HT1621_LCD_OFF              0x04                    // Turn off LCD bias
#define HT1621_LCD_ON               0x06                    // Turn on the LCE bias
#define HT1621_XTAL                 0x28                    // external clock
#define HT1621_RC256                0x30                    // internal clock


void setup() {
  Serial.begin(9600);
  pinMode(LCD_CS, OUTPUT);
  pinMode(LCD_WR, OUTPUT);
  pinMode(LCD_DATA, OUTPUT);
  digitalWrite(LCD_CS,HIGH);
  digitalWrite(LCD_WR,HIGH);
  data_100(HT1621_SYS_EN); // Turn on the system oscillator
  data_100(HT1621_BIAS);   // BIAS 13 4 public ports
  data_100(HT1621_RC256);  // Use RC_256K system clock source, on-chip RC oscillator
  data_100(HT1621_LCD_ON);
  clear_lcd();
}

void loop(){
  for(int i=0;i<=32;i+=2){
  Serial.print("Адрес: ");Serial.println(i);  
  
  for(int ii=0;ii<8;ii++){
  lcd_write(0,0b10000000 >> ii);
  Serial.println(ii);
  delay(3000);
  }
}
}



void clear_lcd(){for(int a=0;a<=32;a++){data_101(a,0);}}

void lcd_write(int addr_, int data_){
  data_101(addr_,data_ >> 4);data_101(addr_+1,data_ &0b1111);
  }

void data_100(int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b100 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 8; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
     delayMicroseconds(10);
  }

void data_101(int addr, int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b101 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 5; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (addr >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 0; i <=3; i++){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     }   
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
  }  

14

Re: Управление панелькой от магнитолы aura с драйвером ht1621

http://forum.rcl-radio.ru/uploads/images/2025/04/5f2d9006bd87f07a62215322b99b3cd8.png

15

Re: Управление панелькой от магнитолы aura с драйвером ht1621

http://forum.rcl-radio.ru/uploads/images/2025/04/094ea122f72164f85ada9baa6282184e.png

16

Re: Управление панелькой от магнитолы aura с драйвером ht1621

i и l объединены

17

Re: Управление панелькой от магнитолы aura с драйвером ht1621

Активна только одна цифра, должно выводить 0

#define LCD_CS    13
#define LCD_WR    12
#define LCD_DATA  10

#define HT1621_BIAS                 0x52                    // 1/3duty 4com
#define HT1621_SYS_DIS              0x00                    // Turn off the oscillator system oscillator and LCD bias generator
#define HT1621_SYS_EN               0x02                    // Turn on the system oscillator
#define HT1621_LCD_OFF              0x04                    // Turn off LCD bias
#define HT1621_LCD_ON               0x06                    // Turn on the LCE bias
#define HT1621_XTAL                 0x28                    // external clock
#define HT1621_RC256                0x30                    // internal clock

bool a[9], b[9], c[9], d[9], e[9], f[9], h[9], i[9], j[0], g1[9], g2[9], m[9], k[9];
bool seg_a,seg_b,seg_c,seg_d,seg_e,seg_f,seg_h,seg_i,seg_j,seg_g1,seg_g2,seg_m,seg_k;
int simvol[9];
bool af,tp,ta,bt;

void setup() {
  Serial.begin(9600);
  pinMode(LCD_CS, OUTPUT);
  pinMode(LCD_WR, OUTPUT);
  pinMode(LCD_DATA, OUTPUT);
  digitalWrite(LCD_CS,HIGH);
  digitalWrite(LCD_WR,HIGH);
  data_100(HT1621_SYS_EN); // Turn on the system oscillator
  data_100(HT1621_BIAS);   // BIAS 13 4 public ports
  data_100(HT1621_RC256);  // Use RC_256K system clock source, on-chip RC oscillator
  data_100(HT1621_LCD_ON);
  clear_lcd();
}

void loop(){
  segm[0];
  a[0]=seg_a,b[0]=seg_b,c[0]=seg_c,d[0]=seg_d,e[0]=seg_e,f[0]=seg_f,h[0]=seg_h,i[0]=seg_i,j[0]=seg_j,g1[0]=seg_g1,g2[0]=seg_g2,m[0]=seg_m,k[0]=seg_k;
   
  lcd_write(0,  k[0]<<7 | c[0]<<6 | i[0]<<5 | b[0]<<4 | g2[0]<<3 | ta<<2 | tp<<1 | af);
  lcd_write(2,  m[0]<<7 | e[0]<<6 | h[0]<<5 | f[0]<<4 | d[0]<<3 | g1[0]<<2 | i[0]<<1| a[0]);
  delay(100);
  }


int segm(int cif){
  switch(cif){
    case 0: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//0
    
    }
    
    return seg_a,seg_b,seg_c,seg_d,seg_e,seg_f,seg_h,seg_i,seg_j,seg_g1,seg_g2,seg_m,seg_k;
  }  

void clear_lcd(){for(int a=0;a<=32;a++){data_101(a,0);}}

void lcd_write(int addr_, int data_){
  data_101(addr_,data_ >> 4);data_101(addr_+1,data_ &0b1111);
  }

void data_100(int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b100 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 8; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
     delayMicroseconds(10);
  }

void data_101(int addr, int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b101 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 5; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (addr >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 0; i <=3; i++){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     }   
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
  }  

18

Re: Управление панелькой от магнитолы aura с драйвером ht1621

http://forum.rcl-radio.ru/uploads/images/2025/04/55cc0962f145795a7df43946b2d8c545.png

19

Re: Управление панелькой от магнитолы aura с драйвером ht1621

#define LCD_CS    13
#define LCD_WR    12
#define LCD_DATA  10

#define HT1621_BIAS                 0x52                    // 1/3duty 4com
#define HT1621_SYS_DIS              0x00                    // Turn off the oscillator system oscillator and LCD bias generator
#define HT1621_SYS_EN               0x02                    // Turn on the system oscillator
#define HT1621_LCD_OFF              0x04                    // Turn off LCD bias
#define HT1621_LCD_ON               0x06                    // Turn on the LCE bias
#define HT1621_XTAL                 0x28                    // external clock
#define HT1621_RC256                0x30                    // internal clock

bool a[9], b[9], c[9], d[9], e[9], f[9], h[9], i[9], j[0], g1[9], g2[9], m[9], k[9];
bool seg_a,seg_b,seg_c,seg_d,seg_e,seg_f,seg_h,seg_i,seg_j,seg_g1,seg_g2,seg_m,seg_k;
bool af,tp,ta,bt;

void setup() {
  Serial.begin(9600);
  pinMode(LCD_CS, OUTPUT);
  pinMode(LCD_WR, OUTPUT);
  pinMode(LCD_DATA, OUTPUT);
  digitalWrite(LCD_CS,HIGH);
  digitalWrite(LCD_WR,HIGH);
  data_100(HT1621_SYS_EN); // Turn on the system oscillator
  data_100(HT1621_BIAS);   // BIAS 13 4 public ports
  data_100(HT1621_RC256);  // Use RC_256K system clock source, on-chip RC oscillator
  data_100(HT1621_LCD_ON);
  clear_lcd();
}

void loop(){
  segm(0);hhh(0);
 // Serial.println(a[0]);
  lcd_write(0,  k[0]<<7 | c[0]<<6 | i[0]<<5 | b[0]<<4 | g2[0]<<3 | ta<<2 | tp<<1 | af);
  lcd_write(2,  m[0]<<7 | e[0]<<6 | h[0]<<5 | f[0]<<4 | d[0]<<3 | g1[0]<<2 | i[0]<<1| a[0]);
  delay(1000);
  }

void hhh(int hh){
  a[hh]=seg_a,b[hh]=seg_b,c[hh]=seg_c,d[hh]=seg_d,e[hh]=seg_e,f[hh]=seg_f,h[hh]=seg_h,i[hh]=seg_i,j[hh]=seg_j,g1[hh]=seg_g1,g2[hh]=seg_g2,m[hh]=seg_m,k[hh]=seg_k;
  }

void segm(int cif){
  switch(cif){
    case 0: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//0
    case 1: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//0
    }

  }  

void clear_lcd(){for(int a=0;a<=32;a++){data_101(a,0);}}

void lcd_write(int addr_, int data_){
  data_101(addr_,data_ >> 4);data_101(addr_+1,data_ &0b1111);
  }

void data_100(int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b100 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 8; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
     delayMicroseconds(10);
  }

void data_101(int addr, int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b101 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 5; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (addr >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 0; i <=3; i++){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     }   
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
  }  

20

Re: Управление панелькой от магнитолы aura с драйвером ht1621

Должно светиться af

#define LCD_CS    13
#define LCD_WR    12
#define LCD_DATA  10

#define HT1621_BIAS                 0x52                    // 1/3duty 4com
#define HT1621_SYS_DIS              0x00                    // Turn off the oscillator system oscillator and LCD bias generator
#define HT1621_SYS_EN               0x02                    // Turn on the system oscillator
#define HT1621_LCD_OFF              0x04                    // Turn off LCD bias
#define HT1621_LCD_ON               0x06                    // Turn on the LCE bias
#define HT1621_XTAL                 0x28                    // external clock
#define HT1621_RC256                0x30                    // internal clock

bool a[9], b[9], c[9], d[9], e[9], f[9], h[9], i[9], j[0], g1[9], g2[9], m[9], k[9];
bool seg_a,seg_b,seg_c,seg_d,seg_e,seg_f,seg_h,seg_i,seg_j,seg_g1,seg_g2,seg_m,seg_k;
bool af,tp,ta,bt;

void setup() {
  Serial.begin(9600);
  pinMode(LCD_CS, OUTPUT);
  pinMode(LCD_WR, OUTPUT);
  pinMode(LCD_DATA, OUTPUT);
  digitalWrite(LCD_CS,HIGH);
  digitalWrite(LCD_WR,HIGH);
  data_100(HT1621_SYS_EN); // Turn on the system oscillator
  data_100(HT1621_BIAS);   // BIAS 13 4 public ports
  data_100(HT1621_RC256);  // Use RC_256K system clock source, on-chip RC oscillator
  data_100(HT1621_LCD_ON);
  clear_lcd();
}

void loop(){
 // segm(0);hhh(0);
 // Serial.println(a[0]);
 af=1;
  lcd_write(0,  k[0]<<7 | c[0]<<6 | i[0]<<5 | b[0]<<4 | g2[0]<<3 | ta<<2 | tp<<1 | af);
  lcd_write(2,  m[0]<<7 | e[0]<<6 | h[0]<<5 | f[0]<<4 | d[0]<<3 | g1[0]<<2 | i[0]<<1| a[0]);
  delay(1000);
  }

void hhh(int hh){
  a[hh]=seg_a,b[hh]=seg_b,c[hh]=seg_c,d[hh]=seg_d,e[hh]=seg_e,f[hh]=seg_f,h[hh]=seg_h,i[hh]=seg_i,j[hh]=seg_j,g1[hh]=seg_g1,g2[hh]=seg_g2,m[hh]=seg_m,k[hh]=seg_k;
  }

void segm(int cif){
  switch(cif){
    case 0: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//0
    case 1: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//0
    }

  }  

void clear_lcd(){for(int a=0;a<=32;a++){data_101(a,0);}}

void lcd_write(int addr_, int data_){
  data_101(addr_,data_ >> 4);data_101(addr_+1,data_ &0b1111);
  }

void data_100(int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b100 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 8; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
     delayMicroseconds(10);
  }

void data_101(int addr, int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b101 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 5; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (addr >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 0; i <=3; i++){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     }   
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
  }  

21

Re: Управление панелькой от магнитолы aura с драйвером ht1621

#define LCD_CS    13
#define LCD_WR    12
#define LCD_DATA  10

#define HT1621_BIAS                 0x52                    // 1/3duty 4com
#define HT1621_SYS_DIS              0x00                    // Turn off the oscillator system oscillator and LCD bias generator
#define HT1621_SYS_EN               0x02                    // Turn on the system oscillator
#define HT1621_LCD_OFF              0x04                    // Turn off LCD bias
#define HT1621_LCD_ON               0x06                    // Turn on the LCE bias
#define HT1621_XTAL                 0x28                    // external clock
#define HT1621_RC256                0x30                    // internal clock

bool a[9], b[9], c[9], d[9], e[9], f[9], h[9], i[9], j[0], g1[9], g2[9], m[9], k[9];
bool seg_a,seg_b,seg_c,seg_d,seg_e,seg_f,seg_h,seg_i,seg_j,seg_g1,seg_g2,seg_m,seg_k;
bool af,tp,ta,bt;

void setup() {
  Serial.begin(9600);
  pinMode(LCD_CS, OUTPUT);
  pinMode(LCD_WR, OUTPUT);
  pinMode(LCD_DATA, OUTPUT);
  digitalWrite(LCD_CS,HIGH);
  digitalWrite(LCD_WR,HIGH);
  data_100(HT1621_SYS_EN); // Turn on the system oscillator
  data_100(HT1621_BIAS);   // BIAS 13 4 public ports
  data_100(HT1621_RC256);  // Use RC_256K system clock source, on-chip RC oscillator
  data_100(HT1621_LCD_ON);
  clear_lcd();
}

void loop(){
 // segm(0);hhh(0);

// Serial.println(k[0]<<0 | c[0]<<1 | i[0]<<2 | b[0]<<3 | g2[0]<<4 | ta<<5 | tp<<6 | af<<7);
 af=1;
  lcd_write(0,  k[0]<<0 | c[0]<<1 | i[0]<<2 | b[0]<<3 | g2[0]<<4 | ta<<5 | tp<<6 | af<<7);
  lcd_write(2,  m[0]<<0 | e[0]<<1 | h[0]<<2 | f[0]<<3 | d[0]<<4 | g1[0]<<5 | i[0]<<6| a[0]<<7);
  
  delay(1000);
  }

void hhh(int hh){
  a[hh]=seg_a,b[hh]=seg_b,c[hh]=seg_c,d[hh]=seg_d,e[hh]=seg_e,f[hh]=seg_f,h[hh]=seg_h,i[hh]=seg_i,j[hh]=seg_j,g1[hh]=seg_g1,g2[hh]=seg_g2,m[hh]=seg_m,k[hh]=seg_k;
  }

void segm(int cif){
  switch(cif){
    case 0: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//0
    case 1: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//0
    }

  }  

void clear_lcd(){for(int a=0;a<=32;a++){data_101(a,0);}}

void lcd_write(int addr_, int data_){
  data_101(addr_,data_ >> 4);data_101(addr_+1,data_ &0b1111);
  }

void data_100(int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b100 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 8; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
     delayMicroseconds(10);
  }

void data_101(int addr, int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b101 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 5; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (addr >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 0; i <=3; i++){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     }   
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
  }  

22

Re: Управление панелькой от магнитолы aura с драйвером ht1621

#define LCD_CS    13
#define LCD_WR    12
#define LCD_DATA  10

#define HT1621_BIAS                 0x52                    // 1/3duty 4com
#define HT1621_SYS_DIS              0x00                    // Turn off the oscillator system oscillator and LCD bias generator
#define HT1621_SYS_EN               0x02                    // Turn on the system oscillator
#define HT1621_LCD_OFF              0x04                    // Turn off LCD bias
#define HT1621_LCD_ON               0x06                    // Turn on the LCE bias
#define HT1621_XTAL                 0x28                    // external clock
#define HT1621_RC256                0x30                    // internal clock

bool a[9], b[9], c[9], d[9], e[9], f[9], h[9], i[9], j[0], g1[9], g2[9], m[9], k[9];
bool seg_a,seg_b,seg_c,seg_d,seg_e,seg_f,seg_h,seg_i,seg_j,seg_g1,seg_g2,seg_m,seg_k;
bool af,tp,ta,bt;

void setup() {
  Serial.begin(9600);
  pinMode(LCD_CS, OUTPUT);
  pinMode(LCD_WR, OUTPUT);
  pinMode(LCD_DATA, OUTPUT);
  digitalWrite(LCD_CS,HIGH);
  digitalWrite(LCD_WR,HIGH);
  data_100(HT1621_SYS_EN); // Turn on the system oscillator
  data_100(HT1621_BIAS);   // BIAS 13 4 public ports
  data_100(HT1621_RC256);  // Use RC_256K system clock source, on-chip RC oscillator
  data_100(HT1621_LCD_ON);
  clear_lcd();
}

void loop(){
  segm(0);hhh(0);

// Serial.println(k[0]<<0 | c[0]<<1 | i[0]<<2 | b[0]<<3 | g2[0]<<4 | ta<<5 | tp<<6 | af<<7);
 
  lcd_write(0,  k[0]<<0 | c[0]<<1 | i[0]<<2 | b[0]<<3 | g2[0]<<4 | ta<<5 | tp<<6 | af<<7);
  lcd_write(2,  m[0]<<0 | e[0]<<1 | h[0]<<2 | f[0]<<3 | d[0]<<4 | g1[0]<<5 | i[0]<<6| a[0]<<7);
  
  delay(1000);
  }

void hhh(int hh){
  a[hh]=seg_a,b[hh]=seg_b,c[hh]=seg_c,d[hh]=seg_d,e[hh]=seg_e,f[hh]=seg_f,h[hh]=seg_h,i[hh]=seg_i,j[hh]=seg_j,g1[hh]=seg_g1,g2[hh]=seg_g2,m[hh]=seg_m,k[hh]=seg_k;
  }

void segm(int cif){
  switch(cif){
    case 0: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//0
    case 1: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//0
    }

  }  

void clear_lcd(){for(int a=0;a<=32;a++){data_101(a,0);}}

void lcd_write(int addr_, int data_){
  data_101(addr_,data_ >> 4);data_101(addr_+1,data_ &0b1111);
  }

void data_100(int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b100 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 8; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
     delayMicroseconds(10);
  }

void data_101(int addr, int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b101 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 5; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (addr >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 0; i <=3; i++){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     }   
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
  }  

23

Re: Управление панелькой от магнитолы aura с драйвером ht1621

#define LCD_CS    13
#define LCD_WR    12
#define LCD_DATA  10

#define HT1621_BIAS                 0x52                    // 1/3duty 4com
#define HT1621_SYS_DIS              0x00                    // Turn off the oscillator system oscillator and LCD bias generator
#define HT1621_SYS_EN               0x02                    // Turn on the system oscillator
#define HT1621_LCD_OFF              0x04                    // Turn off LCD bias
#define HT1621_LCD_ON               0x06                    // Turn on the LCE bias
#define HT1621_XTAL                 0x28                    // external clock
#define HT1621_RC256                0x30                    // internal clock

bool a[9], b[9], c[9], d[9], e[9], f[9], h[9], i[9], j[0], g1[9], g2[9], m[9], k[9];
bool seg_a,seg_b,seg_c,seg_d,seg_e,seg_f,seg_h,seg_i,seg_j,seg_g1,seg_g2,seg_m,seg_k;
bool af,tp,ta,bt,dp;

void setup() {
  Serial.begin(9600);
  pinMode(LCD_CS, OUTPUT);
  pinMode(LCD_WR, OUTPUT);
  pinMode(LCD_DATA, OUTPUT);
  digitalWrite(LCD_CS,HIGH);
  digitalWrite(LCD_WR,HIGH);
  data_100(HT1621_SYS_EN); // Turn on the system oscillator
  data_100(HT1621_BIAS);   // BIAS 13 4 public ports
  data_100(HT1621_RC256);  // Use RC_256K system clock source, on-chip RC oscillator
  data_100(HT1621_LCD_ON);
  clear_lcd();
}

void loop(){
  segm(0);hhh(0);
  segm(0);hhh(1);

// Serial.println(k[0]<<0 | c[0]<<1 | i[0]<<2 | b[0]<<3 | g2[0]<<4 | ta<<5 | tp<<6 | af<<7);
 
  lcd_write(0,  k[0]<<0 | c[0]<<1 | i[0]<<2 | b[0]<<3 | g2[0]<<4 | ta<<5 | tp<<6 | af<<7);
  lcd_write(2,  m[0]<<0 | e[0]<<1 | h[0]<<2 | f[0]<<3 | d[0]<<4 | g1[0]<<5 | i[0]<<6| a[0]<<7);
  
  lcd_write(4,  d[1]<<0 | g1[1]<<1 | i[1]<<2 | a[1]<<3 | k[1]<<4 | c[1]<<5 | j[1]<<6 | b[1]<<7);
  lcd_write(6,  g2[2]<<0 | g2[1]<<1 | dp<<2 | bt<<3 | m[1]<<4 | e[1]<<5 | h[1]<<6 | f[1]<<7);


  
  delay(1000);
  }

void hhh(int hh){
  a[hh]=seg_a,b[hh]=seg_b,c[hh]=seg_c,d[hh]=seg_d,e[hh]=seg_e,f[hh]=seg_f,h[hh]=seg_h,i[hh]=seg_i,j[hh]=seg_j,g1[hh]=seg_g1,g2[hh]=seg_g2,m[hh]=seg_m,k[hh]=seg_k;
  }

void segm(int cif){
  switch(cif){
    case 0: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//0
    case 1: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//0
    }

  }  

void clear_lcd(){for(int a=0;a<=32;a++){data_101(a,0);}}

void lcd_write(int addr_, int data_){
  data_101(addr_,data_ >> 4);data_101(addr_+1,data_ &0b1111);
  }

void data_100(int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b100 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 8; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
     delayMicroseconds(10);
  }

void data_101(int addr, int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b101 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 5; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (addr >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 0; i <=3; i++){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     }   
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
  }  

24

Re: Управление панелькой от магнитолы aura с драйвером ht1621

#define LCD_CS    13
#define LCD_WR    12
#define LCD_DATA  10

#define HT1621_BIAS                 0x52                    // 1/3duty 4com
#define HT1621_SYS_DIS              0x00                    // Turn off the oscillator system oscillator and LCD bias generator
#define HT1621_SYS_EN               0x02                    // Turn on the system oscillator
#define HT1621_LCD_OFF              0x04                    // Turn off LCD bias
#define HT1621_LCD_ON               0x06                    // Turn on the LCE bias
#define HT1621_XTAL                 0x28                    // external clock
#define HT1621_RC256                0x30                    // internal clock

bool a[9], b[9], c[9], d[9], e[9], f[9], h[9], i[9], j[0], g1[9], g2[9], m[9], k[9];
bool seg_a,seg_b,seg_c,seg_d,seg_e,seg_f,seg_h,seg_i,seg_j,seg_g1,seg_g2,seg_m,seg_k;
bool af,tp,ta,bt,dp;

void setup() {
  Serial.begin(9600);
  pinMode(LCD_CS, OUTPUT);
  pinMode(LCD_WR, OUTPUT);
  pinMode(LCD_DATA, OUTPUT);
  digitalWrite(LCD_CS,HIGH);
  digitalWrite(LCD_WR,HIGH);
  data_100(HT1621_SYS_EN); // Turn on the system oscillator
  data_100(HT1621_BIAS);   // BIAS 13 4 public ports
  data_100(HT1621_RC256);  // Use RC_256K system clock source, on-chip RC oscillator
  data_100(HT1621_LCD_ON);
  clear_lcd();
}

void loop(){
  segm(0);hhh(0);
  segm(0);hhh(1);

// Serial.println(k[0]<<0 | c[0]<<1 | i[0]<<2 | b[0]<<3 | g2[0]<<4 | ta<<5 | tp<<6 | af<<7);
 
  lcd_write(0,  k[0]<<0 | c[0]<<1 | i[0]<<2 | b[0]<<3 | g2[0]<<4 | ta<<5 | tp<<6 | af<<7);
  lcd_write(2,  m[0]<<0 | e[0]<<1 | h[0]<<2 | f[0]<<3 | d[0]<<4 | g1[0]<<5 | i[0]<<6| a[0]<<7);
  
//  lcd_write(4,  d[1]<<0 | g1[1]<<1 | i[1]<<2 | a[1]<<3 | k[1]<<4 | c[1]<<5 | j[1]<<6 | b[1]<<7);
//  lcd_write(6,  g2[2]<<0 | g2[1]<<1 | dp<<2 | bt<<3 | m[1]<<4 | e[1]<<5 | h[1]<<6 | f[1]<<7);


  
  delay(1000);
  }

void hhh(int hh){
  a[hh]=seg_a,b[hh]=seg_b,c[hh]=seg_c,d[hh]=seg_d,e[hh]=seg_e,f[hh]=seg_f,h[hh]=seg_h,i[hh]=seg_i,j[hh]=seg_j,g1[hh]=seg_g1,g2[hh]=seg_g2,m[hh]=seg_m,k[hh]=seg_k;
  }

void segm(int cif){
  switch(cif){
    case 0: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//0
   
    }

  }  

void clear_lcd(){for(int a=0;a<=32;a++){data_101(a,0);}}

void lcd_write(int addr_, int data_){
  data_101(addr_,data_ >> 4);data_101(addr_+1,data_ &0b1111);
  }

void data_100(int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b100 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 8; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
     delayMicroseconds(10);
  }

void data_101(int addr, int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b101 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 5; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (addr >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 0; i <=3; i++){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     }   
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
  }  

25

Re: Управление панелькой от магнитолы aura с драйвером ht1621

#define LCD_CS    13
#define LCD_WR    12
#define LCD_DATA  10

#define HT1621_BIAS                 0x52                    // 1/3duty 4com
#define HT1621_SYS_DIS              0x00                    // Turn off the oscillator system oscillator and LCD bias generator
#define HT1621_SYS_EN               0x02                    // Turn on the system oscillator
#define HT1621_LCD_OFF              0x04                    // Turn off LCD bias
#define HT1621_LCD_ON               0x06                    // Turn on the LCE bias
#define HT1621_XTAL                 0x28                    // external clock
#define HT1621_RC256                0x30                    // internal clock

bool a[9], b[9], c[9], d[9], e[9], f[9], h[9], i[9], j[9], g1[9], g2[9], m[9], k[9];
bool seg_a,seg_b,seg_c,seg_d,seg_e,seg_f,seg_h,seg_i,seg_j,seg_g1,seg_g2,seg_m,seg_k;
bool af,tp,ta,bt,dp;

void setup() {
  Serial.begin(9600);
  pinMode(LCD_CS, OUTPUT);
  pinMode(LCD_WR, OUTPUT);
  pinMode(LCD_DATA, OUTPUT);
  digitalWrite(LCD_CS,HIGH);
  digitalWrite(LCD_WR,HIGH);
  data_100(HT1621_SYS_EN); // Turn on the system oscillator
  data_100(HT1621_BIAS);   // BIAS 13 4 public ports
  data_100(HT1621_RC256);  // Use RC_256K system clock source, on-chip RC oscillator
  data_100(HT1621_LCD_ON);
  clear_lcd();
}

void loop(){
  segm(0);hhh(0);
  segm(0);hhh(1);
  segm(0);hhh(2);

 
                //  7        6         5         4         3          2        1         0
  lcd_write(0,  k[0]<<0 | c[0]<<1 | i[0]<<2 | b[0]<<3 | g2[0]<<4 | ta<<5 | tp<<6 | af<<7);
  lcd_write(2,  m[0]<<0 | e[0]<<1 | h[0]<<2 | f[0]<<3 | d[0]<<4 | g1[0]<<5 | i[0]<<6| a[0]<<7);
                //  7        6         5         4         3          2        1         0
  lcd_write(4,  d[1]<<0 | g1[1]<<1 | i[1]<<2 | a[1]<<3 | k[1]<<4 | c[1]<<5 | j[1]<<6 | b[1]<<7);
  lcd_write(6,  g2[2]<<0 | g2[1]<<1 | dp<<2 | bt<<3 | m[1]<<4 | e[1]<<5 | h[1]<<6 | f[1]<<7);

Serial.println(a[0]);
Serial.println(a[1]);
Serial.println(a[2]);
  
  delay(1000);
  }

void hhh(int hh){
  a[hh]=seg_a,b[hh]=seg_b,c[hh]=seg_c,d[hh]=seg_d,e[hh]=seg_e,f[hh]=seg_f,h[hh]=seg_h,i[hh]=seg_i,j[hh]=seg_j,g1[hh]=seg_g1,g2[hh]=seg_g2,m[hh]=seg_m,k[hh]=seg_k;
  }

void segm(int cif){
  switch(cif){
    case 0: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//0
   
    }

  }  

void clear_lcd(){for(int a=0;a<=32;a++){data_101(a,0);}}

void lcd_write(int addr_, int data_){
  data_101(addr_,data_ >> 4);data_101(addr_+1,data_ &0b1111);
  }

void data_100(int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b100 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 8; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
     delayMicroseconds(10);
  }

void data_101(int addr, int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b101 >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 5; i >=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (addr >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 0; i <=3; i++){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data >> i) & 1); 
     digitalWrite(LCD_WR,HIGH);
     }   
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
  }