Thông báo

Collapse
No announcement yet.

[Help me] Xin code cho mạch AVR ?

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

  • [Help me] Xin code cho mạch AVR ?

    Tình hình là mình nguyên cứu viết hoài mà ko được. Anh em có thể giúp mình nha, vì mình mới làm quen avr à.
    Hình của mạch nó như zậy :



    Nguyên lý : Nhấn nút sw23 thì 8 led PortA sáng từ 1 tới 8, nhấn nút sw22 thì 8 led PortB sáng từ 8 tới 16...., Tương tự cho các nút sw21,20. Mình dùng interupt ngắt ngoài mà ko được. Mong anh em viết dùng một đoạn demo cho 2 nút. Thanks các pro trước.

  • #2
    bạn định làm gì với cái mạch này thế.
    Tư vấn thiết kế hệ thống điện-điện tử theo yêu cầu.
    Tel: 0903 702 417. Email: web:

    Comment


    • #3
      Cái mạch trên chia lam 3 phần : Nguồn nuôi, kit nạp 910, mạch điều khiển 32 led đơn.
      Mạch điều khiển 32 led dùng at32 hay at16 cung dc.
      Sơ đồ nguyên lý nó đây : http://www.mediafire.com/?nv2c69uzo7ltg5u
      Bạn có thể viết dum demo 2 nút được ko ? Mình thanks nhiều

      Comment


      • #4
        Có phải thế này không?
        PHP Code:
        #include <avr/io.h>
        #include <util/delay.h>         // Nhớ Set tần số thạch anh cho đúng

        #define SW1 (PIND & 0x80)    // SW1 nối với PD7
        #define SW2 (PIND & 0x40)    // SW2 nối với PD6

        void PORT_Init(){
            
        PORTD 0xFF;         // High 
            
        DDRD 0x3F;          // Set PIND6 and PIND7 is Low for two Button (Input)
            
        PORTA 0xFF;
            
        DDRA   0xFF;        // Output
            
        PORTB 0xFF;
            
        DDRB   0xFF;        // Output
        }
        int main (){
            
        unsigned char i;
            
        PORT_Init();
            while(
        1){
                if(!
        SW1){    // Nhấn nút 1
                    
        while(!SW1) continue;  // Khi ấn không có hiện gì xảy ra
                    
        _delay_ms(20);           // Thả ra rồi thì chờ tí
                    
        for(i=0;i<8;i++){
                        
        PORTA 0xFE << i
                        
        _delay_ms(1000);
                    }
                }
                if(!
        SW2){      // Tương tự như trên
                    
        while(!SW2) continue;
                    
        _delay_ms(20);
                    for(
        i=0;i<8;i++){
                        
        PORTB 0xFE << i
                        
        _delay_ms(1000);
                    }
                }
            }
            return 
        0;

        Nếu không thì Code khác
        Last edited by Multi System; 07-11-2010, 12:50.

        Comment


        • #5
          Thanks Multi System nhiều. Bác có thể cho em xin thêm một đoạn code dùng chế độ ngắt ngoài (interupt). Em mới học AVR trong kỳ này à mà thầy cho mạch nhìn thấy ớn. Em ko phải chuyên ngành điện tử nên rất mơ hồ về VDK, mong bác thông cảm.

          Comment


          • #6
            ngắt ngoài bạn dùng chỉ cần nối 1 interup INT0 là được.
            Nguyên lý như thế này cho 4 nút nhấn đó nối với 4 chân của 1 port , đầu cuối 4 nút nhấn nối với 1chân interup sao cho chỉ cần 1 trong 4 chân được nhấn thì sự kiện int xảy ra.
            Trong event bạn dùng if hay hàm case để xác nhận chân nào của port chuyển tín hiệu từ 1 sang 0 chẳng hạn. Tương ứng với nó bạn cho đoạn code hàm for như bạn Mutil S trên đã nêu( mình hơi bị lười nên chỉ nói được thế vậy thôi ). Nếu bạn làm như mình , bạn nhớ chú ý về port chứa nút nhấn kẻo nó chậm tín hiệu khi cho led sáng.

            Comment


            • #7
              Mình làm dc rui. Cám ơn các bạn, chúc các bạn lun khỏe mạnh.

              Comment

              Về tác giả

              Collapse

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

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

              Collapse

              Đang tải...
              X