Digital Clock using Atmega32

digital clock is a type of clock that displays the time digitally.It simply handles these functions electronically rather than mechanically.In this project LCD is used for time display is connected to atmega32. we will teach you shortly how to select an electronic time-base such that your clock will ticks at some known and accurate rate. A proper time delay is enough to make your clock to run accurately and precisely.

PROTEUS DESIGN

CODE

#include<avr/io.h>

#include<util/delay.h>

#define lcdport PORTA

#define signal PORTB

#define en PB2

#define rw PB1

#define rs PB0

void lcdcmd(unsigned char cmd);

void lcdint();

void lcddata(unsigned char data);

void dis_clk(int,int,int);

void lcd_print(char * str);

void main()

{

DDRA=0xff;

DDRB=0x07;

lcdint();

lcdcmd(0x86);

lcd_print("clock");

int hr,mm,ss;

while(1)

{

for(hr=00;hr<=24;hr++) // 24 hour format

{

for(mm=00;mm<=59;mm++)

{

for(ss=00;ss<=59;ss++)

{

  dis_clk(hr,mm,ss);

  }

  }

  }

}

}

void dis_clk(int x,int y,int z) // conversion

{

int p,q,r;

int a,b,c,d,e,f;

p=x;

q=y;

r=z;

a=p/10;

b=p%10;

lcdcmd(0xc4);

lcddata(a+48);

lcddata(b+48);

lcddata(':');

c=q/10;

d=q%10;

lcddata(c+48);

lcddata(d+48);

lcddata(':');

e=r/10;

f=r%10;

lcddata(e+48);

lcddata(f+48);

_delay_ms(1000);

}

void lcdint()

{

lcdcmd(0x38);

_delay_ms(1);

lcdcmd(0x01);

_delay_ms(1);

lcdcmd(0x0E);

_delay_ms(1);

}

void lcdcmd(unsigned char x)

{

lcdport=x;

signal=(0<<rs)|(0<<rw)|(1<<en);

_delay_ms(1);

signal=(0<<rs)|(0<<rw)|(0<<en);

_delay_ms(50);

}

void lcddata(unsigned char data)

{

lcdport= data;

signal= (1<<rs)|(0<<rw)|(1<<en);

_delay_ms(1);

signal= (1<<rs)|(0<<rw)|(0<<en);

_delay_ms(50);

}

void lcd_print(char * str)

{

  unsigned char i = 0;

  while(str[i]!=0)

lcddata(str[i]);

i++;

}

}

VIDEO

 

Category: 

tags: 

Share

Who's new

  • ravirajpatil871...
  • shubhambajoria
  • yassir
  • demiholyman890954
  • scottgillum51169040

Get Notified

 

Share

We are Social

Syndicate

Subscribe to Syndicate