Simple CloudX M633 Digital Stopwatch

by DwealthJossy in Circuits > Microcontrollers

440 Views, 2 Favorites, 0 Comments

Simple CloudX M633 Digital Stopwatch

digital stopwatch.bmp

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

Component Needed

cloudx.jpg
V3 CORD.jpg
16x2-LCD-Pinout.png
variable-trimpot.jpg
button.jpg
breadboard.jpg
JUMPER.jpg
10K.jpg
  • CloudX M633
  • CloudX SoftCard
  • LCD Display
  • Potentiometer
  • Push Button
  • Bread Board
  • Jumper Wire
  • V3 USB cable
  • 10k

You can get your component here

HARDWARE

digital stopwatch.bmp

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.

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>