Lo más fácil .... usar free RTOS, generar un proceso para interrumpir cuando se encuentre un cambio de estado en los pines de entrada desde el encoder en cuadratura (La interrupción debera actualizar el contador ...32 bits son más que suficientes), crear otro proceso para actualizar display, y uno mas para hacer la conversion de pulsos a tu unidad favorita y actualizar variables-RAM que el proceso de actualizar display utiliza y listo.
Nota: Si es necesario crear proceso que interrumpa, pero con menor prioridad del que lee el encoder, que lea y elimine rebotes del teclado.
Y para adornarlo añadir rutinas para ajustar offset, cambio de unidades, alarmas, etc.
Yo recientemente hice uno con el arduino nano ... para hacer un log de las millas que recorre mi automovil desde el inicio hasta el final del viaje, para documentar y calcular los gastos de mi carro y ayudarme a hacer la facturación a mis clientes por gastos de transporte y claro .. deducciones en impuestos.
Trabaja bien hasta una velocidad de 90 millas x hora (32 pulsos x rev de la llanta)