Описание регистров для

Протокол MODBUS RTU/ASCII,
скорость порта 57600 ,
8N1,
адрес индикаторов на шине начинается со 120 по 132,
на 255 тоже отвечает.
При включении адрес индикатора загорается в правом верхнем окне, например A128 значит адрес 128.
Начало регистров MODBUS адрес 7F всего 8 регистров по 2 символа, где каждый бит занимает бит 7-мисегментного знакоместа.
Порядок расположения с лева на право: старший разряд, затем младший (см фото).
Таблица перекодировки из ASCII в 7-сегментный код для отображения на индикаторе :
uint8_t Decode7seg( uint8_t *Sym )
{
uint8_t S = *Sym;
switch( S )
{
case '0' : S = 0x3F; break;
case '1' : S = 0x06; break;
case '2' : S = 0x5B; break;
case '3' : S = 0x4F; break;
case '4' : S = 0x66; break;
case '5' : S = 0x6D; break;
case '6' : S = 0x7D; break;
case '7' : S = 0x07; break;
case '8' : S = 0x7F; break;
case '9' : S = 0x6F; break;
case 'A' : S = 0x77; break;
case 'B' : S = 0xFF; break;
case 'C' : S = 0xFF; break;
case 'D' : S = 0xFF; break;
case 'E' : S = 0x79; break;
case 'F' : S = 0x71; break;
case 'r' : S = 0x50; break;
case '?' : S = 0x53; break;
case '-' : S = 0x40; break;
case ' ' : S = 0x00; break;
default : S = 0x53;
}
return S;
}
пример : нужно отобразить число 0075 в верхнем правом поле индикатора.
Пишем в регистр 7F значение 3F3F, в регистр 80 значение 076D.
Если нужна точка, то просто суммируем по логическому или с числом 80, точка всегда старший бит.
Пример нужно отобразить число 7.5 в верхнем правом поле индикатора.
Пишем в регистр 7F значение 0000, в регистр 80 значение 07ED (ED= 6D|80).
