As an operator of multiple businesses, I much prefer customers who pay with cards than cash. There is a high cost to handling cash, making sure employees don't steal, counting it, getting change from bank, depositing it, etc. Therefore, it might not behoove the owner of the business to provide a cash discount.
It would be nice to offer a discount for debit cards, but unfortunately, the card processing systems I've seen don't have the capability to determine credit vs debit and charge different price for it. It would be great if merchants could automatically charge people with rewards credit cards more.