Đồng hồ chỉnh được time làm bằng C

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • demon52
    Thành viên tích cực
    • Mar 2009
    • 305

    #1

    Đồng hồ chỉnh được time làm bằng C

    Đây là sơ đồ mạch

    đây là đoạn code mình đã tesk và cảm thấy khá ổn post lên chia sẻ cùng anh em! ai cao thủ thì chém nhẹ thôi em mới học!
    Code:
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //
    // Code C           Clock Digital has Time Changer System (Using 6 SEG With 74LS47)
    // Microcontroller: AT89S52
    // Programmer     : quanghien_bk
    // Club           : TAREG
    // Date: 21/04/2009
    
    //*************************************************************************************************************************************************************************
    //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    
    
    #include<reg51.h>
    sbit start=P3^3;
    sbit tang=P3^2;
    sbit chon=P3^0;
    sbit ok=P3^1;
    sbit giay=P3^4;
    sbit phut=P3^5;
    sbit gio=P3^6;
    
    // delay 1s****************************************************************************************************************************************************************
    void delay(float x)
    {
    	unsigned char i;
    	for (i=0;i<10*x;i++)
    	{	
    		TMOD=0x01;
    		TH0=0x0;
    		TL0=0xCE;
    		TF0=0;
    		TR0=1;
    		while(!TF0);
    		TR0=0;
    	}
    }
    
    
    // Ham chinh******************************************************************************************************************************************************
    //****************************************************************************************************************************************************************
    void main()
    {
    int i,j,k;
    P3=P2=P1=P0=0;
    
    change :		                                // chinh thoi gian 
    while(1)
    {												// an chon de bat dau chinh giay
    	if(chon==1)
    	{
    		giay:									// ham chinh giay
    		giay=1;
    		if(giay==1)
    		{ 
    			while(1)
    			{
    				if(tang==1) 					// an tang de tang so
    				{
    					if(P0==0x59) P0=0x00;
    					if(( P0&0x0F)==0x09)
    					{
    						P0=P0&0xF0;
    						P0=P0+0x10;
    					}
    					else
    					P0++;
    					delay(0.4);
    				}					  
    				if(ok==1)  {delay(1); break;}   // an Ok de thoat khoi while khi ko can chinh giay nua
    				if (start==1) goto start;		// an Start de dong ho bat dau chay
    			} 
    			gio=0; phut=1; goto phut;			// chuyen xang chinh phut
    		}
    	}
    	phut:									    // ham chinh phut
    	if(phut==1)
    	{ 
    		while(1)
    		{
    			if(tang==1) 						// an tang de tang so
    			{
    				if(P1==0x59) P1=0x00;
    				if(( P1&0x0F)==0x09)
    				{
    					P1=P1&0xF0;
    					P1=P1+0x10;
    				}
    				else
    				P1++;	
    				delay(0.4);
    			}
    			if(ok==1){delay(1); break;}			// an Ok de thoat khoi while khi ko can chinh giay nua
    			if(start==1)goto start;				// an Start de dong ho bat dau chay
    		}					  
    		giay=0;gio=1;goto gio;					// chuyen xang chinh gio
    	}
    	gio:										// ham chinh gio
    	if(gio==1)
    	{ 
    		while(1)
    		{
    			if(tang==1) 					   // an tang de tang so
    			{
    				if(P2==0x23) P2=0x00;
    				if(( P2&0x0F)==0x09)
    				{
    					P2=P2&0xF0;
    					P2=P2+0x10;
    				}
    				else
    				P2++;	
    				delay(0.5);
    			}	
    			if(ok==1){delay(1); break;}			// an Ok de thoat khoi while khi ko can chinh gio nua
    			if (start==1)goto start;
    		}	    	                            // an Start de dong ho bat dau chay 
    		phut=0;giay=1;goto giay;			   // chuyen ve chinh giay
    	}
    	if (start==1) goto start;					// an Start de dong ho bat dau chay
    }
    						  	
    // dong ho bat dau chay****************************************************************************************************************************************	 		
    //*************************************************************************************************************************************************************
    
    start:	
    while(1)
    	{
    		for(k=0;k<24;k++)
    		{
    			for(j=0;j<60;j++)
    			{
    				for(i=0;i<60;i++)
    				{
    					if(P0==0x59){P0=0x00; break;}
    					if(( P0&0x0F)==0x09)
    					{
    						P0=P0&0xF0;
    						P0=P0+0x10;
    					}
    					else
    					P0++;	
    					delay(1);	 
    					if(chon==1) goto change ; 	// chuyen ve ham chinh thoi gian
    				}
    			    P0=0;
    				if(P1==0x59) {P1=0x00;break;}
    				if((P1&0x0F)==0x09)
    				{
    					P1=P1&0xF0;
    					P1=P1+0x10;
    				}
    				else
    				P1++;
    			}
    		    P1=0;
    			if(P2==0x24) P2=0x00;
    			if((P2&0x0F)==0x09)
    			{
    				P2=P2&0xF0;
    				P2=P2+0x10;
    			}
    			P2++;
    			if(P2==0x24) P2=0x00;		  	
    		}	 
    	}	 
    }
    
    // Ket thuc chuong trinh **************************************************************************************************************************************************
    // http://tareg.plus.vn/forum
    // angel_of_me2406@yahoo.com
    Web:
    ->Nhận thiết kế, hoàn thiện dự án, sản phẩm điện tử<-
    -->Giải pháp GSM/GPRS/GPS - Công nghệ RFID<--
  • koakoa_238
    Thành viên chính thức
    • Feb 2009
    • 42

    #2
    Mình có 1 góp ý, bạn có thể sử dụng phương pháp quét Led 7 thanh, như vậy, 6 Led 7 thanh của bạn chỉ dùng 4 + 8 = 12 chân VĐK, và 1 con IC (74LS138 chẳng hạn), hoặc 6 + 8 = 12 chân VĐK thôi.
    anhduc

    Comment

    • demon52
      Thành viên tích cực
      • Mar 2009
      • 305

      #3
      uk cảm ơn bạn nhé! mình hiểu rùi. Lúc nào cũng nghĩ dùng ls138 để tiết kiệm chân nhưng thấy vẫn chưa dùng hết nên thui ! hihi rút kinh nghiệm lần sau! mình mới học C với VDK có j xin các bạn chỉ giáo
      Web:
      ->Nhận thiết kế, hoàn thiện dự án, sản phẩm điện tử<-
      -->Giải pháp GSM/GPRS/GPS - Công nghệ RFID<--

      Comment

      • mualac_0784
        Thành viên chính thức
        • Oct 2007
        • 47

        #4
        Theo mình nghĩ bạn nên dùng quét bằng 4094 quét hàng thì tốt nhất còn 74ls145 thì để quét cột sẽ tiết kiêm được chân v đ k hơn.

        Comment

        • nbb3i
          Thành viên tích cực
          • Dec 2007
          • 540

          #5
          hàng cột cái gì thế?
          123...

          Comment

          • demon52
            Thành viên tích cực
            • Mar 2009
            • 305

            #6
            Led 7 đoạn mà cũng có hàng cột ư??? hay bạn định nói led matrix??? nếu led matrix thì dùng Ne555 là hay nhất tuy nhiên mình chưa hiểu hết về nó!
            Web:
            ->Nhận thiết kế, hoàn thiện dự án, sản phẩm điện tử<-
            -->Giải pháp GSM/GPRS/GPS - Công nghệ RFID<--

            Comment

            • nbb3i
              Thành viên tích cực
              • Dec 2007
              • 540

              #7
              Muốn tiết kiệm chân vi xử lý thì tốt nhất là dùng thanh ghi dịch. Với lại cùng 1 mục đích cố gắng hạn chế số lượng IC đi chứ. Như bài của bạn chủ yếu nói về lập trình thì ko có vấn đề gì. Chứ nếu thực tế để điều khiển 6 con LED 7 thanh mà phang luôn 6 con 7447 thì hơi hầm hố
              123...

              Comment

              • demon52
                Thành viên tích cực
                • Mar 2009
                • 305

                #8
                Em hiểu ý ông anh rùi! Dùng con Ne555 điều khiển chân chung còn đầu 7 chân vào của 7SEG thì dùng 1 cổng hoặc cũng 7447 đúng không? em đã nói ở trên là do thấy thừa nhiều chân nên ko ham hố! với lại em gà Ne555 lắm! có j anh share em ít exp nhé!
                Web:
                ->Nhận thiết kế, hoàn thiện dự án, sản phẩm điện tử<-
                -->Giải pháp GSM/GPRS/GPS - Công nghệ RFID<--

                Comment

                • hot86
                  Thành viên mới
                  • Apr 2009
                  • 2

                  #9
                  chao ban demon52,ban co the sen cho minh ban thiet ke = code cua bai tren ko. gui vao mail vmh866@gmail cho minh nhe. THANKS
                  |

                  Comment

                  • zeroFILL
                    Thành viên tích cực
                    • Sep 2007
                    • 157

                    #10
                    Hay đấy, những mạch như đồng hồ này của bạn rất phù hợp với người mới học như tôi. Cảm ơn bạn nhé!

                    Comment

                    • zemen
                      Thành viên tích cực
                      • Nov 2005
                      • 536

                      #11
                      Mình nghi ngờ mạch này chạy đc đó! Vdk là AT89S52 thì 'reset' mức cao trong khi bạn nối R10k lên nguồn. Khi chọn các chân cổng làm ngõ vào (phím nhấn) thì nó bthường đã ở mức cao vậy thì phím nhấn kéo lên nguồn có tác dụng gì?
                      !e

                      Comment

                      • Multi System
                        Thành viên tích cực
                        • Feb 2008
                        • 671

                        #12
                        Mạch này lắp chắc là tối thui rồi.
                        Chân RST sao lại luôn ở mức cao thế kia ?
                        Công nhận mô phỏng chạy hay thật

                        Comment

                        • Zz_Bi_zZ
                          Thành viên tích cực
                          • Nov 2007
                          • 766

                          #13
                          ui , chân VDK dư tè le mà phải dùng IC nữa sao ! 1port làm data , 1 port đk cấp nguồn , chí ít quét cũng đc 8led7 đoạn .

                          Comment

                          • demon52
                            Thành viên tích cực
                            • Mar 2009
                            • 305

                            #14
                            Nguyên văn bởi zemen Xem bài viết
                            Mình nghi ngờ mạch này chạy đc đó! Vdk là AT89S52 thì 'reset' mức cao trong khi bạn nối R10k lên nguồn. Khi chọn các chân cổng làm ngõ vào (phím nhấn) thì nó bthường đã ở mức cao vậy thì phím nhấn kéo lên nguồn có tác dụng gì?
                            Em thấy trong protues thì chân reset để mức cao mới reset được còn thực tế thì ngược lại! cái này cũng chẳng hiểu vì sao!
                            @Bi: còn chuyện dư chân thì em mới học vdk nên cũng chưa biết nhiều lắm! nên gà quá phải dùng vậy cho dễ viết code
                            @Multi: híc! thực tế lắp chắc ko chạy thật! còn thiếu trở cho mấy con led trợ dòng... nhưng lắp mạch thực tế phải khác chứ cái này em chỉ làm mô phỏng thui mà!
                            Mới học còn gà mong các anh chỉ giáo
                            Web:
                            ->Nhận thiết kế, hoàn thiện dự án, sản phẩm điện tử<-
                            -->Giải pháp GSM/GPRS/GPS - Công nghệ RFID<--

                            Comment

                            • demon52
                              Thành viên tích cực
                              • Mar 2009
                              • 305

                              #15
                              Nguyên văn bởi hot86 Xem bài viết
                              chao ban demon52,ban co the sen cho minh ban thiet ke = code cua bai tren ko. gui vao mail vmh866@gmail cho minh nhe. THANKS
                              Mình gửi rùi đó! cái mạch này làm cách đây 1 tháng! lúc đó mới học còn gà lắm nên nếu sai sót j góp ý nhé! thanks
                              Web:
                              ->Nhận thiết kế, hoàn thiện dự án, sản phẩm điện tử<-
                              -->Giải pháp GSM/GPRS/GPS - Công nghệ RFID<--

                              Comment

                              Về tác giả

                              Collapse

                              demon52 handsome, kute, cool, manly....... Tìm hiểu thêm về demon52

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

                              Collapse

                              Đang tải...