Demo for STM32F103C8T6 with a Text LCD.
Text LCD driven by STM32F103C8T6 board
This is a fork of Wim Huiskamp's example program using his enhanced TextLCD library.
For more details see also Wim's wonderful notebook page TextLCD Enhanced.
Schematic
Wiring
STM32F103C8T6 | Text LCD | |||
---|---|---|---|---|
GND | <=> | GND | ||
+5V | <=> | VCC | ||
+5V | <R1> | VO | ||
PA_8 | <=> | RS | ||
GND | <=> | RW | ||
PA_9 | <=> | E | ||
PA_10 | <=> | D4 | ||
PA_11 | <=> | D5 | ||
PA_12 | <=> | D6 | ||
PA_15 | <=> | D7 |
Diff: main.cpp
- Revision:
- 0:271d74b09d64
- Child:
- 1:e10c603cf0ae
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sun Jan 15 11:07:07 2017 +0000 @@ -0,0 +1,65 @@ +/* Hello World! for the TextLCD Enhanced Library*/ + +#include "stm32f103c8t6.h" +#include "mbed.h" +#include "TextLCD.h" + + +int main() +{ + confSysClock(); // configure system clock (72MHz HSE clock, 48MHz USB clock) + + // Host PC Communication channels + Serial pc(PA_2, PA_3); // tx, rx + + // LCD instantiation + TextLCD lcd(PA_8, PA_9, PA_10, PA_11, PA_12, PA_15, TextLCD::LCD16x2); // 4-bit bus: RS, E, D4, D5, D6, D7 + Timer t; + + + pc.printf("TextLCD Enhanced Test. Columns=%d, Rows=%d\n\r", lcd.columns(), lcd.rows()); + + for (int row = 0; row < lcd.rows(); row++) { + int col = 0; + + pc.printf("MemAddr(Col=%d, Row=%d)=0x%02X\n\r", col, row, lcd.getAddress(col, row)); + + lcd.putc('0' + row); + + for (col=1; col < lcd.columns() - 1; col++) { + lcd.putc('*'); + } + + pc.printf("MemAddr(Col=%d, Row=%d)=0x%02X\n\r", col, row, lcd.getAddress(col, row)); + lcd.putc('+'); + } + +// Fill screen again and time it + t.start(); + + for (int row=0; row<lcd.rows(); row++) { + int col=0; + + lcd.putc('0' + row); + + for (col=1; col<lcd.columns()-1; col++) { + lcd.putc('*'); + } + + lcd.putc('+'); + } + t.stop(); + pc.printf("All my hard work took %f sec\r\n", t.read()); + +// Show cursor as blinking character + lcd.setCursor(TextLCD::CurOff_BlkOn); + +// Set and show user defined characters. A maximum of 8 UDCs are supported by the HD44780. +// They are defined by a 5x7 bitpattern. + lcd.setUDC(0, (char *) udc_0); // Show |> + lcd.putc(0); + lcd.setUDC(1, (char *) udc_1); // Show <| + lcd.putc(1); + + pc.printf("Bye now\r\n"); +}