Introduction: Simple CloudX M633 Digital Stopwatch

In this project, we are going to make a version of a digital clock that can keep a record of hours, minutes and seconds, just like a stopwatch on your mobile phone! We are going to use an LCD to display the time

Step 1: Component Needed

  • CloudX M633
  • CloudX SoftCard
  • LCD Display
  • Potentiometer
  • Push Button
  • Bread Board
  • Jumper Wire
  • V3 USB cable
  • 10k

You can get your component here

Step 2: HARDWARE

Step 1: Fix the LCD display in the bread board and connect to the CloudX M633 Board as per the following

  • R/S to pin1
  • ENA to pin2
  • D4 to pin3
  • D5 to pin4
  • D6 to pin5
  • D7 to pin6

Additionally, wire a 10k pot to +5V and GND, with it's wiper (output) to LCD screens VO pin .

  • connect Vss and K to GND
  • connect Vdd and A to +5v
  • connect R/W to to GND

N.B: A is Anode, K is Cathode

Step 2:

  • Fix the first push button(Start and Stop) in the bread board and connect the first leg to 10k and Pin7 of the CloudX Board and the other leg to GND.
  • Fix the Second push button(reset) in the breadBoard and connect the first leg to 10k and pin8 of the CloudX Board and the other leg to GND.

Step 3: CODING

Copy this code to your CloudX IDE

<p>#include <CloudX/M633.h><br>#include <CloudX/Lcd.h>
#include <Cloudx/stdlib.h></p><p>#define START_PAUSE 7
#define RESET 8
#define START 1
#define PAUSE 0</p><p>char timer[] = "00:00:00:0";
unsigned char HH, MM, SS, mSS,mscount, RFlag=0;
bit OmSF=0 , S_PFlag=0   ;</p><p>interrupt TimerOmSD(){</p><p>    if (INTCONbits.T0IF) {
      INTCONbits.T0IF = 0;
      TMR0 += 60;
      if (mscount++ == 10) {
      mscount = 0;
      OmSF = 1;
    }
   }
    
}</p><p>setup(){
//setup here</p><p>            pinMode(START_PAUSE , INPUT);
            pinMode(RESET , INPUT);  
            lcdSetting (1,2,3,4,5,6);
            lcdCmd(clear);
            lcdCmd(cursorOff);
            lcdWriteText(1,1, "CLOUDX STOPWATCH");</p><p>loop(){
//Program here</p><p>if( !readPin(START_PAUSE) ) {
         if(S_PFlag == START){
            delayMs(200);
            INTCON =     0b00000000;
            OPTION_REG = 0b00000000;
            mSS--;
            }</p><p>         if(S_PFlag == PAUSE && RFlag == 1 ){
            delayMs(200);
            INTCON =     0b11100000;
            OPTION_REG = 0b00000111;
            }</p><p>            if(S_PFlag == PAUSE && RFlag == 0 ){
            delayMs(200);
            INTCON =     0b11100000;
            OPTION_REG = 0b00000111;
            TMR0 += 60;
            mscount=0;
            OmSF = 0;
            }
     
            S_PFlag = ~S_PFlag;
            RFlag = 1;
            }</p><p>            if( !readPin(RESET) ){
            delayMs(200);
            HH = 0;
            MM = 0;
            SS = 0;
            mSS = 0;
            INTCON =     0b00000000;
            OPTION_REG = 0b00000000;
            mscount=0;
            OmSF = 0;
            RFlag = 0;
            S_PFlag = PAUSE;</p><p>            }</p><p>           if (OmSF){
                OmSF = ~ OmSF;
                mSS++;
                if(mSS==10) SS ++;
                if(SS==60 )MM++;
                if(MM==60 )HH++;
                }</p><p>            
            if(HH==100) HH=0;
            if(MM==60) MM=0;
            if(SS==60) SS=0;
            if(mSS==10) mSS=0;
            timer[1] = (HH%10) +48; timer[0] = (HH/10) +48;
            timer[4] = (MM%10) +48; timer[3] = (MM/10) +48;
            timer[7] = (SS%10) +48; timer[6] = (SS/10) +48;
            timer[9] = mSS +48;
            lcdWriteText(2,2, timer);</p><p>        }
}</p>

Step 4: