Thông báo

Collapse
No announcement yet.

help moi nguoi giup minh ve dong ho thoi gian thuc ds1307 voi a

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

  • help moi nguoi giup minh ve dong ho thoi gian thuc ds1307 voi a

    mình đang dùng atmega16, ds1307 và 47hc4094 truyền thông SPI va i2c của ds1307 hiển thị thời gian lên led 7 nhưng chương trình mình k biết mình viết sai ở đâu mà thời gian chạy không đúng với thực tế và led 7 của mình lại hay nhấp nháy liên tục, mình không muốn sử dụng ngắt, mong mọi người chỉ giáo dùm với ạ code của mình đây :


    #include <mega16.h>
    #include <delay.h>

    #asm
    .equ __i2c_port=0x15 ;PORTC
    .equ __sda_bit=1
    .equ __scl_bit=0
    #endasm
    #include <i2c.h>
    #include <ds1307.h>
    #include <spi.h>

    #define MENU PIND.0
    #define UP PIND.1
    #define DOWN PIND.2
    #define OK PIND.3

    unsigned int A;
    unsigned char h,m,s,mode=0; //led7 catot chung 0a 1b 2c 3d 4e 5f 6g dot/tat
    unsigned char So[10]=
    {
    //GFEDCBA
    0b00111111, //so 0 0x3F tat G
    0b00000110, //so 1 0x06 tat A,D,E,F,G
    0b01011011, //so 2 0x5B tat C,F
    0b01001111, //so 3 0x4F tat E,F
    0b01100110, //so 4 0x66 tat A,D,E
    0b01101101, //so 5 0x6D tat B,E
    0b01111101, //so 6 0x7D tat B
    0b00000111, //so 7 0x07 tat D,E,F,G
    0b01111111, //so 8 0x7F hien 7 thanh
    0b01101111, //so 9 0x6F tat E
    };

    void hiengio (unsigned int number)
    {
    unsigned char ng,tr,ch,dv;
    ng=number/1000;
    tr=(number-ng*1000)/100;
    ch=(number-ng*1000-tr*100)/10;
    dv=(number-ng*1000-tr*100-ch*10);
    //truyen du lieu slave cuoi den dau
    spi(So[dv]); //don vi slave 4
    spi(So[ch]); //chuc slave 3
    spi(So[tr]); //tram slave 2
    spi(So[ng]); //nghin slave 1
    PORTB.4=0; // du lieu chan SS xuong muc thap, bat dau truyen du lieu qua SPI
    delay_us(1);
    PORTB.4=1; //chan du lieu SS len muc cao, ngung truyen du lieu qua SPI
    };

    void main(void)
    {

    PORTA=0x00;
    DDRA=0x00;

    PORTB=0x10; //khoi tao PORTB.4=5V PORTB.0=5V
    DDRB=0xFF; //PORTB OUTPUT

    PORTC=0x00;
    DDRC=0x00;

    PORTD=0xFF;
    DDRD=0x00;

    //CAU HINH SPI
    SPCR=0x50; // TAO THANH GHI SPCR
    //bit SPE=1 cho phep SPI hoat dong
    //BIT MSTR=1 CHE DO MATER
    //BIT SPE=1 CHO PHEP SPI HOAT DONG
    //BIT CPHA=0
    SPSR=0x00;

    i2c_init();

    rtc_init(0,0,0);
    rtc_set_time(14,05,00);
    while (1)
    {
    rtc_get_time(&h,&m,&s);
    A=(h*100)+m;
    hiengio(A);
    delay_ms(300);
    if(!MENU)
    {
    delay_ms(400);
    while(OK)
    {
    if(!MENU)
    {
    delay_ms(300);
    mode++;
    if(mode>2)mode=0;
    }
    if(mode==0)
    {
    hiengio(h);
    if(!UP)
    {
    delay_ms(300);
    h++;
    if(h==24)h=0;
    }
    else
    if(!DOWN)
    {
    delay_ms(300);
    if(h>0)h--;
    else h=23;
    }
    else
    if(mode==1)
    {
    hiengio(m);
    if(!UP)
    {
    delay_ms(300);
    m++;
    if(m==60)m=0;
    }
    else
    if(!DOWN)
    {
    delay_ms(300);
    if(m>0)m--;
    else m=59;
    }
    }
    else
    if(mode==2)
    {
    hiengio(s);
    if(!UP)
    {
    delay_ms(300);
    s++;
    if(s==60)s=0;
    }
    else
    if(!DOWN)
    {
    delay_ms(300);
    if(s>0)s--;
    else s=59;
    }
    }
    }
    };
    }
    };
    }
    Click image for larger version

Name:	Capture.PNG
Views:	2
Size:	27.5 KB
ID:	1422259

Về tác giả

Collapse

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

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

Collapse

Đang tải...
X