Daniel Bromand
/
Counter_with_LCD_Display
Counter with LCD Display
main.cpp
- Committer:
- bromand
- Date:
- 2011-06-28
- Revision:
- 0:1abd7e24ae31
- Child:
- 1:f580beec166a
File content as of revision 0:1abd7e24ae31:
//Include mbed header file which contains the definition of DigitalOut class. #include "mbed.h" //Include TextLCD header file which contains the definition of TextLCD class. #include "TextLCD.h" //Initialize TextLCD with the correct pins TextLCD lcd(p24, p26, p27, p28, p29, p30); //This function gets an integer and converts it to a charecter char* ConvertIntToChar(int i) { char* c = ""; switch (i) { case 1: c = "1"; break; case 2: c = "2"; break; case 3: c = "3"; break; case 4: c = "4"; break; case 5: c = "5"; break; case 6: c = "6"; break; case 7: c = "7"; break; case 8: c = "8"; break; case 9: c = "9"; break; case 0: c = "0"; break; } return c; } //Print to LCD function receives an integer as an input and print the number to the LCD display //This function accepts values between 0 and 99999 void PrintToLCD(int iCounter) { //Check for out of range numbers if (iCounter < 0 || iCounter > 99999) return; char* c = ""; //case when the number is less than 10 if(iCounter < 10) { c = ConvertIntToChar(iCounter); lcd.locate(0, 1); lcd.printf(c); } //case when the number is less than 100 else if (iCounter<100) { //devide the number by 10 to get the 10s int i10s = iCounter/10; c = ConvertIntToChar(i10s); lcd.locate(0, 1); lcd.printf(c); //Get the leftover to print the 1s int i1s = iCounter%10; c = ConvertIntToChar(i1s); lcd.locate(1, 1); lcd.printf(c); } else if (iCounter<1000) { //devide the number by 100 to get the 100s int i100s = iCounter/100; c = ConvertIntToChar(i100s); lcd.locate(0, 1); lcd.printf(c); //Get the leftover to compute the 10s and 1s int iTemp = iCounter%100; int i10s = iTemp/10; c = ConvertIntToChar(i10s); lcd.locate(1, 1); lcd.printf(c); int i1s = iTemp%10; c = ConvertIntToChar(i1s); lcd.locate(2, 1); lcd.printf(c); } else if (iCounter<10000) { //devide the number by 1000 to get the 1000s int i1000s = iCounter/1000; c = ConvertIntToChar(i1000s); lcd.locate(0, 1); lcd.printf(c); //Get the leftover to compute the 100s, 10s and 1s int iTemp100s = iCounter%1000; int i100s = iTemp100s/100; c = ConvertIntToChar(i100s); lcd.locate(1, 1); lcd.printf(c); //Get the leftover to compute the 10s and 1s int iTemp10s = iTemp100s%100; int i10s = iTemp10s/10; c = ConvertIntToChar(i10s); lcd.locate(2, 1); lcd.printf(c); int i1s = iTemp10s%10; c = ConvertIntToChar(i1s); lcd.locate(3, 1); lcd.printf(c); } } //Main function int main() { //Clear the LCD display lcd.cls(); //Locate Row 0 Column 0 in the LCD display lcd.locate(0, 0); //Print "The End" lcd.printf("Start Counting:"); //Iterate between 0 and 1000. for(int i=0 ; i<=1000 ; i++) { //Call PrintToLCD function PrintToLCD(i); //wait for 250ms wait(0.25); } //Clear the LCD display lcd.cls(); //Locate Row 0 Column 0 in the LCD display lcd.locate(0, 0); //Print "The End" lcd.printf("The End!!!"); }