Simple demo of using lcd1602 with keypad and ds1307 with freescale kl25z board.
Dependencies: RTC-DS1307 TextLCD mbed
Diff: main.cpp
- Revision:
- 0:a5222dea5eac
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Oct 29 08:09:30 2014 +0000 @@ -0,0 +1,80 @@ +// Display RealDateTime on LCD1602 KeyPad +#include "mbed.h" +#include "TextLCD.h" // LCD1602 +#include "Rtc_Ds1307.h" // RTC + +Rtc_Ds1307 rtc(PTE0, PTE1); +TextLCD lcd(PTA13, PTD5, PTA4, PTA5, PTC8, PTC9); +DigitalOut blueLED(LED_BLUE); +AnalogIn keys(PTB0); + +// diplay text on LCD +void textLCD(char *text, int line) { + char tmpBuf[16]; + for (int i = 0; i < 16; i++) tmpBuf[i] = 0x20; + for (int i = 0; i < strlen(text); i++) { + if (i <= 16) tmpBuf[i] = text[i]; + } + + lcd.locate(0, line); + lcd.printf(tmpBuf); +} + +int main(){ + char tmpString[16]; + int tmpSec = 0; + char bootSymbols[17]; + char booting = 0x00; + char countDown = 0; + lcd.cls(); + Rtc_Ds1307::Time_rtc tm = {}; + int iKey = 0; + int oldiKey = 0; + + for (int i = 0; i <= 16; i++) bootSymbols[i] = 0x00; + textLCD("RTC_LCD Example", 0); + + while(true){ + if (countDown >= 17){ + booting = 0x01; + } + if (booting == 0x00){ + for (int i = 0; i < countDown; i++){ + bootSymbols[i] = 0xff; + } + sprintf(tmpString, "%s", bootSymbols); + textLCD(tmpString, 1); + countDown++; + wait(0.1); + } else { + if(rtc.getTime(tm)){ + sprintf(tmpString, "%02d:%02d:%02d %d/%d/%d", tm.hour, tm.min, tm.sec, tm.date, tm.mon, (tm.year % 100)); + textLCD(tmpString, 0); + + iKey = keys.read_u16(); + if (iKey != oldiKey) { + + oldiKey = iKey; + + if ((iKey > 0) &&(iKey < 1000)) { + sprintf(tmpString, "Key %c LEFT %4x", char(0x7e), iKey); + } else if ((iKey > 1000) && (iKey < 15000)) { + sprintf(tmpString, "Key %c UP %4x", char(0x7e), iKey); + } else if ((iKey > 15000) && (iKey < 40000)) { + sprintf(tmpString, "Key %c DOWN %4x", char(0x7e), iKey); + } else if ((iKey > 40000) && (iKey < 60000)) { + sprintf(tmpString, "Key %c RIGHT %4x", char(0x7e), iKey); + } else { + sprintf(tmpString, "Key %c NONE %4x", char(0x7e), iKey); + } + + + textLCD(tmpString, 1); + } + blueLED = (tmpSec != tm.sec) ? 0 : 1; + tmpSec = tm.sec; + } + } + + } +} \ No newline at end of file