Thông báo

Collapse
No announcement yet.

???? Chống Rung Cho Sw Bằng Phần Mềm Như Thế Nào??

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

  • #16
    theo tui thấy thì không ổn lắm do viec bấm phím tay người cần thời gian tương đối lâu hơn chu kì máy để hoàn tất việc bấm phím do đó dẫn tới hiện tượng là cho dù bạn có lấy mẫu lại trạng thái sau của ngõ in để gán cho trạng thái ngõ out nhưng ví dụ khi đó tay vẫn chưa hoàn tất việc nhấn phím thì sao nhỉ.Nhưng dù gì bạn ấy bảo đã làm và text ok rùi thì ai mà dám cãi lại chứ phải không bạn hehe

    Comment


    • #17
      Nguyên văn bởi hoctro89xxx Xem bài viết
      có 1 phương pháp chống rung mà tôi nghĩ ra, đã làm thực tế nhiều năm->kết quả ngoài mong đợi.
      PP này không dùng mạch cứng mà cũng chẳng dùng delay.
      Có ai tin không?? nhưng nó là sự thật.
      PP như sau:
      Với nút bấm xuống 0V:
      đọc bàn phím -> lưu lại thành OLD

      đọc bàn phím-> HIỆN TẠI
      phân tích từng phím:
      nếu HIỆN TẠI =0 và OLD =1 --> có bấm
      gán OLD = HIỆN TẠI


      Mặc dù khi bấm và nhả có xuất hiện các xung nhưng trên thực tế PP này khung bị rung phím.
      Bạn có thể viết rõ code cho đoạn này được ko.
      Thú thực mình cũng chưa hiểu rõ được nó làm việc như thế nào
      123...

      Comment


      • #18
        Xin nhờ các bạn trong diễn đàn giúp mình làm một mạch đồng hồ dùng Ds1307 và 89C51 hiển thị LED 7 đoạn có thể đặt được nhiều thời điểm hẹn giờ
        Xin trân trọng cảm ơn và biết ơn!
        |

        Comment


        • #19
          Chào cả nhà,

          Cách của bác Hoctro89 rất đơn giản, tuy nhiên sẽ không tác dụng khi người dùng đè phím.
          Nếu làm như cách của bác thì không thể gọi là chống nảy phím, bởi vì nếu thực sự phím bị nảy thì giải thuật của bác không chống được.
          Các bác có thể cho biết tại sao phải tránh dùng ngắt?
          Mình luôn dùng ngắt timer để làm việc này, và thấy không có gì bất ổn.

          Mong được chỉ giáo!
          Một bông hồng cho những ai đang còn mẹ,
          Đang còn mẹ để lòng vui sướng hơn ..

          Comment


          • #20
            Nguyên văn bởi hoctro89xxx Xem bài viết

            đọc bàn phím-> HIỆN TẠI
            phân tích từng phím:
            nếu HIỆN TẠI =0 và OLD =1 --> có bấm
            gán OLD = HIỆN TẠI[/COLOR]
            Chương trình bác này bệnh quá.Lúc sài biến lấy tên Tiếng Anh,lúc lấy tên Tiếng Việt..Chắc bác này chưa được học C element of Style rồi.
            The goal of power electronics is control the flow of energy from an electrical source to an electrical load with high efficiency, high availability, high reliability, light weight and low cost.

            Comment


            • #21
              có 1 phương pháp chống rung mà tôi nghĩ ra, đã làm thực tế nhiều năm->kết quả ngoài mong đợi.
              PP này không dùng mạch cứng mà cũng chẳng dùng delay.
              Có ai tin không?? nhưng nó là sự thật.
              PP như sau:
              Với nút bấm xuống 0V:
              đọc bàn phím -> lưu lại thành OLD

              đọc bàn phím-> HIỆN TẠI
              phân tích từng phím:
              nếu HIỆN TẠI =0 và OLD =1 --> có bấm
              gán OLD = HIỆN TẠI

              Mặc dù khi bấm và nhả có xuất hiện các xung nhưng trên thực tế PP này khung bị rung phím.
              theo mình thấy cái này chỉ là get key pattern thôi mà
              đoạn code trên sẽ được lặp đi lặp lại sau 1 chu kỳ (chu kỳ quét) và nếu chu kỳ đó tốt thì coi như nó có chống rung luôn, hoặc sau khi nhận 1 phím bạn xử lý khá lâu và thời gian xử lý đó gần bằng delay cho chống rung thì cũng có tác dụng chống rung
              còn nếu xử lý đơn giản như cộng dồn và lặp liên tục không delay thì code này 100% ko có tác dụng gì hết

              Và rõ thấy nó chỉ tác dụng 1 lần nếu ta đè phím
              Kit thí nghiệm 8051 + mạch nạp + cable + LCD16x2 + CD hướng dẫn, giá chỉ

              Comment


              • #22
                Quy ước:
                +Có phím ấn : C = 1
                +Không có phím ấn : C = 0
                + chống dội là 1 biến.
                + Dò phím là chương trình con.

                Lưu đồ chống dội của tôi:
                ........................................... begin
                ...............................................|
                ...............................................|
                ...............................................\/
                ....................................chống dội := 50
                ...............................................|
                ...............................................|
                ...............................................\/
                --------------->--------------Dò phím
                |..............................................|
                |..............................................|
                |....................................Sai......\/
                |.....................end <-------- < C = 1 >.....................;so sánh C với 1
                |..............................................|Đ úng
                |..............................................|
                |..............................................\/
                |................................chống dội :=chống dội - 1
                |..............................................|
                |..............................................|
                |..................................Sai........\/
                ---------------<----------<chống dội = 0>...;so sánh biến chống dội với 0
                ...............................................|Đ úng
                ...............................................|
                ...............................................\/
                .....----------->-------------chống dội := 20
                |..............................................|
                |..............................................|
                |..............................................\/
                |.........................................Dò phím------------<----------------
                |..............................................|.. .........................................|
                |..............................................|.. .........................................|
                |...................................Sai.......\/...........................................|
                ---------------<------------- < c = 0 > ; so sánh C với 0...............|
                ...................................... Đúng.|............................................ .|
                ...............................................|.. ..........................................|
                ..............................................\/.............................................|
                ....................................chống dội := chống dội - 1......................|
                ...............................................|.. ..........................................|
                ...............................................|.. ..........................................|
                ...............................................\/............Sai............................|
                .....................................<chống dội = 0>------------>------------
                ...............................................|Đ úng
                ...............................................|
                ...............................................\/
                ..............................................end

                Comment


                • #23
                  Ở lần thứ nhất bạn đã so sánh 50 lần, như thế đủ để chắc chắn rằng phím được nhấn. Không cần phải thêm 20 lần nữa.
                  Chương trình của bạn có một nhược điểm là bị delay.
                  Các bạn nên nghĩ ra giải thuật không bị delay mà vẫn chống rung được phím, vẫn xử lý được trường hợp phím bấm nhiều lần.

                  Comment


                  • #24
                    Nguyên văn bởi manhkha Xem bài viết
                    Ở lần thứ nhất bạn đã so sánh 50 lần, như thế đủ để chắc chắn rằng phím được nhấn. Không cần phải thêm 20 lần nữa.
                    Chương trình của bạn có một nhược điểm là bị delay.
                    Các bạn nên nghĩ ra giải thuật không bị delay mà vẫn chống rung được phím, vẫn xử lý được trường hợp phím bấm nhiều lần.
                    Phương pháp chống rung hay mà tôi nghĩ ra và đã dùng hàng chục năm nay, vô tình là đúng với phương pháp của HOCTRO89xxx, cụ thể thế này:
                    (với giả thiết phím bị rung 1 vài msec)
                    -Đọc trạng thái bàn phím hiện tại
                    -So sánh với giá trị phím cũ
                    +Nếu là phím cũ thì
                    ++Nếu quá thời gian chống rung (thường tôi chọn 100msec, vì chẳng có phím nào rung ở mức này), thì coi đây là người dùng cố tình giữ phím và ta có thể xử lý lệnh này là hold-key
                    ++ Nếu trong thời gian <100msec, bỏ qua phím bấm này
                    +Nếu là phím mới, và khác giá trị không bấm phím thì chấp nhận phím này ngay (vì thực tế khi bấm các phím khác nhau là do người dùng, không phải do rung phím)
                    -Gán phím cũ bằng giá trị phím vừa nhận được

                    --> Tóm lại, lý luận của phương pháp này là chỉ chấp nhận các phím giống nhau trong thời gian cách nhau tối thiểu 100msec (bạn có thể chọn thời gian này tùy thích). Các phím khác nhau thì coi là phím mới ngay lập tức

                    Chắc chắn các bạn sẽ hài lòng với phương pháp chống rung này

                    Comment


                    • #25
                      Có một chỗ em thắc mắc trong chương trình của anh: thời gian chống rung là 100ms, làm thế nào anh biết được thời gian này ?, dùng delay ?.

                      Comment


                      • #26
                        Nguyên văn bởi manhkha Xem bài viết
                        Có một chỗ em thắc mắc trong chương trình của anh: thời gian chống rung là 100ms, làm thế nào anh biết được thời gian này ?, dùng delay ?.
                        Hi manhkha, cái số 100ms là thực tế mình thấy là phù hợp thôi (vì không có ai có thể bấm 1 giây được 10 lần cùng 1 phím, các giá trị do bị rung cũng chỉ nằm trong khoảng vài ms đến chục ms là cùng). Còn giá trị 100ms đấy thì dùng 1 timer mà đếm thôi, có thể dùng cái timer 10ms đếm 10 lần là OK, tuyệt đối không dùng delay, vì nó sẽ làm mất phím bạn ạ, cái timer nó chạy độc lập với thủ tục đọc phím, nên sẽ ko bị mất phím đâu
                        Chúc buổi sáng tốt lành

                        Comment

                        Về tác giả

                        Collapse

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

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

                        Collapse

                        • mèomướp
                          Trả lời cho Công thức điện tử
                          bởi mèomướp
                          Dạ thời thế giờ thay đổi theo hướng tích cực hơn rồi chú trung sĩ ạ. Kiến thức được chia sẻ ngày càng nhìu nên làm ăn gian dối ko còn dễ dàng như trước đâu ạ. Những thợ nhỏ rồi sẽ thành công nhân sản xuất đồ mới hết thay vì sửa chữa lặt vặt...
                          Hôm qua, 21:21
                        • mèomướp
                          Trả lời cho Xin hỏi về màn hình laptop
                          bởi mèomướp
                          Dạ cùng chuẩn tín hiệu thì chắc chắn là nhận ạ. Vì bản chất oled hay lcd thì đều phải có mạch chuyển đổi trên thanh gỗ rồi chuyển sang những chip xử lý hàng nghìn chân gắn trên những tab mỏng dính rồi mới ra các điểm ảnh theo hàng...
                          Hôm qua, 20:31
                        • yname11
                          Trả lời cho Xin hỏi về màn hình laptop
                          bởi yname11
                          Ok , thanks bác đã chỉ...
                          Hôm qua, 15:06
                        • nguyendinhvan
                          Công thức điện tử
                          bởi nguyendinhvan
                          Sau bao năm nghiên cứu cái dtvn. Tôi phát hiện công thức này. Các anh em xem đúng bao nhiêu phần trăm nhé !

                          Chập thì thay. Cháy thì tháo
                          Làm thì láo. Báo thì hay
                          May thì khoe. Rủi thì bỏ
                          Thành tích nhỏ. Báo thành to
                          Làm cho có. Báo chi li
                          Sai cả li. Báo
                          ...
                          Hôm qua, 00:35
                        • yname11
                          Trả lời cho Xin hỏi về màn hình laptop
                          bởi yname11
                          có chắc ko b, màn lcd phải có cao áp mới sáng, màn led thì ko có, ko có cáp chuyển đổi thì lắp thế nào đc ??...
                          25-11-2024, 22:31
                        • mèomướp
                          Trả lời cho Xin hỏi về màn hình laptop
                          bởi mèomướp
                          Dạ ý chú là màn oled ấy ạ. Cùng chuẩn lvds cùng độ phân giải thì cắm được ạ. Còn nó mà khác thì hơi khó vì oled các điểm ảnh nó tự phát sáng chứ ko dùng đèn nền như lcd. Cháu chỉ biết đến vậy thôi ạ. Chú muốn nghịch phải tự tìm hiểu kỹ trước khi mua thôi, khó mà ông thợ nào tư vấn vụ này...
                          25-11-2024, 22:14
                        • bactho
                          Trả lời cho Tự làm máy đo Cuộn cảm
                          bởi bactho
                          Hay đấy bạn ạ. Đây có thể hiểu là máy đo cuộn dây. Tiện đây xin cho hỏi bạn có hiểu rõ về máy nạp rôm pcb 45 của hãng thiên minh không giúp mình cách cài fw của nó với vì mình vừa được anh bạn cho nhưng lại không biết cài fw nên chưa dùng được. Nếu có thể thì bạn giúp mình với...
                          25-11-2024, 21:48
                        • yname11
                          Trả lời cho Xin hỏi về màn hình laptop
                          bởi yname11
                          màn của mình là LCD , giờ m muốn mua màn LED để thay thế (ko muốn dùng màn LCD nữa) , lên muốn hỏi xem có cáp chuyển đổi nào có thể cắm đc màn LED vào ko , tất nhiên phải có cùng số chân pin với màn cũ rồi . VD: màn cũ là lcd mỏng , 40 pin...
                          25-11-2024, 21:43
                        • bactho
                          Trả lời cho các bạn giúp mình về file HEX với!!!
                          bởi bactho
                          Bạn vào trang phuclanshop.com ,tìm đến góc kỹ thuật. Tác giả vương khánh hưng nói rất rõ về điều bạn tìm...
                          25-11-2024, 21:21
                        • mèomướp
                          Trả lời cho Xin hỏi về màn hình laptop
                          bởi mèomướp
                          Dạ màn hình lcd đều có thể lai cấy cho nhau được hết ạ. Các loại cáp, bo mạch chuyển đổi lvds rất nhìu, với dòng sony còn phải nhổ cả chip nhớ của main cũ đưa lên gỗ thì mới lắp sang máy khác đc, chưa kể các bệnh về màu... ngay cả...
                          25-11-2024, 20:43
                        Đang tải...
                        X