Demo for STM32F103C8T6 with a Text LCD.

Dependencies:   mbed TextLCD

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

/media/uploads/hudakz/stm32f103c8t6_textlcd_03.png

Wiring

STM32F103C8T6Text 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
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");
+}