Thông báo

Collapse
No announcement yet.

Dùng ngắt ngoài đo tốc độ động cơ

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

  • Dùng ngắt ngoài đo tốc độ động cơ

    Các bác cho em hỏi em dùng ngắt ngoài để đếm xung và dùng timer1 để tạo khoảng thời gian trễ 1s để đo tốc độ động cơ nhưng có điều em chưa biết cách gán thế nào cho các thanh ghi để được 1s mong các bác chỉ bảo


    /************************************************** ***
    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 : 11/21/2011
    Author :
    Company :
    Comments:


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

    #include <mega16.h>
    #include <delay.h>
    // Alphanumeric LCD Module functions
    #asm
    .equ __lcd_port=0x15 ;PORTC
    #endasm
    #include <lcd.h>

    // Standard Input/Output functions
    #include <stdio.h>


    unsigned int k=0,h;
    unsigned int num; // Bien dem so xung vao chan INT0
    unsigned int TD,tocdo,MENU,pass; // Toc do dong co
    eeprom int CB1=150,CB3=450, ;// ,CB2,CB3,TANG,GIAM;
    eeprom int CB2=300;
    eeprom unsigned int ranh=2;
    // Timer 0 overflow interrupt service routine
    interrupt [TIM0_OVF] void timer0_ovf_isr(void)
    {
    // Place your code here
    TCNT0=0; // Ð?t l?i giá tr?
    }

    // Timer 1 overflow interrupt service routine
    interrupt [TIM1_OVF] void timer1_ovf_isr(void)
    {
    k++; h++;
    if (h==100) // Da du thoi gian dat (chua tinh chinh xac)
    {
    num=TCNT0; // Gan so xung tu thanh ghi vao bien num ????????????????????
    TD=num/ranh ; // Toc do dong co thuc te (vi la mo phong nen coi nhu encoder co 1 ranh)
    //PORTA=PORTA^0xFF;
    h=0;
    TCNT0=0 ; // Ðat lai so xung tren thanh ghi.

    }



    }




















    void HIEN_THI()
    {
    unsigned char a,b,c;
    tocdo=TCNT0*60 ;
    a=tocdo/100;
    // lay fan tram
    b=(tocdo-100*a)/10;
    // lay fan chuc
    c=(tocdo-100*a-10*b);
    // lay hang don vi
    lcd_gotoxy(8,0);
    // ve vi tri x,y
    lcd_putchar(a+48);
    // day ra hang tram, ma ascii
    lcd_gotoxy(9,0);
    lcd_putchar(b+48);
    // day ra hang chuc, ma ascii
    lcd_gotoxy(10,0);
    lcd_putchar(c+48);


    // day ra hang don vi, ma ascii
    }

    void CANHBAO1()
    {
    unsigned char d,e,f,d1,e1,f1,d2,e2,f2;
    d=CB1/100;
    // lay fan tram
    e=(CB1-100*d)/10;
    // lay fan chuc
    f=(CB1-100*d-10*e);
    // lay hang don vi
    lcd_gotoxy(5,1);
    // ve vi tri x,y
    lcd_putchar(d+48);
    // day ra hang tram, ma ascii
    lcd_gotoxy(6,1);
    lcd_putchar(e+48);
    // day ra hang chuc, ma ascii
    lcd_gotoxy(7,1);
    lcd_putchar(f+48);




    d1=CB2/100;
    // lay fan tram
    e1=(CB2-100*d1)/10;
    // lay fan chuc
    f1=(CB2-100*d1-10*e1);
    // lay hang don vi
    lcd_gotoxy(9,1);
    // ve vi tri x,y
    lcd_putchar(d1+48);
    // day ra hang tram, ma ascii
    lcd_gotoxy(10,1);
    lcd_putchar(e1+48);
    // day ra hang chuc, ma ascii
    lcd_gotoxy(11,1);
    lcd_putchar(f1+48);
    // day ra hang don vi, ma ascii



    d2=CB3/100;
    // lay fan tram
    e2=(CB3-100*d2)/10;
    // lay fan chuc
    f2=(CB3-100*d2-10*e2);
    // lay hang don vi
    lcd_gotoxy(13,1);
    // ve vi tri x,y
    lcd_putchar(d2+48);
    // day ra hang tram, ma ascii
    lcd_gotoxy(14,1);
    lcd_putchar(e2+48);
    // day ra hang chuc, ma ascii
    lcd_gotoxy(15,1);
    lcd_putchar(f2+48);
    // day ra hang don vi, ma ascii
    }

    // 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=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1
    //PORTA=0x00;
    //DDRA=0x00;

    // 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=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=0x00;
    DDRD=0xFF;

    // 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: 7372.800 kHz
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer 1 Overflow Interrupt: On
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x01;
    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: Off
    // INT1: Off
    // INT2: Off
    MCUCR=0x00;
    MCUCSR=0x00;

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

    // USART initialization
    // Communication Parameters: 8 Data, 1 Stop, No Parity
    // USART Receiver: On
    // USART Transmitter: On
    // USART Mode: Asynchronous
    // USART Baud Rate: 9600
    UCSRA=0x00;
    UCSRB=0x18;
    UCSRC=0x86;
    UBRRH=0x00;
    UBRRL=0x2F;

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

    // LCD module initialization
    lcd_init(16);

    // Global enable interrupts

    DDRB = 0x00;
    PORTB = 0xFF;
    DDRA = 0x00;
    PORTA = 0xFF;

    TCCR0 = 0x06;
    TCNT0 = 0;

    #asm("sei")

    while (1)
    {

    if (PINA.0==0) { PORTD.5==1; lcd_gotoxy(0,0);// Dua con tro ve goc, cot 0, dong 0
    lcd_putsf("SET UP:"); }

    { lcd_gotoxy(0,0);// Dua con tro ve goc, cot 0, dong 0
    lcd_putsf("Speeds:");}

    lcd_gotoxy(0,0);// Dua con tro ve goc, cot 0, dong 0
    lcd_putsf("Speeds:");// Hien thi dong chu1
    HIEN_THI(); // Hien thi gia tri toc do dong co }
    CANHBAO1 ();
    lcd_gotoxy(11,0);// Dua con tro ve goc, cot 0, dong 0
    lcd_putsf("(Rpm)");// Hien thi dong chu
    lcd_gotoxy(0,1);// Dua con tro ve goc, cot 0, dong 0
    lcd_putsf("(Set)");// Hien thi dong chu
    // dieu khien role



    }


    }

Về tác giả

Collapse

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

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

Collapse

  • bqviet
    Trả lời cho Đấu tắt điện cho máy tính bảng
    bởi bqviet
    Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
    06-12-2025, 17:17
  • nguyendinhvan
    Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
    bởi nguyendinhvan
    Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
    05-12-2025, 19:59
  • afrendly
    Trả lời cho Đấu tắt điện cho máy tính bảng
    bởi afrendly
    Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
    04-12-2025, 01:27
  • nick22
    Trả lời cho Máy điện châm ?
    bởi nick22
    Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
    01-12-2025, 13:23
Đang tải...
X