Thông báo

Collapse
No announcement yet.

vấn đề đồng hồ thời gian thực dùng atmega8

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • vấn đề đồng hồ thời gian thực dùng atmega8

    -hôm qua mới code cái đồng hồ bằng con atmega 8,chỉ cần có giờ và phút thôi(làm bằng led đơn ghép lại),nhưng mô phỏng chỉ có số 8585 mà chưa biết chỉnh sửa sao,bác nào từng làm chỉ em với
    -với lại em định làm bằng led đơn ghép lại thì nên nối song song hay nối tiếp nhẩy(1 đoạn là 5 con,mạch em đang vẽ song song) và nối kiểu anot hay catot chung thì sáng tốt nhất, có cần tran để đưa mã led hay đưa thẳng giống led 7 thường thôi
    -các bác cho em ý kiến với
    code:
    PHP Code:
    /*****************************************************
    This program was produced by the
    CodeWizardAVR V1.24.6 Professional
    Automatic Program Generator
    © Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com
    e-mail:office@hpinfotech.com

    Project : 
    Version : 
    Date    : 10/27/2012
    Author  : F4CG                            
    Company : F4CG                            
    Comments: 


    Chip type           : ATmega8L
    Program type        : Application
    Clock frequency     : 8.000000 MHz
    Memory model        : Small
    External SRAM size  : 0
    Data Stack size     : 256
    *****************************************************/

    #include <mega8.h> 
    #include <delay.h>
    #include <ds1307.h>
    #include <i2c.h>
    // portc.4.5 la chan sda va scl
    #define led PORTD // port d de xuat ma led
    // port c de quet cac led
    #define led1 PORTC.0
    #define led2 PORTC.1
    #define led3 PORTC.2
    #define led4 PORTC.3  
    // cac chan pin b de nhan cac phim bam
    #define set PINB.0
    #define up PINB.1
    #define down PINB.2                   
    //Cac bit de quan ly trang thai cac phim
    bit set0=1,set1=1,up0=1,up1=1,down0=1,down1=1;

    unsigned char led7[]={0b00000011,
                          
    0b10011111,
                          
    0b00100101,
                          
    0b00001101,
                          
    0b01001001,
                          
    0b01000001,
                          
    0b00011111,
                          
    0b00000001,
                          
    0b00010001
                          
    } ;

    // I2C Bus functions
    #asm
       
    .equ __i2c_port=0x15 ;PORTC
       
    .equ __sda_bit=4
       
    .equ __scl_bit=5
    #endasm

    unsigned char h=10,m=00,s=00;//Bien gio phut giay
    unsigned char kt=0,a=0,x=0;

    //Ham con

    void kt_phim();   // ham kiem tra phim
    void read_ds1307();  // ham doc chip ds1307
    void hien_thi();    // ham hien thi led

    void main(void)
    {
    // Declare your local variables here

    // Input/Output Ports initialization
    // Port B initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
    // State7=T State6=T State5=T State4=T State3=P State2=P State1=P State0=P 
    PORTB=0x0F;
    DDRB=0x00;

    // Port C initialization
    // Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out 
    // State6=T State5=T State4=T State3=0 State2=0 State1=0 State0=0 
    PORTC=0x00;
    DDRC=0x0F;

    // Port D initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
    // State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1 
    PORTD=0xFF;
    DDRD=0xFF;

    // I2C Bus initialization
    i2c_init();// khoi tao i2c

    // DS1307 Real Time Clock initialization
    // Square wave output on pin SQW/OUT: On
    // Square wave frequency: 1Hz

    rtc_init(0,1,0);// khoi tao rtc


    while (1)
          {
          
    x++;//Bien chay quan ly nhap nhay cac so tuong ung voi che do cai dat
          
    kt_phim();
          
    read_ds1307();
          
    hien_thi();
          if(
    x==100)
          {
          
    x=0;
          }
          };
    }    
    //  ham kiem tra va cai dat cho ds1307
    void read_ds1307()
    {
       if(
    kt==0)
         {
          if(
    a==1//Kiem tra truoc do co cai dat lai gio,phut,giay khong
             
    //Neu co thi cai dat lai du lieu dau vao cho DS1307
              
    rtc_set_time(h,m,s);a=0;
              
    delay_us(300);
              }
            
    rtc_get_time(&h,&m,&m); //Doc du lieu tu DS1307
         
    }
    }
    void hien_thi()
    {
     if((
    kt==0)||(kt!=1)||((kt==1)&&(x<50)))
     {
     
    led led7[h/10];led1=1;delay_us(2000);led1=0;
     
    led led7[h%10];led2=1;delay_us(2000);led2=0;
     }
     if((
    kt==0)||(kt!=2)||((kt==2)&&(x<50))) //Tuong tu nhu KT gio
     
    {
     
    led led7[m/10];led3=1;delay_us(2000);led3=0;
     
    led led7[m%10];led4=1;delay_us(2000);led4=0;
     }
    }
    void kt_phim()
    {
     
    set0=set1;
     
    set1=set//Kiem tra trang thai ban dau cua phim
    if((set0==1)&&(set1==0)) //Kiem tra xem phim co dc nhan nha hay khong
     
    {                        //Neu dc nhan nha thi tang kt++,neu khong thi
      
    kt++;                   //doi toi khi nao phim dc nha moi tang bien kt
      
    if(kt>3)
      
    kt=0;                  
     }
    switch(
    kt//Lua chon che do ung voi gia tri cua bien kt
     
    {
      case 
    0:break; //Tro lai che do chay binh thuong
      
    case 1//Che do cai dat gio
      

       
    up0=up1;up1=up;a=1;
       if((
    up0==1)&&(up1==0))
        {
         
    h++;
         if(
    h>23)h=0;
        }
         
    down0=down1;down1=down;
         if((
    down0==1)&&(down1==0))
        {
         
    h--;
         if(
    h>23)h=23;
         }
        case 
    2//Che do cai dat phut
        
    {
         
    up0=up1;up1=up;a=1;
         if((
    up0==1)&&(up1==0))
          {
          
    m++;
         if(
    m>59)m=0;
           }
           
    down0=down1;down1=down;
         if((
    down0==1)&&(down1==0))
           {
            
    m--;
         if(
    m>59)m=59;
         }
    break;
    }


    }
    }
         


    sao mà cái file .rar đính kem không được nhẩy
    em đính tạm cái hình
    Attached Files

  • #2
    có bác nào có mạch đồng hồ số khi mất điện và có điện lại vẫn chạy không, không cần chỉnh sửa lại giờ
    em đang cần!!!!

    Comment


    • #3
      Nguyên văn bởi nhuttan.lhu Xem bài viết
      có bác nào có mạch đồng hồ số khi mất điện và có điện lại vẫn chạy không, không cần chỉnh sửa lại giờ
      em đang cần!!!!
      DS1307 dùng Pin nuôi là ok mà bác.
      Phạm Duy Quý

      PN:0973291335


      Dám nghĩ,dám nói,dám làm

      Comment


      • #4
        ý mình là chỉ có sử dụng 1 nguồn điện thôi không sử dụng nguồn khác

        Comment


        • #5
          Nguyên văn bởi nhuttan.lhu Xem bài viết
          ý mình là chỉ có sử dụng 1 nguồn điện thôi không sử dụng nguồn khác
          ko có điện thì ko có gì chạy hết, pin của ds1307 là pin chỉ nuôi con DS khi nguồn chính của mạch bị mất. Nó là cục 3V giống như trong máy tính, tới máy tính cũng cần có pin để nuôi BIOS mờ.

          Comment

          Về tác giả

          Collapse

          hungtrinh36 Tìm hiểu thêm về hungtrinh36

          Bài viết mới nhất

          Collapse

          Đang tải...
          X