76

Re: управление драйвером жк lc75823

Давайте попробуем протестировать скетч, должны гореть все сегменты первой цифры, все остальное погашено.

#define CE  9
#define CL  8
#define DI  7

int w;

void setup() {
  Serial.begin(9600);
  pinMode(CE, OUTPUT);
  pinMode(CL, OUTPUT);
  pinMode(DI, OUTPUT);
  digitalWrite(CE,LOW);
  digitalWrite(CL,LOW);
  delay(200);
  write_byte(0x41, 0b0, 0b1111111111111111,     0b0000);

}

void loop() {
  // put your main code here, to run repeatedly:

}

void write_byte(byte addr, unsigned long b0, unsigned long b1,  byte contr){
  /// addr 8 bit
     digitalWrite(CE,LOW);
   for(int i = 0; i <= 7; i++){
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (addr >> i) & 1); 
     //Serial.print((addr >> i) & 1); 
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(CE,HIGH);
 
// data 156 bit
  // 1-24 seg
     for(int i = 0;i <= 23; i++){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (b0 >> i) & 1);
   //  Serial.print((b0 >> i) & 1); 
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 

// 25 26 27 28 29 30 31 32_ 33_ 34 35 36_ 37 38 39 40
     for(int i = 0;i <= 15; i++){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (b1 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 

    
     for(int i = 0;i <= 31; i++){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (0 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 

     for(int i = 0;i <= 31; i++){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (0 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 

     for(int i = 0;i <= 31; i++){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (0 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 

     for(int i = 0;i <= 20; i++){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (0 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 
     
     
// control data 4 bit     
for(int i = 3; i >= 0; i--){
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (contr >> i) & 1);
  //   Serial.print((contr >> i) & 1); 
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 
     digitalWrite(CE,LOW);
     digitalWrite(CL,LOW);
     delay(10);
  }  

77

Re: управление драйвером жк lc75823

http://forum.rcl-radio.ru/uploads/images/2024/03/ed80cd2ad098802759331043fcbec690.jpeg
Забыл сказать, в цифрах горизонтальный, тентральный значёк он один

78

Re: управление драйвером жк lc75823

Почему горит 20 сегмент, по коду он не должен гореть

79

Re: управление драйвером жк lc75823

http://forum.rcl-radio.ru/uploads/images/2024/03/7d045ae6007d737e93ba4ac6e7641abb.png  я имел в виду сигменты L и сигмент M

80 (2024-03-19 20:38:50 отредактировано vladbuharkin20)

Re: управление драйвером жк lc75823

они совмещены в один. о то что загорелось лишнее, горит не 20 а 17

81

Re: управление драйвером жк lc75823

Ну да 17, но он не должен гореть

82

Re: управление драйвером жк lc75823

Ну с этим можно разобраться потом.

По рисунку видно что все сегменты цифр подключены хаотично, все по разному, поэтому придется что-то придумать что бы не писать код цифр для каждого разряда отдельно.

Ну давайте еще один эксперимент , выведем цифру 7

#define CE  9
#define CL  8
#define DI  7

int w;

void setup() {
  Serial.begin(9600);
  pinMode(CE, OUTPUT);
  pinMode(CL, OUTPUT);
  pinMode(DI, OUTPUT);
  digitalWrite(CE,LOW);
  digitalWrite(CL,LOW);
  delay(200);
  write_byte(0x41, 0b0, 0b1000000001100000  ,     0b0000);

}

void loop() {
  // put your main code here, to run repeatedly:

}

void write_byte(byte addr, unsigned long b0, unsigned long b1,  byte contr){
  /// addr 8 bit
     digitalWrite(CE,LOW);
   for(int i = 0; i <= 7; i++){
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (addr >> i) & 1); 
     //Serial.print((addr >> i) & 1); 
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(CE,HIGH);
 
// data 156 bit
  // 1-24 seg
     for(int i = 0;i <= 23; i++){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (b0 >> i) & 1);
   //  Serial.print((b0 >> i) & 1); 
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 

// 25 26 27 28 29 30 31 32_ 33_ 34 35 36_ 37 38 39 40
// 1  0   0  0  0  0  0  0   0   1  1  0   0  0  0  0  
     for(int i = 0;i <= 15; i++){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (b1 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 
   
     for(int i = 0;i <= 31; i++){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (0 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 

     for(int i = 0;i <= 31; i++){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (0 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 

     for(int i = 0;i <= 31; i++){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (0 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 

     for(int i = 0;i <= 20; i++){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (0 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 
     
     
// control data 4 bit     
for(int i = 3; i >= 0; i--){
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (contr >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 
     digitalWrite(CE,LOW);
     digitalWrite(CL,LOW);
     delay(10);
  }  

83 (2024-03-19 20:49:45 отредактировано vladbuharkin20)

Re: управление драйвером жк lc75823

мне меня удалось потушить этот сигмент

// 25 26 27 28 29 30 31 32_ 33_ 34 35 36_ 37 38 39 40
     for(int i = 0;i <= 14; i++){// ------ вот здесь поставил 14
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (b1 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     }
я 15 поменял на 14

84

Re: управление драйвером жк lc75823

liman324 пишет:

Ну с этим можно разобраться потом.

По рисунку видно что все сегменты цифр подключены хаотично, все по разному, поэтому придется что-то придумать что бы не писать код цифр для каждого разряда отдельно.

Ну давайте еще один эксперимент , выведем цифру 7

#define CE  9
#define CL  8
#define DI  7

int w;

void setup() {
  Serial.begin(9600);
  pinMode(CE, OUTPUT);
  pinMode(CL, OUTPUT);
  pinMode(DI, OUTPUT);
  digitalWrite(CE,LOW);
  digitalWrite(CL,LOW);
  delay(200);
  write_byte(0x41, 0b0, 0b1000000001100000  ,     0b0000);

}

void loop() {
  // put your main code here, to run repeatedly:

}

void write_byte(byte addr, unsigned long b0, unsigned long b1,  byte contr){
  /// addr 8 bit
     digitalWrite(CE,LOW);
   for(int i = 0; i <= 7; i++){
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (addr >> i) & 1); 
     //Serial.print((addr >> i) & 1); 
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(CE,HIGH);
 
// data 156 bit
  // 1-24 seg
     for(int i = 0;i <= 23; i++){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (b0 >> i) & 1);
   //  Serial.print((b0 >> i) & 1); 
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 

// 25 26 27 28 29 30 31 32_ 33_ 34 35 36_ 37 38 39 40
// 1  0   0  0  0  0  0  0   0   1  1  0   0  0  0  0  
     for(int i = 0;i <= 15; i++){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (b1 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 
   
     for(int i = 0;i <= 31; i++){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (0 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 

     for(int i = 0;i <= 31; i++){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (0 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 

     for(int i = 0;i <= 31; i++){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (0 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 

     for(int i = 0;i <= 20; i++){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (0 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 
     
     
// control data 4 bit     
for(int i = 3; i >= 0; i--){
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (contr >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 
     digitalWrite(CE,LOW);
     digitalWrite(CL,LOW);
     delay(10);
  }  

этот вообще фигню выводит

85

Re: управление драйвером жк lc75823

http://forum.rcl-radio.ru/uploads/images/2024/03/b5d947e5f6c0e3127fc3a5bb85d534b0.jpeg
Вот такую

86

Re: управление драйвером жк lc75823

Ну так то верно, я три сегмента зажог, просто не те

87

Re: управление драйвером жк lc75823

Путаница с сегментами, придется по новой проверять

Вот строка

write_byte(0x41, 0b0, 0b1000000001100000  ,     0b0000);

замените на

write_byte(0x41, 0b0, 0b100000000000000  ,     0b0000);

потом на

write_byte(0x41, 0b0, 0b010000000000000  ,     0b0000);

потом на

write_byte(0x41, 0b0, 0b001000000000000  ,     0b0000);

и так далее

каждый раз записывайте какой бит относится к какому сегменту

другого решения я не вижу, у Вас получается 17 сегмент вдруг оказался 40

Давайте установим такой порядок сегментов

http://forum.rcl-radio.ru/uploads/images/2024/03/fc24b23280fa4e143e81c798ebd78cc7.png

88

Re: управление драйвером жк lc75823

да нет, я отправляю 40 и загорается сигмент из таблицы под номером 40, так же и с 17

89

Re: управление драйвером жк lc75823

http://forum.rcl-radio.ru/uploads/images/2024/03/2b09a5a77eb4bbe933cd638792caeefb.jpeg http://forum.rcl-radio.ru/uploads/images/2024/03/ffa6338f705279444174e58d57219e9f.jpeg
Вот отправил 40

90

Re: управление драйвером жк lc75823

а в общем, что щас от меня требуется сделать?

91

Re: управление драйвером жк lc75823

Давайте еще попробуем зажечь цифру 7

#define CE  9
#define CL  8
#define DI  7

int w;

void setup() {
  Serial.begin(9600);
  pinMode(CE, OUTPUT);
  pinMode(CL, OUTPUT);
  pinMode(DI, OUTPUT);
  digitalWrite(CE,LOW);
  digitalWrite(CL,LOW);
  delay(200);
  write_byte(0x41, 0b0, 0b0100000001100000  ,     0b0000);

}

void loop() {
  // put your main code here, to run repeatedly:

}

void write_byte(byte addr, unsigned long b0, unsigned long b1,  byte contr){
  /// addr 8 bit
     digitalWrite(CE,LOW);
   for(int i = 0; i <= 7; i++){
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (addr >> i) & 1); 
     //Serial.print((addr >> i) & 1); 
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(CE,HIGH);
 
// data 156 bit
  // 1-24 seg
     for(int i = 23;i >= 0; i--){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (b0 >> i) & 1);
   //  Serial.print((b0 >> i) & 1); 
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 

// 25 26 27 28 29 30 31 32_ 33_ 34 35 36_ 37 38 39 40
// 0  1   0  0  0  0  0  0   0   1  1  0   0  0  0  0  
     for(int i = 15;i >= 0; i--){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (b1 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 
   
     for(int i = 0;i <= 31; i++){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (0 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 

     for(int i = 0;i <= 31; i++){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (0 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 

     for(int i = 0;i <= 31; i++){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (0 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 

     for(int i = 0;i <= 21; i++){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (0 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 
     
     
// control data 4 bit     
for(int i = 3; i >= 0; i--){
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (contr >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 
     digitalWrite(CE,LOW);
     digitalWrite(CL,LOW);
     delay(10);
  }  

92

Re: управление драйвером жк lc75823

загорелись 40,17,25

93

Re: управление драйвером жк lc75823

Я зажигал 26 34 35

// 25 26 27 28 29 30 31 32_ 33_ 34 35 36_ 37 38 39 40
// 0  1   0  0  0  0  0  0   0   1  1  0   0  0  0  0

17 вообще относится к первому байту, я начинаю с 25 по 40, с 1 по 24 одни нули

94

Re: управление драйвером жк lc75823

значит где-то есть ошибка

95

Re: управление драйвером жк lc75823

Вот я передаю 24 бита, а потом 16 для цифры

http://forum.rcl-radio.ru/uploads/images/2024/03/9153aa541370d075b57e1553c2ef3623.png

96

Re: управление драйвером жк lc75823

1 байт это сегменты с 1 по 24
2 байт это сегменты с 25 по 40

97

Re: управление драйвером жк lc75823

я кажется понял, он не может принимать данные по отдельности, а только единым битом состоящим из 156 байт

98

Re: управление драйвером жк lc75823

необходимо всё в месте передавать

99

Re: управление драйвером жк lc75823

Я передаю все вместе, просто байт 156 разделяю на несколько байт поменьше, но сигнал идет непрерывно.

Вот скетч тестирования первых 32 сегментов, каждые 3 секунды будет загораться один сегмент, запишите его положение, номер сегмента в мониторе порта, если 3 сек мало то увеличте это значение

#define CE  9
#define CL  8
#define DI  7

int w;
unsigned long www=1;

void setup() {
  Serial.begin(9600);
  pinMode(CE, OUTPUT);
  pinMode(CL, OUTPUT);
  pinMode(DI, OUTPUT);
  digitalWrite(CE,LOW);
  digitalWrite(CL,LOW);
  delay(200);
  write_byte(0x41, 0b0, 0b0  ,     0b0000);

}

void loop() {

 
  write_byte(0x41, 0b10000000000000000000000000000000, 0b0  ,     0b0000);
  Serial.println("1");
  delay(3000);
  write_byte(0x41, 0b01000000000000000000000000000000, 0b0  ,     0b0000);
  Serial.println("2");
  delay(3000);
  write_byte(0x41, 0b00100000000000000000000000000000, 0b0  ,     0b0000);
  Serial.println("3");
  delay(3000);
  write_byte(0x41, 0b00010000000000000000000000000000, 0b0  ,     0b0000);
  Serial.println("4");
  delay(3000);
  write_byte(0x41, 0b00001000000000000000000000000000, 0b0  ,     0b0000);
  Serial.println("5");
  delay(3000);
  write_byte(0x41, 0b00000100000000000000000000000000, 0b0  ,     0b0000);
  Serial.println("6");
  delay(3000);
  write_byte(0x41, 0b00000010000000000000000000000000, 0b0  ,     0b0000);
  Serial.println("7");
  delay(3000);
  write_byte(0x41, 0b00000001000000000000000000000000, 0b0  ,     0b0000);
  Serial.println("8");
  delay(3000);
  write_byte(0x41, 0b00000000100000000000000000000000, 0b0  ,     0b0000);
  Serial.println("9");
  delay(3000);
  write_byte(0x41, 0b00000000010000000000000000000000, 0b0  ,     0b0000);
  Serial.println("10");
  delay(3000);
  write_byte(0x41, 0b00000000001000000000000000000000, 0b0  ,     0b0000);
  Serial.println("11");
  delay(3000);
  write_byte(0x41, 0b00000000000100000000000000000000, 0b0  ,     0b0000);
  Serial.println("12");
  delay(3000);
  write_byte(0x41, 0b00000000000010000000000000000000, 0b0  ,     0b0000);
  Serial.println("13");
  delay(3000);
  write_byte(0x41, 0b00000000000001000000000000000000, 0b0  ,     0b0000);
  Serial.println("14");
  delay(3000);
  write_byte(0x41, 0b00000000000000100000000000000000, 0b0  ,     0b0000);
  Serial.println("15");
  delay(3000);
  write_byte(0x41, 0b00000000000000010000000000000000, 0b0  ,     0b0000);
  Serial.println("16");
  delay(3000);
  write_byte(0x41, 0b00000000000000001000000000000000, 0b0  ,     0b0000);
  Serial.println("17");
  delay(3000);
  write_byte(0x41, 0b00000000000000000100000000000000, 0b0  ,     0b0000);
  Serial.println("18");
  delay(3000);
  write_byte(0x41, 0b00000000000000000010000000000000, 0b0  ,     0b0000);
  Serial.println("19");
  delay(3000);
  write_byte(0x41, 0b00000000000000000001000000000000, 0b0  ,     0b0000);
  Serial.println("20");
  delay(3000);
  write_byte(0x41, 0b00000000000000000000100000000000, 0b0  ,     0b0000);
  Serial.println("21");
  delay(3000);
  write_byte(0x41, 0b00000000000000000000010000000000, 0b0  ,     0b0000);
  Serial.println("22");
  delay(3000);
  write_byte(0x41, 0b00000000000000000000001000000000, 0b0  ,     0b0000);
  Serial.println("23");
  delay(3000);
  write_byte(0x41, 0b00000000000000000000000100000000, 0b0  ,     0b0000);
  Serial.println("23");
  delay(3000);
  write_byte(0x41, 0b00000000000000000000000010000000, 0b0  ,     0b0000);
  Serial.println("25");
  delay(3000);
  write_byte(0x41, 0b00000000000000000000000001000000, 0b0  ,     0b0000);
  Serial.println("26");
  delay(3000);
  write_byte(0x41, 0b00000000000000000000000000100000, 0b0  ,     0b0000);
  Serial.println("27");
  delay(3000);
  write_byte(0x41, 0b00000000000000000000000000010000, 0b0  ,     0b0000);
  Serial.println("28");
  delay(3000);
  write_byte(0x41, 0b00000000000000000000000000001000, 0b0  ,     0b0000);
  Serial.println("29");
  delay(3000);
  write_byte(0x41, 0b00000000000000000000000000000100, 0b0  ,     0b0000);
  Serial.println("30");
  delay(3000);
  write_byte(0x41, 0b00000000000000000000000000000010, 0b0  ,     0b0000);
  Serial.println("31");
  delay(3000);
  write_byte(0x41, 0b00000000000000000000000000000001, 0b0  ,     0b0000);
  Serial.println("32");
  delay(3000);
  
  

}

void write_byte(byte addr, unsigned long b0, unsigned long b1,  byte contr){
  /// addr 8 bit
     digitalWrite(CE,LOW);
   for(int i = 0; i <= 7; i++){
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (addr >> i) & 1); 
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(CE,HIGH);

// data 156 bit
  // 1-24 seg
     for(int i = 31;i >= 0; i--){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (b0 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 

     for(int i = 31;i >= 0; i--){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (0 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 

     for(int i = 31;i >= 0; i--){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (0 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 

     for(int i = 31;i >= 0; i--){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (0 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 

     for(int i = 27;i >= 0; i--){ 
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (0 >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 
   
   
     
     
// control data 4 bit     
for(int i = 3; i >= 0; i--){
     digitalWrite(CL,LOW);delayMicroseconds(10);
     digitalWrite(DI, (contr >> i) & 1);
     digitalWrite(CL,HIGH);delayMicroseconds(10);
     } 
     digitalWrite(CE,LOW);
     digitalWrite(CL,LOW);
     delay(10);
  }  

100

Re: управление драйвером жк lc75823

необходимо всё в месте передавать

digitalWrite(DI, (b0 >> i) & 1);

1 смещается побайтно, в ардуино максимальное число это unsignrd long , а это 32 бита, больше 32 передать за раз нельзя.