Do I have to calibrate the display every time I power on?

No. Calibration should be done at least once (manufacture/first use) and after that the calibration values may be stored to internal non-volatile memory for use in subsequent power-ons as per the example below.

// If the EEPROM starts with byte 0x7c, then it already holds

// the 24 byte touchscreen calibration values.

if (istouch() || (EEPROM.read(0) != 0x7c)) {

blank();

while (istouch())

;

VC.wr(REG_PWM_DUTY, 128);

MEMCMD(start_clear);

VC.cmd_text(screen.w/2, screen.h/2, 28, OPT_CENTERX|OPT_CENTERY, “please tap on the dot”);

BLK_START

CMD_CALIBRATE,

0

BLK_END

VC.waitidle();

for (int i = 0; i < 24; i++)

EEPROM.write(1 + i, VC.rd(REG_TOUCH_TRANSFORM_A + i));

EEPROM.write(0, 0x7c); // is written!

}

else {

for (int i = 0; i < 24; i++)

VC.wr(REG_TOUCH_TRANSFORM_A + i, EEPROM.read(1 + i));

}