The problem of many LCD's is they require 5v power. Many will work if you give it 5v power, but use 3.3v signals like the Teensy generates. There might be some that require 5v signals which would mean doing voltage level conversions. If you are powering the Teensy from USB, you can hook the display up to the VIN pin to get 5v power.
Sparkfun has several 3.3v displays:
https://www.sparkfun.com/search/results?term=3.3v+16x2+display, and Adafruit has 3:
https://www.adafruit.com/search?q=3.3v+16x2+display
If the the display sends back data (most do not), and you use a Teensy 3.0, you could fry the Teensy 3.0 if you are using 5v power, since the Teensy 3.0 is not tolerant of 5v input (I know you are using a Teensy 3.1, but this is directed to the other readers that might have a similar question).
I tend to like the Dig-ole OLED devices
http://www.digole.com/index.php?categoryID=153. These devices will run off of a serial line, i2c, or spi depending on how you wire them up, and they will run off of either 3.3v or 5v power. Dig-ole provides an Arduino library. I needed to make some minor changes to the library to get it to run on Teensy 3.0. I use it via a serial line, using one of the 3 serial lines, hooking up the TX pin (pin 1 for Serial1, pin 10 for Serial2, or pin 8 for Serial3, 9600 baud speed). I use the 0.96" OLED display that I ordered from their Canadian office (
http://www.digole.com/index.php?productID=528). I find the first two fonts are hard to read, and by default, I use font size 18. I also got the 2.7" LCD, but I don't like the LCD compared to the OLED displays, because it is harder to read in some lighting situations (but the same programming is used on both displays).
Through experimentation, I have learned that the 128x64 OLED can display:
- Font size 6 can display 10 lines, each consisting of 32 characters;
- Font size 10 can display 7 lines, each consisting of 21 characters;
- Font size 18 can display 4 lines, each consisting of 14 characters;
- Font size 51 can display 2 lines, each consisting of 8 characters.
In the past, I used a clone of the Adafruit OLED display (the dig-ole OLED that I use now uses the same screen, but different programming). I used it until I ruined it with a soldering accident. Here is the Adafruit OLED display:
https://www.adafruit.com/products/326. I've seen these as either i2c or spi displays. Here is the clone display I bought:
https://www.tindie.com/products/miker/096-oled-i2c-display-33v-50v/. Generally, I avoid clones that use libraries developed by companies like Adafruit. I think at the time, the display was on backorder at Adafruit.
By experimentation, I have learned the 128x64 OLED screen with the Adafruit driver can display:
- Font size 1 can display 8 lines, each consisting of 20 characters;
- Font size 2 can display 4 lines, each consisting of 9 characters;
- Font size 3 can display 3 lines, each consisting of 7 characters.
If you use an i2c display, you will need to add separate pull-up 4.7K resistors from A4/A5 to power, and hook up the SDA wire to A4 and SCL wire to A5.
Compared to a 16x2 display, the OLED displays might be a little more fragile.
If you just want to display numbers, I've also used the Sparkfun serial 7 segment display. Like the Dig-ole, you can use it with serial, i2c, or spi.
https://www.sparkfun.com/products/11441. The programming for these when used on a serial line is fairly simple.
I believe Adafruit has some 7 segment displays as well, but I haven't used them.