EngineersGarage

  • Engineers Garage Main Site
  • Visit our active EE Forums
    • EDABoard.com
    • Electro-Tech-Online
  • Projects & Tutorials
    • Circuits
    • Electronic Projects
    • Tutorials
    • Components
  • Digi-Key Store
    • Cables, Wires
    • Connectors, Interconnect
    • Discrete
    • Electromechanical
    • Embedded Computers
    • Enclosures, Hardware, Office
    • Integrated Circuits (ICs)
    • Isolators
    • LED/Optoelectronics
    • Passive
    • Power, Circuit Protection
    • Programmers
    • RF, Wireless
    • Semiconductors
    • Sensors, Transducers
    • Test Products
    • Tools
  • Advertise
You are here: Home / Topics / electronic school bell

electronic school bell

|

Microcontroller › 8051 › electronic school bell

  • This topic has 5 replies, 5 voices, and was last updated 10 years, 9 months ago by Ashutosh Bhatt.
Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • October 26, 2010 at 6:22 am #459
    smivinki smith
    Participant
    http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0″ id=”tts_flash” height=”18″ width=”18″>

    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 period

    3.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 #5150
    smivinki smith
    Participant

     //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 hexa
    sbit RS =P3^0;  //pin de registro y de seleccion
    sbit EN =P3^6; //pin de habilitacion
    sbit R_W =P3^1;//pin de lectura y escritura.
    sbit seleccion_hora=P1^0; //pin para setear la hora 
    sbit seleccion_minuto=P1^1;//pin para setear el minuto
    sbit start_alarma=P1^4;//pin para iniciar la alarma 
    sbit D2=P1^6;  //Declaracion de pines para seleccionar cada display(sin decodificador BCD)
    sbit D3=P1^7; // pin que activa el display D2
    sbit 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 display 
    unsigned char tabla_ascii[11]=”0123456789″; //la posicion de cada caracter corresponde a la pocision de su codigo 
    int fil=0;
    int col=0;         
    ///////////////////////// zona de declaracion de los prototipos///////////////////////////////////////////////////
     void RETARDO(unsigned int milisegundo);  // prototipo de la funcion delay en milisegundo
     void COMANDO_LCD(unsigned char COMANDO);  // prototipo de la funcion de los comandos del lcd
     void DATOS_LCD(unsigned char DATOS);   //prototipo de la funcion de datos del lcd
     void DATOS_LCD2(unsigned char *DATOS);  //
     void F_NUM_LCD(int time_val); //prototipo de la funcion de numero del lcd
     void WRITE_TO_LCD(unsigned char str1[10]); //prototipo de la funcion para escribir al lcd
     void PARTE_HORA(); //prototipo de la funcion de la hora 
     void PARTE_MINUTO(); // prototipo de la funcion del minuto
     void PARTE_SEGUNDO();  // prototipo de la funcion del segundo
     void display_me(char cad[2]);  //prototipo  de la funcion en el array codigo_7segmento     
     void TIMER(void);                                  
    ////////////////////////////////////////////////////////////////////////////////////////////
    //Declaracion de funciones proptotipos
    /////////////////////////Programa principal/////////////////////////////////////
    void main()
    {
     //Zona de declaracion de variables del programa principal
    int var_desact_alarma=0;
    int var_act_alarma=0;
    int var_display=0;
    start_alarma=1; // inicializar todo los pines de 
    seleccion_hora=1;  //   entrada en 
    seleccion_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 lcd
    COMANDO_LCD(0xc4);//pasa a la segunda linea del lcd
    F_NUM_LCD(p_horas); //llama a la funcion numero del lcd y imprime la hora
    DATOS_LCD(‘:’);  //manda caracter a la funcion de datos del lcd
    F_NUM_LCD(p_minutos); //llama a la funcion numero otra vez y imprime los minutos
    DATOS_LCD(‘:’);  // manda caracter al lcd
    F_NUM_LCD(segundo);  //llama a la funcion numero del lcd y imprime los segundos 
     
    while(start_alarma==0) // mientras que el reloj no esta activo
     {
      RETARDO(10);  // funcion delay
      if(seleccion_hora==0) //si el buton selec_h esta pulsado 
      PARTE_HORA(); //llama a la funcion parte hora para setear la hora 
      RETARDO(15);  
      if(seleccion_minuto==0)  //si el buton selec_m esta pulsado  
      PARTE_MINUTO();  //llama a la funcion parte hora para setear el minuto
      RETARDO(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 reloj
      while(parte_h<12)  // mientras que la hora es menor que 12
      {
      parte_h++;   // incrementa la hora
       parte_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 reloj
       while(parte_m<60)  // mientras que la hora es menor que 60
       { 
          parte_m++;   // incrementa el minuto
     segundo=0;   // se hace cero el segundo 
    while(segundo<59) // si segundo es menor que 59
    { 
      
      segundo++; // incrmentar el segundo 
      COMANDO_LCD(0X81); //comando para escribir en la1 linea en la posicion 1
      RETARDO(1); // funcion delay
      WRITE_TO_LCD(“ELECTRONIC BELL”); // imprision de cadena al lcd
           COMANDO_LCD(0xc4);   // se pasa a la segunda linea
           RETARDO(1);  //funcion delay
           F_NUM_LCD(parte_h-1);   //se resta 1 a la hora para que se inicializa en 0
           DATOS_LCD(‘:’);   //manda dos puntos al lcd
           F_NUM_LCD(parte_m-1);  //se resta 1 a la minuto para que se inicializa en 0
           DATOS_LCD(‘:’);  //manda dos puntos al lcd
           F_NUM_LCD(segundo); //llamada a la funcion segundo
           TIMER();             // llamada a la funcion timer 
      var_desact_alarma++;//incrementa la variable para llegar a los 40 minutos 
      if((var_act_alarma==2360)&&(bocina=1))//si la variable es 2360 sec = 40 minuto y bocina estaba apagada ?
      {
      bocina=0;  // activar la bocina
      var_act_alarma=0;// reinicializo la variable
    var_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 segundo       
           if(( 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 milisegundo
    for(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 intruccion
      EN=1;// se pone en 1 para habilitar el lcd
      R_W=0;//se pone en 0, solamente para escribir 
      RETARDO(1);//llama a la fuccion retardo
      EN=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 dato
     EN=1; //habilita el lcd
     R_W=0; // conf para escribir
     RETARDO(1);// llama a la fucion delay
     EN=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 bits 
    COMANDO_LCD(0x0E); //
    COMANDO_LCD(0X0C); // quitar el parpadeo del lcd.
    RETARDO(1);//delay ms
    DATOS_LCD2(str1);
    }
      
     
    void PARTE_HORA()  // funcion para setear la hora 
    {
    p_horas++;             // se incrementa la variable p_horas
    if(p_horas>12) // si el es menor que 12
    p_horas=0;   // se hace zero la var p_horas
    COMANDO_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_minutos
    if(p_minutos>59)  // si el es menor que 59
    p_minutos=0;   // se hace zero la var p_minutos
    COMANDO_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 cero
    COMANDO_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; // declaraciones 
      char temp;  // de las variables
      
    for(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 xchar
      P1 |= 0x00;               
      P0=Codigo_7segmentos[xchar];    //Se manda al puerto dos el valor en el array codigo definido por la 
                                      //posicion guardada en xchar 
    switch(x)  // variable de control de switch
    {
     
    case 0: // en caso la variable x es 0
    P1 = 64;// se selecciona el pin p1^6 para el display
    RETARDO(10); //delay para el 7 segmento
    break;
     
    case 1:  // en caso la variable x es 1
    P1 = 128;// se selecciona el pin p1^7 para el display
    RETARDO(10); //delay para el 7 segmento
    break;
     
    }
    }
    P1 |= 0x00; // reinicializacion del puerto 
    }
    /////////////////agregao//////////////////////////////
    void TIMER(void) // FUNCION TIMER 25ms
     { unsigned char x; // declaracion de las variables
     for(x=0;x<35;x++){ //multiplico el timer por 40 y se resta 5 de los tiempo perdido.
     TMOD=0X10;// timer 1 modo 1
     TL1=0XFE; // 25ms/1.085micro se resta de 65536-23041.47=42494.5
     TH1=0XA5; //lo convierto en hexa decimal el valor
     TR1=1;  // arranca el temporizador
     while(TF1==0); //espera que se desborda el temporizador
     TR1=0; //parrar el temporizador
     TF1=0; // pone el flag a cero
     } }
     
    April 7, 2013 at 4:56 pm #9440
    GAJENDRA TIWARI
    Participant

    IS THIS CODE FOR ELECTRONIC SCHOOL BELL?

    September 30, 2014 at 4:06 pm #12244
    adi suyahman nainggolan
    Participant

    schematic?

     

    October 1, 2014 at 6:35 am #12248
    AJISH ALFRED
    Participant

    Hi smivinki smith, what is your query?

    October 13, 2014 at 6:12 pm #12278
    Ashutosh Bhatt
    Participant

    from where you got the code?

    in which language the comments are given?

    just ask what is your problem in designing this application?

  • Author
    Posts
  • Viewing 6 posts - 1 through 6 (of 6 total)
    • You must be logged in to reply to this topic.
    Log In

    RSS Recent Posts

    • Pic18f25q10 osccon1 settings swordfish basic July 18, 2025
    • Sump pit water alarm - Kicad 9 July 18, 2025
    • Anyone jumped from Easyeda std to Easyeda pro? July 17, 2025
    • turbo jet fan - feedback appreciated. July 17, 2025
    • More fun with ws2812 this time XC8 and CLC July 17, 2025

    Stay Up To Date

    Newsletter Signup
    EngineersGarage

    Copyright © 2025 WTWH Media LLC. All Rights Reserved. The material on this site may not be reproduced, distributed, transmitted, cached or otherwise used, except with the prior written permission of WTWH Media
    Privacy Policy | Advertising | About Us

    Search Engineers Garage

    • Engineers Garage Main Site
    • Visit our active EE Forums
      • EDABoard.com
      • Electro-Tech-Online
    • Projects & Tutorials
      • Circuits
      • Electronic Projects
      • Tutorials
      • Components
    • Digi-Key Store
      • Cables, Wires
      • Connectors, Interconnect
      • Discrete
      • Electromechanical
      • Embedded Computers
      • Enclosures, Hardware, Office
      • Integrated Circuits (ICs)
      • Isolators
      • LED/Optoelectronics
      • Passive
      • Power, Circuit Protection
      • Programmers
      • RF, Wireless
      • Semiconductors
      • Sensors, Transducers
      • Test Products
      • Tools
    • Advertise