Thông báo

Collapse
No announcement yet.

Led ma trận dùng atmega16 , can giup do

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

  • Led ma trận dùng atmega16 , can giup do

    Chao các bác, em đang làm cái led ma trận như của anh Nghaiha hướng dẫn, rất hay, làm thử mô phỏng trên protues khá tốt nên quyết định làm mạch thật nhìn cho đã

    Đây là sơ đồ của nó, em sửa đổi một tí là không dùng Tran để chốt nguồn dương mà dùng IC 74LS125, với lại ma trận của em chỉ là 8*8 thôi :
    Click image for larger version

Name:	led ma tran.JPG
Views:	1
Size:	118.8 KB
ID:	1413742

    Còn đây là code của nó, đây là thử mạch nên em chỉ để cho có 2 led giữa sáng kiểu dấu 2 chấm xem thế nào đã
    PHP Code:
    /*****************************************************
    This program was produced by the
    CodeWizardAVR V2.05.5a Evaluation
    Automatic Program Generator
    © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com

    Project : 
    Version : 
    Date    : 5/22/2012
    Author  : Freeware, for evaluation and
    non-commercial use only
    Company : 
    Comments: 


    Chip type               : ATmega16L
    Program type            : Application
    AVR Core Clock frequency: 1.000000 MHz
    Memory model            : Small
    External RAM size       : 0
    Data Stack size         : 256
    *****************************************************/

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

    #define B PORTA.1
    #define C PORTA.2
    #define A PORTA.0
    #define SCL PORTB.3
    unsigned char Pattern1[8]={0,1,2,3,4,5,6,7};
    unsigned char flash chao[]={0xFF,
    0xFF,
    0xFF,
    0xE7,
    0xE7,
    0xFF,
    0xFF,
    0xFF};
    unsigned char Dmen[8]; 

     
    // SPI functions
    #include <spi.h>
    unsigned char r=0;
    unsigned char i;
    void LatchData(){
        
    SCL=0;
        
    SCL=1;
    }
    // Timer1 output compare A interrupt service routine
    interrupt [TIM1_COMPAvoid timer1_compa_isr(void)
    {   
       
    spi(Dmen[r]);
        
    LatchData();
      
    PORTA=Pattern1[r]+8
       
    r++ ;
       if(
    r==7r=0;
    // Place your code here

    }



    // Declare your global variables here

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

    // Input/Output Ports initialization
    // Port A 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 
    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=0x00;
    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=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
    PORTD=0x00;
    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: 15.625 kHz
    // Mode: CTC top=OCR1A
    // 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: On
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x0B;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0xB9;
    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=0x10;

    // 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 Type: Master
    // SPI Clock Rate: 250.000 kHz
    // SPI Clock Phase: Cycle Half
    // SPI Clock Polarity: Low
    // SPI Data Order: LSB First
    SPCR=0x74;
    SPSR=0x00;

    // TWI initialization
    // TWI disabled
    TWCR=0x00;
    for (
    i=0;i<=7;i++){
            
    Dmen[i]=chao[i]; }

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

    while (1)
          {
          
    // Place your code here

          
    }

    Làm xong , lắp mạch chạy thử thì chả có em nào sáng cả, lấy đồng hồ ra đo thì thấy:
    hoá ra các chân A.1 A.2 A.3 nối vào các chân A B C của 74LS138 đều không có áp, dẫn đến các chấn output của nó đều dương cả, làm cho 74ls125 đệm dòng thành trở kháng cao hết, làm gì có áp cho led sáng .
    Mà rõ ràng các chân 6 của 74ls138 đã cho lên dương, hai chân 4 ,5 đều xuống âm cả. không hiểu sao cả. Mà con atmega 16 em chỉ nạp chương trình thôi, chứ chưa fuse bit gì cả, vẫn chạy dao động nội .

    Các bác xem bệnh giúp em với

  • #2
    Hic Hic , mấy ngày rồi không ai giúp mình à . Cho mình hỏi luôn con ẢTmega 16L lúc nguyên chưa Fuse bit thì cổng A có dùng vậy. Mong mọi người giúp đỡ

    Comment


    • #3
      Chú ý PORTC

      1. JTAGEN (JTAG Enable): trên AVR có tích hợp sẵn bộ JTAG, đó là một module giao tiếp với phần cứng của chip. Nhìn chung, JTAG thường được dùng để kiểm tra hoạt động của chip. Trên AVR, JTAG có thể được dùng để nạp chương trình nhưng phổ biến hơn là dùng để debug lỗi chương trình (gỡ rối chương trình). Module JTAG làm việc thông qua 4 chân TCK, TMS, TDO và TDI, trên chip ATmega32 4 chân lần lần lượt là PC2, PC3, PC4 và PC5. Theo mặc định JTAG được kích hoạt, bit JTAGEN=0 (programmed) như trong hình 1. Vì thế với các chip ATmega32 mới mua về, các chân PC2:5 trên PORTC có thể không sử dụng để xuất nhập thông thường được. Nếu bạn không muốn sử dụng chức năng Debug trực tiếp trên chip thì hãy uncheck bit JTAGEN(uncheck tương đương unprogrammed, tương đương JTAGEN=1) để dùng các chân JTAG như các chân xuất nhập thông thường.

      nguồn hocavr.com

      Comment


      • #4
        Hic, cám ơn bác
        Nhưng mình có dùng PortC đâu chỉ có A B thôi mà

        Comment


        • #5
          Nguyên văn bởi havian Xem bài viết
          Hic Hic , mấy ngày rồi không ai giúp mình à . Cho mình hỏi luôn con ẢTmega 16L lúc nguyên chưa Fuse bit thì cổng A có dùng vậy. Mong mọi người giúp đỡ
          Bạn thử test cái cổng A, B đó đi xem nó có truyền/nhận dữ liệu được không bằng cách dùng nút bấm cho vào 1 chân cổng A, cổng B cho điều khiển 1 led đơn. Phải đảm bảo mạch phần cứng chạy tốt, chương trình đã nạp được cho vi điều khiển thì mới tính tiếp được chứ.
          Mua bán thiết bị điện công nghiệp tại Hà Nội, toàn quốc.
          http://diencongnghiep360.com/
          http://tudienhathe.vn/

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          • mèomướp
            Trả lời cho Sửa bộ nguồn DC 60V 45A
            bởi mèomướp
            Dạ hông dám làm thì chắc chắn sẽ mãi ko thể làm được đâu ạ. Nguồn xung dân dụng vài kw giờ rất nhìu ạ, sạc ô tô điện, máy hàn, lò vi sóng, âm ly... tùy chất lượng mà độ phức tạp sẽ khác nhau ạ. Và cái giá phải trả về kinh tế...
            Hôm qua, 13:11
          • tuyennhan
            Trả lời cho Sửa bộ nguồn DC 60V 45A
            bởi tuyennhan
            Sửa dạng này thì chuyên còn không dám chắc khộng cháy nổ với linh kiện bán ngoài chợ nói gì khộng chuyên .
            Hôm qua, 09:25
          • tuyennhan
            Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
            bởi tuyennhan
            Đúng rồi chọn mua theo tai . ca thì phải toàn dải nhạc thì chỉ cao và thấp thé nên loa ca thì nghe nhạc không hay và ngược lại .
            Muốn ca và nhạc đều hay thì phải dúng 2 giàn , còn nếu chỉ có 1 thì phải chỉnh sửa lại sao cho ca và nhạc đều được không quá dở ....
            Hôm qua, 09:10
          • Ng.Phuong.5
            Vấn đề in lỗ khoan ra pdf ở Orcad 9.2
            bởi Ng.Phuong.5
            Vấn đề cũ: khi in mạch ra pdf và bấm chọn Keep Drill Holes Open, in ra thì pdf trắng đen các lỗ chân linh kiện như nhau. Mặc dù có linh kiện phần Drill là 1mm, có linh kiện thì là 3mm. Cho em hỏi cách sửa phần này ở Orcad 9.2 với ạ.
            Mấy con...
            09-01-2025, 19:44
          • viettinh
            Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
            bởi viettinh
            Bác nói đúng quá. Cơ mà muốn mua hàng chính hãng, hàng thương hiệu mà tai lại hợp hàng tầu mới khổ chứ.
            Đang tính mua cái loa tầu nữa cột đằng sau loa này, Loa sony chỉ để hát nhép thôi, có dc k các bác ...
            09-01-2025, 18:12
          • nguyendinhvan
            Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
            bởi nguyendinhvan
            Theo tôi thì khi hpj sản xuất ra cái loa đó, đã có nhiều chuyên gia kỹ thuật hiệu chỉnh, tính toán các phần tử kỹ lưỡng rồi.
            Bây giờ tính toán hiệu chỉnh lại cần có đội ngũ tương đương với nhà sản xuất.
            Cách đơn giản...
            09-01-2025, 00:04
          • mèomướp
            Trả lời cho Sửa bộ nguồn DC 60V 45A
            bởi mèomướp
            Dạ cháu có ý tốt muốn động viên chú ấy ngâm cứu khoa học thôi ạ. Về phần kiểm tra dao động thì chú ấy chưa biết thì sẽ tìm hiểu được là cần những gì ạ, chắc chắn là khi hướng dẫn phần ấy các cô chú nào đó sẽ lưu ý cần loại sò công suất ra tránh cháy nổ rồi ạ....
            08-01-2025, 19:02
          • tuyennhan
            Trả lời cho Sửa bộ nguồn DC 60V 45A
            bởi tuyennhan
            Chủ thớt hỏi có kiểm tra được dao động mà không cấp nguồn thì rõ trình ở mức nào mà mèo còn xúi ngâm cứu nữa ác vậy ....
            08-01-2025, 15:43
          • tuyennhan
            Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
            bởi tuyennhan
            Loa bass đấu trực tiếp không qua phân tần để thành loa toàn dải xem có thoát tiếng khộng , nếu không thoát cần phải sửa lại mạch cs hay âm sắc nếu đủ trình còn nếu thoát ca hay nhưng chưa vừa ý vì bass kém chăc thì đấu lại như cũ và đấu thêm loa mid treble bên ngoài .
            08-01-2025, 15:28
          • mèomướp
            Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
            bởi mèomướp
            Dạ loa tép bé xíu như ngón chân cái thôi ạ. Thiếu gì chỗ để đâu. Quan trọng là gắn thêm nó loa nghe ok hay ko thôi ạ...
            08-01-2025, 11:44
          Đang tải...
          X