Thông báo

Collapse
No announcement yet.

Viết chương trình cho 8 led sáng dồn

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

  • Viết chương trình cho 8 led sáng dồn

    em cũng mới học phần lập trình cho vi điều khiển. gặp bài toán cho 8 led của một port sáng dồn
    mà em không thể nào viết được. mọi người giúp giùm em vói nha. cám ơn mọi người nhiều.

  • #2
    bạn viết bằng c hay ngôn ngữ ji mà là con nào thì mọi người mới giúp bạn được chứ

    Comment


    • #3
      bạn hỏi mà k nói rõ là bạn dùng vi điều khiển j và viết bằng ngôn ngữ gì ?thì làm sao giúp bạn đc chứ
      niếu dùng PIC 16F877A thì mình viết dùm cho mà viêtf bằng assembly nha

      Phạm Công Bình
      ĐT:0908962269

      Comment


      • #4
        ngôn ngữ c bạn à

        Comment


        • #5
          họ 8051(89S52)

          Comment


          • #6
            Nguyên văn bởi linh95 Xem bài viết
            họ 8051(89S52)
            Code:
            #include "REG52.H"
            
            void delay_ms(unsigned char time)
            {
            	unsigned char i,j;
            	for(i=0;i<time;i++)
            	{
            		for(j=0;j<120;j++);
            	}
            }
            
            int main(void)
            {
            	char i=0;
            
            	while(1)
            	{
            		P2=0;
            		for(i=0;i<8;i++)
            		{
            			P2 = (P2<<1)|1;
            			delay_ms(200);
            		}
            	}
            	
            }
            Last edited by xe đạp; 03-01-2013, 00:00.

            Comment


            • #7
              em cám ơn anh rất nhiều. chương trình này biên dịch không có lỗi nhưng nạp chạy thử trên protues không chạy được anh à. anh có thể cho lại code được không

              Comment


              • #8
                chào bạn mình giúp bạn một đoạn code với 8led thôi nha , muốn nhiều hơn bạn phải tự làm nha, từ từ mà làm bạn sẽ học được nhiều thứ mọi tài liệu mang tinh chất tham khảo thôi
                mô phỏng ở đây:
                THUC HANH LED.rar
                #include <REGX51.H>
                #define sang 1
                #define tat 0
                unsigned int sangduoi[8]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
                unsigned int tatdan[8]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};
                unsigned int sangdon[37]= {0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd
                ,0xfe,0x7e,0xbe,0xde,0xee,0xf6,0xfa,0xfc
                ,0x7c,0xbc,0xdc,0xec,0xf4,0xf8,0x78,0xb8
                ,0xd8,0xe8,0xf0,0x70,0xb0,0xd0,0xe0,0x60
                ,0xa0,0xc0,0x40,0x80,0x0};

                /*********khai bao bien cuc bo*******/
                sbit led1=P0^0;
                sbit led2=P0^1;
                sbit led3=P0^2;
                sbit led4=P0^3;
                sbit led5=P0^4;
                sbit led6=P0^5;
                sbit led7=P0^6;
                sbit led8=P0^7;
                /******ham de lay******/
                void delay(unsigned int i)
                {
                while(i--)
                {
                unsigned char j=121;
                while(j--)
                {
                }
                }
                }
                /*****sang duoi*************/
                void sangduoi1()
                {
                unsigned int k;
                for(k=0;k<8;k++)
                {
                P0=sangduoi[k];
                delay(200);
                if(k==7)
                {
                unsigned int n;
                P0=0xff;
                for(n=0;n<8;n++)
                {
                P1=sangduoi[n];
                delay(200);
                if(n==7)
                {
                unsigned int m;
                P1=0xff;
                for(m=0;m<8;m++)
                {
                P2=sangduoi[m];
                delay(200);
                if(m==7)
                {
                unsigned int l;
                P2=0xff;
                for(l=0;l<8;l++)
                {
                P3=sangduoi[l];
                delay(200);

                }

                }
                }
                }

                }
                }
                }
                }

                /********tat dan*************************/
                void tatdan1()
                {
                unsigned int i;
                for(i=0;i<8;i++)
                {
                P3=tatdan[i];
                delay(200);
                if(i==7)
                {
                unsigned int j;
                P3=0;
                for(j=0;j<8;j++)
                {
                P2=tatdan[j];
                delay(200);
                if(j==7)
                {
                unsigned int l;
                P2=0;
                for(l=0;l<8;l++)
                {
                P1=tatdan[l];
                delay(200);
                if(l==7)
                {
                unsigned int m;
                P1=0;
                for(m=0;m<8;m++)
                {
                P0=tatdan[m];
                delay(200);
                }
                }
                }
                }
                }

                }

                }
                }
                /***sang don**/
                void sangdon1()
                {
                unsigned int i;
                for(i=0;i<38;i++)
                {
                P0=~sangdon[i];
                delay(500);
                }
                }



                /*******chuong trinh chinh***************/
                void main(void)
                {
                P0=0xff;
                P1=0x00;
                P2=0x00;
                P3=0x00;
                //sangduoi1();
                //tatdan1();
                sangdon1();


                }

                Comment


                • #9
                  bạn xem có chỉnh sai chỗ nào trong proteus ko chứ mình cho nó chạy bình thường mà, chỉ cần lấy con 89 ra và click đến file hex là đc, chả cần thêm thắt gì nhiều đâu

                  Comment


                  • #10
                    cám ơn các bạn rất là nhiều.

                    Comment


                    • #11
                      em có code này mọi người có thể giải thích rồi nếu thu gọn nó lại được thì mọi người giúp giùm em với nha. em cám ơn
                      #include <reg51.h>
                      unsigned int a,c,d,b;
                      unsigned char vp1,vp3;
                      unsigned char i,j,k;
                      void delay(unsigned int ms)
                      {
                      unsigned int i;
                      unsigned char j;
                      for(i=0;i<ms;i++)
                      {
                      for(j=0;j<125;j++)
                      {}
                      }
                      }
                      void main()
                      {
                      TMOD=1;
                      tiep:
                      P1=0xff;
                      P3=0xff;
                      a=0xffff;
                      delay(200);
                      for(i=0;i<16;++i)
                      {
                      d=0xffff;
                      for(j=0;j<i;++j)
                      d>>=1;
                      a=0xffff;
                      for(j=0;j<16-i;++j)
                      {
                      a<<=1;
                      c=0;
                      for(k=0;k<j;++k)
                      {
                      c<<=1;
                      c|=1;
                      }
                      a|=c;
                      a&=d;
                      vp1=(char)a;
                      b=a;
                      b>>=8;
                      vp3=(char)b;
                      P1=vp1;
                      P3=vp3;

                      delay(200);
                      }
                      }
                      goto tiep;
                      }

                      Comment


                      • #12
                        Mấy code cho led đơn này đơn giản mà ! Mình nghĩ ban đầu khi viết code bạn cứ viết đơn giản, nghĩ j viết nấy : vd như mún cho 1 led sáng thì pin nối vs MCU của led đấy phải ở mức cao 1 ( hoặc thấp 0) tùy theo phần cứng của bạn. Khi đấy chỉ cần kết hợp việc set bit và hàm trễ là bạn làm dc nhìu thứ rồi. Sau đấy khi đã thông, bạn có thể tìm hỉu thêm về các hàm dịch bit..vv để tối gọn chương trình của mình thôi.
                        Mình vd về sáng dồn 3 led nhé :
                        #include <reg51.h>
                        #bit L1 = P2.0
                        #bit L2 = P2.1
                        #bit L3 = P2.2
                        VOID MAIN()
                        {L1=1;
                        DELAY_MS(100);
                        L1=0;L2=1;
                        DELAY_MS(100);
                        L1=L2=0;L3=1;
                        DELAY_MS(100);
                        L1=1;
                        DELAY_MS(100);
                        L1=0;L2=1;
                        DELAY_MS(100);
                        L1=1;
                        DELAY_MS(100);
                        L1=L2=L3=0;
                        DELAY_MS(100);}

                        Comment


                        • #13
                          Hình như nút Cảm ơn bị ẩn nhỉ.

                          Comment


                          • #14
                            cám ơn mọi người rất nhiều

                            Comment

                            Về tác giả

                            Collapse

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

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

                            Collapse

                            Đang tải...
                            X