Thông báo

Collapse
No announcement yet.

[Giúp đỡ] n nút ấn điều khiển n đèn

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

  • [Giúp đỡ] n nút ấn điều khiển n đèn

    Em tập tành học vi điều khiển và có bài tập này cần sự giúp đỡ của các anh (chị) và các bạn:

    Dùng n nút ấn (BUTTON) điều khiển n đèn LED và hiển thị số tương ứng lên 7-segment LED Displays tương ứng. Trong khoảng thời gian định trước (khoảng 5p) thì đèn đó sẽ tắt.

    Ví dụ: Có 5 nút ấn điều khiển 5 đèn led và có 5 "7-segment LED Displays"
    - Nhấn nút ấn thứ 1 thì đèn led thứ 1 sáng và hiển thị số 1 lên display. Nhấn lần nữa thì tắt hoặc đợi 5p là tự tắt.
    - Các nút ấn, đèn, display độc lập với nhau.

    Mong sự giúp đỡ.
    Em dùng Proteus để giả lập.

  • #2
    Giúp đở là thế nào hả nhocpro93 đưa đề lên rồi kêu gọi mọi người làm hết cho àh . ít ra thì nhocpro93 cũng phải vẽ sơ đồ nguyên lí rồi viết code đi rồi bí ở đâu thì người ta còn giúp chứ. Kiểu này làm hết cho hay sao.

    Comment


    • #3
      Nguyên văn bởi thientanvt Xem bài viết
      Giúp đở là thế nào hả nhocpro93 đưa đề lên rồi kêu gọi mọi người làm hết cho àh . ít ra thì nhocpro93 cũng phải vẽ sơ đồ nguyên lí rồi viết code đi rồi bí ở đâu thì người ta còn giúp chứ. Kiểu này làm hết cho hay sao.
      Thiệt tình là em chưa biết gì, cần gợi ý và giúp.

      Comment


      • #4
        Z thì đừng nói với anh là ngay cả tự vẽ phần cứng cũng không làm đc nhe . Nếu vẽ phần cứng đc thì còn giúp cho.

        Comment


        • #5
          Nguyên văn bởi thientanvt Xem bài viết
          Z thì đừng nói với anh là ngay cả tự vẽ phần cứng cũng không làm đc nhe . Nếu vẽ phần cứng đc thì còn giúp cho.
          Anh giúp em viết code cho mạch này nha!

          Thay vì 5' thì khoảng 30s là đèn tự tắt được rồi
          Attached Files

          Comment


          • #6
            Nếu led 1 đang sáng... Khi ấn ct 2 thì có cần chuyển led hay sao ko anh

            Comment


            • #7
              Nguyên văn bởi ngocnhat95 Xem bài viết
              Nếu led 1 đang sáng... Khi ấn ct 2 thì có cần chuyển led hay sao ko anh
              Không cần chuyển gì cả, led 1 sáng nếu bật ct2 thì led 2 sáng. Chúng độc lập với nhau. Và sau khoảng 30s thì tự tắt hoặc nhấn lần nữa thì tự tắt. Giúp giùm mình với nha!

              Comment


              • #8
                Được rồi để tối đi công vc zìa sẽ hổ trợ cho nhocpro93 nhé giờ anh có chút vc phải làm.

                Comment


                • #9
                  cái này chắc tầm 5 phút là xong quá

                  Comment


                  • #10
                    Code:
                    /*
                    Coder: Ngo Hung Cuong
                    Email: kidteam@gmail.com
                    Phone: 0989696971 - 0915696971
                    Yahoo: cuong_dhbk2004
                    Forum: codientu.org/forum
                    */
                    
                    #include <regx51.h>
                    
                    #define uchar unsigned char
                    
                    uchar status[3];
                    uchar count[3];
                    uchar count2[3];
                    uchar enable[3];
                    
                    #define sw1 P1_0
                    #define sw2 P1_1
                    #define sw3 P1_2
                    
                    #define led1 P2_0
                    #define led2 P2_1
                    #define led3 P2_2
                    
                    void init();
                    
                    void main() {
                    	
                    	init();
                    
                    	while(1) {
                    		if(!sw1) {
                    			while(!sw1);
                    			if(status[0]) {
                    				status[0]=0;
                    				enable[0]=0;
                    			} else {
                    				status[0]=1;
                    				enable[0]=1;
                    				count[0]=count2[0]=0;
                    			}
                    			led1=status[0];
                    		}
                    		if(!sw2) {
                    			while(!sw2);
                    			if(status[1]) {
                    				status[1]=0;
                    				enable[1]=0;
                    			} else {
                    				status[1]=1;
                    				enable[1]=1;
                    				count[1]=count2[1]=0;				
                    			}
                    			led2=status[1];
                    		}
                    		if(!sw3) {
                    			while(!sw3);
                    			if(status[2]) {
                    				status[2]=0;
                    				enable[2]=0;
                    			} else {
                    				status[2]=1;				
                    				enable[2]=1;
                    				count[2]=count2[2]=0;
                    			}
                    			led3=status[2];
                    		}
                    	}
                    }
                    
                    void init() {
                    	//Init timer0
                       	uchar i;
                    	for(i=0; i<3; ++i) {
                    		enable[i]=status[i]=0;
                    		count[i]=count2[i]=0;
                    	}
                    	led1=led2=led3=0;
                    	TMOD=0x01;
                    	TH0=0x3c;
                    	TL0=0xb0;
                    	//50000 cycle
                    	TR0=1;
                    	EA=1;
                    	ET0=1;
                    }
                    
                    void T0_ISR() interrupt TF0_VECTOR {
                    	uchar i;
                    	TH0=0x3c;
                    	TL0=0xb0;
                    	for(i=0; i<3; ++i)	{
                    		if(!enable[i])
                    			continue;
                    		++count[i];
                    		if(count[i]==30) {
                    			count[i]=0;
                    			++count2[i];
                    			if(count2[i]==20) {
                    				count2[i]=0;
                    				switch(i) {
                    					case 0:
                    						status[0]=0;
                    						enable[0]=0;
                    						led1=0;
                    						break;
                    					case 1:
                    						status[1]=0;
                    						enable[1]=0;
                    						led2=0;
                    						break;
                    					case 2:
                    						status[2]=0;
                    						enable[2]=0;
                    						led3=0;
                    						break;
                    				}
                    			}
                    		}
                    	}
                    }

                    Comment


                    • #11
                      Nguyên văn bởi kidteam Xem bài viết
                      Code:
                      /*
                      Coder: Ngo Hung Cuong
                      Email: kidteam@gmail.com
                      Phone: 0989696971 - 0915696971
                      Yahoo: cuong_dhbk2004
                      Forum: codientu.org/forum
                      */
                      
                      #include <regx51.h>
                      
                      #define uchar unsigned char
                      
                      uchar status[3];
                      uchar count[3];
                      uchar count2[3];
                      uchar enable[3];
                      
                      #define sw1 P1_0
                      #define sw2 P1_1
                      #define sw3 P1_2
                      
                      #define led1 P2_0
                      #define led2 P2_1
                      #define led3 P2_2
                      
                      void init();
                      
                      void main() {
                      	
                      	init();
                      
                      	while(1) {
                      		if(!sw1) {
                      			while(!sw1);
                      			if(status[0]) {
                      				status[0]=0;
                      				enable[0]=0;
                      			} else {
                      				status[0]=1;
                      				enable[0]=1;
                      				count[0]=count2[0]=0;
                      			}
                      			led1=status[0];
                      		}
                      		if(!sw2) {
                      			while(!sw2);
                      			if(status[1]) {
                      				status[1]=0;
                      				enable[1]=0;
                      			} else {
                      				status[1]=1;
                      				enable[1]=1;
                      				count[1]=count2[1]=0;				
                      			}
                      			led2=status[1];
                      		}
                      		if(!sw3) {
                      			while(!sw3);
                      			if(status[2]) {
                      				status[2]=0;
                      				enable[2]=0;
                      			} else {
                      				status[2]=1;				
                      				enable[2]=1;
                      				count[2]=count2[2]=0;
                      			}
                      			led3=status[2];
                      		}
                      	}
                      }
                      
                      void init() {
                      	//Init timer0
                         	uchar i;
                      	for(i=0; i<3; ++i) {
                      		enable[i]=status[i]=0;
                      		count[i]=count2[i]=0;
                      	}
                      	led1=led2=led3=0;
                      	TMOD=0x01;
                      	TH0=0x3c;
                      	TL0=0xb0;
                      	//50000 cycle
                      	TR0=1;
                      	EA=1;
                      	ET0=1;
                      }
                      
                      void T0_ISR() interrupt TF0_VECTOR {
                      	uchar i;
                      	TH0=0x3c;
                      	TL0=0xb0;
                      	for(i=0; i<3; ++i)	{
                      		if(!enable[i])
                      			continue;
                      		++count[i];
                      		if(count[i]==30) {
                      			count[i]=0;
                      			++count2[i];
                      			if(count2[i]==20) {
                      				count2[i]=0;
                      				switch(i) {
                      					case 0:
                      						status[0]=0;
                      						enable[0]=0;
                      						led1=0;
                      						break;
                      					case 1:
                      						status[1]=0;
                      						enable[1]=0;
                      						led2=0;
                      						break;
                      					case 2:
                      						status[2]=0;
                      						enable[2]=0;
                      						led3=0;
                      						break;
                      				}
                      			}
                      		}
                      	}
                      }
                      30' đèn tự tắt là code nào vậy anh?

                      Comment


                      • #12
                        Chuẩn rồi đó có anh kidteam ra tay rồi đó , coi như bài tập đã xong rồi nhé.

                        Comment


                        • #13
                          Nguyên văn bởi thientanvt Xem bài viết
                          Chuẩn rồi đó có anh kidteam ra tay rồi đó , coi như bài tập đã xong rồi nhé.
                          Em đã vẽ mạch lại. Code của anh kidteam chạy không được.

                          Mong các anh xem lại mạch mới của em và code giúp em nha.

                          Em dùng Keil uVision 4.

                          Cho em hỏi thêm về mạch này:
                          Mạch điều khiển đèn NEON - AC 220v - 8 cổng
                          Mô hình nguyên lý như thế nào.
                          Em định dùng mạch thiết kế để điều khiển cùng lúc bảng điện tử và đèn 220V.

                          Mong cách anh giúp đỡ!
                          Attached Files

                          Comment


                          • #14
                            Nguyên văn bởi nhocpro93 Xem bài viết
                            Em đã vẽ mạch lại. Code của anh kidteam chạy không được.

                            Mong các anh xem lại mạch mới của em và code giúp em nha.

                            Em dùng Keil uVision 4.

                            Cho em hỏi thêm về mạch này:
                            Mạch điều khiển đèn NEON - AC 220v - 8 cổng
                            Mô hình nguyên lý như thế nào.
                            Em định dùng mạch thiết kế để điều khiển cùng lúc bảng điện tử và đèn 220V.

                            Mong cách anh giúp đỡ!
                            Bạn đã test thử chưa mà bảo không chạy.
                            Tôi code cho cái mạch cũ điều khiển 3 cái led của bạn, bạn vẽ lại mạch mới điều khiển 8 cái led thì với code cũ nó chỉ điều khiển được 3 cái thôi chứ sao.
                            Chán, Haiz.

                            Comment


                            • #15
                              Tôi đang nghĩ cậu quảng cáo trá hình cho Hải Đăng cũng nên.

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X