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

main.cpp

Committer:
hudakz
Date:
2019-02-05
Revision:
1:e10c603cf0ae
Parent:
0:271d74b09d64

File content as of revision 1:e10c603cf0ae:

/* Hello World! for the TextLCD Enhanced Library*/

#include "mbed.h"
#include "TextLCD.h"

// 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;

int main()
{     
    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");
}