Kenji Arai
/
Text_LCD_control
This is a test program for TEXT LCD (HD44780) , 40 char x 2 lines.
main.cpp@0:171b4ca846a6, 2010-03-27 (annotated)
- Committer:
- kenjiArai
- Date:
- Sat Mar 27 07:05:32 2010 +0000
- Revision:
- 0:171b4ca846a6
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kenjiArai | 0:171b4ca846a6 | 1 | // |
kenjiArai | 0:171b4ca846a6 | 2 | // Text LCD Control Program |
kenjiArai | 0:171b4ca846a6 | 3 | // Kenji Arai / JH1PJL |
kenjiArai | 0:171b4ca846a6 | 4 | // March 7th,2010 Started |
kenjiArai | 0:171b4ca846a6 | 5 | // March 27th,2010 |
kenjiArai | 0:171b4ca846a6 | 6 | // |
kenjiArai | 0:171b4ca846a6 | 7 | |
kenjiArai | 0:171b4ca846a6 | 8 | #include "mbed.h" |
kenjiArai | 0:171b4ca846a6 | 9 | #include "TextLCD.h" |
kenjiArai | 0:171b4ca846a6 | 10 | |
kenjiArai | 0:171b4ca846a6 | 11 | #define LINE_40_2 |
kenjiArai | 0:171b4ca846a6 | 12 | |
kenjiArai | 0:171b4ca846a6 | 13 | #define BLINK_PERIOD 1.8 // LED on period (Initial data) |
kenjiArai | 0:171b4ca846a6 | 14 | #define END_PERIOD 0.0001 // Finish period |
kenjiArai | 0:171b4ca846a6 | 15 | |
kenjiArai | 0:171b4ca846a6 | 16 | DigitalOut myled1(LED1); // Assign LED output port LED1 to LED4 |
kenjiArai | 0:171b4ca846a6 | 17 | DigitalOut myled2(LED2); |
kenjiArai | 0:171b4ca846a6 | 18 | DigitalOut myled3(LED3); |
kenjiArai | 0:171b4ca846a6 | 19 | DigitalOut myled4(LED4); |
kenjiArai | 0:171b4ca846a6 | 20 | |
kenjiArai | 0:171b4ca846a6 | 21 | #ifdef LINE_40_2 |
kenjiArai | 0:171b4ca846a6 | 22 | TextLCD lcd(p22, p28, p27, p26, p25, p24, p23, 40, 2); // rs,rw,e,d0,d1,d2,d3,40char's x 2 lines |
kenjiArai | 0:171b4ca846a6 | 23 | #else |
kenjiArai | 0:171b4ca846a6 | 24 | TextLCD lcd(p22, p28, p27, p26, p25, p24, p23, 16, 2); // rs,rw,e,d0,d1,d2,d3,16char's x 2 lines |
kenjiArai | 0:171b4ca846a6 | 25 | #endif |
kenjiArai | 0:171b4ca846a6 | 26 | |
kenjiArai | 0:171b4ca846a6 | 27 | int main() { |
kenjiArai | 0:171b4ca846a6 | 28 | float tim; |
kenjiArai | 0:171b4ca846a6 | 29 | long count; |
kenjiArai | 0:171b4ca846a6 | 30 | char buf[40]; |
kenjiArai | 0:171b4ca846a6 | 31 | |
kenjiArai | 0:171b4ca846a6 | 32 | tim = BLINK_PERIOD; |
kenjiArai | 0:171b4ca846a6 | 33 | count = 0; |
kenjiArai | 0:171b4ca846a6 | 34 | lcd.cls(); |
kenjiArai | 0:171b4ca846a6 | 35 | lcd.locate(0, 0); |
kenjiArai | 0:171b4ca846a6 | 36 | #ifdef LINE_40_2 |
kenjiArai | 0:171b4ca846a6 | 37 | // 0 1 2 3 40 |
kenjiArai | 0:171b4ca846a6 | 38 | lcd.printf("1234567890123456789012345678901234567890"); |
kenjiArai | 0:171b4ca846a6 | 39 | lcd.locate(0, 1); |
kenjiArai | 0:171b4ca846a6 | 40 | lcd.printf("0987654321098765432109876543210987654321"); |
kenjiArai | 0:171b4ca846a6 | 41 | #else |
kenjiArai | 0:171b4ca846a6 | 42 | // 0 1 |
kenjiArai | 0:171b4ca846a6 | 43 | lcd.printf("1234567890123456"); |
kenjiArai | 0:171b4ca846a6 | 44 | lcd.locate(0, 1); |
kenjiArai | 0:171b4ca846a6 | 45 | lcd.printf("6543210987654321"); |
kenjiArai | 0:171b4ca846a6 | 46 | #endif |
kenjiArai | 0:171b4ca846a6 | 47 | // If you have implemented the "Windows USB Serial Port Driver", you can use follows. |
kenjiArai | 0:171b4ca846a6 | 48 | // http://mbed.org/projects/handbook/wiki/WindowsSerialConfiguration |
kenjiArai | 0:171b4ca846a6 | 49 | printf("\r\n Start LCD Test Program\r\n"); |
kenjiArai | 0:171b4ca846a6 | 50 | while (1) { |
kenjiArai | 0:171b4ca846a6 | 51 | for (tim =BLINK_PERIOD; tim >= END_PERIOD; tim /= 3) { |
kenjiArai | 0:171b4ca846a6 | 52 | myled1 = 1; |
kenjiArai | 0:171b4ca846a6 | 53 | wait(tim); |
kenjiArai | 0:171b4ca846a6 | 54 | myled1 = 0; |
kenjiArai | 0:171b4ca846a6 | 55 | myled2 = 1; |
kenjiArai | 0:171b4ca846a6 | 56 | wait(tim); |
kenjiArai | 0:171b4ca846a6 | 57 | myled2 = 0; |
kenjiArai | 0:171b4ca846a6 | 58 | myled3 = 1; |
kenjiArai | 0:171b4ca846a6 | 59 | wait(tim); |
kenjiArai | 0:171b4ca846a6 | 60 | myled3 = 0; |
kenjiArai | 0:171b4ca846a6 | 61 | myled4 = 1; |
kenjiArai | 0:171b4ca846a6 | 62 | wait(tim); |
kenjiArai | 0:171b4ca846a6 | 63 | myled4 = 0; |
kenjiArai | 0:171b4ca846a6 | 64 | } |
kenjiArai | 0:171b4ca846a6 | 65 | lcd.cls(); |
kenjiArai | 0:171b4ca846a6 | 66 | lcd.locate(0, 0); // 1st line top |
kenjiArai | 0:171b4ca846a6 | 67 | #ifdef LINE_40_2 |
kenjiArai | 0:171b4ca846a6 | 68 | // 1 2 3 4 |
kenjiArai | 0:171b4ca846a6 | 69 | // 1234567890123456789012345678901234567890 |
kenjiArai | 0:171b4ca846a6 | 70 | lcd.printf("This is a test program for checking LCD "); |
kenjiArai | 0:171b4ca846a6 | 71 | lcd.locate(0, 1); // 2nd line top |
kenjiArai | 0:171b4ca846a6 | 72 | sprintf(buf," Current loop count number = %d ", count); |
kenjiArai | 0:171b4ca846a6 | 73 | #else |
kenjiArai | 0:171b4ca846a6 | 74 | // 1234567890123456 |
kenjiArai | 0:171b4ca846a6 | 75 | lcd.printf("LCD test program"); |
kenjiArai | 0:171b4ca846a6 | 76 | lcd.locate(0, 1); // 2nd line top |
kenjiArai | 0:171b4ca846a6 | 77 | sprintf(buf,"loop # = %d", count); |
kenjiArai | 0:171b4ca846a6 | 78 | #endif |
kenjiArai | 0:171b4ca846a6 | 79 | lcd.printf(buf); |
kenjiArai | 0:171b4ca846a6 | 80 | printf(" Current loop count number = %d \r\n", count); |
kenjiArai | 0:171b4ca846a6 | 81 | count++; |
kenjiArai | 0:171b4ca846a6 | 82 | } |
kenjiArai | 0:171b4ca846a6 | 83 | } |