Thông báo

Collapse
No announcement yet.

giúp e cái biến đếm quét led 7

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

  • giúp e cái biến đếm quét led 7

    Code:
    #include <REGX51.H>
    unsigned char 	M[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
    unsigned char i;
    unsigned char n;
    sbit A1=P1^0;                       // Anot led hang chuc
    sbit A2=P1^1;					   //  Anot led hang don vi
    void delay(long time)             //ham tre phuc vu quet led
    {long n;
    for(n=0;n<time;n++)
    {
    ;
    }
    }
    void hienthi()
    {// LED HANG CHUC
    		
               A1=1;
               P2=M[i/10];
               delay(500);
               A1=0;					  // xoa led
               P2=0xff;
    //............LED HANG DON VI
               A2=1;
               P2=M[i%10];
               delay(500);
               A2=0;  
    		   P2=0xff;
    }
    void khoitao()
    {       
            TMOD  =  0x01;
            IE    =  0x82; 
            TH0   = 0xc3;              //tre 5ms
            TL0   = 0x50;
            EA    =  1;
            ET0   =  1;
            TF0   =  1;
            TR0   =  1;
    		
    }
    void isr_timer0(void) interrupt 1
    {        
             TF0   = 0;
    		 TR0   = 0;
    		 n++;
             hienthi();
             TH0     =  0xc3;
             TL0     =  0x50;		 
             TR0=1;
    		 if(n = 20)
    		 {n=0;
    		 i--;
    		 }
    		 		 
    }					 
    void main()
    {         
              i   =   99;
    		  if(i==0)
    		  i=99;
              khoitao();
    		  
    }
    với phương châm ko dối dốt.@ @. e mong các b giúp e. mặc dù đã được ý kiến đóng góp của anh Mast090 rồi nhưng 1 đêm loay hoay mà nó vẫn vào thế bế tắc.
    E quét led 7 đoạn và đếm ngược từ 99-00, đếm đúng 1s. nhưng ở đây cái biến đếm nó lại ko giảm .
    Mong nhận được sự đóng góp của các a.
    e cám ơn.
    Nguyễn Huy Biên - 01649 802 694
    gmail :

  • #2
    để biến đếm giảm thì trong hàm hiển thị bác phải cho biến đó giảm chẳng hạn như là i--;sau đó mới cho P2=M[i/10];cũng có thể cho biến đếm sau khi thực hiện P2=M[i/10],ở đây ban đầu phải gán i=99;có thể sử dụng vòng lặp for hoặc while

    Comment


    • #3
      Nguyên văn bởi dtcn_112 Xem bài viết
      để biến đếm giảm thì trong hàm hiển thị bác phải cho biến đó giảm chẳng hạn như là i--;sau đó mới cho P2=M[i/10];cũng có thể cho biến đếm sau khi thực hiện P2=M[i/10],ở đây ban đầu phải gán i=99;có thể sử dụng vòng lặp for hoặc while
      vâng thanks bạn mình sẽ sửa ngay đây
      Nguyễn Huy Biên - 01649 802 694
      gmail :

      Comment


      • #4
        mình đã sửa. đúng như lời bạn nói. nó sẽ chạy, nhưng mà thời gian quet led nó chính là thời gian delay. như vậy timer coi như ko có tác dụng rồi. ý mình muốn ở đây thời gian nẩy giữa các số là 1s. ví dụ từ 99-98 là 1s.
        còn nữa. cái này nếu chạy hết lần 1 sang đến lần 2 thì số hàng chục nẩy lung tung, đến lần thứ 3 thì lại nẩy đúng.
        Chắc cũng nhiều bác gặp vấn đề này rồi. Mong các b chia sẻ kinh nghiêm.
        Nguyễn Huy Biên - 01649 802 694
        gmail :

        Comment


        • #5
          interrupttttttttttttttttttttttt
          Be quan. Plz contact through email:

          Comment


          • #6
            Nguyên văn bởi Lenh Ho Xem bài viết
            interrupttttttttttttttttttttttt
            vâng. e cũng nghĩ sai trong hàm ngắt. nhưng đầu óc tăm tối quá. e ko nhìn ra chỗ sai, bác chỉ giúp em
            Nguyễn Huy Biên - 01649 802 694
            gmail :

            Comment


            • #7
              bác cũng nhanh thật em vừa tải về sửa chạy được từ 99 về 00 không có sự nhảy lung tung để đếm với trễ 1s thì em chưa thấy lỗi ở đâu nhưng có cái là bác tăng cái biến n lên thì led sẽ bị chớp và cái biến này dùng kiểu long thì không hợp vì nó chiếm 4 byte nên dùng kiểu int(trong bài bác sẽ hợp hơn theo cá nhân em thôi nhé

              Comment


              • #8
                Nguyên văn bởi Lenh Ho Xem bài viết
                interrupttttttttttttttttttttttt
                ý bác là mình tính sao cho cứ 1s thì xảy ra ngắt 1 lần và biến i giảm đi 1 đơn vị

                Comment


                • #9
                  Nguyên văn bởi bienhou Xem bài viết
                  vâng. e cũng nghĩ sai trong hàm ngắt. nhưng đầu óc tăm tối quá. e ko nhìn ra chỗ sai, bác chỉ giúp em
                  theo ý bác lenh ho thì cứ 1s thì xảy ra ngắt 1 lần và i giảm đi 1 đơn vị

                  Comment


                  • #10
                    Nguyên văn bởi dtcn_112 Xem bài viết
                    theo ý bác lenh ho thì cứ 1s thì xảy ra ngắt 1 lần và i giảm đi 1 đơn vị
                    vâng . e cũng đang viết theo như vậy đó. nếu b đã sửa rồi thì b post lên cho e tham khảo với.
                    Nguyễn Huy Biên - 01649 802 694
                    gmail :

                    Comment


                    • #11
                      code sửa đây:
                      #include <reg51.h>
                      unsigned char M[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};
                      unsigned char i=99;
                      unsigned char n;
                      unsigned char a=0;
                      sbit A1=P1^0; // Anot led hang chuc
                      sbit A2=P1^1; // Anot led hang don vi
                      void delay(unsigned int time) //ham tre phuc vu quet led
                      {unsigned int n;
                      for(n=0;n<time;n++)
                      {
                      ;
                      }
                      }
                      void hienthi()
                      {// LED HANG CHUC

                      A1=1;
                      P2=M[i/10];
                      delay(50);
                      A1=0; // xoa led
                      P2=0xff;
                      //............LED HANG DON VI
                      A2=1;
                      P2=M[i%10];
                      delay(50);
                      A2=0;
                      P2=0xff;
                      }
                      void khoitao()
                      {
                      TMOD = 0x01;
                      IE = 0x82;
                      TH0 = 0xc3; //tre 5ms
                      TL0 = 0x50;
                      EA = 1;
                      ET0 = 1;
                      TR0 = 1;

                      }
                      void isr_timer0(void) interrupt 1
                      {
                      TF0 = 0;
                      TR0 = 0;
                      a++;
                      hienthi();
                      TH0 = 0xc3;
                      TL0 = 0x50;
                      TR0=1;
                      if(a==20)
                      {
                      a=0;
                      i--;

                      }

                      }
                      void main()
                      {
                      khoitao();
                      {
                      while(1)//{
                      if(i==0)
                      i=99;}

                      }

                      Comment


                      • #12
                        thanks ban nhieu nhe
                        Nguyễn Huy Biên - 01649 802 694
                        gmail :

                        Comment


                        • #13
                          bác có thể tham khảo cái này ! 10 phút cho bác đấy ! hay thanks cái nhé mới tái xuất giang hồ nên cần ít tấm lòng của các bác hì có gì chém em nhẹ tay nhé !

                          //#include <REGX51.H> Thach anh 12MHZ T_MC=1uS
                          #include <at89x52.h>
                          unsigned char M[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};
                          unsigned char dem;
                          unsigned char gia_tri=99;
                          #define A1 P1_0; // Anot led hang chuc
                          #define A2 P1_1; // Anot led hang don vi
                          void delay(unsigned long time) //ham tre phuc vu quet led
                          {
                          while(--time);
                          }
                          void khoitaongattimer0() //50ms ngat 1 lan
                          {
                          EA=0; //don't enable global interrupt
                          TMOD=0x01;
                          TH0=0xC3; // 50ms
                          TL0=0x50;
                          TR0=1;
                          ET0=0; // enable timer 0
                          EA=1;
                          }

                          void ngatt0()interrupt 1
                          {
                          EA=0;
                          TH0=0xC3;
                          TL0=0x50;
                          dem++;
                          if(dem==20) // 20x50ms=1000ms=1s
                          {
                          dem=0;
                          gia_tri--;
                          }
                          if(gia_tri==0) // giam ve 0
                          gia_tri=99;
                          EA=1;
                          }

                          void main()
                          {
                          P1=0x00;
                          P2=0x00;
                          khoitaongattimer0();
                          while(1)
                          {
                          A1=1;
                          P2=M[gia_tri/10];
                          delay(500);
                          A1=0; // xoa led
                          P2=0xff;
                          //............LED HANG DON VI
                          A2=1;
                          P2=M[gia_tri%10];
                          delay(500);
                          A2=0;
                          P2=0xff;

                          }
                          }
                          Email :
                          Phone : 0902 5777 39
                          Branch: LẬP TRÌNH CÁC DÒNG CHIP NXP, ST, ATMEL

                          Comment


                          • #14
                            Nguyên văn bởi daily84 Xem bài viết
                            bác có thể tham khảo cái này ! 10 phút cho bác đấy ! hay thanks cái nhé mới tái xuất giang hồ nên cần ít tấm lòng của các bác hì có gì chém em nhẹ tay nhé !

                            //#include <REGX51.H> Thach anh 12MHZ T_MC=1uS
                            #include <at89x52.h>
                            unsigned char M[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};
                            unsigned char dem;
                            unsigned char gia_tri=99;
                            #define A1 P1_0; // Anot led hang chuc
                            #define A2 P1_1; // Anot led hang don vi
                            void delay(unsigned long time) //ham tre phuc vu quet led
                            {
                            while(--time);
                            }
                            void khoitaongattimer0() //50ms ngat 1 lan
                            {
                            EA=0; //don't enable global interrupt
                            TMOD=0x01;
                            TH0=0xC3; // 50ms
                            TL0=0x50;
                            TR0=1;
                            ET0=0; // enable timer 0
                            EA=1;
                            }

                            void ngatt0()interrupt 1
                            {
                            EA=0;
                            TH0=0xC3;
                            TL0=0x50;
                            dem++;
                            if(dem==20) // 20x50ms=1000ms=1s
                            {
                            dem=0;
                            gia_tri--;
                            }
                            if(gia_tri==0) // giam ve 0
                            gia_tri=99;
                            EA=1;
                            }

                            void main()
                            {
                            P1=0x00;
                            P2=0x00;
                            khoitaongattimer0();
                            while(1)
                            {
                            A1=1;
                            P2=M[gia_tri/10];
                            delay(500);
                            A1=0; // xoa led
                            P2=0xff;
                            //............LED HANG DON VI
                            A2=1;
                            P2=M[gia_tri%10];
                            delay(500);
                            A2=0;
                            P2=0xff;

                            }
                            }
                            ok. thanks bác.@ @
                            Nguyễn Huy Biên - 01649 802 694
                            gmail :

                            Comment

                            Về tác giả

                            Collapse

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

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

                            Collapse

                            • vi van pham
                              Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?
                              bởi vi van pham
                              Đồng ý với Bqv.
                              50 năm làm nghề, tôi đã chứng kiến 3 lần máy x quang mới nhập từ nước ngoài về bị lỗi.
                              - Lần thứ 1 máy xq của Pháp được ks Pháp lằp đặt bị lỗi 1 con didode, đưa cho ks Pháp con didode khác cùng mã số, ông...
                              hôm nay, 08:09
                            • mèomướp
                              Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?
                              bởi mèomướp
                              Dạ chú dinh... muốn sửa lỗi cho hãng thì chú cứ gửi những hình ảnh, video cho họ đi ạ, chú có thể tìm thông tin của những lãnh đạo bên ấy để gửi thì sẽ hiệu quả hơn ạ. Về tổng quan thì họ sẽ ko phản hồi rõ ràng đâu ạ, vì nhận...
                              hôm nay, 06:19
                            • bqviet
                              Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?
                              bởi bqviet
                              Cuối năm bàn thêm chuyện to hơn chút, đấy là 2 vụ rơi đám 737 đời mới và trục trặc ở cả tá chiếc khác. Ngay cả những thứ tưởng như cao siêu sang xịn thật thì vẫn có thể gặp trường hợp oái oăm như thường. Từ hồi đó bqv đã thấy khó hiểu làm sao lại đẻ ra đám MCAS quái thai đến thế được. Rồi...
                              24-01-2025, 19:40
                            • bqviet
                              Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?
                              bởi bqviet
                              Bqv phải vào ngay để tán đồng với bài viết trên của bạn. Chỉ bàn về kỹ thuật, thiết bị máy móc của hãng dù danh tiếng vẫn có thể xảy ra những chuyện ngoài dự kiến, thậm chí những chuyện tưởng như không bao giờ có thể xảy ra....
                              24-01-2025, 19:31
                            • dinhthuong80
                              Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?
                              bởi dinhthuong80
                              (ĐT chia sẻ MPPT này, với mong muốn rằng, chúng ta hãy tự tin lên, hãy tự hào là người VN, đừng quá tin vào người khác, đừng quá thần tượng họ, cần kiểm tra thực chứng chứ không nên cứ cho các thiết bị thông minh, cao siêu là hoàn hảo)
                              24-01-2025, 12:08
                            • dinhthuong80
                              Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?
                              bởi dinhthuong80
                              Dưới đây là hình ảnh thực:

                              (bị phạm con tụ pi C17 (phía trên IC U3/DIP08: văng mất xác!)

                              (hàn vào vị trí C17 tụ pi 27nF ( giá trị phỏng đoán từ 10-100nF!), mạch vẫn chạy như trước khi cạy keo)...
                              24-01-2025, 12:05
                            • dinhthuong80
                              Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?
                              bởi dinhthuong80
                              ĐT đã mạnh dạn mail thử cho hãng SRNE, họ trả lời là nó dùng nhiệt điện trở ở bên trong mạch như sau:

                              "Our street light controller product triggers high temperature protection based on internal thermistor sampling''

                              Thấy hơi lo lắng vì kiến thức điện tử...
                              24-01-2025, 11:39
                            • mèomướp
                              Trả lời cho tìm mua đồng hồ vạn năng
                              bởi mèomướp
                              Dạ chú mua cái kẹp dòng ấy ạ. Chị hàng xóm nhà cháu có 1 cái thấy lâu lâu rùi chưa hỏng ạ. Ví dụ như mẫu này trên shoppee đầy ạ...
                              https://vn.shp.ee/dWYVgq7
                              21-01-2025, 12:48
                            • vi van pham
                              Trả lời cho Sửa bộ nguồn DC 60V 45A
                              bởi vi van pham
                              Bác Đinh Vặn sai rồi,bây giờ con nít mẫu giáo đã giải phương trình 2 ẩn số rồi.
                              Tôi chứng minh bác lên youtube đầy video đơn giản tựa rất hot, chỉ 1 transistor hay 1 con diode và hướng dẩn cách làm, tác giả không vẽ sơ đồ mạch điện...
                              21-01-2025, 11:55
                            • nguyendinhvan
                              Trả lời cho Sửa bộ nguồn DC 60V 45A
                              bởi nguyendinhvan
                              Bây giờ mới có tháng giêng, bao giờ mới đến tháng mười ?
                              Các cháu mẫu giáo mới lên lớp 1 được có 4 tháng. Nên đừng lấy lý do chúng nó đã đi học rồi để bắt nó viết một bài luận văn, hay là giải bài toán hàm. Phải kiên nhẫn...
                              21-01-2025, 00:47
                            Đang tải...
                            X