The first protocol for password authenticated key exchanged that appeared in the crypto community was [the Bellovin-Merritt scheme](https://www.cs.columbia.edu/~smb/papers/neke.pdf) (see also [this survey](http://www.di.ens.fr/users/pointche/Documents/Papers/2012_pkc.pdf) page 4). This protocol is very simple, and might actually suit your need: is is exactly a Diffie-Hellman key exchange, in which the flows are encrypted with a block cipher (using the common password as the key of the cipher), and where the secret key the players agree on is derived by hashing the Diffie-Hellman tuple. The security of this protocol was analyzed several times, in various models (ideal cipher model or random oracle model, in indistinguishability-based framework or simulation-based framework...). Although it does not enjoy a proof of security in the plain model, you might be satisfied with a protocol proven secure in the random oracle model.

In this case, this scheme seems to exactly fit your requirements: you need "any Diffie-Hellman key exchanged", together with "any (good) hash function" and "any block cipher" that allows you to encrypt the flow with the password. Variations of the Bellovin-Merritt scheme that might make it even simpler are presented in [this article](http://www.di.ens.fr/~mabdalla/papers/AbPo05a-letter.pdf) (they essentially replace the block cipher by a simple one-time pad, and have two variants, one non-concurrently secure and one concurrently secure).