Daniel Scarnatto
/
STM32F103C8T6_TextLCD
Simple analog input and LCD 4 bit Example reading a LM35. Tested in BluePill board
main.cpp@0:271d74b09d64, 2017-01-15 (annotated)
- 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?
User | Revision | Line number | New 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 | } |