Microcontroller › 8051 › electronic school bell
- This topic has 5 replies, 5 voices, and was last updated 10 years, 3 months ago by Ashutosh Bhatt.
Viewing 6 posts - 1 through 6 (of 6 total)
-
AuthorPosts
-
October 26, 2010 at 6:22 am #459smivinki smithParticipant
1.ring bell automatically after each period of 40 minutes
2.
displays it in digital form the current time and the number of passing class period3.A system shuts down automatically after the last period (11 period). digital clock that displays the current time, however, continues to work as usual.
November 17, 2010 at 9:08 am #5150smivinki smithParticipant//DESARROLLADO POR SMIVINKI SMITH
//ESTUDIANTE DE UTESA (RD) EN ING ELECTRONICA.#include<reg52.h>#include <string.H> /* Libreria de funciones para cadenas, se incluye para la funcion strub*/sfr pin_datos_lcd=0XA0;// direccion del P2 en hexasbit RS =P3^0; //pin de registro y de seleccionsbit EN =P3^6; //pin de habilitacionsbit R_W =P3^1;//pin de lectura y escritura.sbit seleccion_hora=P1^0; //pin para setear la horasbit seleccion_minuto=P1^1;//pin para setear el minutosbit start_alarma=P1^4;//pin para iniciar la alarmasbit D2=P1^6; //Declaracion de pines para seleccionar cada display(sin decodificador BCD)sbit D3=P1^7; // pin que activa el display D2sbit bocina =P3^2; //pin para timbre de la alarma.///////////////////////////// zona delaracion global./////////////////////////////////int parte_h ,parte_m=0;int p_horas,p_minutos=0;int segundo=0;unsigned char code Codigo_7segmentos[11]={0x40,0xF9,0x24,0x30,0x19,0x12,0x02,0xF8,0x00,0x10}; //numrero 0 a 9 del displayunsigned char tabla_ascii[11]=”0123456789″; //la posicion de cada caracter corresponde a la pocision de su codigoint fil=0;int col=0;///////////////////////// zona de declaracion de los prototipos///////////////////////////////////////////////////void RETARDO(unsigned int milisegundo); // prototipo de la funcion delay en milisegundovoid COMANDO_LCD(unsigned char COMANDO); // prototipo de la funcion de los comandos del lcdvoid DATOS_LCD(unsigned char DATOS); //prototipo de la funcion de datos del lcdvoid DATOS_LCD2(unsigned char *DATOS); //void F_NUM_LCD(int time_val); //prototipo de la funcion de numero del lcdvoid WRITE_TO_LCD(unsigned char str1[10]); //prototipo de la funcion para escribir al lcdvoid PARTE_HORA(); //prototipo de la funcion de la horavoid PARTE_MINUTO(); // prototipo de la funcion del minutovoid PARTE_SEGUNDO(); // prototipo de la funcion del segundovoid display_me(char cad[2]); //prototipo de la funcion en el array codigo_7segmentovoid TIMER(void);//////////////////////////////////////////////////////////////////////////////////////////////Declaracion de funciones proptotipos/////////////////////////Programa principal/////////////////////////////////////void main(){//Zona de declaracion de variables del programa principalint var_desact_alarma=0;int var_act_alarma=0;int var_display=0;start_alarma=1; // inicializar todo los pines deseleccion_hora=1; // entrada enseleccion_minuto=1; // 1.COMANDO_LCD(0x01); //COMANDO_LCD(0x82); //comando que escribe en la 1 linea y 2 posicion.WRITE_TO_LCD(“SETEAR HORA”);//escribir una cadena al lcdCOMANDO_LCD(0xc4);//pasa a la segunda linea del lcdF_NUM_LCD(p_horas); //llama a la funcion numero del lcd y imprime la horaDATOS_LCD(‘:’); //manda caracter a la funcion de datos del lcdF_NUM_LCD(p_minutos); //llama a la funcion numero otra vez y imprime los minutosDATOS_LCD(‘:’); // manda caracter al lcdF_NUM_LCD(segundo); //llama a la funcion numero del lcd y imprime los segundoswhile(start_alarma==0) // mientras que el reloj no esta activo{RETARDO(10); // funcion delayif(seleccion_hora==0) //si el buton selec_h esta pulsadoPARTE_HORA(); //llama a la funcion parte hora para setear la horaRETARDO(15);if(seleccion_minuto==0) //si el buton selec_m esta pulsadoPARTE_MINUTO(); //llama a la funcion parte hora para setear el minutoRETARDO(15);}while(1)// bucle infinito{char radio[12][2]={“01″,”02″,”03″,”04″,”05″,”06″,”07″,”08″,”09″,”10″,”11″,”00”};int var_display=0;if(start_alarma==1){parte_h=p_horas; //se iguala la funion que setea el minuto y la funcion que incrementar el minuto para tener los mimos valor al inicializar el relojwhile(parte_h<12) // mientras que la hora es menor que 12{parte_h++; // incrementa la horaparte_m=p_minutos; //se iguala la funion que setea el minuto y la funcion que incrementar el minuto para tener los mimos valor al inicializar el relojwhile(parte_m<60) // mientras que la hora es menor que 60{parte_m++; // incrementa el minutosegundo=0; // se hace cero el segundowhile(segundo<59) // si segundo es menor que 59{segundo++; // incrmentar el segundoCOMANDO_LCD(0X81); //comando para escribir en la1 linea en la posicion 1RETARDO(1); // funcion delayWRITE_TO_LCD(“ELECTRONIC BELL”); // imprision de cadena al lcdCOMANDO_LCD(0xc4); // se pasa a la segunda lineaRETARDO(1); //funcion delayF_NUM_LCD(parte_h-1); //se resta 1 a la hora para que se inicializa en 0DATOS_LCD(‘:’); //manda dos puntos al lcdF_NUM_LCD(parte_m-1); //se resta 1 a la minuto para que se inicializa en 0DATOS_LCD(‘:’); //manda dos puntos al lcdF_NUM_LCD(segundo); //llamada a la funcion segundoTIMER(); // llamada a la funcion timervar_desact_alarma++;//incrementa la variable para llegar a los 40 minutosif((var_act_alarma==2360)&&(bocina=1))//si la variable es 2360 sec = 40 minuto y bocina estaba apagada ?{bocina=0; // activar la bocinavar_act_alarma=0;// reinicializo la variablevar_display=var_display+1;if(var_display==12){var_display=0;}for(fil=0;fil<2;fil++){for(col=0;col<var_display;col++){display_me(radio[fil,col]);RETARDO(10);}}}var_act_alarma++;//incrementa la variable para activar la bocina por 15 segundoif(( bocina==0)&&(var_desact_alarma==15))//si la bocina esta activado y los se paso los 15 segundos{bocina=1;} // desactiva la alarma}var_desact_alarma=0; //reinicializo lavariable}p_minutos=0; // reicializacion de la variable minuto}p_horas=0; // reiniciacion de la variable horas}}}////////////////// funcion delay en milisegundo /////////////////////////////void RETARDO(unsigned int milisegundo){ int j, k;for (j=0;j<milisegundo;j++) // se pase el valor en la variable milisegundofor(k=0;k<1275;k++); // por valor}///////////////////////////////////////////////////////////////////////////////////void COMANDO_LCD(unsigned char COMANDO)// configuracion para mandar comando al lcd.{ pin_datos_lcd= COMANDO;RS=0;// rs se pone en 0 para conf como registro de intruccionEN=1;// se pone en 1 para habilitar el lcdR_W=0;//se pone en 0, solamente para escribirRETARDO(1);//llama a la fuccion retardoEN=0; //deshabilita}////////////////////////////////////////////////////////////////////////////////////void DATOS_LCD(unsigned char DATOS)// configuracion para mandar datos al lcd{pin_datos_lcd=DATOS;RS=1;// rs se pone en 1 para conf como datoEN=1; //habilita el lcdR_W=0; // conf para escribirRETARDO(1);// llama a la fucion delayEN=0; // deshabilita el lcd}//////////////////////////// // function para mandar cadena al LCD///////////////////////////////////////////////////////void DATOS_LCD2(unsigned char *DATOS){int aux;for(aux=0;DATOS[aux]!=0;aux++){DATOS_LCD(DATOS[aux]); // llamada a la funcion datos_lcd}}////////////////////// Function to send number to LCD/////////////////////////////////void F_NUM_LCD(int time_val){int int_amt;int_amt=time_val/10;DATOS_LCD(int_amt+48);int_amt=time_val%10;DATOS_LCD(int_amt+48);}///////////////funion para inicializar el LCD/////////////////////////////////void WRITE_TO_LCD(unsigned char str1[10]){COMANDO_LCD(0x38); // configurar para 8 bitsCOMANDO_LCD(0x0E); //COMANDO_LCD(0X0C); // quitar el parpadeo del lcd.RETARDO(1);//delay msDATOS_LCD2(str1);}void PARTE_HORA() // funcion para setear la hora{p_horas++; // se incrementa la variable p_horasif(p_horas>12) // si el es menor que 12p_horas=0; // se hace zero la var p_horasCOMANDO_LCD(0xc4); // se manda el comando 0x04 para escribir en la segunda linea y la posicion 4.F_NUM_LCD(p_horas); // llama a la funcion LCD responsable de los numeros}/////////////////// funcion para setear el minuto//////////////////////void PARTE_MINUTO(){p_minutos++; // se incrementa la variable p_minutosif(p_minutos>59) // si el es menor que 59p_minutos=0; // se hace zero la var p_minutosCOMANDO_LCD(0xc7); // se manda el comando 0x07 para escribir en la segunda linea y la posicion 7.F_NUM_LCD(p_minutos); // llama a la funcion LCD responsable de los numeros}//////////////////////////funcion de los segundos//////////////////////void PARTE_SEGUNDO(){segundo=0; //se pone la variable sec en ceroCOMANDO_LCD(0XCA); // se manda el comando 0xca para escribir en la segunda linea y la posicion 10.F_NUM_LCD(segundo); // inprime los segundos en el lcd}//////////////////FUNCION PARA MONSTRAR EL PERIODO EN EL DISPLAY///////////////////////////////////////////////void display_me(char cad[2]){unsigned char x,xchar; // declaracioneschar temp; // de las variablesfor(x=0;x<2;x++) //va desplasando el caracter a mostrar en los display{temp=cad[x];xchar=strpos(tabla_ascii,temp); //Strpos(), devuelve la posicion//el valor se guarda en xcharP1 |= 0x00;P0=Codigo_7segmentos[xchar]; //Se manda al puerto dos el valor en el array codigo definido por la//posicion guardada en xcharswitch(x) // variable de control de switch{case 0: // en caso la variable x es 0P1 = 64;// se selecciona el pin p1^6 para el displayRETARDO(10); //delay para el 7 segmentobreak;case 1: // en caso la variable x es 1P1 = 128;// se selecciona el pin p1^7 para el displayRETARDO(10); //delay para el 7 segmentobreak;}}P1 |= 0x00; // reinicializacion del puerto}/////////////////agregao//////////////////////////////void TIMER(void) // FUNCION TIMER 25ms{ unsigned char x; // declaracion de las variablesfor(x=0;x<35;x++){ //multiplico el timer por 40 y se resta 5 de los tiempo perdido.TMOD=0X10;// timer 1 modo 1TL1=0XFE; // 25ms/1.085micro se resta de 65536-23041.47=42494.5TH1=0XA5; //lo convierto en hexa decimal el valorTR1=1; // arranca el temporizadorwhile(TF1==0); //espera que se desborda el temporizadorTR1=0; //parrar el temporizadorTF1=0; // pone el flag a cero} }April 7, 2013 at 4:56 pm #9440GAJENDRA TIWARIParticipantIS THIS CODE FOR ELECTRONIC SCHOOL BELL?
September 30, 2014 at 4:06 pm #12244adi suyahman nainggolanParticipantschematic?
October 1, 2014 at 6:35 am #12248AJISH ALFREDParticipantHi smivinki smith, what is your query?
October 13, 2014 at 6:12 pm #12278Ashutosh BhattParticipantfrom where you got the code?
in which language the comments are given?
just ask what is your problem in designing this application?
-
AuthorPosts
Viewing 6 posts - 1 through 6 (of 6 total)
- You must be logged in to reply to this topic.