Thông báo

Collapse
No announcement yet.

[bt PIC] thiết kế hệ thống đếm Sản phẩm gồm 2 led 7 đoạn hiển thị dùng pic 16f877a

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

  • [bt PIC] thiết kế hệ thống đếm Sản phẩm gồm 2 led 7 đoạn hiển thị dùng pic 16f877a

    yêu cầu như sau:
    Chọn tần số thạch anh là 4Mhz
    sử dụng nút nhấn để giả lập xung đếm sản phẩm (kết nối với ngõ vào điều khiển int ngắt RB0)
    phải sử dụng ngắt để đếm sản phẩm (em học xong vxl vẫn không hiểu phần interrupt này )
    giá trị mặc định là 00 (giá trị từ 00 - 55)
    viết bằng HT
    em không có ý tưởng gì để làm hết ,mong được các bạn trong dientuvietnam.net giúp đỡ !

  • #2
    Pic à... cái này mình cũng biết chút ít. cái đếm Sp kiểu này cũng đơn giản thôi bạn ạ. Khai báo ngắt rùi đặt biến đếm --- so sánh biến đếm... nói chung muốn đếm thế nào do mình lập trình thôi. còn ngôn ngữ mình viết C học ASM chứ ko biết HT hehe
    Kết Nối Dân Kỹ Thuật tại facebook để Trao đổi - học hỏi

    Thích chém gió bốn phương zô đây

    Comment


    • #3
      Nguyên văn bởi thaichiendt Xem bài viết
      Pic à... cái này mình cũng biết chút ít. cái đếm Sp kiểu này cũng đơn giản thôi bạn ạ. Khai báo ngắt rùi đặt biến đếm --- so sánh biến đếm... nói chung muốn đếm thế nào do mình lập trình thôi. còn ngôn ngữ mình viết C học ASM chứ ko biết HT hehe
      có thể cho mình xin code tham khảo ko bạn? mình mới học pic ah , nên còn gà mờ lắm

      Comment


      • #4
        bạn cần code vít bằng ngôn ngữ gì mới dc .. mình vít C or ASM chứ ko bít ngôn ngữ gì hơn
        dân kỹ thuật thì vào facebook like ủng hộ để chia sẻ và học hỏi khi cần... nhanh lắm hehe
        https://www.facebook.com/dankythuat.pro
        Kết Nối Dân Kỹ Thuật tại facebook để Trao đổi - học hỏi

        Thích chém gió bốn phương zô đây

        Comment


        • #5
          ngắt thì em tự tìm hiểu nhé. ngắn gọn là:

          ví dụ:

          while(1)
          {
          sáng led;
          delay2giay
          tắt led;
          delay2sl

          }

          giả sử nhé, em có một nút nhấn, nếu em nhấn nút thì mặc dù led có đang sáng thì cũng tắt.
          vậy giả sử led đang sáng, và gặp chuơng trình delay2s. chương trình cứ đứng ở đây hoài, nó chưa thoát ra khỏi để chạy tiếp. vậy nếu em có nhấn nút thì nó có tắt không?? không

          nhưng nếu sử dụng ngắt, kể cả chuơng trình có đang làm gì thì cũng quay về ngắt để thực hiện
          thực hiện xong ngắt thì quay laị chuơng trình chính thực hiện tiếp

          tóm lại, "dàn ý cho bài của em là"

          kết nối một nút nhấn cho chân RB ( sử dụng ngắt portb khi có sự thay đổi trạng thái"
          sử dụng 2 led 7 đoạn theo kiểu quét hay đơn cũng được
          làm như sau:

          // khai báo biến sử dụng
          int đếm = 0;
          int chục,đơnvi;
          int mã;

          int ma7doan( int a)
          {
          switch(a)
          case 0 : mã = 0xc0; break;

          ;;;;;;;;; tưong tự
          retuen mã;


          }



          void interrupt()
          {
          dem ++;
          if (dem = =56) //
          dem = 0;
          }


          // chuơng trình chính

          void main()
          {
          khai báo port ( như hướng - tris, analog hay digital - thanh ghi ansel và anselh
          khai báo bít ngắt toàn cục = 1;
          khai báo bit cho phép ngắt khi có sự thay đổi trạng thái portb


          while(1)
          {

          chuck = đếm/10;
          đơn vị = đếm - đếm*10;
          ( 2 dòng lệnh này để giải mã)


          sau đó hiển thị
          porta = ma7doan(chuc);
          portc = ma7doan(donvi);



          }

          }
          Be quan. Plz contact through email:

          Comment


          • #6
            Nguyên văn bởi Lenh Ho Xem bài viết
            ngắt thì em tự tìm hiểu nhé. ngắn gọn là:

            ví dụ:

            while(1)
            {
            sáng led;
            delay2giay
            tắt led;
            delay2sl

            }

            giả sử nhé, em có một nút nhấn, nếu em nhấn nút thì mặc dù led có đang sáng thì cũng tắt.
            vậy giả sử led đang sáng, và gặp chuơng trình delay2s. chương trình cứ đứng ở đây hoài, nó chưa thoát ra khỏi để chạy tiếp. vậy nếu em có nhấn nút thì nó có tắt không?? không

            nhưng nếu sử dụng ngắt, kể cả chuơng trình có đang làm gì thì cũng quay về ngắt để thực hiện
            thực hiện xong ngắt thì quay laị chuơng trình chính thực hiện tiếp

            tóm lại, "dàn ý cho bài của em là"

            kết nối một nút nhấn cho chân RB ( sử dụng ngắt portb khi có sự thay đổi trạng thái"
            sử dụng 2 led 7 đoạn theo kiểu quét hay đơn cũng được
            làm như sau:

            // khai báo biến sử dụng
            int đếm = 0;
            int chục,đơnvi;
            int mã;

            int ma7doan( int a)
            {
            switch(a)
            case 0 : mã = 0xc0; break;

            ;;;;;;;;; tưong tự
            retuen mã;


            }



            void interrupt()
            {
            dem ++;
            if (dem = =56) //
            dem = 0;
            }


            // chuơng trình chính

            void main()
            {
            khai báo port ( như hướng - tris, analog hay digital - thanh ghi ansel và anselh
            khai báo bít ngắt toàn cục = 1;
            khai báo bit cho phép ngắt khi có sự thay đổi trạng thái portb


            while(1)
            {

            chuck = đếm/10;
            đơn vị = đếm - đếm*10;
            ( 2 dòng lệnh này để giải mã)


            sau đó hiển thị
            porta = ma7doan(chuc);
            portc = ma7doan(donvi);



            }

            }
            pic 16f877a đâu có thanh ghi ansel và anselh đâu anh? thanks anh đã gợi ý cho em , em code bằng High Teach (HT). Có gì anh hỗ trợ em nhé !

            Comment


            • #7
              giúp em tìm lỗi và build code với

              em code giống ý của anh gợi ý nhưng khi dịch chương trình thì máy báo lỗi ,em không hiểu sai chỗ nào hết , giúp em với
              code đây
              #include <htc.h>
              #include <pic.h>
              __CONFIG(WDTDIS & PWRTEN & UNPROTECT & BORDIS & LVPDIS);
              #define _XTAL_FREQ 4000000
              int dem=0;
              int ch,dv;
              int ma;
              int ma7d(int a)
              {
              switch(a)
              {
              case 0:
              ma=0xC0;
              break;
              case 1:
              ma=0xF9;
              break;
              case 2:
              ma=0xA4;
              break;
              case 3:
              ma=0xB0;
              break;
              case 4:
              ma=0x99;
              break;
              case 5:
              ma=0x92;
              break;
              case 6:
              ma=0x82;
              break;
              case 7:
              ma=0xF8;
              break;
              case 8:
              ma=0x80;
              break;
              case 9:
              ma=0x90;
              break;
              }
              return ma;
              }
              void interrupt()
              {
              dem++;
              if (dem = =56) //
              dem = 0;
              }
              void main()
              {
              TRISD = 0x00;
              PORTC = 0x00;
              TRISC =0x00;
              PORTC=0x00;
              //OPTION_REG
              ADON=1;
              RBPU=0;
              INTEDG=0;
              // INTCON
              /*
              BIT7 GIE (Global Interrupt Enable bit) : Ngat toan cuc
              =1: cho phep tat ca cac ngat
              =0: Khong cho phep tat ca cac ngat
              BIT6 PEIE (Pheripheral Interrupt enable bit)
              =1: Cho phep tat ca cac ngat ngoai vi
              =0: khong cho phep tat ca cac ngat ngoai vi
              BIT5 TMROIE (Timer0 Overflow Interrupt Enable bit)
              =1: Cho phep ngat Timer0
              =0: Khong cho phep ngat Timer0
              BIT4 INTE (RB0/INT External Interrupt enable bit)
              =1: Cho phep ngat ngoai vi RB0/INT
              =0: Khong cho phep ngat ngoai vi RB0/INT
              BIT2 TMROIF (Timer0 Interrupt flag bit)
              =1: Thanh ghi Timer0 bi tran phai xoa bang chuong trinh
              =0: chua tran
              BIT1 INTF RB0/INT External Interrupt Flag bit
              =1: ngat RB0/INT xay ra , phai xoa co hieu bang chuong trinh
              =0: Ngat RB0/INT chua xay ra
              BIT0 RBIF RB Port change Interrupt Flag bit
              =1: it nhat 1 chan RB4:RB7 co su thay doi trang thai, phai duoc xoa bang chuong trinh
              =0: khong co su thay doi
              */
              INTF=0; //XOA CO NGAT INT/RB0
              INTE=1; //CHO PHEP NGAT NGOAI RB0/INT
              GIE=1; //CHO PHEP NGAT TOAN CUC
              while(1);
              {
              ch=dem/10;
              dv=dem-dem*10;
              PORTC=ma7d(ch);
              PORTD=ma7d(dv);
              }
              }
              máy báo lỗi như sau:
              Error [285] C:\Documents and Settings\Administrator\Desktop\bt vxl\bai 1\bai1.c; 46.1 no identifier in declaration
              Error [314] C:\Documents and Settings\Administrator\Desktop\bt vxl\bai 1\bai1.c; 46.1 ";" expected
              Error [285] C:\Documents and Settings\Administrator\Desktop\bt vxl\bai 1\bai1.c; 48.1 no identifier in declaration
              Warning [374] C:\Documents and Settings\Administrator\Desktop\bt vxl\bai 1\bai1.c; 48.1 missing basic type; int assumed
              Error [314] C:\Documents and Settings\Administrator\Desktop\bt vxl\bai 1\bai1.c; 48.1 ";" expected
              Error [285] C:\Documents and Settings\Administrator\Desktop\bt vxl\bai 1\bai1.c; 50.1 no identifier in declaration
              Warning [374] C:\Documents and Settings\Administrator\Desktop\bt vxl\bai 1\bai1.c; 50.1 missing basic type; int assumed
              Error [314] C:\Documents and Settings\Administrator\Desktop\bt vxl\bai 1\bai1.c; 50.1 ";" expected

              ********** Build failed! **********

              Comment

              Về tác giả

              Collapse

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

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

              Collapse

              Đang tải...
              X