Yep, for the nand2tetris course, we had division, but it was in the OS, and a really expensive operation. I wrote a program that needed to know which third of a line a point was on. (i.e. identify 4 on a 15-length line as being in the first third).
I naively wanted to do something like "if x < L / 3", but rearranged it to "if x * 3 < L". (Of course, the language only supported integers and not fractions or floating point, so I needed to do that anyway.)
Oh, right. I'm an idiot who forgot about the fixed point divide.
And yes, at some point you are going to need to do a divide by constant 10. It's unavoidable if you want a base 10 display. The option of using BCD to do calculations just lets you do that divide upfront, rather than at the end.
You can implement this as a fixed point multiply by the constant 1.8.
You are already using base 10 fixed point, so it simply becomes a multiply by 18, which can be simplified to a few shifts and adds:
(Celsius << 4) + Celsius + Celsius
Don't forget to add 32 and the algorithm requires a 16bit shift and three 16 bit adds.