Welcome & Happy Holidays!
Trang 3 của 23 Đầu tiênĐầu tiên 1234513 ... CuốiCuối
Kết quả 21 đến 30 của 225
  1. #21
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Cais số 85 này nhiều nguyên nhân phết.Bạn nên nôis mass cho vỏ thạch anh.thu cham tay vao pin xem có hiện tượng gì k.Nguồn cấp đủ k.

  2. #22
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi kochodoi
    Anh ơi, em treo điện trở lên chân SCL và SDA rồi nhưng vẫn cứ hiển thị số 85 anh ạ. Mong đươc phản hồi sớm từ anh! Dưới đây là file em đã sửa!
    Đồng chí nên làm mạch mô phỏng ngon trước mạch mô phỏng không chạy thì mạch thật khả năng không chạy rất cao. Ban đầu bạn test từng phần 1 quét led tốt sau đó mới đọc từ ds1307 ra, rồi mới sử dụng phím để set thời gian nếu không rất khó biết lỗi ở khâu nào.

  3. #23
    Ngày tham gia
    Oct 2015
    Bài viết
    0
    Trước tiên, cảm ơn các anh đã quan tâm đến đề tài của em. Em đang làm mạch mô phỏng nhưng nó chỉ hiển thị số 85 ở 3 led 7 thanh. Em đã quét Led rồi, không có lỗi gì ở phần hiển thị. Em nhờ các anh xem hộ em phần code nó sai ở đâu ạ. Phần mô phỏng em dùng Proteus 7.8 nên phiên bản dưới có thể không đọc được. Các anh có thể xem qua phần code và mô phỏng em gửi trong file Test đồng hồ ở trên đó ạ. Cảm ơn các anh nhiều, chúc các anh một ngày vui vẻ!

  4. #24
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi kochodoi
    Trước tiên, cảm ơn các anh đã quan tâm đến đề tài của em. Em đang làm mạch mô phỏng nhưng nó chỉ hiển thị số 85 ở 3 led 7 thanh. Em đã quét Led rồi, không có lỗi gì ở phần hiển thị. Em nhờ các anh xem hộ em phần code nó sai ở đâu ạ. Phần mô phỏng em dùng Proteus 7.8 nên phiên bản dưới có thể không đọc được. Các anh có thể xem qua phần code và mô phỏng em gửi trong file Test đồng hồ ở trên đó ạ. Cảm ơn các anh nhiều, chúc các anh một ngày vui vẻ!
    đoạn code read_DS bạn chỉnh lại như sau nhé



    Mã:
    void Read_DS1307()
    { 
        if(kt==0)
        {
            if(a==1)
            {
                rtc_set_time(h,m,s);
                a=0;
                delay_us(300);
            }
        }   
        rtc_get_time(&h,&m,&s);
    }

  5. #25
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Thạch anh chỗ con ds1307 là 32,768khz chứ không phải là 1MHz.
    DDRC bạn sửa lại là 0xFC nhé do 2 chân PORTC.0 và PORTC.1 dùng giao tiếp i2c không cho nó là đầu ra được.
    Bạn treo thêm 2 con trở 4,7k vào 2 chân scl và sda nữa nhé.

  6. #26
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi chúng
    đoạn code read_DS bạn chỉnh lại như sau nhé



    Mã:
    void Read_DS1307()
    {
        if(kt==0)
        {
            if(a==1)
            {
                rtc_set_time(h,m,s);
                a=0;
                delay_us(300);
            }
        }  
        rtc_get_time(&h,&m,&s);
    }
    Chào anh. Cái code của em như thế mà anh, bản sửa của anh giống hệt bản gốc của em ạ! Cảm ơn anh đã bớt thời gian trả lời ạ!

  7. #27
    Ngày tham gia
    Apr 2016
    Bài viết
    0
    Trích dẫn Gửi bởi mta_cdt
    Thạch anh chỗ con ds1307 là 32,768khz chứ không phải là 1MHz.
    DDRC bạn sửa lại là 0xFC nhé do 2 chân PORTC.0 và PORTC.1 dùng giao tiếp i2c không cho nó là đầu ra được.
    Bạn treo thêm 2 con trở 4,7k vào 2 chân scl và sda nữa nhé.
    Chào anh, trước tiên em cảm ơn anh đã trả lời bài của em. Em đã sửa các lỗi của anh góp ý và kết quả vẫn như thế ạ, nó vẫn hiển thị số 85. Nếu anh bớt chút thời gian chạy thử mô phỏng của em thì em cảm ơn nhiều ạ!
    Phần dưới là code và mô phỏng em đã sửa ạ!

  8. #28
    Ngày tham gia
    Sep 2015
    Bài viết
    11
    Trích dẫn Gửi bởi kochodoi
    Chào anh. Cái code của em như thế mà anh, bản sửa của anh giống hệt bản gốc của em ạ! Cảm ơn anh đã bớt thời gian trả lời ạ!
    gắn trở kéo lên 2 chân SCL và SDA vào rồi xem kĩ lại cái code của mình post có khác code của bạn hay ko nhé

  9. #29
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi kochodoi
    Chào anh, trước tiên em cảm ơn anh đã trả lời bài của em. Em đã sửa các lỗi của anh góp ý và kết quả vẫn như thế ạ, nó vẫn hiển thị số 85. Nếu anh bớt chút thời gian chạy thử mô phỏng của em thì em cảm ơn nhiều ạ!
    Phần dưới là code và mô phỏng em đã sửa ạ!
    Như thế là như thế nào được. Code mình đã sửa như thế này nhưng có vẻ set giờ chưa được


    Mã:
    /*****************************************************
    This program was produced by the
    CodeWizardAVR V2.05.0 Professional
    Automatic Program Generator
    © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com
    
    Project :
    Version :
    Date    : 11/11/2013
    Author  : NeVaDa
    Company :
    Comments:
    
    
    Chip type              : ATmega16
    Program type            : Application
    AVR Core Clock frequency: 8.000000 MHz
    Memory model            : Small
    External RAM size      : 0
    Data Stack size        : 256
    *****************************************************/
    
    #include <mega16.h>
    #include <delay.h>
    
    // I2C Bus functions
    #asm
      .equ __i2c_port=0x15 ;PORTC
      .equ __sda_bit=1
      .equ __scl_bit=0
    #endasm
    #include <i2c.h>
    
    // DS1307 Real Time Clock functions
    #include <ds1307.h>
    #define LED1 PORTC.2
    #define LED2 PORTC.3
    #define LED3 PORTC.4
    #define LED4 PORTC.5
    #define LED5 PORTC.6
    #define LED6 PORTC.7
    
    #define set PIND.0
    #define up PIND.1
    #define down PIND.2
    
    bit set0 = 0;
    bit set1 = 1;
    bit up0 = 1;
    bit up1 = 1;
    bit down0 = 1;
    bit down1 = 1;
    unsigned char code[10] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
    unsigned char h;
    unsigned char m;
    unsigned char s;
    unsigned char kt, a, x;
    void Kt_phim();
    void Read_DS1307();
    void Hien_thi();
    
    // Declare your global variables here
    
    void main(void)
    {
    // Declare your local variables here
    
    // Input/Output Ports initialization
    // Port A 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=T State2=T State1=T State0=T
    PORTA=0x00;
    DDRA=0xFF;
    
    // 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=T State2=T State1=T State0=T
    PORTB=0x00;
    DDRB=0x00;
    
    // Port C 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=T State2=T State1=T State0=T
    PORTC=0x00;
    DDRC=0xFC;
    
    // Port D 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=T State2=T State1=T State0=T
    PORTD=0x0F;
    DDRD=0x00;
    
    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    // Mode: Normal top=0xFF
    // OC0 output: Disconnected
    TCCR0=0x00;
    TCNT0=0x00;
    OCR0=0x00;
    
    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer1 Stopped
    // Mode: Normal top=0xFFFF
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;
    
    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer2 Stopped
    // Mode: Normal top=0xFF
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;
    
    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    // INT2: Off
    MCUCR=0x00;
    MCUCSR=0x00;
    
    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x00;
    
    // USART initialization
    // USART disabled
    UCSRB=0x00;
    
    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;
    
    // ADC initialization
    // ADC disabled
    ADCSRA=0x00;
    
    // SPI initialization
    // SPI disabled
    SPCR=0x00;
    
    // TWI initialization
    // TWI disabled
    TWCR=0x00;
    
    // I2C Bus initialization
    i2c_init();
    
    // DS1307 Real Time Clock initialization
    // Square wave output on pin SQW/OUT: Off
    // SQW/OUT pin state: 0
    rtc_init(0,0,0);
    
    while (1)
          {
    x++;
            Kt_phim();
            Read_DS1307();
            Hien_thi();
            if(x==60)
                x=0;
          }
    }
    void Read_DS1307()
    {
        if(kt==0)
        {
            if(a==1)
            {
                rtc_set_time(h,m,s);
                a=0;
                delay_us(300);
            }
        } 
        rtc_get_time(&h,&m,&s);
    }
    void Hien_thi()
    {
        if((kt==0)||(kt!=1)||((kt==1)&&(x<30)))
        {
            PORTA = code[h/10]; LED1=1; delay_us(2000); LED1=0;
            PORTA = code[h%10]; LED2=1; delay_us(2000); LED2=0;
        }
        if((kt==0)||(kt!=2)||((kt==2)&&(x<30)))
        {
            PORTA = code[m/10]; LED3=1; delay_us(2000); LED3=0;
            PORTA = code[m%10]; LED4=1; delay_us(2000); LED4=0;
        }
        if((kt==0)||(kt!=3)||((kt==3)&&(x<30)))
        {
            PORTA = code[s/10]; LED5=1; delay_us(2000); LED5=0;
            PORTA = code[s%10]; LED6=1; delay_us(2000); LED6=0;
        }
    }
    void Kt_phim()
    {
        set0=set1; set1=set;
        if((set0=1)&&(set1==0))
        {
            kt++;
            if(kt>=4)
            kt=0;
        }
    switch(kt)
    {
        case 0: break;
        case 1:
            {
                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;
                }
                break;
            }
        case 2:
            {
                up0 = up1; up1 = up; a=1;
                if((up0==1)&&(up1==0))
                {
                    m++;
                    if(m>59)
                    m=0;
                }
                break;
                down0 = down1; down1 = down;
                if((down0==1)&&(down==0))
                {
                    m--;
                    if(m>59)
                    m=59;
                }
                break;
            }
        case 3:
            {
                up0 = up1; up1 = up; a=1;
                if((up0==1)&&(up1==0))
                {
                    s++;
                    if(s>59)
                    s=0;
                }
                down0 = down1; down1 = down;
                if((down0==1)&&(down==0))
                {
                    s--;
                    if(s>59)
                    s=59;
                }
                break;
            }
    }
    }
    Còn đây là kết quả mô phỏng chú xem có khác của chú không nhé.


    [IMG]http://*************/attachments/14836/[/IMG]


  10. #30
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi mta_cdt
    Như thế là như thế nào được. Code mình đã sửa như thế này nhưng có vẻ set giờ chưa được


    Mã:
    /*****************************************************
    This program was produced by the
    CodeWizardAVR V2.05.0 Professional
    Automatic Program Generator
    © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com
    
    Project :
    Version :
    Date    : 11/11/2013
    Author  : NeVaDa
    Company :
    Comments:
    
    
    Chip type              : ATmega16
    Program type            : Application
    AVR Core Clock frequency: 8.000000 MHz
    Memory model            : Small
    External RAM size      : 0
    Data Stack size        : 256
    *****************************************************/
    
    #include <mega16.h>
    #include <delay.h>
    
    // I2C Bus functions
    #asm
      .equ __i2c_port=0x15 ;PORTC
      .equ __sda_bit=1
      .equ __scl_bit=0
    #endasm
    #include <i2c.h>
    
    // DS1307 Real Time Clock functions
    #include <ds1307.h>
    #define LED1 PORTC.2
    #define LED2 PORTC.3
    #define LED3 PORTC.4
    #define LED4 PORTC.5
    #define LED5 PORTC.6
    #define LED6 PORTC.7
    
    #define set PIND.0
    #define up PIND.1
    #define down PIND.2
    
    bit set0 = 0;
    bit set1 = 1;
    bit up0 = 1;
    bit up1 = 1;
    bit down0 = 1;
    bit down1 = 1;
    unsigned char code[10] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
    unsigned char h;
    unsigned char m;
    unsigned char s;
    unsigned char kt, a, x;
    void Kt_phim();
    void Read_DS1307();
    void Hien_thi();
    
    // Declare your global variables here
    
    void main(void)
    {
    // Declare your local variables here
    
    // Input/Output Ports initialization
    // Port A 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=T State2=T State1=T State0=T
    PORTA=0x00;
    DDRA=0xFF;
    
    // 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=T State2=T State1=T State0=T
    PORTB=0x00;
    DDRB=0x00;
    
    // Port C 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=T State2=T State1=T State0=T
    PORTC=0x00;
    DDRC=0xFC;
    
    // Port D 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=T State2=T State1=T State0=T
    PORTD=0x0F;
    DDRD=0x00;
    
    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    // Mode: Normal top=0xFF
    // OC0 output: Disconnected
    TCCR0=0x00;
    TCNT0=0x00;
    OCR0=0x00;
    
    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer1 Stopped
    // Mode: Normal top=0xFFFF
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;
    
    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer2 Stopped
    // Mode: Normal top=0xFF
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;
    
    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    // INT2: Off
    MCUCR=0x00;
    MCUCSR=0x00;
    
    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x00;
    
    // USART initialization
    // USART disabled
    UCSRB=0x00;
    
    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;
    
    // ADC initialization
    // ADC disabled
    ADCSRA=0x00;
    
    // SPI initialization
    // SPI disabled
    SPCR=0x00;
    
    // TWI initialization
    // TWI disabled
    TWCR=0x00;
    
    // I2C Bus initialization
    i2c_init();
    
    // DS1307 Real Time Clock initialization
    // Square wave output on pin SQW/OUT: Off
    // SQW/OUT pin state: 0
    rtc_init(0,0,0);
    
    while (1)
          {
    x++;
            Kt_phim();
            Read_DS1307();
            Hien_thi();
            if(x==60)
                x=0;
          }
    }
    void Read_DS1307()
    {
        if(kt==0)
        {
            if(a==1)
            {
                rtc_set_time(h,m,s);
                a=0;
                delay_us(300);
            }
        }
        rtc_get_time(&h,&m,&s);
    }
    void Hien_thi()
    {
        if((kt==0)||(kt!=1)||((kt==1)&&(x<30)))
        {
            PORTA = code[h/10]; LED1=1; delay_us(2000); LED1=0;
            PORTA = code[h%10]; LED2=1; delay_us(2000); LED2=0;
        }
        if((kt==0)||(kt!=2)||((kt==2)&&(x<30)))
        {
            PORTA = code[m/10]; LED3=1; delay_us(2000); LED3=0;
            PORTA = code[m%10]; LED4=1; delay_us(2000); LED4=0;
        }
        if((kt==0)||(kt!=3)||((kt==3)&&(x<30)))
        {
            PORTA = code[s/10]; LED5=1; delay_us(2000); LED5=0;
            PORTA = code[s%10]; LED6=1; delay_us(2000); LED6=0;
        }
    }
    void Kt_phim()
    {
        set0=set1; set1=set;
        if((set0=1)&&(set1==0))
        {
            kt++;
            if(kt>=4)
            kt=0;
        }
    switch(kt)
    {
        case 0: break;
        case 1:
            {
                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;
                }
                break;
            }
        case 2:
            {
                up0 = up1; up1 = up; a=1;
                if((up0==1)&&(up1==0))
                {
                    m++;
                    if(m>59)
                    m=0;
                }
                break;
                down0 = down1; down1 = down;
                if((down0==1)&&(down==0))
                {
                    m--;
                    if(m>59)
                    m=59;
                }
                break;
            }
        case 3:
            {
                up0 = up1; up1 = up; a=1;
                if((up0==1)&&(up1==0))
                {
                    s++;
                    if(s>59)
                    s=0;
                }
                down0 = down1; down1 = down;
                if((down0==1)&&(down==0))
                {
                    s--;
                    if(s>59)
                    s=59;
                }
                break;
            }
    }
    }
    Còn đây là kết quả mô phỏng chú xem có khác của chú không nhé.


    [IMG]http://*************/attachments/14836/[/IMG]

    Rất cảm ơn anh đã bớt thời gian cho em. Chắc phần mô phỏng của em bị sai cái gì đó. Em cũng đã lên các diễn đàn khác hỏi và họ bảo là phải làm mạch thật để biết, đôi khi mô phỏng không thể đúng. Hiện nay, em đang tiến hành làm mạch thật, hy vọng rằng sẽ chạy như mong muốn. Cảm ơn anh nhiều, chúc anh ngày vui vẻ!

 

 
Trang 3 của 23 Đầu tiênĐầu tiên 1234513 ... CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Múi giờ GMT +7. Bây giờ là 02:44 AM. Diễn đàn sử dụng vBulletin® Phiên bản 4.2.5.
Bản quyền của 2019 vBulletin Solutions, Inc. Tất cả quyền được bảo lưu.
Ban quản trị không chịu trách nhiệm về nội dung do thành viên đăng.