50% found this document useful (2 votes)
8K views

Digital Alarm Clock Using 89S51 Microcontroller

This document contains code for a digital clock with time and alarm setting functions. The code includes functions to initialize an LCD display, set the time and alarm, display the time and check if the alarm time is triggered. The main function allows the user to set the alarm time and current time, then displays and updates the time in a continuous loop while also checking if the alarm has been triggered.
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
50% found this document useful (2 votes)
8K views

Digital Alarm Clock Using 89S51 Microcontroller

This document contains code for a digital clock with time and alarm setting functions. The code includes functions to initialize an LCD display, set the time and alarm, display the time and check if the alarm time is triggered. The main function allows the user to set the alarm time and current time, then displays and updates the time in a continuous loop while also checking if the alarm has been triggered.
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 5

//Program to ma e a digital cloc with time and alaram setting function #include<reg51.

h> #define port P1 #define cont_port P3 #define dataport P2 //Data port for LCD #define m_sec 10 sbit rs = cont_port^0; sbit rw = cont_port^1; sbit en = cont_port^6; sbit dig_hr1=port^0; sbit dig_min1=port^1; sbit start=port^2; sbit am_pm=port^3; sbit alarm_set=port^4; sbit alarm=port^7; int hr ,hr1=0,alarm_hr=0; int min,min1=0,alarm_min=0; int sec,sec1=0,dig_am_pm=0,alarm_am_pm=0; void delay(unsigned int msec) // Time delay function { int i,j ; for(i=0;i<msec;i++) for(j=0;j<1275;j++); } void lcd_cmd(unsigned char item) //Function to send command to LCD { dataport = item; rs= 0; rw=0; en=1; delay(1); en=0; return; } void lcd_data(unsigned char item) // Function to send data to LCD { dataport = item; rs= 1; rw=0; en=1; delay(1); en=0; return; } void lcd_data_string(unsigned char *str) // Function to send string to LCD { int i=0; while(str[i]!='\0') { lcd_data(str[i]); i++; delay(1); } return;

} lcd_data_int(int time_val) // Function to send number to LCD { int int_amt; int_amt=time_val/10; lcd_data(int_amt+48); int_amt=time_val%10; lcd_data(int_amt+48); } void lcd(unsigned char str1[10]) { lcd_cmd(0x38); lcd_cmd(0x0e); delay(1); lcd_data_string(str1); }

void set_alarm_hr1() // Function to set hours digit of alarm { delay(15); alarm_hr++; if(alarm_hr>11) alarm_hr=0; lcd_cmd(0xc3); lcd_data_int(alarm_hr); lcd_data(':'); } void set_alarm_min1() // Function to set minutes digit of Alarm { delay(15); alarm_min++; if(alarm_min>59) alarm_min=0; lcd_cmd(0xc6); lcd_data_int(alarm_min); }

void set_min1() // Function to set minutes digit of cloc { delay(10); min1++; if(min1>59) min1=0; lcd_cmd(0xc6); lcd_data_int(min1); }

void set_hr1() // // Function to set hours digit of cloc { delay(15); hr1++; if(hr1>11) hr1=0; lcd_cmd(0xc3); lcd_data_int(hr1); lcd_data(':'); }

void alarm_chec () // Function to chec alarm { if(hr==alarm_hr) { if(min==alarm_min) { if(dig_am_pm==alarm_am_pm) { alarm=1; lcd_cmd(0xc5); lcd("ALARM"); delay(10); alarm = 0; } } } } void main() { int ; start=1; dig_hr1=1; dig_min1=1; alarm_set=1; alarm=1; lcd_cmd(0x83); lcd("SET ALARM"); lcd_cmd(0xc3); lcd_data_int(hr1); lcd_data(':'); lcd_data_int(min1); alarm=0; while(alarm_set==0) { delay(25); if(dig_hr1==0) set_alarm_hr1(); if(dig_min1==0) set_alarm_min1(); } if(am_pm==0) { lcd_cmd(0xc8); lcd_data_string("am"); alarm_am_pm=0; } if(am_pm==1) { lcd_cmd(0xc8); lcd_data_string("pm"); alarm_am_pm=1; } delay(200); lcd_cmd(0x01); lcd_cmd(0x83);

lcd("SET TIMING"); lcd_cmd(0xc3); lcd_data_int(hr1); lcd_data(':'); lcd_data_int(min1); while(start==0) { delay(25); if(dig_hr1==0) set_hr1(); if(dig_min1==0) set_min1(); } if(am_pm==0) { lcd_cmd(0xc8); lcd_data_string("am"); dig_am_pm=0; } if(am_pm==1) { lcd_cmd(0xc8); lcd_data_string("pm"); dig_am_pm=1; } delay(200); lcd_cmd(0x01); while(1) { for( =0; <2; ++) { for(hr=hr1;hr<12;hr++) { for(min=min1;min<60;min++) { for(sec=0;sec<60;sec++) { lcd_cmd(0x82); delay(1); lcd_data_int(hr); lcd_data(':'); lcd_data_int(min); lcd_data(':'); lcd_data_int(sec); if(dig_am_pm==0) { lcd("am"); } else { lcd("pm"); } delay(80); alarm_chec (); lcd_data_string(" "); } }

min1=0; } if(dig_am_pm==0) dig_am_pm=1; else dig_am_pm=0; hr1=0; } } }

You might also like