Thông báo

Collapse
No announcement yet.

Mega 16 - 74hc574 - led 7 doan

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

  • Mega 16 - 74hc574 - led 7 doan

    Theo mình được biết thì con IC 74HC574 tín hiệu vào các chân D0 đến D7 vào như thế nào thì xuất ra các chân Q0 đến Q7 đều như nhau. Nhưng khi kết nối Led 7 đoạn vào theo chương trình thì nó phải đếm lên tới 9999, nhưng trên mạch nó lại đếm lên 9 rồi về 0. Còn nếu không kết nối 74HC574 vào led 7 đoạn thì nó vẫn đếm lên 9999 bình thường. Bác nào biết vì sao ko chỉ mình với!
    Đây là code của mình.

    /************************************************** ***
    This program was produced by the
    CodeWizardAVR V2.03.4 Standard
    Automatic Program Generator
    © Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
    HP InfoTech, Development Tools for Microcontrollers, C Compilers, In-System Programmers

    Project :
    Version :
    Date : 15/11/2011
    Author :
    Company :
    Comments:


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

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

    unsigned char flash MS[10]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x0 9};
    unsigned char flash Addr[5]={0xF7,0xFB,0xFD,0xFE};
    unsigned long nghin,tram,chuc,donvi,so;
    unsigned char i,t,m,n;


    // External Interrupt 0 service routine
    interrupt [EXT_INT0] void ext_int0_isr(void)
    {
    // Place your code here

    }

    // External Interrupt 1 service routine
    interrupt [EXT_INT1] void ext_int1_isr(void)
    {
    // Place your code here

    }

    void giaima()
    {
    nghin=so/1000;
    tram=(so/100)%10;
    chuc=(so/10)%10;
    donvi=so%10;
    }
    void hienthi()
    {

    PORTA=Addr[0];
    PORTC=MS[nghin];
    delay_us(delay);

    PORTA=Addr[1];
    PORTC=MS[tram];
    delay_us(delay);

    PORTA=Addr[2];
    PORTC=MS[chuc];
    delay_us(delay);

    PORTA=Addr[3];
    PORTC=MS[donvi];
    delay_us(delay);

    }
    void led7()
    {
    while(i<30)
    {
    giaima();
    hienthi();
    i++;
    PORTB.0=0; // tao xung cho 74hc574
    PORTB.0=1;

    };
    PORTB.0=0;
    PORTB.0=1;

    i=0;
    so++;
    so=so%10000;

    }



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

    // Input/Output Ports initialization
    // Port A initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out
    // State7=T State6=T State5=T State4=T State3=0 State2=0 State1=0 State0=0
    PORTA=0x00;
    DDRA=0xfF;

    // Port B initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
    PORTB=0xff;
    DDRB=0xFF;

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

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

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    // Mode: Normal top=FFh
    // OC0 output: Disconnected
    TCCR0=0x00;
    TCNT0=0x00;
    OCR0=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer 1 Stopped
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer 1 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: Timer 2 Stopped
    // Mode: Normal top=FFh
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;

    // External Interrupt(s) initialization
    // INT0: On
    // INT0 Mode: Falling Edge
    // INT1: On
    // INT1 Mode: Falling Edge
    // INT2: Off
    GICR|=0xC0;
    MCUCR=0x0A;
    MCUCSR=0x00;
    GIFR=0xC0;

    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x00;

    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;

    // Global enable interrupts
    #asm("sei")

    while (1)
    {
    led7();
    };
    }
    Nhận làm mạch, ĐAMH sử dụng vđk Pic & AVR tại tp.HCM
    Liên hệ sđt: 0902.808.371

  • #2
    Đây là mạch mô phỏng.
    Attached Files
    Nhận làm mạch, ĐAMH sử dụng vđk Pic & AVR tại tp.HCM
    Liên hệ sđt: 0902.808.371

    Comment

    Về tác giả

    Collapse

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

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

    Collapse

    Đang tải...
    X