Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: LcdWindow TextLCD mbed
main.c@0:0373f81f93d9, 2014-10-14 (annotated)
- Committer:
- hlipka
- Date:
- Tue Oct 14 07:57:41 2014 +0000
- Revision:
- 0:0373f81f93d9
initial version
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| hlipka | 0:0373f81f93d9 | 1 | #include "mbed.h" |
| hlipka | 0:0373f81f93d9 | 2 | |
| hlipka | 0:0373f81f93d9 | 3 | #include "dogm_spi.h" |
| hlipka | 0:0373f81f93d9 | 4 | |
| hlipka | 0:0373f81f93d9 | 5 | #include "hd44780_8bit.h" |
| hlipka | 0:0373f81f93d9 | 6 | |
| hlipka | 0:0373f81f93d9 | 7 | #include "subwindow.h" |
| hlipka | 0:0373f81f93d9 | 8 | |
| hlipka | 0:0373f81f93d9 | 9 | #include "teewindow.h" |
| hlipka | 0:0373f81f93d9 | 10 | |
| hlipka | 0:0373f81f93d9 | 11 | #include "terminal.h" |
| hlipka | 0:0373f81f93d9 | 12 | |
| hlipka | 0:0373f81f93d9 | 13 | #include "multiwindow.h" |
| hlipka | 0:0373f81f93d9 | 14 | |
| hlipka | 0:0373f81f93d9 | 15 | int main( void ) { |
| hlipka | 0:0373f81f93d9 | 16 | |
| hlipka | 0:0373f81f93d9 | 17 | // create an instance for the HD44780 display (2 lines, 16 chars) |
| hlipka | 0:0373f81f93d9 | 18 | |
| hlipka | 0:0373f81f93d9 | 19 | BusOut *data=new BusOut(p21,p22,p23,p24,p25,p26,p27,p28); |
| hlipka | 0:0373f81f93d9 | 20 | |
| hlipka | 0:0373f81f93d9 | 21 | HD44780LCD8bit* lcd1=new HD44780LCD8bit(16,2,data, p20, p19); |
| hlipka | 0:0373f81f93d9 | 22 | |
| hlipka | 0:0373f81f93d9 | 23 | lcd1->init(); |
| hlipka | 0:0373f81f93d9 | 24 | |
| hlipka | 0:0373f81f93d9 | 25 | // and write the usual hello world |
| hlipka | 0:0373f81f93d9 | 26 | |
| hlipka | 0:0373f81f93d9 | 27 | lcd1->writeText(0,0,"hello"); |
| hlipka | 0:0373f81f93d9 | 28 | |
| hlipka | 0:0373f81f93d9 | 29 | lcd1->writeText(1,4,"world"); |
| hlipka | 0:0373f81f93d9 | 30 | |
| hlipka | 0:0373f81f93d9 | 31 | // create a LCD instance for the dogm162 display |
| hlipka | 0:0373f81f93d9 | 32 | |
| hlipka | 0:0373f81f93d9 | 33 | DogmLCDSPI* lcd2=new DogmLCDSPI( |
| hlipka | 0:0373f81f93d9 | 34 | |
| hlipka | 0:0373f81f93d9 | 35 | 16, // width |
| hlipka | 0:0373f81f93d9 | 36 | |
| hlipka | 0:0373f81f93d9 | 37 | 2, // height |
| hlipka | 0:0373f81f93d9 | 38 | |
| hlipka | 0:0373f81f93d9 | 39 | new SPI(p5, NC, p7), // dataOut, no dataIn, clock |
| hlipka | 0:0373f81f93d9 | 40 | |
| hlipka | 0:0373f81f93d9 | 41 | p9, // enable |
| hlipka | 0:0373f81f93d9 | 42 | |
| hlipka | 0:0373f81f93d9 | 43 | p8 // RS |
| hlipka | 0:0373f81f93d9 | 44 | |
| hlipka | 0:0373f81f93d9 | 45 | ); |
| hlipka | 0:0373f81f93d9 | 46 | |
| hlipka | 0:0373f81f93d9 | 47 | lcd2->init(); |
| hlipka | 0:0373f81f93d9 | 48 | |
| hlipka | 0:0373f81f93d9 | 49 | // and write the german hello world |
| hlipka | 0:0373f81f93d9 | 50 | |
| hlipka | 0:0373f81f93d9 | 51 | lcd2->writeText(0,0,"hallo"); |
| hlipka | 0:0373f81f93d9 | 52 | |
| hlipka | 0:0373f81f93d9 | 53 | lcd2->writeText(1,4,"welt!"); |
| hlipka | 0:0373f81f93d9 | 54 | |
| hlipka | 0:0373f81f93d9 | 55 | // create a sub window on each display, spanning the right half of the |
| hlipka | 0:0373f81f93d9 | 56 | displays |
| hlipka | 0:0373f81f93d9 | 57 | |
| hlipka | 0:0373f81f93d9 | 58 | SubWindow *w1=new SubWindow(lcd1,8,0,8,2); |
| hlipka | 0:0373f81f93d9 | 59 | |
| hlipka | 0:0373f81f93d9 | 60 | SubWindow *w2=new SubWindow(lcd2,8,0,8,2); |
| hlipka | 0:0373f81f93d9 | 61 | |
| hlipka | 0:0373f81f93d9 | 62 | // create avector of all sub windows, for later use |
| hlipka | 0:0373f81f93d9 | 63 | |
| hlipka | 0:0373f81f93d9 | 64 | vector<Window*> lcds; |
| hlipka | 0:0373f81f93d9 | 65 | |
| hlipka | 0:0373f81f93d9 | 66 | lcds.push_back(w1); |
| hlipka | 0:0373f81f93d9 | 67 | |
| hlipka | 0:0373f81f93d9 | 68 | lcds.push_back(w2); |
| hlipka | 0:0373f81f93d9 | 69 | |
| hlipka | 0:0373f81f93d9 | 70 | |
| hlipka | 0:0373f81f93d9 | 71 | // the tee window will write to both sub windows at once |
| hlipka | 0:0373f81f93d9 | 72 | |
| hlipka | 0:0373f81f93d9 | 73 | Window* tw=new TeeWindow(lcds); |
| hlipka | 0:0373f81f93d9 | 74 | |
| hlipka | 0:0373f81f93d9 | 75 | |
| hlipka | 0:0373f81f93d9 | 76 | // so write to both display at the same time |
| hlipka | 0:0373f81f93d9 | 77 | |
| hlipka | 0:0373f81f93d9 | 78 | tw->writeText(0,0,"00"); |
| hlipka | 0:0373f81f93d9 | 79 | |
| hlipka | 0:0373f81f93d9 | 80 | tw->writeText(1,1,"11"); |
| hlipka | 0:0373f81f93d9 | 81 | |
| hlipka | 0:0373f81f93d9 | 82 | wait(1); |
| hlipka | 0:0373f81f93d9 | 83 | |
| hlipka | 0:0373f81f93d9 | 84 | |
| hlipka | 0:0373f81f93d9 | 85 | // create a terminal which also is dulicated to both displays |
| hlipka | 0:0373f81f93d9 | 86 | |
| hlipka | 0:0373f81f93d9 | 87 | // write some text to it and scroll |
| hlipka | 0:0373f81f93d9 | 88 | |
| hlipka | 0:0373f81f93d9 | 89 | Terminal t(tw); |
| hlipka | 0:0373f81f93d9 | 90 | |
| hlipka | 0:0373f81f93d9 | 91 | t.clear(); |
| hlipka | 0:0373f81f93d9 | 92 | |
| hlipka | 0:0373f81f93d9 | 93 | t.writeText(0,0,"1234"); |
| hlipka | 0:0373f81f93d9 | 94 | |
| hlipka | 0:0373f81f93d9 | 95 | t.writeText(1,1,"abcd"); |
| hlipka | 0:0373f81f93d9 | 96 | |
| hlipka | 0:0373f81f93d9 | 97 | wait(1); |
| hlipka | 0:0373f81f93d9 | 98 | |
| hlipka | 0:0373f81f93d9 | 99 | t.addText("Hello"); |
| hlipka | 0:0373f81f93d9 | 100 | |
| hlipka | 0:0373f81f93d9 | 101 | wait(1); |
| hlipka | 0:0373f81f93d9 | 102 | |
| hlipka | 0:0373f81f93d9 | 103 | t.addText("World"); |
| hlipka | 0:0373f81f93d9 | 104 | |
| hlipka | 0:0373f81f93d9 | 105 | wait(1); |
| hlipka | 0:0373f81f93d9 | 106 | |
| hlipka | 0:0373f81f93d9 | 107 | t.addText("and"); |
| hlipka | 0:0373f81f93d9 | 108 | |
| hlipka | 0:0373f81f93d9 | 109 | wait(1); |
| hlipka | 0:0373f81f93d9 | 110 | |
| hlipka | 0:0373f81f93d9 | 111 | t.addText("even"); |
| hlipka | 0:0373f81f93d9 | 112 | |
| hlipka | 0:0373f81f93d9 | 113 | wait(1); |
| hlipka | 0:0373f81f93d9 | 114 | |
| hlipka | 0:0373f81f93d9 | 115 | t.addText("some"); |
| hlipka | 0:0373f81f93d9 | 116 | |
| hlipka | 0:0373f81f93d9 | 117 | wait(1); |
| hlipka | 0:0373f81f93d9 | 118 | |
| hlipka | 0:0373f81f93d9 | 119 | t.addText("more"); |
| hlipka | 0:0373f81f93d9 | 120 | |
| hlipka | 0:0373f81f93d9 | 121 | // create 2 subwindows for the left half of both displays |
| hlipka | 0:0373f81f93d9 | 122 | |
| hlipka | 0:0373f81f93d9 | 123 | SubWindow *w3=new SubWindow(lcd1,0,0,8,2); |
| hlipka | 0:0373f81f93d9 | 124 | |
| hlipka | 0:0373f81f93d9 | 125 | SubWindow *w4=new SubWindow(lcd2,0,0,8,2); |
| hlipka | 0:0373f81f93d9 | 126 | |
| hlipka | 0:0373f81f93d9 | 127 | vector<Window*> lcds2; |
| hlipka | 0:0373f81f93d9 | 128 | |
| hlipka | 0:0373f81f93d9 | 129 | lcds2.push_back(w3); |
| hlipka | 0:0373f81f93d9 | 130 | |
| hlipka | 0:0373f81f93d9 | 131 | lcds2.push_back(w4); |
| hlipka | 0:0373f81f93d9 | 132 | |
| hlipka | 0:0373f81f93d9 | 133 | // create a window spanning both sub windows (and therefore both display) |
| hlipka | 0:0373f81f93d9 | 134 | |
| hlipka | 0:0373f81f93d9 | 135 | MultiWindow* mw=new MultiWindow(lcds2); |
| hlipka | 0:0373f81f93d9 | 136 | |
| hlipka | 0:0373f81f93d9 | 137 | // and a terminal on it - which means it scrolls across both displays |
| hlipka | 0:0373f81f93d9 | 138 | |
| hlipka | 0:0373f81f93d9 | 139 | Terminal t2(mw); |
| hlipka | 0:0373f81f93d9 | 140 | |
| hlipka | 0:0373f81f93d9 | 141 | t2.clear(); |
| hlipka | 0:0373f81f93d9 | 142 | |
| hlipka | 0:0373f81f93d9 | 143 | t2.writeText(0,0,"1234"); |
| hlipka | 0:0373f81f93d9 | 144 | |
| hlipka | 0:0373f81f93d9 | 145 | t2.writeText(1,1,"abcd"); |
| hlipka | 0:0373f81f93d9 | 146 | |
| hlipka | 0:0373f81f93d9 | 147 | wait(1); |
| hlipka | 0:0373f81f93d9 | 148 | |
| hlipka | 0:0373f81f93d9 | 149 | t2.addText("Hello"); |
| hlipka | 0:0373f81f93d9 | 150 | |
| hlipka | 0:0373f81f93d9 | 151 | wait(1); |
| hlipka | 0:0373f81f93d9 | 152 | |
| hlipka | 0:0373f81f93d9 | 153 | t2.addText("World"); |
| hlipka | 0:0373f81f93d9 | 154 | |
| hlipka | 0:0373f81f93d9 | 155 | wait(1); |
| hlipka | 0:0373f81f93d9 | 156 | |
| hlipka | 0:0373f81f93d9 | 157 | t2.addText("and"); |
| hlipka | 0:0373f81f93d9 | 158 | |
| hlipka | 0:0373f81f93d9 | 159 | wait(1); |
| hlipka | 0:0373f81f93d9 | 160 | |
| hlipka | 0:0373f81f93d9 | 161 | t2.addText("even"); |
| hlipka | 0:0373f81f93d9 | 162 | |
| hlipka | 0:0373f81f93d9 | 163 | wait(1); |
| hlipka | 0:0373f81f93d9 | 164 | |
| hlipka | 0:0373f81f93d9 | 165 | t2.addText("some"); |
| hlipka | 0:0373f81f93d9 | 166 | |
| hlipka | 0:0373f81f93d9 | 167 | wait(1); |
| hlipka | 0:0373f81f93d9 | 168 | |
| hlipka | 0:0373f81f93d9 | 169 | t2.addText("more"); |
| hlipka | 0:0373f81f93d9 | 170 | |
| hlipka | 0:0373f81f93d9 | 171 | } |
LCD Window Library