![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Simple demo of using lcd1602 with keypad and ds1307 with freescale kl25z board.
Dependencies: RTC-DS1307 TextLCD mbed
main.cpp@0:a5222dea5eac, 2014-10-29 (annotated)
- Committer:
- batrado
- Date:
- Wed Oct 29 08:09:30 2014 +0000
- Revision:
- 0:a5222dea5eac
Simple demo of using lcd1602 and ds1307 in freescale kl25z board.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
batrado | 0:a5222dea5eac | 1 | // Display RealDateTime on LCD1602 KeyPad |
batrado | 0:a5222dea5eac | 2 | #include "mbed.h" |
batrado | 0:a5222dea5eac | 3 | #include "TextLCD.h" // LCD1602 |
batrado | 0:a5222dea5eac | 4 | #include "Rtc_Ds1307.h" // RTC |
batrado | 0:a5222dea5eac | 5 | |
batrado | 0:a5222dea5eac | 6 | Rtc_Ds1307 rtc(PTE0, PTE1); |
batrado | 0:a5222dea5eac | 7 | TextLCD lcd(PTA13, PTD5, PTA4, PTA5, PTC8, PTC9); |
batrado | 0:a5222dea5eac | 8 | DigitalOut blueLED(LED_BLUE); |
batrado | 0:a5222dea5eac | 9 | AnalogIn keys(PTB0); |
batrado | 0:a5222dea5eac | 10 | |
batrado | 0:a5222dea5eac | 11 | // diplay text on LCD |
batrado | 0:a5222dea5eac | 12 | void textLCD(char *text, int line) { |
batrado | 0:a5222dea5eac | 13 | char tmpBuf[16]; |
batrado | 0:a5222dea5eac | 14 | for (int i = 0; i < 16; i++) tmpBuf[i] = 0x20; |
batrado | 0:a5222dea5eac | 15 | for (int i = 0; i < strlen(text); i++) { |
batrado | 0:a5222dea5eac | 16 | if (i <= 16) tmpBuf[i] = text[i]; |
batrado | 0:a5222dea5eac | 17 | } |
batrado | 0:a5222dea5eac | 18 | |
batrado | 0:a5222dea5eac | 19 | lcd.locate(0, line); |
batrado | 0:a5222dea5eac | 20 | lcd.printf(tmpBuf); |
batrado | 0:a5222dea5eac | 21 | } |
batrado | 0:a5222dea5eac | 22 | |
batrado | 0:a5222dea5eac | 23 | int main(){ |
batrado | 0:a5222dea5eac | 24 | char tmpString[16]; |
batrado | 0:a5222dea5eac | 25 | int tmpSec = 0; |
batrado | 0:a5222dea5eac | 26 | char bootSymbols[17]; |
batrado | 0:a5222dea5eac | 27 | char booting = 0x00; |
batrado | 0:a5222dea5eac | 28 | char countDown = 0; |
batrado | 0:a5222dea5eac | 29 | lcd.cls(); |
batrado | 0:a5222dea5eac | 30 | Rtc_Ds1307::Time_rtc tm = {}; |
batrado | 0:a5222dea5eac | 31 | int iKey = 0; |
batrado | 0:a5222dea5eac | 32 | int oldiKey = 0; |
batrado | 0:a5222dea5eac | 33 | |
batrado | 0:a5222dea5eac | 34 | for (int i = 0; i <= 16; i++) bootSymbols[i] = 0x00; |
batrado | 0:a5222dea5eac | 35 | textLCD("RTC_LCD Example", 0); |
batrado | 0:a5222dea5eac | 36 | |
batrado | 0:a5222dea5eac | 37 | while(true){ |
batrado | 0:a5222dea5eac | 38 | if (countDown >= 17){ |
batrado | 0:a5222dea5eac | 39 | booting = 0x01; |
batrado | 0:a5222dea5eac | 40 | } |
batrado | 0:a5222dea5eac | 41 | if (booting == 0x00){ |
batrado | 0:a5222dea5eac | 42 | for (int i = 0; i < countDown; i++){ |
batrado | 0:a5222dea5eac | 43 | bootSymbols[i] = 0xff; |
batrado | 0:a5222dea5eac | 44 | } |
batrado | 0:a5222dea5eac | 45 | sprintf(tmpString, "%s", bootSymbols); |
batrado | 0:a5222dea5eac | 46 | textLCD(tmpString, 1); |
batrado | 0:a5222dea5eac | 47 | countDown++; |
batrado | 0:a5222dea5eac | 48 | wait(0.1); |
batrado | 0:a5222dea5eac | 49 | } else { |
batrado | 0:a5222dea5eac | 50 | if(rtc.getTime(tm)){ |
batrado | 0:a5222dea5eac | 51 | sprintf(tmpString, "%02d:%02d:%02d %d/%d/%d", tm.hour, tm.min, tm.sec, tm.date, tm.mon, (tm.year % 100)); |
batrado | 0:a5222dea5eac | 52 | textLCD(tmpString, 0); |
batrado | 0:a5222dea5eac | 53 | |
batrado | 0:a5222dea5eac | 54 | iKey = keys.read_u16(); |
batrado | 0:a5222dea5eac | 55 | if (iKey != oldiKey) { |
batrado | 0:a5222dea5eac | 56 | |
batrado | 0:a5222dea5eac | 57 | oldiKey = iKey; |
batrado | 0:a5222dea5eac | 58 | |
batrado | 0:a5222dea5eac | 59 | if ((iKey > 0) &&(iKey < 1000)) { |
batrado | 0:a5222dea5eac | 60 | sprintf(tmpString, "Key %c LEFT %4x", char(0x7e), iKey); |
batrado | 0:a5222dea5eac | 61 | } else if ((iKey > 1000) && (iKey < 15000)) { |
batrado | 0:a5222dea5eac | 62 | sprintf(tmpString, "Key %c UP %4x", char(0x7e), iKey); |
batrado | 0:a5222dea5eac | 63 | } else if ((iKey > 15000) && (iKey < 40000)) { |
batrado | 0:a5222dea5eac | 64 | sprintf(tmpString, "Key %c DOWN %4x", char(0x7e), iKey); |
batrado | 0:a5222dea5eac | 65 | } else if ((iKey > 40000) && (iKey < 60000)) { |
batrado | 0:a5222dea5eac | 66 | sprintf(tmpString, "Key %c RIGHT %4x", char(0x7e), iKey); |
batrado | 0:a5222dea5eac | 67 | } else { |
batrado | 0:a5222dea5eac | 68 | sprintf(tmpString, "Key %c NONE %4x", char(0x7e), iKey); |
batrado | 0:a5222dea5eac | 69 | } |
batrado | 0:a5222dea5eac | 70 | |
batrado | 0:a5222dea5eac | 71 | |
batrado | 0:a5222dea5eac | 72 | textLCD(tmpString, 1); |
batrado | 0:a5222dea5eac | 73 | } |
batrado | 0:a5222dea5eac | 74 | blueLED = (tmpSec != tm.sec) ? 0 : 1; |
batrado | 0:a5222dea5eac | 75 | tmpSec = tm.sec; |
batrado | 0:a5222dea5eac | 76 | } |
batrado | 0:a5222dea5eac | 77 | } |
batrado | 0:a5222dea5eac | 78 | |
batrado | 0:a5222dea5eac | 79 | } |
batrado | 0:a5222dea5eac | 80 | } |