Thông báo

Collapse
No announcement yet.

Phương pháp tính toán thời gian quét led7 đoạn

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

  • Phương pháp tính toán thời gian quét led7 đoạn

    Mình đang làm đồ án.
    Đồ án mình là lập trình vxl 2 kênh, kênh 1 làm đặt giờ đến ngược báo thức; kênh 2 là đồng hồ bấm giờ, set 5 giá trị hiện thì ra LCD 16x2.
    Mình đã mô phỏng và code hoàn tất, nhưng khi lắp testboard thì gặp lỗi này (https://www.youtube.com/watch?v=AXaB...ature=youtu.be), led cứ nháy liên tục, mình nghỉ là do hàm quét led của mình có vẫn đề.
    Mong mọi người giúp mình cách tính thời gian quét led đi ạ.
    Có file mô phỏng và code.hex đính kèm.
    Code:
    #include <AT89X52.H>
    #define UP_STOP 		P0_4
    #define DOW_SET 		P0_5
    #define MOD_START		P0_3
    #define RS 				P0_0
    #define RW 			P0_1
    #define E 				P0_2
    #define DATA_LCD 		P2
    #define LOA 			P0_6
    signed int 		GIO,PHUT,GIAY,KHAC;
    unsigned char	BDN,X,Y,BMOD,DAUCHAMS,DAUCHAMM,DAUCHAMH;
    unsigned char 	MADVS,MACHS,MADVM,MACHM,MADVH,MACHH,MADVK,MACHK;
    unsigned char 	MADVS1,MACHS1,MADVM1,MACHM1,MADVH1,MACHH1,MADVK1,MACHK1;
    unsigned int	DEM,DEM1,TAM,TAM1=0;
    const unsigned char MA7D[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
    
    // TIMER NGAT
    void ngat_T0()interrupt 1 using 1
    {	BDN++;	TL0=DEM; TH0= DEM>>8;}
     
    // HAM DELAY
    void delay(unsigned int x)
    {
    	unsigned int y;
    	for(y=0;y<x;y++){}
    }
    								/* XU LY LED 7 DOAN	*/
    
    
    // HIEN THI 7 SEG
    void ht_7seg()
    {	
    
    	{
    	if(P0_7==0)
    	{
    		P3=MADVK;  P1_7=0;	delay(100);	P1_7=1;
    		P3=MACHK;  P1_6=0;	delay(100);	P1_6=1;
    	}
    	P3=MADVS;  P1_5=0;	delay(100);	P1_5=1;
    	P3=MACHS;  P1_4=0;	delay(100);	P1_4=1;
    	P3=MADVM;  P1_3=0;	delay(100);	P1_3=1;
    	P3=MACHM;  P1_2=0;	delay(100);	P1_2=1;
    	P3=MADVH;  P1_1=0;	delay(100);	P1_1=1;
    	P3=MACHH;  P1_0=0;	delay(100);	P1_0=1;
    	}
    }
    
    // GIAI MA 7SEG
    void gm_7seg()
    {
    	if(P0_7==0)
    	{
    		X=KHAC%10;
    		Y=KHAC/10;
    		MADVK=MA7D[X];
    		MACHK=MA7D[Y];
    	}
    	X=GIAY%10;
    	Y=GIAY/10;
    	MADVS=MA7D[X];
    	MACHS=MA7D[Y];
    
    	X=PHUT%10;
    	Y=PHUT/10;
    	MADVM=MA7D[X];
    	MACHM=MA7D[Y];
    
    	X=GIO%10;
    	Y=GIO/10;
    	MADVH=MA7D[X];
    	MACHH=MA7D[Y];
    
    	MADVS=MADVS & DAUCHAMS;
    	MADVM=MADVM & DAUCHAMM;
    	MADVH=MADVH & DAUCHAMH;
    }
     									/* XU LY LCD	*/
    									
    // HAM GHI LCD
    void ghiLCD(bit chonRS,unsigned char DL_LCD)
    {
       	DATA_LCD =DL_LCD;
      	RS=chonRS;
      	RW=0;
      	E=1;
      	E=0;
      	delay(1);
    }		   
    //HAM GHI CHUOI KI TU
    void ghichuoi(char *chuoi)
    {
       while(*chuoi) ghiLCD(1,*chuoi++); 
    }
    //HAM GIAI MA LCD
    void gm_lcd()
    {
    	
    	MADVK=(KHAC%10)+0X30;
    	MACHK=(KHAC/10)+0X30;
    
    	MADVS=(GIAY%10)+0X30;
    	MACHS=(GIAY/10)+0X30;
    	
    	MADVM=(PHUT%10)+0X30;
    	MACHM=(PHUT/10)+0X30;
    	
    	MADVH=(GIO%10)+0X30;
    	MACHH=(GIO/10)+0X30;
    
    	MADVK1=MADVK;
    	MACHK1=MACHK;
    	MADVS1=MADVS;
    	MACHS1=MACHS;
    	MADVM1=MADVM;
    	MACHM1=MACHM;
    	MADVH1=MADVH;
    	MACHH1=MACHH;
    }
    // HAM SETUP LCD
    void setup_lcd()
    {
       	ghiLCD(0,0X38);
       	ghiLCD(0,0X38);
       	ghiLCD(0,0X38);
    
       	ghiLCD(0,0X0C);
       	ghiLCD(0,0X06);
       	ghiLCD(0,0X01);
    }
    
    								/* XU LY KENH 1 HEN GIO DEM NGUOC BAO DONG */
    
    // KIEM TRA MOD
    void kt_mod()
    {
    	if(MOD_START==0)
    	{
    		delay(500);
    		if (MOD_START==0)
    		{
    			BMOD++;
    			if(BMOD==4)	{DAUCHAMS=0XFF;	DAUCHAMM=0XFF;	DAUCHAMH=0XFF;	TR0=1;}
    			if(BMOD==0)	{DAUCHAMS=0XFF;	DAUCHAMM=0XFF;	DAUCHAMH=0XFF;}
    			if(BMOD==1)	{DAUCHAMS=0X7F;	DAUCHAMM=0XFF;	DAUCHAMH=0XFF;}
    			if(BMOD==2)	{DAUCHAMS=0XFF;	DAUCHAMM=0X7F;	DAUCHAMH=0XFF;}
    			if(BMOD==3)	{DAUCHAMS=0XFF;	DAUCHAMM=0XFF;	DAUCHAMH=0X7F;}
    			gm_7seg();
    			do
    			{ht_7seg();}
    			while(MOD_START==0);
    		}
    	}
    }
    // KIEM TRA UP
    void kt_up()
    {
    	if(UP_STOP==0)
    	{
    		delay(500);
    		if(UP_STOP==0)
    		{
    			switch(BMOD)
    			{
    				case 1: GIAY++;	   if(GIAY==60) GIAY=0; break;
    				case 2: PHUT++;	   if(PHUT==60) PHUT=0; break;
    				case 3: GIO++;	   if(GIO==24)  GIO=0; break;
    				default: break;			
    			}
    			do
    			{
    			gm_7seg();
    			ht_7seg();
    			}
    			while(UP_STOP==0);
    		}
    	}
    }
    //KIEM TRA DOWN
    void kt_dow()
    {
    	if(DOW_SET==0)
    	{
    		delay(500);
    		if(DOW_SET==0)
    		{
    			switch(BMOD)
    			{
    				case 1: GIAY--;	   if(GIAY==-1) GIAY=59; break;
    				case 2: PHUT--;	   if(PHUT==-1) PHUT=59; break;
    				case 3: GIO--;	   if(GIO==-1)  GIO=23; break;
    				default: break;
    						
    			}
    			gm_7seg();
    			do
    			{ht_7seg();}
    			while(DOW_SET==0);
    		}
    	}
    }
    //XU LY DEM NGHUOC
    void xldn()
    {
    	GIAY--;
    	if(GIAY==-1)
    	{
    		PHUT--;
    		GIAY=59;
    		if(PHUT==-1)
    		{
    			GIO--;
    			PHUT=59;
    			if(GIO==-1)
    			{
    				GIO=0;PHUT=0;GIAY=0;
    			}
    		}
    	}		
    }
    									/* XU LY KENH 2 BAM GIO */
    
    // HAM BAM GIO
    void bg()
    {
    	KHAC++;
    	if(KHAC==100)
    	{
    		KHAC=0;
    		GIAY++;
    		if(GIAY==60)
    		{
    			GIAY=0;
    			PHUT++;
    			if(PHUT==60)
    			{
    				PHUT=0;
    				GIO++;
    				if(GIO==24)
    				{
    					GIO=0;
    				}
    			}
    		}
    	}
    }
    // KIEM TRA START
    void kt_start()
    {
    	if(MOD_START==0)
       	{
    		delay(500);
    		if(MOD_START==0)
    		{	
    	 		TR0=1;
    	 		while(MOD_START==0);
    		}
      	}
    }
    // KIEM TRA STOP
    void kt_stop()
    {
    	if(UP_STOP==0)
       	{
    		delay(500);
    		if(UP_STOP==0)
    		{	
    			TR0=0;
    		 	while(UP_STOP==0);
    		}
       	}	
    }
    // KIEM TRA SET(SAVE)
    void kt_set()
    {
    	if(DOW_SET==0)
       	{
    		delay(500);
    		if(DOW_SET==0)
    		{	
    			 if((TR0==1) && (DEM1<=5))  
    			 {	
    			 	TAM1=1;
    				ghiLCD(0,0X80);
    				if(DEM1>0 )
    				{
    					ghiLCD(1,(DEM1)+0X30);
    					ghichuoi(".");
    					ghiLCD(1,MACHH1);
    					ghiLCD(1,MADVH1);
    					ghichuoi("-");
    					ghiLCD(1,MACHM1);
    					ghiLCD(1,MADVM1);						 
    					ghichuoi("-");
    					ghiLCD(1,MACHS1);
    					ghiLCD(1,MADVS1);
    					ghichuoi("-");
    					ghiLCD(1,MACHK1);
    					ghiLCD(1,MADVK1);
    					ghiLCD(0,0XC0);
    				}
    					gm_lcd(); 
    					ghiLCD(1,(DEM1+1)+0X30);
    					ghichuoi(".");
    					ghiLCD(1,MACHH);
    					ghiLCD(1,MADVH);
    					ghichuoi("-");
    					ghiLCD(1,MACHM);
    					ghiLCD(1,MADVM);						 
    					ghichuoi("-");
    					ghiLCD(1,MACHS);
    					ghiLCD(1,MADVS);
    					ghichuoi("-");
    					ghiLCD(1,MACHK);
    					ghiLCD(1,MADVK);
    					DEM1++;
    					if(DEM1==6)
    					{
    					ghiLCD(0,0xC0);
    					ghichuoi("GIOI HAN LUU  ? ");
    					}
    				}			  
    		  	while(DOW_SET==0) 
    			{
    				bg();
    				gm_7seg();
    				ht_7seg();
    			}
    		}
    	}
    }
    											/* LOA BAO DONG */
    void keu()
    {
    	int i;
    	for(i=0;i<500;i++)
    	{
    		LOA=1; delay(30);
    		LOA=0; delay(70);
    		
    	}
    	delay(50000);	
    }	
    											/* AUTO HELP */
    
    void help()
    {
    	if(P0_7==1)		// HELP KENH 1
    	{
    		if(BMOD==0)
    		{
    			ghiLCD(0,0X80);
    			ghichuoi("HEN GIO");
    			ghiLCD(0,0XC0);
    			ghichuoi("AN MOD DAT GIAY");
    		}
    		if(BMOD==1)
    		{
    			ghiLCD(0,0X80);
    			ghichuoi("DAT GIAY. . .");
    			ghiLCD(0,0XC0);
    			ghichuoi("AN MOD DAT PHUT");
    		}
    		if(BMOD==2)
    		{
    			ghiLCD(0,0X80);
    			ghichuoi("DAT PHUT. . .");
    			ghiLCD(0,0XC0);
    			ghichuoi("AN MOD DAT GIO ");
    		}
    		if(BMOD==3)
    		{
    			ghiLCD(0,0X80);
    			ghichuoi("DAT GIO. . .");
    			ghiLCD(0,0XC0);
    			ghichuoi("AN MOD START   ");
    		}
    		if(BMOD==4)
    		{
    			ghiLCD(0,0X80) ;
    			ghichuoi("DANG CHAY . . .");
    			ghiLCD(0,0XC0);
    			ghichuoi("  (*_*)/(-.-)/  ");
    		}		
    	}
    	else if(P0_7==0)		  // HELP KENH 2
    	{
    		if(TAM1==0)
    		{
    			if(TR0==0)
    			{
    				ghiLCD(0,0X80);
    				ghichuoi("BAM GIO");
    				ghiLCD(0,0XC0);
    				ghichuoi("START DE BAT DAU");
    			}
    			if(TR0==1)
    			{
    				ghiLCD(0,0X80);
    				ghichuoi("DANG CHAY...    ");
    				ghiLCD(0,0XC0);
    				ghichuoi("SAVE DE LUU.....");
    			}
    		}
    	}
    }
    											/* CHUONG TRINH CHINH */
    
    void main()
    {	
    	 if(P0_7==1)
    	 {
    		TMOD=0X01;	TR0=0;	EA=1;	ET0=1;
    		DEM=15536;		TL0=DEM;	TH0=DEM>>8;
    		BDN=0;	BMOD=0;	TAM=0;
    		DAUCHAMS=0XFF;	DAUCHAMM=0XFF;	DAUCHAMH=0XFF; GIAY=0;PHUT=0;GIO=0;
    		setup_lcd();
    		while(1)
    		{
    			kt_mod();
    			help();
    			kt_up();
    			kt_dow();
    			gm_7seg();
    			ht_7seg();
    				
    			while(BMOD>3)
    			{
    				DAUCHAMS=DAUCHAMM=DAUCHAMH=0X7F;
    				gm_7seg();
    				if(BDN<20)
    				{
    					ht_7seg();
    				}
    				else
    				{
    					BDN=BDN-20;
    					xldn();
    					while((GIO+PHUT+GIAY)==0)
    					keu();
    				}
    			}
    		}
    	}
    	else if(P0_7==0)
    	{
    		DEM=65536-500;
    		TMOD=0X01;   TL0=DEM;	TH0=DEM>>8;
    	  	EA=1; ET0=1;
    	   	BDN=0; GIO=PHUT=GIAY=KHAC=0;
    		DAUCHAMS=0XFF;	DAUCHAMM=0XFF;	DAUCHAMH=0XFF;
    		setup_lcd();
    		while(1)
    		{
    			 kt_start();
    			 help();
    			 kt_stop();
    			 kt_set();
    			 DAUCHAMS=DAUCHAMM=DAUCHAMH=0X7F;
    			 gm_7seg();
    			 ht_7seg();
    			 if(BDN<20)
    			 {
    			 	kt_start();
    				kt_stop();
    				kt_set();
    				gm_7seg();
    				ht_7seg();
    			 }
    			 else
    			 {
    			 	BDN=BDN-20;
    				bg();	
    			 }
    		}	
    	}
    }
    Attached Files

  • #2
    Nguyên văn bởi phaminhtrong Xem bài viết
    Mình đang làm đồ án.
    Đồ án mình là lập trình vxl 2 kênh, kênh 1 làm đặt giờ đến ngược báo thức; kênh 2 là đồng hồ bấm giờ, set 5 giá trị hiện thì ra LCD 16x2.
    Mình đã mô phỏng và code hoàn tất, nhưng khi lắp testboard thì gặp lỗi này (https://www.youtube.com/watch?v=AXaB...ature=youtu.be), led cứ nháy liên tục, mình nghỉ là do hàm quét led của mình có vẫn đề.
    Mong mọi người giúp mình cách tính thời gian quét led đi ạ.
    Có file mô phỏng và code.hex đính kèm.
    Code:
    #include <AT89X52.H>
    #define UP_STOP 		P0_4
    #define DOW_SET 		P0_5
    #define MOD_START		P0_3
    #define RS 				P0_0
    #define RW 			P0_1
    #define E 				P0_2
    #define DATA_LCD 		P2
    #define LOA 			P0_6
    signed int 		GIO,PHUT,GIAY,KHAC;
    unsigned char	BDN,X,Y,BMOD,DAUCHAMS,DAUCHAMM,DAUCHAMH;
    unsigned char 	MADVS,MACHS,MADVM,MACHM,MADVH,MACHH,MADVK,MACHK;
    unsigned char 	MADVS1,MACHS1,MADVM1,MACHM1,MADVH1,MACHH1,MADVK1,MACHK1;
    unsigned int	DEM,DEM1,TAM,TAM1=0;
    const unsigned char MA7D[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
    
    // TIMER NGAT
    void ngat_T0()interrupt 1 using 1
    {	BDN++;	TL0=DEM; TH0= DEM>>8;}
     
    // HAM DELAY
    void delay(unsigned int x)
    {
    	unsigned int y;
    	for(y=0;y<x;y++){}
    }
    								/* XU LY LED 7 DOAN	*/
    
    
    // HIEN THI 7 SEG
    void ht_7seg()
    {	
    
    	{
    	if(P0_7==0)
    	{
    		P3=MADVK;  P1_7=0;	delay(100);	P1_7=1;
    		P3=MACHK;  P1_6=0;	delay(100);	P1_6=1;
    	}
    	P3=MADVS;  P1_5=0;	delay(100);	P1_5=1;
    	P3=MACHS;  P1_4=0;	delay(100);	P1_4=1;
    	P3=MADVM;  P1_3=0;	delay(100);	P1_3=1;
    	P3=MACHM;  P1_2=0;	delay(100);	P1_2=1;
    	P3=MADVH;  P1_1=0;	delay(100);	P1_1=1;
    	P3=MACHH;  P1_0=0;	delay(100);	P1_0=1;
    	}
    }
    
    // GIAI MA 7SEG
    void gm_7seg()
    {
    	if(P0_7==0)
    	{
    		X=KHAC%10;
    		Y=KHAC/10;
    		MADVK=MA7D[X];
    		MACHK=MA7D[Y];
    	}
    	X=GIAY%10;
    	Y=GIAY/10;
    	MADVS=MA7D[X];
    	MACHS=MA7D[Y];
    
    	X=PHUT%10;
    	Y=PHUT/10;
    	MADVM=MA7D[X];
    	MACHM=MA7D[Y];
    
    	X=GIO%10;
    	Y=GIO/10;
    	MADVH=MA7D[X];
    	MACHH=MA7D[Y];
    
    	MADVS=MADVS & DAUCHAMS;
    	MADVM=MADVM & DAUCHAMM;
    	MADVH=MADVH & DAUCHAMH;
    }
     									/* XU LY LCD	*/
    									
    // HAM GHI LCD
    void ghiLCD(bit chonRS,unsigned char DL_LCD)
    {
       	DATA_LCD =DL_LCD;
      	RS=chonRS;
      	RW=0;
      	E=1;
      	E=0;
      	delay(1);
    }		   
    //HAM GHI CHUOI KI TU
    void ghichuoi(char *chuoi)
    {
       while(*chuoi) ghiLCD(1,*chuoi++); 
    }
    //HAM GIAI MA LCD
    void gm_lcd()
    {
    	
    	MADVK=(KHAC%10)+0X30;
    	MACHK=(KHAC/10)+0X30;
    
    	MADVS=(GIAY%10)+0X30;
    	MACHS=(GIAY/10)+0X30;
    	
    	MADVM=(PHUT%10)+0X30;
    	MACHM=(PHUT/10)+0X30;
    	
    	MADVH=(GIO%10)+0X30;
    	MACHH=(GIO/10)+0X30;
    
    	MADVK1=MADVK;
    	MACHK1=MACHK;
    	MADVS1=MADVS;
    	MACHS1=MACHS;
    	MADVM1=MADVM;
    	MACHM1=MACHM;
    	MADVH1=MADVH;
    	MACHH1=MACHH;
    }
    // HAM SETUP LCD
    void setup_lcd()
    {
       	ghiLCD(0,0X38);
       	ghiLCD(0,0X38);
       	ghiLCD(0,0X38);
    
       	ghiLCD(0,0X0C);
       	ghiLCD(0,0X06);
       	ghiLCD(0,0X01);
    }
    
    								/* XU LY KENH 1 HEN GIO DEM NGUOC BAO DONG */
    
    // KIEM TRA MOD
    void kt_mod()
    {
    	if(MOD_START==0)
    	{
    		delay(500);
    		if (MOD_START==0)
    		{
    			BMOD++;
    			if(BMOD==4)	{DAUCHAMS=0XFF;	DAUCHAMM=0XFF;	DAUCHAMH=0XFF;	TR0=1;}
    			if(BMOD==0)	{DAUCHAMS=0XFF;	DAUCHAMM=0XFF;	DAUCHAMH=0XFF;}
    			if(BMOD==1)	{DAUCHAMS=0X7F;	DAUCHAMM=0XFF;	DAUCHAMH=0XFF;}
    			if(BMOD==2)	{DAUCHAMS=0XFF;	DAUCHAMM=0X7F;	DAUCHAMH=0XFF;}
    			if(BMOD==3)	{DAUCHAMS=0XFF;	DAUCHAMM=0XFF;	DAUCHAMH=0X7F;}
    			gm_7seg();
    			do
    			{ht_7seg();}
    			while(MOD_START==0);
    		}
    	}
    }
    // KIEM TRA UP
    void kt_up()
    {
    	if(UP_STOP==0)
    	{
    		delay(500);
    		if(UP_STOP==0)
    		{
    			switch(BMOD)
    			{
    				case 1: GIAY++;	   if(GIAY==60) GIAY=0; break;
    				case 2: PHUT++;	   if(PHUT==60) PHUT=0; break;
    				case 3: GIO++;	   if(GIO==24)  GIO=0; break;
    				default: break;			
    			}
    			do
    			{
    			gm_7seg();
    			ht_7seg();
    			}
    			while(UP_STOP==0);
    		}
    	}
    }
    //KIEM TRA DOWN
    void kt_dow()
    {
    	if(DOW_SET==0)
    	{
    		delay(500);
    		if(DOW_SET==0)
    		{
    			switch(BMOD)
    			{
    				case 1: GIAY--;	   if(GIAY==-1) GIAY=59; break;
    				case 2: PHUT--;	   if(PHUT==-1) PHUT=59; break;
    				case 3: GIO--;	   if(GIO==-1)  GIO=23; break;
    				default: break;
    						
    			}
    			gm_7seg();
    			do
    			{ht_7seg();}
    			while(DOW_SET==0);
    		}
    	}
    }
    //XU LY DEM NGHUOC
    void xldn()
    {
    	GIAY--;
    	if(GIAY==-1)
    	{
    		PHUT--;
    		GIAY=59;
    		if(PHUT==-1)
    		{
    			GIO--;
    			PHUT=59;
    			if(GIO==-1)
    			{
    				GIO=0;PHUT=0;GIAY=0;
    			}
    		}
    	}		
    }
    									/* XU LY KENH 2 BAM GIO */
    
    // HAM BAM GIO
    void bg()
    {
    	KHAC++;
    	if(KHAC==100)
    	{
    		KHAC=0;
    		GIAY++;
    		if(GIAY==60)
    		{
    			GIAY=0;
    			PHUT++;
    			if(PHUT==60)
    			{
    				PHUT=0;
    				GIO++;
    				if(GIO==24)
    				{
    					GIO=0;
    				}
    			}
    		}
    	}
    }
    // KIEM TRA START
    void kt_start()
    {
    	if(MOD_START==0)
       	{
    		delay(500);
    		if(MOD_START==0)
    		{	
    	 		TR0=1;
    	 		while(MOD_START==0);
    		}
      	}
    }
    // KIEM TRA STOP
    void kt_stop()
    {
    	if(UP_STOP==0)
       	{
    		delay(500);
    		if(UP_STOP==0)
    		{	
    			TR0=0;
    		 	while(UP_STOP==0);
    		}
       	}	
    }
    // KIEM TRA SET(SAVE)
    void kt_set()
    {
    	if(DOW_SET==0)
       	{
    		delay(500);
    		if(DOW_SET==0)
    		{	
    			 if((TR0==1) && (DEM1<=5))  
    			 {	
    			 	TAM1=1;
    				ghiLCD(0,0X80);
    				if(DEM1>0 )
    				{
    					ghiLCD(1,(DEM1)+0X30);
    					ghichuoi(".");
    					ghiLCD(1,MACHH1);
    					ghiLCD(1,MADVH1);
    					ghichuoi("-");
    					ghiLCD(1,MACHM1);
    					ghiLCD(1,MADVM1);						 
    					ghichuoi("-");
    					ghiLCD(1,MACHS1);
    					ghiLCD(1,MADVS1);
    					ghichuoi("-");
    					ghiLCD(1,MACHK1);
    					ghiLCD(1,MADVK1);
    					ghiLCD(0,0XC0);
    				}
    					gm_lcd(); 
    					ghiLCD(1,(DEM1+1)+0X30);
    					ghichuoi(".");
    					ghiLCD(1,MACHH);
    					ghiLCD(1,MADVH);
    					ghichuoi("-");
    					ghiLCD(1,MACHM);
    					ghiLCD(1,MADVM);						 
    					ghichuoi("-");
    					ghiLCD(1,MACHS);
    					ghiLCD(1,MADVS);
    					ghichuoi("-");
    					ghiLCD(1,MACHK);
    					ghiLCD(1,MADVK);
    					DEM1++;
    					if(DEM1==6)
    					{
    					ghiLCD(0,0xC0);
    					ghichuoi("GIOI HAN LUU  ? ");
    					}
    				}			  
    		  	while(DOW_SET==0) 
    			{
    				bg();
    				gm_7seg();
    				ht_7seg();
    			}
    		}
    	}
    }
    											/* LOA BAO DONG */
    void keu()
    {
    	int i;
    	for(i=0;i<500;i++)
    	{
    		LOA=1; delay(30);
    		LOA=0; delay(70);
    		
    	}
    	delay(50000);	
    }	
    											/* AUTO HELP */
    
    void help()
    {
    	if(P0_7==1)		// HELP KENH 1
    	{
    		if(BMOD==0)
    		{
    			ghiLCD(0,0X80);
    			ghichuoi("HEN GIO");
    			ghiLCD(0,0XC0);
    			ghichuoi("AN MOD DAT GIAY");
    		}
    		if(BMOD==1)
    		{
    			ghiLCD(0,0X80);
    			ghichuoi("DAT GIAY. . .");
    			ghiLCD(0,0XC0);
    			ghichuoi("AN MOD DAT PHUT");
    		}
    		if(BMOD==2)
    		{
    			ghiLCD(0,0X80);
    			ghichuoi("DAT PHUT. . .");
    			ghiLCD(0,0XC0);
    			ghichuoi("AN MOD DAT GIO ");
    		}
    		if(BMOD==3)
    		{
    			ghiLCD(0,0X80);
    			ghichuoi("DAT GIO. . .");
    			ghiLCD(0,0XC0);
    			ghichuoi("AN MOD START   ");
    		}
    		if(BMOD==4)
    		{
    			ghiLCD(0,0X80) ;
    			ghichuoi("DANG CHAY . . .");
    			ghiLCD(0,0XC0);
    			ghichuoi("  (*_*)/(-.-)/  ");
    		}		
    	}
    	else if(P0_7==0)		  // HELP KENH 2
    	{
    		if(TAM1==0)
    		{
    			if(TR0==0)
    			{
    				ghiLCD(0,0X80);
    				ghichuoi("BAM GIO");
    				ghiLCD(0,0XC0);
    				ghichuoi("START DE BAT DAU");
    			}
    			if(TR0==1)
    			{
    				ghiLCD(0,0X80);
    				ghichuoi("DANG CHAY...    ");
    				ghiLCD(0,0XC0);
    				ghichuoi("SAVE DE LUU.....");
    			}
    		}
    	}
    }
    											/* CHUONG TRINH CHINH */
    
    void main()
    {	
    	 if(P0_7==1)
    	 {
    		TMOD=0X01;	TR0=0;	EA=1;	ET0=1;
    		DEM=15536;		TL0=DEM;	TH0=DEM>>8;
    		BDN=0;	BMOD=0;	TAM=0;
    		DAUCHAMS=0XFF;	DAUCHAMM=0XFF;	DAUCHAMH=0XFF; GIAY=0;PHUT=0;GIO=0;
    		setup_lcd();
    		while(1)
    		{
    			kt_mod();
    			help();
    			kt_up();
    			kt_dow();
    			gm_7seg();
    			ht_7seg();
    				
    			while(BMOD>3)
    			{
    				DAUCHAMS=DAUCHAMM=DAUCHAMH=0X7F;
    				gm_7seg();
    				if(BDN<20)
    				{
    					ht_7seg();
    				}
    				else
    				{
    					BDN=BDN-20;
    					xldn();
    					while((GIO+PHUT+GIAY)==0)
    					keu();
    				}
    			}
    		}
    	}
    	else if(P0_7==0)
    	{
    		DEM=65536-500;
    		TMOD=0X01;   TL0=DEM;	TH0=DEM>>8;
    	  	EA=1; ET0=1;
    	   	BDN=0; GIO=PHUT=GIAY=KHAC=0;
    		DAUCHAMS=0XFF;	DAUCHAMM=0XFF;	DAUCHAMH=0XFF;
    		setup_lcd();
    		while(1)
    		{
    			 kt_start();
    			 help();
    			 kt_stop();
    			 kt_set();
    			 DAUCHAMS=DAUCHAMM=DAUCHAMH=0X7F;
    			 gm_7seg();
    			 ht_7seg();
    			 if(BDN<20)
    			 {
    			 	kt_start();
    				kt_stop();
    				kt_set();
    				gm_7seg();
    				ht_7seg();
    			 }
    			 else
    			 {
    			 	BDN=BDN-20;
    				bg();	
    			 }
    		}	
    	}
    }
    mình có 1 số ý kiến đóng góp như sau: muốn mắt không thấy led bị nháy thì led chớp phải có tần số nhất định, lấy theo điện lưới thì f=50Hz cho dể. f=50Hz => T=0.02s =20ms. vậy là thời gian để tất cả các led sáng là 20ms. bạn xài 8 led thì thời gian từng led sáng là 20/8=2.5ms. mình nhớ là vậy. còn code thì thui, mấy cái code đồ án của mình đủ hại não rồi, không dám can thiệp nửa đâu, nhờ các cao thủ
    hoangduc2304

    01884653780

    Comment

    Về tác giả

    Collapse

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

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

    Collapse

    Đang tải...
    X