Thông báo

Collapse
No announcement yet.

Mạch đo tần số hiển thị trên màn máy tính

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

  • Mạch đo tần số hiển thị trên màn máy tính

    giúp mình với, mình đang học môn Vi điều khiển mà chả hiểu gì, sắp phải bảo vệ rồi, ai có code & proteus giúp mình với, thank mọi người nhiều nhiều!!

  • #2
    thì ít ra bạn cũng phải làm thì người khác mới giúp chứ
    lập trình vi điều khiển 8051 - avr - pic- thiết kế mạch điện tử

    Học Hiểu Nguyên Tắc - Tuân Theo Nguyên Tắc - Giải Trừ Nguyên Tắc

    Comment


    • #3
      đo tần số thực chất là đếm xung thôi, bạn dùng ngắt ngoài để thực hiện việc nayf và so sánh vs timer 1s=> sẽ được tần số xung, còn việc giao tiếp vs máy tính cũng hoàn toàn ko khó, đọc kỹ UART của 89 là làm được thôi.
      Chúc bạn thành công.
      Nguyễn Huy Biên - 01649 802 694
      gmail :

      Comment


      • #4
        Nguyên văn bởi khanh1029 Xem bài viết
        giúp mình với, mình đang học môn Vi điều khiển mà chả hiểu gì, sắp phải bảo vệ rồi, ai có code & proteus giúp mình với, thank mọi người nhiều nhiều!!
        cái này cũng không phải là đơn giản với người mới học. nhưng nếu làm thì nên cho vào ngắt ngài của vi điều khiển sau đó đếm số xung trong 1s rồi gửi qua UART lên máy tính dùng MAX232 nhé.nếu ở Hà Nội rảnh qua chỗ mình chỉ cho.
        Never forget who you are!

        Comment


        • #5
          bó tay...bây giờ cái gì nó cũng như mì tôm ấy.
          làm đi. có gì k hiểu mọi người giúp.
          nó đếm xung = ngắt ngoài vi nó nhanh hơn so với việc viết code đếm xung ở chân port
          đếm thì gửi ra LPT or RS232 thôi
          cái này muốn mô phỏng Proteus thì phải có thêm phần mềm Terminal tạo cổng COM or LPT ảo thì mới mô phỏng được

          Comment


          • #6
            mình dùng pic
            đã test xong mạch đo tần số , chạy ok , thank mọi người , hiện tại mình muốn giao tiếp máy tính qua cổng rs232 , dùng c#
            nhấn start , đưa giá trị tần số đo được hiển thị trên textbox , theo mình hiểu khi nhấn start , cho phép gởi 1 kí tự đến pic, khi pic nhận đc thì truyền dữ liệu lên máy tính
            đây là code của mình , trong case '1' mình cần viết ntn để truyền đc dl . mong mọi ng giúp đỡ
            #include <main.h>
            #include <var.h>
            #include <lcd16x2\lcd_16x2.c>
            #INT_RDA // ngat nhan du lieu tu may tinh
            void ngat_noitiep()
            {
            char kitu;
            kitu=getc();
            switch(kitu)
            {
            case '0': //xoa man hinh LCD
            {
            LCD_Clear();
            break;
            }
            case '1':// truyen len may tinh gia tri do duoc
            {
            .....
            }
            }
            }
            #INT_EXT
            void dem_xung() // Trinh phuc vu ngat ngoai
            {
            so_xung+=1;
            }

            #INT_TIMER1
            void tao_tre_1s() // Trinh phuc vu ngat tran TIMER1
            {
            setup_timer_1(T1_DISABLED);
            count_t1++;
            if(count_t1==39) // Tao khoang thoi gian 1s
            {
            tan_so = so_xung;
            so_xung = 0;
            count_t1 = 0;
            enable_display = 1;
            }
            set_timer1(1434);
            setup_timer_1(T1_INTERNAL|T1_DIV_BY_2);
            }
            void locso(unsigned int16 so)
            {
            tp=so%10+48;
            so=so/10;
            dv=so%10+48;
            so=so/10;
            ch=so%10+48;

            }
            void main()
            {
            DDRD = DDROUT;
            DDRE = DDROUT;

            enable_interrupts(int_rda); //cho phep ngat noi tiep nhan
            enable_interrupts(INT_TIMER1); // Cho phep ngat tran TIMER1
            ext_int_edge(H_TO_L); // Cau hinh ngat ngoai theo canh xuong
            enable_interrupts(INT_EXT); // Cho phep ngat ngoai
            enable_interrupts(GLOBAL); // Cho phep ngat toan cuc
            setup_timer_1(T1_INTERNAL|T1_DIV_BY_2); // Cau hinh bo chia cho TIMER1
            set_timer1(1434); // Cau hinh gia tri cho thanh ghi TMR1

            LCD_Init();
            LCD_Clear();
            LCD_Gotoxy(0,0);
            sprintf(lcd_buff,"DO_AM_MOI_TRUONG");
            LCD_Puts(lcd_buff);
            while(TRUE)
            {
            if(enable_display)
            {
            if(tan_so<5000)
            {
            DO_AM=0;
            LCD_Gotoxy(0,1);
            sprintf(lcd_buff,"GIA TRI BI LOI: %10luHz",DO_AM);// cái này không dùng
            LCD_Puts(lcd_buff);
            enable_display = 0;
            }
            else if(5000<=tan_so<=10000)
            {
            tam=(tan_so-5000)/5;
            locso(tam);
            command_write(0xc0);
            data_write('G');
            data_write('I');
            data_write('A');
            data_write(' ');
            data_write('T');
            data_write('R');
            data_write('I');
            data_write(':');
            data_write(' ');
            data_write(' ');
            data_write(' ');
            data_write(ch);
            data_write(dv);
            data_write('.');
            data_write(tp);
            data_write('%');
            }
            }
            }
            }

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            Đang tải...
            X