⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer_thermometer_12864.c

📁 用单片机实现的温度检测 是整个电路的代码调试
💻 C
📖 第 1 页 / 共 2 页
字号:
void	LCD_Initializate(void)
	{
		Display_LCD_1();			
		Display_LCD_2();				
		Display_LCD_3();								
		Display_LCD_4();			
		Display_LCD_5();				
		Display_LCD_6();
						}
//LCD时间信息初始化
void 	LCD_DateTime_Initializate(void)
	{	
		DateTime_Display(pdt,0,1,0);
		DateTime_Display(pdt,1,1,0);
		DateTime_Display(pdt,2,1,0);
		DateTime_Display(pdt,3,1,0);
		DateTime_Display(pdt,4,1,0);
		DateTime_Display(pdt,5,1,0);
		DateTime_Display(pdt,6,1,0);	//初如化时间信息
		Tmp_Display();
	}

//读键程序

unsigned char GetKey(void)
 {	unsigned int 	i=0;	
	unsigned char 	keybuf=0;
	if(P1!=0xff)
     		{
				keybuf=P1;
				if(keybuf!=0xff)
     				{
						while((P1==keybuf)&&(i<0x6000))	i+=1;			
     					if(i>101)             
        					{ return keybuf;}  
      					else return 0;
					}
				else return	0; 					
      		}		
	else	return 0;				
}


/*unsigned char GetKey(void)
 {	unsigned char i=0;
	unsigned char keybuf=0;
 if(P1!=0x0ff)
     {keybuf=P1;
     while(P1==keybuf)	++i;			
     if(i>=20)             
        return keybuf;   
      else
       return 0;
      }
	else	return 0;
}*/



//时间设置程序
void	DateTime_SetUp(void)
	{	
		unsigned char	i,key,leaptmp,back=0,dtn=0;		//DTTMP number(dtn)为数组元素的序号,
		unsigned int	yeartmp;
		for(i=0;i<7;i++)
		DTTMP[i]=DTBUF[i];	//将DTBUF内的数据调入DTTMP中进行操作
		pdt=DTTMP;			//pointer setup
		dp=0xff;			//关中断中的显示调用,显示的控制权由此函数掌握
		MSFLAG=20;
		while((back==0)&&(MSFLAG!=0))		
			{	
				DateTime_Display(pdt,dtn,secf,0);//void	DateTime_Display(unsigned char *arrayp,unsigned char sn,unsigned char fl,unsigned char k)		
				key=GetKey();
		if(key!=0)
			{	if(key==LEFT)
					{DateTime_Display(pdt,dtn,1,0);
					if(dtn==0)	dtn=6;
					else dtn=dtn-1;MSFLAG=20;}
				else if(key==RIGHT)
					{DateTime_Display(pdt,dtn,1,0);
						if(dtn==6)	dtn=0;
					else dtn=dtn+1;MSFLAG=20;}
				else if(key==UP)
					{if(dtn==0)
						if(DTTMP[dtn]==99)	DTTMP[dtn]=0;
						else	DTTMP[dtn]+=1;	
					else if(dtn==1)
						if(DTTMP[dtn]==12)	DTTMP[dtn]=1;
						else	DTTMP[dtn]+=1;			
					else if(dtn==2)
						{ yeartmp=DTTMP[dtn-2]+2000;
                         if((yeartmp%4==0&&yeartmp%100!=0)||(yeartmp%400==0)) leaptmp=1;
								else leaptmp=0;							
                        if((yeartmp%4==0&&yeartmp%100!=0)||(yeartmp%400==0)) leaptmp=1;
								else leaptmp=0;							
                        if(DTTMP[dtn]==28&&DTTMP[dtn-1]==2&&leaptmp==0)
                              DTTMP[dtn]=1;
                        else if(DTTMP[dtn]==29&&DTTMP[dtn-1]==2&&leaptmp==1)
                             DTTMP[dtn]=1;
                		else if(DTTMP[dtn]==30&&(DTTMP[dtn-1]==4||DTTMP[dtn-1]==6||DTTMP[dtn-1]==9||DTTMP[dtn-1]==11))
                             DTTMP[dtn]=1;
                         else if(DTTMP[dtn]==31)     DTTMP[dtn]=1;
							else	DTTMP[dtn]+=1;
    					}
					else if(dtn==3)
							{if(DTTMP[dtn]==6)
							DTTMP[dtn]=0;
							else	DTTMP[dtn]+=1;							
							}
					else if(dtn==4)
						if(DTTMP[dtn]==23)	DTTMP[dtn]=0;
						else	DTTMP[dtn]+=1;
					else if(dtn==5||dtn==6)
						if(DTTMP[dtn]==59)	DTTMP[dtn]=0;
						else	DTTMP[dtn]+=1;
					MSFLAG=20;					
					}
				else if(key==DOWN)
					{if(dtn==0)
						if(DTTMP[dtn]==0)	DTTMP[dtn]=99;
						else	DTTMP[dtn]-=1;	
					else if(dtn==1)
						if(DTTMP[dtn]==1)	DTTMP[dtn]=12;
						else	DTTMP[dtn]-=1;			
					else if(dtn==2)
						{ yeartmp=DTTMP[dtn-2]+2000;
                         if((yeartmp%4==0&&yeartmp%100!=0)||(yeartmp%400==0)) leaptmp=1;
								else leaptmp=0;
                        if(DTTMP[dtn]==1&&DTTMP[dtn-1]==2&&leaptmp==0)
                              DTTMP[dtn]=28;
                         else if(DTTMP[dtn]==1&&DTTMP[dtn-1]==2&&leaptmp==1)
                             DTTMP[dtn]=29;
                		else if(DTTMP[dtn]==1&&(DTTMP[dtn-1]==4||DTTMP[dtn-1]==6||DTTMP[dtn-1]==9||DTTMP[dtn-1]==11))
                             DTTMP[dtn]=30;
                         else if(DTTMP[dtn]==1)     DTTMP[dtn]=31;
							else	DTTMP[dtn]-=1;
													
						}
					else if(dtn==3)
							{if(DTTMP[dtn]==0)
							DTTMP[dtn]=6;
							else	DTTMP[dtn]-=1;							
							}
					else if(dtn==4)
						if(DTTMP[dtn]==0)	DTTMP[dtn]=23;
						else	DTTMP[dtn]-=1;
					else if(dtn==5||dtn==6)
						if(DTTMP[dtn]==0)	DTTMP[dtn]=59;
						else	DTTMP[dtn]-=1;					
					MSFLAG=20;
					}
				else if(key==ENTER)
					{for(i=0;i<7;i++)
					DTBUF[i]=DTTMP[i];
					back=1;}
				else if(key==CANCEL)
					back=1;					
				}
			}				
		Clean_Lcd();
		LCD_Initializate();LCD_DateTime_Initializate();			
		dp=0;		//开中断显示
		pdt=DTBUF;
	}
