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

                              • mèomướp
                                Trả lời cho Công thức điện tử
                                bởi mèomướp
                                Dạ thời thế giờ thay đổi theo hướng tích cực hơn rồi chú trung sĩ ạ. Kiến thức được chia sẻ ngày càng nhìu nên làm ăn gian dối ko còn dễ dàng như trước đâu ạ. Những thợ nhỏ rồi sẽ thành công nhân sản xuất đồ mới hết thay vì sửa chữa lặt vặt...
                                Hôm qua, 21:21
                              • mèomướp
                                Trả lời cho Xin hỏi về màn hình laptop
                                bởi mèomướp
                                Dạ cùng chuẩn tín hiệu thì chắc chắn là nhận ạ. Vì bản chất oled hay lcd thì đều phải có mạch chuyển đổi trên thanh gỗ rồi chuyển sang những chip xử lý hàng nghìn chân gắn trên những tab mỏng dính rồi mới ra các điểm ảnh theo hàng...
                                Hôm qua, 20:31
                              • yname11
                                Trả lời cho Xin hỏi về màn hình laptop
                                bởi yname11
                                Ok , thanks bác đã chỉ...
                                Hôm qua, 15:06
                              • nguyendinhvan
                                Công thức điện tử
                                bởi nguyendinhvan
                                Sau bao năm nghiên cứu cái dtvn. Tôi phát hiện công thức này. Các anh em xem đúng bao nhiêu phần trăm nhé !

                                Chập thì thay. Cháy thì tháo
                                Làm thì láo. Báo thì hay
                                May thì khoe. Rủi thì bỏ
                                Thành tích nhỏ. Báo thành to
                                Làm cho có. Báo chi li
                                Sai cả li. Báo
                                ...
                                Hôm qua, 00:35
                              • yname11
                                Trả lời cho Xin hỏi về màn hình laptop
                                bởi yname11
                                có chắc ko b, màn lcd phải có cao áp mới sáng, màn led thì ko có, ko có cáp chuyển đổi thì lắp thế nào đc ??...
                                25-11-2024, 22:31
                              • mèomướp
                                Trả lời cho Xin hỏi về màn hình laptop
                                bởi mèomướp
                                Dạ ý chú là màn oled ấy ạ. Cùng chuẩn lvds cùng độ phân giải thì cắm được ạ. Còn nó mà khác thì hơi khó vì oled các điểm ảnh nó tự phát sáng chứ ko dùng đèn nền như lcd. Cháu chỉ biết đến vậy thôi ạ. Chú muốn nghịch phải tự tìm hiểu kỹ trước khi mua thôi, khó mà ông thợ nào tư vấn vụ này...
                                25-11-2024, 22:14
                              • bactho
                                Trả lời cho Tự làm máy đo Cuộn cảm
                                bởi bactho
                                Hay đấy bạn ạ. Đây có thể hiểu là máy đo cuộn dây. Tiện đây xin cho hỏi bạn có hiểu rõ về máy nạp rôm pcb 45 của hãng thiên minh không giúp mình cách cài fw của nó với vì mình vừa được anh bạn cho nhưng lại không biết cài fw nên chưa dùng được. Nếu có thể thì bạn giúp mình với...
                                25-11-2024, 21:48
                              • yname11
                                Trả lời cho Xin hỏi về màn hình laptop
                                bởi yname11
                                màn của mình là LCD , giờ m muốn mua màn LED để thay thế (ko muốn dùng màn LCD nữa) , lên muốn hỏi xem có cáp chuyển đổi nào có thể cắm đc màn LED vào ko , tất nhiên phải có cùng số chân pin với màn cũ rồi . VD: màn cũ là lcd mỏng , 40 pin...
                                25-11-2024, 21:43
                              • bactho
                                Trả lời cho các bạn giúp mình về file HEX với!!!
                                bởi bactho
                                Bạn vào trang phuclanshop.com ,tìm đến góc kỹ thuật. Tác giả vương khánh hưng nói rất rõ về điều bạn tìm...
                                25-11-2024, 21:21
                              • mèomướp
                                Trả lời cho Xin hỏi về màn hình laptop
                                bởi mèomướp
                                Dạ màn hình lcd đều có thể lai cấy cho nhau được hết ạ. Các loại cáp, bo mạch chuyển đổi lvds rất nhìu, với dòng sony còn phải nhổ cả chip nhớ của main cũ đưa lên gỗ thì mới lắp sang máy khác đc, chưa kể các bệnh về màu... ngay cả...
                                25-11-2024, 20:43
                              Đang tải...
                              X