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
Committer:
hudakz
Date:
Tue Feb 05 14:00:02 2019 +0000
Revision:
1:e10c603cf0ae
Parent:
0:271d74b09d64
Updated.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hudakz 0:271d74b09d64 1 /* Hello World! for the TextLCD Enhanced Library*/
hudakz 0:271d74b09d64 2
hudakz 0:271d74b09d64 3 #include "mbed.h"
hudakz 0:271d74b09d64 4 #include "TextLCD.h"
hudakz 0:271d74b09d64 5
hudakz 1:e10c603cf0ae 6 // Host PC Communication channels
hudakz 1:e10c603cf0ae 7 Serial pc(PA_2, PA_3); // tx, rx
hudakz 1:e10c603cf0ae 8
hudakz 1:e10c603cf0ae 9 // LCD instantiation
hudakz 1:e10c603cf0ae 10 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
hudakz 1:e10c603cf0ae 11 Timer t;
hudakz 0:271d74b09d64 12
hudakz 0:271d74b09d64 13 int main()
hudakz 1:e10c603cf0ae 14 {
hudakz 0:271d74b09d64 15 pc.printf("TextLCD Enhanced Test. Columns=%d, Rows=%d\n\r", lcd.columns(), lcd.rows());
hudakz 0:271d74b09d64 16
hudakz 0:271d74b09d64 17 for (int row = 0; row < lcd.rows(); row++) {
hudakz 0:271d74b09d64 18 int col = 0;
hudakz 0:271d74b09d64 19
hudakz 0:271d74b09d64 20 pc.printf("MemAddr(Col=%d, Row=%d)=0x%02X\n\r", col, row, lcd.getAddress(col, row));
hudakz 0:271d74b09d64 21
hudakz 0:271d74b09d64 22 lcd.putc('0' + row);
hudakz 0:271d74b09d64 23
hudakz 0:271d74b09d64 24 for (col=1; col < lcd.columns() - 1; col++) {
hudakz 0:271d74b09d64 25 lcd.putc('*');
hudakz 0:271d74b09d64 26 }
hudakz 0:271d74b09d64 27
hudakz 0:271d74b09d64 28 pc.printf("MemAddr(Col=%d, Row=%d)=0x%02X\n\r", col, row, lcd.getAddress(col, row));
hudakz 0:271d74b09d64 29 lcd.putc('+');
hudakz 0:271d74b09d64 30 }
hudakz 0:271d74b09d64 31
hudakz 0:271d74b09d64 32 // Fill screen again and time it
hudakz 0:271d74b09d64 33 t.start();
hudakz 0:271d74b09d64 34
hudakz 0:271d74b09d64 35 for (int row=0; row<lcd.rows(); row++) {
hudakz 0:271d74b09d64 36 int col=0;
hudakz 0:271d74b09d64 37
hudakz 0:271d74b09d64 38 lcd.putc('0' + row);
hudakz 0:271d74b09d64 39
hudakz 0:271d74b09d64 40 for (col=1; col<lcd.columns()-1; col++) {
hudakz 0:271d74b09d64 41 lcd.putc('*');
hudakz 0:271d74b09d64 42 }
hudakz 0:271d74b09d64 43
hudakz 0:271d74b09d64 44 lcd.putc('+');
hudakz 0:271d74b09d64 45 }
hudakz 0:271d74b09d64 46 t.stop();
hudakz 0:271d74b09d64 47 pc.printf("All my hard work took %f sec\r\n", t.read());
hudakz 0:271d74b09d64 48
hudakz 0:271d74b09d64 49 // Show cursor as blinking character
hudakz 0:271d74b09d64 50 lcd.setCursor(TextLCD::CurOff_BlkOn);
hudakz 0:271d74b09d64 51
hudakz 0:271d74b09d64 52 // Set and show user defined characters. A maximum of 8 UDCs are supported by the HD44780.
hudakz 0:271d74b09d64 53 // They are defined by a 5x7 bitpattern.
hudakz 0:271d74b09d64 54 lcd.setUDC(0, (char *) udc_0); // Show |>
hudakz 0:271d74b09d64 55 lcd.putc(0);
hudakz 0:271d74b09d64 56 lcd.setUDC(1, (char *) udc_1); // Show <|
hudakz 0:271d74b09d64 57 lcd.putc(1);
hudakz 0:271d74b09d64 58
hudakz 0:271d74b09d64 59 pc.printf("Bye now\r\n");
hudakz 0:271d74b09d64 60 }