Thông báo

Collapse
No announcement yet.

Nhờ giúp đỡ về chương trình VĐK cho máy giặt.

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

  • Nhờ giúp đỡ về chương trình VĐK cho máy giặt.

    Chào các bạn. Mình đang tự tìm hiểu về VĐK để viết chương trình điều khiển cho 1 chiếc máy giặt. Trong quá trình làm việc mình nhận thấy cách giải quyết của mình chưa được tối ưu nên mong mọi người giúp đỡ để mình hoàn thiện chương trình này. Trong quá trình giặt mình muốn để động cơ quay thuận 30 giây sau đó lại quay ngược 30 giây, ở giữa 2 chu kỳ mình muốn để thời gian trễ là 10 giây.Do sử dụng biến đếm để tạo trễ nên chương trình của mình rất dài và không chuẩn về mặt thời gian.


    void delay(unsigned int t)
    {
    unsigned int a,b,d,e,i,j,k,l,m,n,o;
    for(a=0;a<=t;a++);
    for(b=0;b<=t;b++);
    for(d=0;d<=t;d++);
    for(e=0;e<=t;e++);
    for(i=0;i<=t;i++);
    for(j=0;j<=t;j++);
    for(k=0;k<=t;k++);
    for(l=0;l<=t;l++);
    for(m=0;m<=t;m++);
    for(n=0;n<=t;n++);
    for(o=0;o<=t;o++);
    }
    Ở chương trình chính mình sử dụng ngắt ngoài để dùng máy khi cần thiết thông qua phím Stop. Nhưng theo như mình biết, sau khi chạy chương trình phục vụ ngắt 8051 chạy quay về chương trình chính làm tiếp công việc còn dang dở. Vì vậy mình đành phải gán biến c=0 khi có ngắt nhằm đưa các biến đếm ở hàm tạo trễ về 0. Mình thấy cách này không được ổn lắm và chương trình cũng không tối ưu.
    void main()
    {
    IE=0x81;
    IT0=1;
    while(1)
    {
    val=pro_key(val);\\chương trình chọn chế độ giặt
    val=pro_vat(val);\\chương trình vắt riêng rẽ
    mode=pro_start(mode);\\ chương trình start-stop
    pro_motor(val); \\ giặt hoặc vắt

    }
    }
    //================================================== ===================
    void ngat0(void) interrupt 0
    {
    EA=0;
    {
    c=0;
    val=0;
    mode=0;
    };
    EA=1;
    }
    Do mới tiếp cận với ngôn ngữ C và 8051 nên cách giải quyết bài toán của mình còn nhiều vấn đề chưa ổn. Mong được mọi người giúp đỡ.

  • #2
    Sao không ai giúp mình vậy???

    Comment


    • #3
      Sử dụng ngắt timer, bạn chỉ cần tốn 2,3 vòng lặp để làm 10s kia, mà rất chuẩn xác

      Comment


      • #4
        Ví dụ bạn sử dụng bộ timer 16bit thì đặt giá trị ở vị trí 15536 cho thanh ghi TH, và TL. Khi nó đếm tới giá trị 65536, xảy ra ngắt, lặp lại công việc này 20 lần nữa sẽ cho ta 1s. Lặp lại `10 tất cả việc này cho ta 10s. Muốn chuẩn xác thì dùng ngắt timer, không thì đơn giản dùng timer là dc

        Comment


        • #5
          Theo mình nếu làm chương trình cho máy giặt thì nên dung thuật toán dk mờ, vì mô hình của đối tượng thay đổi không biết trước, dùng 1 con vi xử lý dọc đầu vào các laọi cảm biến : khối lượng quần áo, độ sạch bẩn,...sau đó xấp xỉ các đâu cảm biến theo thuật toán mờ, mình đã làm dk mờ với điều hoa, thuật toán cũng không mấy phức tạp. nếu cần cứ gửi mail cho mình: dinhnambkhn@gmail.com
          |

          Comment

          Về tác giả

          Collapse

          Bóng Tối 009 Tìm hiểu thêm về Bóng Tối 009

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

          Collapse

          Đang tải...
          X