////////////////////////////////////
//中断服务程序
void Timer0(void)interrupt 1 using 0
{	unsigned int year,leap;	
	TH0=(65536-TCONST)/256;
	TL0=(65536-TCONST)%256;
	++TCOUNT;
	if(TCOUNT==10)
		{secf=0;
   		Second_Flash(0);}				//秒闪	
   	else if(TCOUNT==20)
    {DTBUF[6]+=1;					//秒单元
	DateTime_Display(pdt,6,1,dp);				//void	DateTime_Display(unsigned char sn,unsigned char fl)
     TCOUNT=0;						//20*50MS计数器
     MSFLAG--;						//秒倒计时
     secf=1;	Second_Flash(1);
	if(DTBUF[6]%10==0){LCD_Initializate();LCD_DateTime_Initializate();}				
	   if(DTBUF[6]==60)
             {DTBUF[5]+=1; DTBUF[6]=0;             
				DateTime_Display(pdt,6,1,dp);	DateTime_Display(pdt,5,1,dp);				
                if(DTBUF[5]==60)
                {DTBUF[4]+=1;DTBUF[5]=0;                 
					DateTime_Display(pdt,5,1,dp);DateTime_Display(pdt,4,1,dp);					
                    if(DTBUF[4]==24)
                       {DTBUF[4]=0;	DTBUF[3]+=1;	DTBUF[2]+=1;							
                        DateTime_Display(pdt,4,1,dp);	DateTime_Display(pdt,3,1,dp);	DateTime_Display(pdt,2,1,dp);						
						if(DTBUF[3]==7)
							DTBUF[3]=0;	DateTime_Display(pdt,3,1,dp);												
                        year=DTBUF[0]+2000;
                        if((year%4==0&&year%100!=0)||(year%400==0)) leap=1;
                        if(DTBUF[2]==29&&DTBUF[1]==2&&leap==0)
                              {DTBUF[2]=1;	DTBUF[1]+=1;  }                 
                         else if(DTBUF[2]==30&&DTBUF[1]==2&&leap==1)
                              {DTBUF[2]=1;	DTBUF[1]+=1;}
                         else if(DTBUF[2]==31&&(DTBUF[1]==4||DTBUF[1]==6||DTBUF[1]==9||DTBUF[1]==11))
                              {DTBUF[2]=1;	DTBUF[1]+=1;}                              
                         else if(DTBUF[2]==32)
                             {DTBUF[2]=1;	DTBUF[1]+=1;} 						 								
                          if(DTBUF[1]==13)
                          { DTBUF[1]=1;	DTBUF[0]+=1;
                            DateTime_Display(pdt,1,1,dp);	DateTime_Display(pdt,0,1,dp);							
                            if(DTBUF[0]==100)
                              {DTBUF[0]=0;	DateTime_Display(pdt,0,1,dp);							
                              }
                           }
                      }
                }
          }
     }
}
///////////////////////////////////////////////////////

void Main()
	{ 	unsigned char a;		
		pdt=DTBUF;		
		IntRst();               //软件复位
        Lcd_On();                //开显示                   
		Clean_Lcd();				//清屏		
		LCD_Initializate();
		LCD_DateTime_Initializate();		
		Lcd_Z(0);				//设置Z地址为0
	    TMOD=0X01;	
		TH0=(65536-TCONST)/256;
		TL0=(65536-TCONST)%256;
		EA=1;
  		ET0=1;	
		TR0=1;
		Tmp_Display();				       
        while(1)
		{	a=GetKey();					
			if(a==SETUP)	DateTime_SetUp();
			else if(a==CLEAR)	//全屏刷新
					{Clean_Lcd();
					LCD_Initializate();
					LCD_DateTime_Initializate();
					Lcd_Z(0);
					}
			
			if(TCOUNT==13)Tmp_Display();	
		} 

		
	}
//Right_Bytes_DaSend( x, y, *loc,bytes)
//Left_Bytes_DaSend( x, y, *loc,bytes)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -