Thông báo

Collapse
No announcement yet.

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

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

  • Đồ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<--

  • #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


    • #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


      • #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


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

          Comment


          • #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


            • #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


              • #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


                • #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


                  • #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


                    • #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


                      • #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


                        • #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


                          • #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


                            • #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...
                              X