Probably an unhandled floating point exception. Most probably because one of the operands is not a "normal" floating point number.
As one operand is fixed (even though it's a double constant), it's most probably the other operand (current_disp).
Then again, while the is a division before which could create a denormal, the last operation is a multiplication by 5:
current_disp= (current_val/1024.0)*5;
Again, both immediates are not float, so I'm not 100% certain if we can assume that a float is multiplied by a float.
If so, it's kinda hard to understand why multiplying a normal float with a 5 should create a float exception.
A precision exception maybe? Do you know if float exceptions are enabled and which exactly?
If they are enabled: did you try to implement an exception handler and check the exception information?
BTW: The use of immediates which are all not really floats is not good practice, but should work I guess.
E.g. you're using 1024.0, but also "5" or "2". It should be like "2014.0f", "5.0f" and "2.0f".
Anyway, why the heck do you need floating point for this kind of calculation at all?