Thông báo

Collapse
No announcement yet.

Pic & dtmf(mt8880)

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

  • Pic & dtmf(mt8880)

    xin chào mọi người!
    mình đang làm đề tài có liên quan tới con PIC 16F877A và con MT8880
    với lại cũng mới học lập trình PIC nên có gặp chút rắc rối xung quanh vấn đề này!
    Nếu có ai đã làm cái này hay cao thủ nào biết về vấn đề này xin chỉ giúp
    cụ thể các vấn đề sau:
    - muốn kiểm tra xem con MT còn sống hay đã chết thì làm thế nào
    - viết chương trình (bằng C ) để lâý dữ liệu từ MT vào PIC thì làm thế nào?(có cần khởi tạo gì cho MT không--> vấn đề này xin vui lòng nói rõ giùm)
    Giả sử sơ đồ mạch như mô tả sau:
    - tín hiệu điện thoại vào = DTMF vao
    - DTMF 0-->DTMF7 đưa vào portB
    - IRQ đưa vào D0

    thanks!
    Attached Files

  • #2
    Nguyên văn bởi nc2 Xem bài viết
    xin chào mọi người!
    mình đang làm đề tài có liên quan tới con PIC 16F877A và con MT8880
    với lại cũng mới học lập trình PIC nên có gặp chút rắc rối xung quanh vấn đề này!
    Nếu có ai đã làm cái này hay cao thủ nào biết về vấn đề này xin chỉ giúp
    cụ thể các vấn đề sau:
    - muốn kiểm tra xem con MT còn sống hay đã chết thì làm thế nào
    - viết chương trình (bằng C ) để lâý dữ liệu từ MT vào PIC thì làm thế nào?(có cần khởi tạo gì cho MT không--> vấn đề này xin vui lòng nói rõ giùm)
    Giả sử sơ đồ mạch như mô tả sau:
    - tín hiệu điện thoại vào = DTMF vao
    - DTMF 0-->DTMF7 đưa vào portB
    - IRQ đưa vào D0

    thanks!

    Vấn đề này tuy không còn mới nhưng em nghĩ ứng dụng trong thực tế rất hữu ích.Em nghĩ vẫn còn rất nhiều người chưa biết rất mong mọi người đã làm rồi hãy viết những bài hướng dẫn từ mạch nguyên lý đến cách đọc /ghi MT8880.Nhất là vơi 16f877a.Em nghĩ nó rất bổ ích cho những người như em và bạn nc2.
    Mobile: 0914.658.856
    Yahoo: quang85_2004

    Comment


    • #3
      sao ko nói gì về đề t này nhỉ, chưa ai làm à, chán

      Comment


      • #4
        Các anh chị cho em hỏi về phần giao tiếp uart với ạ!
        Chả là em test thử truyền một chuối kí tự từ 1 con píc6f877 này đến một con 16f877 khác, và khi nhận được thì hiển thị lên terminal.Ban đầu nếu không dùng ngắt truyền nhận thì mô phỏng OK! Nhưng khi em sử dụng ngắt #INT_RDA và #INT_TBE thì lại ko truyền được là sao ạ!
        Đây là chương trình cho con truyền:
        #include <16F877.h>
        #device adc=8
        #include <string.h>
        #FUSES NOWDT //No Watch Dog Timer
        #FUSES RC //Resistor/Capacitor Osc with CLKOUT
        #FUSES NOPUT //No Power Up Timer
        #FUSES NOPROTECT //Code not protected from reading
        #FUSES BROWNOUT //Reset when brownout detected
        #FUSES LVP //Low Voltage Programming on B3(PIC16) or B5(PIC18)
        #FUSES NOCPD //No EE protection
        #FUSES NOWRT //Program memory not write protected
        #FUSES NODEBUG //No Debug mode for ICD

        #use delay(clock=20000000)
        #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)
        char string[30];
        int i;
        #INT_RDA
        void uart_char_tx(void)
        {
        strcpy(string,"XIN CHAO BAN !!!");
        for(i=0;i<=30;i++)
        {
        putc(string[i]);
        delay_ms(1000);
        }
        }
        void main(void)
        {
        enable_interrupts(int_rda);
        enable_interrupts(GLOBAL);
        while(true)
        {
        uart_char_tx();
        delay_ms(100);
        }
        }
        ..........................................
        và đây là bên nhận:
        #include <16F877.h>
        #device adc=8
        #include <string.h>

        #FUSES NOWDT //No Watch Dog Timer
        #FUSES RC //Resistor/Capacitor Osc with CLKOUT
        #FUSES NOPUT //No Power Up Timer
        #FUSES NOPROTECT //Code not protected from reading
        #FUSES BROWNOUT //Reset when brownout detected
        #FUSES LVP //Low Voltage Programming on B3(PIC16) or B5(PIC18)
        #FUSES NOCPD //No EE protection
        #FUSES NOWRT //Program memory not write protected
        #FUSES NODEBUG //No Debug mode for ICD

        #use delay(clock=20000000)
        #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)
        char answer;
        #INT_TBE
        void tx_irs()
        {
        answer=getch();
        }
        void main(void)
        {
        enable_interrupts(int_tbe);
        enable_interrupts(GLOBAL);
        while(true)
        {
        printf("%C",answer);
        delay_ms(100);
        }
        }
        hic hic mọi người giúp em xem sai ntn với ạ! Cảm ơn mọi người!

        Comment

        Về tác giả

        Collapse

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

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

        Collapse

        Đang tải...
        X