I agree with both veterans. I had no idea you were aiming for a few milliKelvins.
In that case create two variables called Setpoint and LastMeasuredTemperature.
Use a timer interrupt and put your PID code in the interrupt routine.
At first the PID code can be simply:
LastMeasuredTemperature = ReadTemperature();
OvenHeaterState = (LastMeasuredTemperature < Setpoint) ? true : false;
OutDigitalHeater (OvenHeaterState);
Your main loop() just deals with the user. It gets a possible user message to change the setpoint and changes Setpoint. In any case it then displays both variables to the touch screen display.
See how stable you get with that and then go PID math crazy if you need to!
See how fast your interrupt loop timer needs to be.
At first, for debug_mode only, you can have your pid loop print a running log of the temp messages it receives and the digital output actions it takes. For debug mode of your main loop, you can print the message received from the touch screen and a message that you are changing the Setpoint.