A ‘pulsar timing array’ (PTA), in which observations of a large sample of pulsars spread across the celestial sphere are combined, allows investigation of ‘global’ phenomena such as a background of gravitational waves or instabilities in atomic timescales that produce correlated timing residuals in the pulsars of the array. The Parkes Pulsar Timing Array (PPTA) is an implementation of the PTA concept based on observations with the Parkes 64-m radio telescope. A sample of 20 ms pulsars is being observed at three radio-frequency bands, 50 cm (~700 MHz), 20 cm (~1400 MHz), and 10 cm (~3100 MHz), with observations at intervals of two to three weeks. Regular observations commenced in early 2005. This paper describes the systems used for the PPTA observations and data processing, including calibration and timing analysis. The strategy behind the choice of pulsars, observing parameters, and analysis methods is discussed. Results are presented for PPTA data in the three bands taken between 2005 March and 2011 March. For 10 of the 20 pulsars, rms timing residuals are less than 1 μs for the best band after fitting for pulse frequency and its first time derivative. Significant ‘red’ timing noise is detected in about half of the sample. We discuss the implications of these results on future projects including the International Pulsar Timing Array and a PTA based on the Square Kilometre Array. We also present an ‘extended PPTA’ data set that combines PPTA data with earlier Parkes timing data for these pulsars.