Thông báo

Collapse
No announcement yet.

cần giúp đỡ về mạch vdk 8051 điều khiển động cơ DC

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

  • cần giúp đỡ về mạch vdk 8051 điều khiển động cơ DC

    hiện tại mình đang làm mạch cửa tự động dùng PIR203D trên proteus mô phỏng ok hết mà khi làm mạch thật thì không chạy ( chân 24,25 vdk 89c52 mình thấy luôn ở mức 1 không về mức 0 được,nên opto pc 817 không hoạt động kiểu đóng mở được). Ở dưới là mạch mô phỏng của mình, mọi người góp ý dùm mình với, mình làm bài tập này sắp nộp rồi. Click image for larger version

Name:	Untitled.jpg
Views:	2032
Size:	122.5 KB
ID:	1650973

  • #2
    Chắc do code thôi bạn? Up code lên xem sao?

    Comment


    • #3
      #include <REGX52.H>
      #include <stdio.h>
      #include <math.h>
      #include <intrins.h>
      #include <string.h>
      // Dinh nghia chan Dieu Khien
      #define K1 P1_0
      #define K2 P1_1
      #define K3 P1_2
      #define K4 P1_3
      #define K5 P1_4
      // Dinh nghia chan LCD
      #define RS P2_0
      #define RW P2_1
      #define EN P2_2
      #define LCDdata P0
      #define BF P0_7
      // Dinh nghia chan Led
      #define LED1 P2_3
      #define LED2 P2_4
      // Khai bao chuoi hien thi
      unsigned char code string1[]
      unsigned char code string2[]
      unsigned char i,j,k;

      /*********HAM DELAY***********/
      void delay(unsigned char ms)
      {
      for(i =0;i<ms;i++)
      {for(j=0;j<125;j++){;}
      }
      }
      //=======================================
      void tre(unsigned int t)
      {
      unsigned int i;
      for(i=0;i<=t;i++);
      }
      /*************HAM CHO***************/
      void wait(void)
      {
      RS=0;//thanh ghi lenh
      RW=1;//doc du lieu tu lcd
      LCDdata=0xff;//gia tri 11111111 // khoi dong ngo vao
      while(BF) //kiem tra co ban
      {
      EN =0;//dua xung thap en cao de chot
      EN =1;//dua xung len cao
      }
      }
      ////////////////thiet lap Dieu khien LCD//////////////
      void LCDcontrol(unsigned char x)
      {
      RS = 0;//chon thanh ghi lenh
      RW =0;//ghi du lieu len lcd
      LCDdata =x;
      EN=1; //dua xung cao xuong thap de mo
      EN=0;
      wait();//doi LCD san sang
      }
      //////////////////Khoi tao LCD////////////
      void LCDinit(void)
      {
      LCDcontrol(0x30);
      tre(500);
      LCDcontrol(0x30);
      tre(100);
      LCDcontrol(0x30);
      LCDcontrol(0x38);//2 dong va ma tran 5x7
      LCDcontrol(0x0e);//bat man hinh,bat con tro
      LCDcontrol(0x01);//xoa man hinh
      }
      ///////////////Thiet lap du lieu co LCD/////////
      void LCDwrite(unsigned char c)
      {
      RS=1;//Ghi du lieu
      RW=0;//ghi du lieu len LCD
      LCDdata=c;
      EN=1;
      EN=0;
      tre(50);
      }
      ///////////////////
      void LCDwrites(unsigned char*s)
      {
      unsigned char data lens,count;
      lens=strlen(s);
      for(count=0;count<lens;count++)
      {
      LCDwrite(*(s+count));
      }
      }
      //////////////HAM HIEN THI CHUOI KY TU//////////////
      void SendString2LCD(unsigned char code *p)
      {
      unsigned char i=0;
      while(p[i]!=0)
      {
      LCDwrite(p[i]);
      i++;
      delay(200);
      }
      }
      /////////////////HAM HIEN THI DONG CHU///////////////////
      void DisplayText(void)
      {
      // Dich con tro den vi tri thu 1, dong thu nhat
      LCDcontrol(0x80);
      SendString2LCD(string1);
      // Dich con tro den dau dong thu hai
      LCDcontrol(0xC0);
      SendString2LCD(string2);
      }
      /////////////// XOA LCD///////////////////
      void LCDclear(void)
      {
      LCDcontrol(0x01);
      wait();
      }
      ////////////// HIEN THI 1 SO LEN LCD < 100
      void putnum(unsigned char val)
      {
      if(val<10){
      LCDwrite(val+48);
      }else if(val<100){
      LCDwrite(val/10+48);
      LCDwrite(val%10+48);
      }
      }
      //////////////////HIEN THI SO LEN LCD > 100
      void LCD_putnum(int num)
      {
      unsigned char nghin,tram,chuc,donv;
      nghin=num/1000;
      tram=(num%1000)/100;
      chucnum%1000)%100)/10;
      donvnum%1000)%100)%10;
      LCDwrite(nghin+48);
      LCDwrite(tram+48);
      LCDwrite(chuc+48);
      LCDwrite(donv+48);
      }
      //////////////////HAM PHIM BAM DIEU KHIEN/////////////////////
      void dieukhien_hn(void)
      {
      if(K1==0)
      {
      LCDclear();
      LCDcontrol(0x81);// dua con tro ve vi tri 2 dong thu nhat
      LCDwrites(" WELLCOM ");
      LCDcontrol(0xC0); // ep con tro ve dau dong thu 2
      LCDwrites(" DH13TD ");
      delay(100);
      LED1=1;
      }
      else{LED1=0;}
      if(K1==1)
      {
      LED2=1;
      }
      else{LED2=0;}
      }
      //===============================
      void main(void)
      {
      LCDcontrol(0x01);
      LCDinit();//Khoi tao LCD
      LCDcontrol(0x82); // dua con tro den vi tri thu 4 dong 1
      LCDwrites("HAI LONG");
      LCDcontrol(0xC0); // ep con tro ve dau dong thu 2
      LCDwrites("CUA TU DONG");
      /*LCDclear();
      LCDcontrol(0x0f);//nhap nhay con tro
      DisplayText();//viet chuoi ky tu */
      while(1)//vong lap vo han
      {
      dieukhien_hn();
      }
      }






      Last edited by hailong95; 16-10-2015, 10:21. Lý do: ​ đây là code của mình.

      Comment


      • #4
        Đoạn đó thì liên quan gì đến pin24-25 nhỉ, nói chung là cấu hình pin24-25 ở mode output, rồi thế mà xuất Hight or Low thôi

        Comment


        • #5
          tại mình gán giá trị vào pin 24 25 mà, mình xuất rồi nhưng nó vẫn không chạy.

          Comment


          • #6
            LCD có chạy k? Hay không có gì chạy cả

            Comment


            • #7
              Nguyên văn bởi tanh_ta Xem bài viết
              LCD có chạy k? Hay không có gì chạy cả
              LCD trên proteus thì chạy bình thường, còn trên mạch thật mình chưa lắp vô.

              Comment


              • #8
                chưa bàn về code và các phần khác của mạch, riêng opto lắp thế k đủ để dẫn được, vì dòng xuất con 89xx ra nhỏ, bác nên lắp lại cho xuất ra mức 0 nhé. Sau đó mới test tiếp các phần khác/
                caoson.vnatr@gmail.com
                Thiết kế mạch điện tử
                0914024690

                Comment


                • #9
                  Nguyên văn bởi caoson_vnatr Xem bài viết
                  chưa bàn về code và các phần khác của mạch, riêng opto lắp thế k đủ để dẫn được, vì dòng xuất con 89xx ra nhỏ, bác nên lắp lại cho xuất ra mức 0 nhé. Sau đó mới test tiếp các phần khác/

                  bác xem em sửa lại thế có được không? hay bác cho em xin cái ví dụ đi.


                  Attached Files

                  Comment


                  • #10
                    Nhìn qua thấy Driver cho động cơ chưa đúng, nếu bạn chưa có kinh nghiệm trong việc làm driver cho động cơ thì lên dùng con L298
                    (^_^) hoangnv.3i@gmail.com

                    Comment


                    • #11
                      phần code bạn thấy có chỗ nào sai không giúp mình với?

                      Comment

                      Về tác giả

                      Collapse

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

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

                      Collapse

                      Đang tải...
                      X