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:
Sun Jan 15 11:07:07 2017 +0000
Revision:
0:271d74b09d64
Child:
1:e10c603cf0ae
Initial release.

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