Thông báo

Collapse
No announcement yet.

Làm việc với LED 7 đoạn + phím bấm + PIC

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

  • Làm việc với LED 7 đoạn + phím bấm + PIC

    Chào các sư huynh
    em có 1 bài toán như sau, mong các anh chỉ giáo em với
    Em có 1 con PIC 16F887, 2 con LED 7 đoạn A chung, 3 phím bấm
    LED 7 đoạn em nối vào portD, 2 chân điều khiên là RB4 và RB5
    3 phím bấm là RC4 (tăng), RC5 (giảm), RC6 (enter)
    ạch của em có 3 nút nhấn là RC4 (tăng), RC5 (giảm), RC6 (enter),
    em muốn ban đầu 2 LED 7 đoạn hiện số 25
    khi em nhấn RC4 thì 2 LED hiện 00, nhấn RC4 lần nữa hiện ra 01, nhấn RC4 lần nữa hiện 02,.....tương tự vậy. khi nhấn tới 1 số bất kỳ, nhấn enter thì quay lại hiện số 25,
    khi em nhấn RC5 thì 2 LED hiện 99, nhấn RC5 lần nữa hiện ra 98, nhấn RC5 lần nữa hiện 97,.....tương tự vậy. khi nhấn tới 1 số bất kỳ, nhấn enter thì quay lại hiện số 25,
    Em cảm ơn

  • #2
    Nguyên văn bởi khanh my Xem bài viết
    Chào các sư huynh
    em có 1 bài toán như sau, mong các anh chỉ giáo em với
    Em có 1 con PIC 16F887, 2 con LED 7 đoạn A chung, 3 phím bấm
    LED 7 đoạn em nối vào portD, 2 chân điều khiên là RB4 và RB5
    3 phím bấm là RC4 (tăng), RC5 (giảm), RC6 (enter)
    ạch của em có 3 nút nhấn là RC4 (tăng), RC5 (giảm), RC6 (enter),
    em muốn ban đầu 2 LED 7 đoạn hiện số 25
    khi em nhấn RC4 thì 2 LED hiện 00, nhấn RC4 lần nữa hiện ra 01, nhấn RC4 lần nữa hiện 02,.....tương tự vậy. khi nhấn tới 1 số bất kỳ, nhấn enter thì quay lại hiện số 25,
    khi em nhấn RC5 thì 2 LED hiện 99, nhấn RC5 lần nữa hiện ra 98, nhấn RC5 lần nữa hiện 97,.....tương tự vậy. khi nhấn tới 1 số bất kỳ, nhấn enter thì quay lại hiện số 25,
    Em cảm ơn
    chương trình chính là vòng lập while(1) quét 2 led, khi quét xong thì gọi 1 chương trình con kiểm tra phím bằng lệnh if
    quét led ->kiểm tra phím -> thực thi lệnh tương ứng với phím khi có nhấn -> quay lại quét led ........
    |

    Comment


    • #3
      Nguyên văn bởi metechviet
      Để nhờ mọi người một cách nhanh nhất mình nghĩ bạn nên như thế này:
      - Đính kèm đầy đủ code, file mô phỏng đã vẽ
      - Đưa ra phần khúc mắc của mình trong code đang viết
      - Nếu chưa có đường hướng thì vẽ file mô phỏng trước đã rồi hỏi mọi người. Chứ bây giờ ai cũng lười, bạn hỏi vậy thì chỉ nhân được mấy câu trả lời chúng chung thôi.
      Bạn tham khảo thêm ở đây nhé: TUT PIC 16F887 cơ bản
      Bài em là như thế này, đo nhiệt độ, trong khi đo nhiệt độ có thể thực hiện tăng giảm giá trị của LED 7 đoạn. Em mô phỏng rất OK, nhưng k hiểu sao mạch thật không chạy
      Các sư huynh cho ý kiến với
      Đây là file CCS + hex và mô phỏng
      ALL.rar

      Comment


      • #4
        Nguyên văn bởi khanh my Xem bài viết
        Bài em là như thế này, đo nhiệt độ, trong khi đo nhiệt độ có thể thực hiện tăng giảm giá trị của LED 7 đoạn. Em mô phỏng rất OK, nhưng k hiểu sao mạch thật không chạy
        Các sư huynh cho ý kiến với
        Đây là file CCS + hex và mô phỏng
        ALL.rar
        không chạy kiểu thế nào, mạch của bạn thiếu delay chống nảy phím vì thế nếu mạch thật chạy thì khi bấm nút nó sẽ nhảy số cực kì nhanh đấy nhé

        Comment


        • #5
          Nguyên văn bởi chung1608 Xem bài viết
          không chạy kiểu thế nào, mạch của bạn thiếu delay chống nảy phím vì thế nếu mạch thật chạy thì khi bấm nút nó sẽ nhảy số cực kì nhanh đấy nhé
          Em có chống nãy phím rồi mà anh là lệnh while nằm trong bòng if đó @@

          Comment


          • #6
            Nguyên văn bởi khanh my Xem bài viết
            Em có chống nãy phím rồi mà anh là lệnh while nằm trong bòng if đó @@
            đó là chờ khi ấn giữ nút thôi, nảy phím là khoảng thời gian đầu khi phím đc bấm, tiếp điểm cơ khí chưa tiếp xúc hoàn toàn sẽ tạo ra các xung giống như ta bấm phim liên tục. Trong mô phỏng của bạn ko thấy điều này là vì phím trong mô phỏng tác động tức thời ko bị lỗi cơ khí

            Comment


            • #7
              Nguyên văn bởi chung1608 Xem bài viết
              đó là chờ khi ấn giữ nút thôi, nảy phím là khoảng thời gian đầu khi phím đc bấm, tiếp điểm cơ khí chưa tiếp xúc hoàn toàn sẽ tạo ra các xung giống như ta bấm phim liên tục. Trong mô phỏng của bạn ko thấy điều này là vì phím trong mô phỏng tác động tức thời ko bị lỗi cơ khí
              Sao mềnh chưa gặp bao giờ nhể ? Chưa bao bao giờ ấn 1 mà tăng 2 nhưng cũng không biết nó nảy ra làm sao

              Comment


              • #8
                mấy anh cho ý kiến cái này với. Em làm mô phỏng thì nó chạy không hiểu sao mạch thật lại không chạy đúng
                Bài của em đơn giản chỉ là hiển thị LED 7 đoạn, có 2 nút nhấn tăng và giảm thui mà sao giảm k đc chỉ có tăng thui. Trong khi mô phỏng thì vẫn giảm đc


                #include <16F887.h>
                #fuses NOWDT,HS,NOPUT,NOPROTECT,NODEBUG,NOBROWNOUT,NOLVP, NOCPD,NOWRT
                #use delay(clock=12000000)
                const unsigned char dig[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};

                void main ()
                {
                int so,hc, hdv;
                set_tris_c (0xFF);
                set_tris_b (0x00);
                set_tris_d (0x00);
                so=0;
                while (1)
                {

                if(input(pin_c3)==0)
                {
                while(input(pin_c3)==0);
                delay_ms(50);
                so++;
                }


                if(input(pin_c5)==0)
                {
                while(input(pin_c5)==0);
                delay_ms(50);
                so--;
                }
                hc=so/10;
                hdv=so%10;

                output_b (0x04);
                output_D (0xc6); //hien thi ký hieu c LED3
                delay_ms(5);
                output_b (0x00);

                output_b (0x08);
                output_D (0x9c); //hien thi ký hieu do LED3
                delay_ms(5);
                output_b (0x00);

                output_b (0x20);
                output_D (dig[hdv]); //hien thi don vi LED3
                delay_ms(5);
                output_b (0x00);

                output_b (0x10);
                output_D (dig[hc]); //hien thi chuc LED3
                delay_ms(5);
                output_b (0x00);
                }
                }

                Comment


                • #9
                  Bạn gắn thêm cái tụ điện c104 (song song với 2 chân của cái nút ấn) vào mạch phần cứng thì sẽ hết nảy phím ngay, khỏi cần viết code chi cho mệt
                  Không có gì quý hơn độc lập tự do!

                  Comment

                  Về tác giả

                  Collapse

                  khanh my Tìm hiểu thêm về khanh my

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

                  Collapse

                  Đang tải...
                  X