Thông báo

Collapse
No announcement yet.

Làm Ơn Chỉ Giúp Em!!!

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

  • Làm Ơn Chỉ Giúp Em!!!

    Em đang làm đồ án về VDK,nội dung đề tài như sau:

    Thiết kế bộ đo tần số hiển thị bằng màn hình máy tính .
    Yêu cầu:
    - Mạch điện tử được thiết kế trên máy tính bằng phần mềm chuyên dụng.
    - Tần số đo đ¬ược truyền lên máy tính và hiển thị bằng phần mềm tiện ích Hyper Terminal.
    - Sai số cho phép: ± 5%
    - Hệ thống có chuyển mạch để đo 3 dải tần số khác nhau nhằm đảm bảo độ chính xác (dải 1 từ 10Hz đến 100Hz; dải 2 từ 100Hz đến 500Hz; dải 3 từ 1KHz đến 5KHz).
    - Hệ thống có kèm theo 01 bộ tạo xung với các tần số tư¬ơng ứng 3 dải trên.


    Em có được code của bài này rồi,nhưng mô phỏng lại không được,và em không biết sai ở đâu.
    Vậy xin mọi người giúp đỡ em kiểm tra và mô phỏng lại giúp em!
    Em không biết nhiều về VDK nên mong mọi người giúp đỡ.

    Nội dung đoạn code như sau:


    /* do an do tan so: voi 3 dai tan: 10hz-100hz; 100hz-500hz; 1000hz-5000hz.
    Thuat Toan: 1, do thoi gian sau 2 lan dao xung thi do la chu ky. nghich dao chu ky ta co tan so
    2, dem so xung xay ra trong 1s bang cach. tao thoi gian (vd 1s)tu timer1 va
    dem so xung cao va xung thap bang timer0 trong thoi gian tao ra tu timer1 do.*/

    #include <REGX52.H>
    #include<stdio.h>
    #include<math.h>
    #include<string.h>
    unsigned int dem=0,tanso=0,f=0;

    unsigned char a,b,c,d;
    unsigned char m[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x3 9};

    void chuoi(char*s)
    {
    while(*s)
    {
    putchar(*s);
    s++;
    }
    }
    void hienthi(int k)
    {



    int nghin,chuc,tram,donvi;
    nghin=k/1000;
    tram=(k-nghin*1000)/100;
    chuc=(k-1000*nghin-100*tram)/10;
    donvi=k-1000*nghin-100*tram-chuc*10;
    if(k>=998&&k<=5002)
    {
    chuoi(" Ban dang do o dai tan thu 3! Gia tri tan so do duoc la: ");
    putchar(m[nghin]);
    putchar(m[tram]);
    putchar(m[chuc]);
    putchar(m[donvi]);
    chuoi(" Hz");
    }
    if(k>=98&&k<=502)
    {
    chuoi(" Ban dang do o dai tan thu 2! Gia tri tan so do duoc la: ");
    putchar(m[tram]);
    putchar(m[chuc]);
    putchar(m[donvi]);
    chuoi(" Hz");
    }
    if(k>8&&k<=100)
    {
    chuoi(" Ban dang do o dai tan thu 1! Gia tri tan so do duoc la: ");
    putchar(m[chuc]);
    putchar(m[donvi]);
    chuoi(" Hz");
    }
    if((k>502&&k<998)||(k>5002)||(k<9))
    {
    chuoi(" Xin loi! Tan so do duoc nam ngoai dai do yeu cau! ");
    }
    }
    void main(void)
    {
    SCON=0X52; // PORT NOI TIEP CHE DO 1; REN = TI = 1
    T2CON=0X30; //RCLK=TCLK=1
    RCAP2H=255;
    RCAP2L=-36; //Toc do baud la 9600
    TR2=1;

    TMOD = 0X15; // TIMER0 counter CHE DO 1;TIMER1 DINH THOI CHE DO 1
    TH1= -46350/256;//TAO THOI GIAN 0,1s
    TL1= -46350%256;
    TR1=1;

    IE=0X88; // CHO PHEP NGAT TIMER 1
    IP=0X08;
    dem=0;
    TH0=TL0=0; // XOA TIMER 0, BAT DAU DEM


    putchar(0X0a);
    putchar(0X0a);
    putchar(0X0d);
    chuoi(" ______________DO AN mon VI DIEU KHIEN (de so 16)____________ ");
    putchar(0X0d);
    putchar(0X0a);
    putchar(0X0a);
    chuoi(" Giao vien HD: Thay NGUYEN ANH DUNG ");
    putchar(0x0a);
    putchar(0x0d);
    chuoi(" __________________________________________________ __________ ");
    putchar(0x0a);
    putchar(0x0a);
    putchar(0x0d);
    chuoi(" CHUONG TRINH DO TAN SO SU DUNG VDK 89S52 ");
    putchar(0x0d);
    putchar(0x0a);
    putchar(0X0a);

    while(1)
    {
    TR0=1;
    while(dem<9); //cho dem duoc 1s
    f = TH0*256 + TL0; //doi gia tri dem dc sang so thap phan
    tanso=f*2.324239;
    if(tanso>=367&&tanso<870)
    tanso=tanso-265;
    hienthi(tanso);
    putchar(0x0d);
    TH0=TL0=0;
    dem=0;
    putchar(0x0d);
    // putchar(0x0a);
    // putchar(0X0a);
    }

    }
    void ngatT1(void) interrupt 3 //moi lan ngat la 0.1s
    {
    TR1=0;
    dem++;
    TF1=0;
    TH1=-46350/256; //nap lai gia tri cho timer1
    TL1=-46350%256;
    TR1=1;
    }

  • #2
    Tôi nghĩ bạn phải tự viết code lấy, không nên lấy code của người khác. Mục tiêu của đồ án là để bạn tìm hiểu về VXL chứ không phải để em đem một code chạy rồi nộp mà ko hiểu gì. Nên bắt đầu viết những ví dụ dễ trước, từ từ bạn sẽ hiểu code đó người ta viết thế nào.
    Homepage:

    Comment


    • #3
      Nguyên văn bởi nguyenhuutan Xem bài viết
      Tôi nghĩ bạn phải tự viết code lấy, không nên lấy code của người khác. Mục tiêu của đồ án là để bạn tìm hiểu về VXL chứ không phải để em đem một code chạy rồi nộp mà ko hiểu gì. Nên bắt đầu viết những ví dụ dễ trước, từ từ bạn sẽ hiểu code đó người ta viết thế nào.
      Em biết là như vậy,nhưng vấn đề là em viêt không được,thầy của em không yêu cầu cao quá,có thể nhờ anh chị giúp đỡ,miễn là mình phải hiểu mình đang làm gì,và đang viết gì.
      Nếu em viết mà nó chạy ổn thì còn nhờ mọi người làm gì chứ. hihihi
      Với lại bjo hạn cuối để nộp cũng sắp đến rồi,thế nên em mới cần sự giúp đỡ của các đàn anh đi trước.

      Comment

      Về tác giả

      Collapse

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

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

      Collapse

      Đang tải...
      X