Thông báo

Collapse
No announcement yet.

[HELP] Giúp code mạch đo điện dung dùng 8051!!!!

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

  • [HELP] Giúp code mạch đo điện dung dùng 8051!!!!

    hiện tại e mới học VĐK đang cần làm 1 cái mạch đo điện dung. cái mạch của em như sau
    .
    ý đồ thuật toán của e là dung IC 555 tạo 1 xung vuông, rồi đếm tần số xung trong 1s. sau đó tính ngược trở lại C = 1/(ln2.f.(R1 + 2R2)) và hiển thị LCD.
    em loay hoay mãi ko viết đc code, chắc tại e tối dạ quá. pro nào làm ơn giúp e code hộ bài này vs, em cảm ơn rất nhiều.

  • #2
    /************************************************** *****************************
    Project : Frequency Measurement
    Author : pk
    ************************************************** *****************************/
    #include <16f887.h>
    #device *=16
    #FUSES NOWDT, NOPUT,XT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
    #use delay(clock = 4M)


    #define LCD_ENABLE_PIN PIN_D3
    #define LCD_RS_PIN PIN_D1
    #define LCD_RW_PIN PIN_D2
    #define LCD_DATA4 PIN_D4
    #define LCD_DATA5 PIN_D5
    #define LCD_DATA6 PIN_D6
    #define LCD_DATA7 PIN_D7

    /*
    #define LCD_ENABLE_PIN PIN_C0
    #define LCD_RS_PIN PIN_D0
    #define LCD_RW_PIN PIN_C3
    #define LCD_DATA4 PIN_E2
    #define LCD_DATA5 PIN_E1
    #define LCD_DATA6 PIN_E0
    #define LCD_DATA7 PIN_A5
    */

    #include <lcd.c>
    #use fast_io(c)
    //************************************************** ****************************
    int i;
    float temp,verify;
    //************************************************** ****************************

    #INT_CCP1
    void synchronous_re(){
    temp = get_timer1();
    set_timer1(0);
    }
    //------------------------------------------------------------------------------
    #INT_CCP2
    void synchronous_fe(){
    temp = get_timer1();
    set_timer1(0);
    }
    //************************************************** ****************************
    void lcd_put_int(int num){
    int temp;
    unsigned char i = 0, c[5];
    temp = num;
    if (temp != 0) {
    while(temp){
    c[i++] = temp%10;
    temp /= 10;
    }
    while(i) lcd_putc(c[--i] + '0');
    }
    else lcd_putc('0');
    }
    //************************************************** ****************************
    void lcd_put_float(float num){
    unsigned int temp;

    temp = num/1;
    lcd_put_int(temp);
    temp = (num - temp)*100;
    lcd_putc(',');
    lcd_put_int(temp);

    }
    //************************************************** ****************************
    void main(){
    set_tris_c(0xff);
    set_tris_b(0xff);

    lcd_init();
    lcd_putc("STARTING");
    for(i = 1; i < 9; i++){
    lcd_putc(".");
    delay_ms(100);
    }
    SETUP_TIMER_1(T1_INTERNAL|T1_DIV_BY_4);
    //SETUP_TIMER_1(T1_INTERNAL|T1_DIV_BY_1);

    SETUP_CCP1(CCP_CAPTURE_RE);
    SETUP_CCP2(CCP_CAPTURE_FE);

    ENABLE_INTERRUPTS(INT_CCP1);
    ENABLE_INTERRUPTS(INT_CCP2);
    ENABLE_INTERRUPTS(global);

    lcd_putc('\f');
    lcd_putc("TAN SO HIEN TAI:");

    while(1){
    if(temp != verify){
    verify = temp;
    lcd_gotoxy(1,2);
    lcd_putc(" ");
    lcd_gotoxy(5,2);
    lcd_put_float(500000/temp);
    lcd_putc("Hz");
    delay_ms(100);
    }
    }
    }
    mình có 1 code của PIC bạn tham khảo nhé
    Nguyễn Huy Biên - 01649 802 694
    gmail :

    Comment


    • #3
      tks bạn nh mình chưa học Pic

      Comment


      • #4
        lệnh pic và 8051 nó chỉ khác nhau mấy cái khai báo là chính thôi, nhìn vào chuơng trình kia là hiểu thuật toán rồi, bạn học lấy thuật toán để hiểu chứ ko phải lấy code để nhét vào mạch cho nó chạy
        Website chính thức đổi địa chỉ website thành
        Mời các bạn ghé thăm !!!

        Comment


        • #5
          có ai giúp chỉ cách viết code xuất giá trị C qua LED 7 đoạn ko?

          Comment


          • #6
            Led 7 đoạn cũng như led đơn thôi VD bạn muốn hiển thị số 7 trên Led 7 đoạn thì các thanh abc sẽ sáng (còn các thanh abc là thanh nào thì bạn phải hiểu cấu tạo của Led 7 đoạn :V) vì vậy bạn sẽ phải có 1 bảng mã hiển thị các số từ 0-9 (cái này bạn tìm trên google hoặc tự xây dựng)và rồi xuất ra các giá trị này thôi

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            Đang tải...
            X