Thông báo

Collapse
No announcement yet.

Gỡ mắc -ĐO tốc độ động cơ hiển thị VB

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

  • Gỡ mắc -ĐO tốc độ động cơ hiển thị VB

    Đo động cơ và hiển thị lên máy tính qua Com . Mình mô phỏng trên pro và hiển thị trên Virtual terminal thì hiển thị đúng rồi nhưng khi hiển thị trên VB thì chỉ hiển thị được 1 hoặc 2 giá trị cuối của tốc độ lâu lâu mới hiển thị được hết
    VD : tốc độ là 285 thì chỉ hiển thị 5 hoặc 85 thui . Post lên đây nhờ các bác trợ giúp

    code C

    Code:
    #include<stdio.h>
    #include<reg52.h>
    unsigned int dem, xung, tocdo;
    // bien dem tao thoi gian 1s, bien chua gia tri so xung dem
    // duoc,  bien toc do
    unsigned char xungh, xungl, tocdo1, tocdo2, tocdo3, tocdo4;
    // bien chua gia tri byte cao cua xung, bien chua gia tri byte
    //  thap cua xung, bien chua gia tri hang nghin, tram, truc, don
    //  vi cua  toc do   ``
         
    void truyen_thong (void)
    // chuong trinh con tinh toc do va truyen len PC
       {
          xung = 256*xungh + xungl;   // doc gia tri xung tu counter 0
          tocdo = 60*xung/24;
          
          tocdo1 = tocdo/1000;      //doc toc do
          tocdo2 = (tocdo%1000)/100;
          tocdo3 = (tocdo-tocdo1*1000-tocdo2*100)/10;
          tocdo4 = (tocdo-tocdo1*1000-tocdo2*100)%10;
          SBUF = tocdo1 + 0X30;                // truyen gia tri toc do
             while(!TI);            // sau 1s truyen 1 lan
             TI = 0;
          SBUF = tocdo2+ 0X30;      // truyen so hang tram
             while(!TI);     // cho co bao truyen xong 1 byte du lieu
             TI = 0;
          SBUF = tocdo3 + 0X30;         //truyen so hang truc
             while(!TI);
             TI = 0;
          SBUF = tocdo4 + 0X30;              //truyen so hang don vi
             while(!TI);               
             TI = 0;   
          }
       
    void main(void)
       {
          dem = 0;          // dat gia tri ban dau cho bien dem                           
          xung = 0;          // dat gia tri ban dau cho xung
          IE = 0X00;          // cam cac ngat                               
          SCON = 0X52;       // port noi tiep che do 1, REN=1, TI=1     
          TMOD = 0X25;       // timer 1 mode 2 (autoreload 8 bit),    
                             // timer 0 mode 1 (bo dem counter 16 bit)
          T2CON = 0X00;       // T2 hoat dong che do Autoreload
          TH0 = TL0 = 0X00;   // Counter dem tu 0
          TH1 = TL1 = -3;      // tao toc do baud 9600                         
          TH2 = RCAP2H = 0XB7;// T2 tao t = 20ms
          TL2 = RCAP2L = 0XFF;
          TR0 = 1;         // cho phep counter 0 chay
          TR1 = 1;            // cho timer 1 chay
          TR2 = 1;         // cho timer 2 chay
          IE = 0XA0;         // cho phep ngat T2    
          while(1);
          }
       
    void ngat0 (void) interrupt 5   // chuong trinh ngat T2
       {
          TF2 = 0;            // xoa co bao ngat   
          dem++;               // dem = dem + 1
          if(dem==50)            // tao td = 1s
             {
             dem = 0;                  
             TR0 = 0;         // dung timer 0
             IE = 0X00;         // ngung ngat
             xungh = TH0;      // doc so lieu
             xungl = TL0;               
             truyen_thong();     // goi chuong trinh con "truyen_thong"
             TH0 = TL0 = 0X00;   // dat lai gia tri cho Counter 0
             TR0 = 1;         // cho chay T0
             IE = 0XA0;         // cho phep ngat      
              }
          }
    code VB (đây chỉ là đoạn code nhận thui )
    Code:
    Private Sub MSComm1_OnComm()                    ' su kien onCom
        If MSComm1.CommEvent = comEvReceive Then    ' khi co mot byte duoc truyen
        MSComm1.InputLen = 0                        ' doc toan bo noi dung trong bo dem nhan
        x = MSComm1.Input                           ' doc gia tri dau vao
        tocdo = x                                   ' chuyen doi gia tri cua bien x thanh du
                                                    ' lieu kieu nguyen dai vao bien tocdo
        Text1.Text = tocdo                          ' hien thi toc do dong co
    End If
    End Sub
    Mô phỏng và code : GTMT.zip
    Last edited by vinhtk1205; 17-12-2012, 09:03.
    yh: vinhtk1205
    ngu phải học

  • #2
    không có cao nhân nào àh
    yh: vinhtk1205
    ngu phải học

    Comment


    • #3
      Nguyên văn bởi vinhtk1205 Xem bài viết
      không có cao nhân nào àh
      Cho sự kiện trong vb vào 1 cái timer xem sao timer đặt 100 thôi

      Comment


      • #4
        Cho sự kiện onCom vào trong timer àh bác Em thêm nó báo lỗi, chắc sai rồi bác chỉ em vs
        yh: vinhtk1205
        ngu phải học

        Comment


        • #5
          Nguyên văn bởi vinhtk1205 Xem bài viết
          Cho sự kiện onCom vào trong timer àh bác Em thêm nó báo lỗi, chắc sai rồi bác chỉ em vs
          Tôi không rành code vdk cho lắm nên ko biết code bạn viết thế nào, bạn thử trong vb tạo timer rồi enabled nó lên, đặt giá trị 100 trong phần code timer thì "call MSComm1_OnComm".

          Comment


          • #6
            Oki rồi các bác àh ) Chỉnh lại cái của nợ này : MSComm1.RThreshold = 4 là oki
            Thanks các bác nhé !
            yh: vinhtk1205
            ngu phải học

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            Đang tải...
            X