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

📄 toucher.c

📁 基于PIC单片机
💻 C
📖 第 1 页 / 共 5 页
字号:
	    } 
	    zhuanhuan7(0x00,0x23);      //换到下一行  
    }
    NOP();
}
/*******************故障显示******************/
void fault(void)
{
    uchar kkk=0;
  	uchar temp1=0;
  	uchar temp2=0;
  	uchar temp3=0;
  	uchar temp4=0;
  	uchar fault_buff[11];
  	uchar tt=0;
   
    xh=0xe0;
   	xl=0x08;
   	yh=0x90;
  	yl=0x59;
  
  	if(guzhangaddr>0x6800)  //防止第一次出错
        guzhangaddr=guzhangaddr-8 ;
    wdr();
    for(kkk=0;kkk<8;kkk++)
  	{
        fdbs(0x14);
      	if((kkk==1)||(kkk==3)||(kkk==5)||(kkk==7))
	  	{
		 	xh=0xc0;             //换行颜色为红色
     	    xl=0x08;
	        yh=yh|0x20;                 //将字体背景设为青色
	    }
	  	else if((kkk==0)||(kkk==2)||(kkk==4)||(kkk==6))
	  	{
		    xh=0xe0;             //换行颜色为黄色
     	    xl=0x08;
	        yh=yh&0x9f;                 //将字体背景设为蓝色
	    }
	  	else
	    ;
	 	fault_buff[1]= (uchar)(((guzhangaddr&0xff00)>>8)) ; //FM24C256片内地址高位字节 
	 	fault_buff[2]= (uchar)(guzhangaddr&0x00ff) ;      //FM24C256片内地址低位字节	
		EIMSK&=~(1<<INT6);
		//do
	 	fhz=I2cRead(SLA2_W,SLA2_R, fault_buff[1],fault_buff[2],8);
		//while(fhz==1);
		
	 	for(tt=0;tt<8;tt++)
	        guzhang[tt]=i2c_rd_buff[tt] ;   //
		EIMSK|=(1<<INT6);	
	    if(guzhangaddr==0x6800)     //到头
	        guzhangaddr=0x7bf8 ;  //调整  
	    else
	        guzhangaddr=guzhangaddr-8 ;  //调整    
       
        if(guzhang[0]==0xff)          //如果读出的数为0xff,无操作
	 	{
	        switch(kkk)
		 	{
	            case 0:  juxing(0x90,0x00,0x04,0x50,0x01,0xa8,0x00,0x72);  break; //第一行位空
            	case 1:  juxing(0xb0,0x00,0x04,0x73,0x01,0xa8,0x00,0x95);  break; //第二行为空
            	case 2:  juxing(0x90,0x00,0x04,0x96,0x01,0xa8,0x00,0xb8);  break; //第三行为空
            	case 3:  juxing(0xb0,0x00,0x04,0xb9,0x01,0xa8,0x00,0xdb);  break; //第四行为空
            	case 4:  juxing(0x90,0x00,0x04,0xdc,0x01,0xa8,0x00,0xfe);  break; //第五行为空
            	case 5:  juxing(0xb0,0x00,0x04,0xff,0x01,0xa8,0x01,0x21);  break; //第六行为空
            	case 6:  juxing(0x90,0x00,0x05,0x22,0x01,0xa8,0x01,0x44);  break; //第七行为空
            	case 7:  juxing(0xb0,0x00,0x05,0x45,0x01,0xa8,0x01,0x67);  break; //第八行为空
				default :   break;
		    }
	    }
  
      	else
	  	{
            temp1=guzhang[0]/10+0x30;       //转换器编号高位
	     	temp2=guzhang[0]%10+0x30;       //转换器编号低位
	     	temp3=guzhang[1]/10+0x30;       //探测器编号高位
	     	temp4=guzhang[1]%10+0x30;       //探测器编号低位
	     	fdbs(0x14);
	     	xtzb(xh,xl,yh,yl); 
	     	xszf(0x31,temp1);        //显示转换器编号高位
	     	xszf(0x31,temp2);        //显示转换器编号低位
	     	zhuanhuan7(0x50,0x00);   //横坐标增加0x50,纵坐标不变
	     	xtzb(xh,xl,yh,yl);
	     	xszf(0x31,temp3);        //显示探测器编号高位
	     	xszf(0x31,temp4);        //显示探测器编号低位
	     	zhuanhuan7(0x50,0x00);   //横坐标增加0x50,纵坐标不变
			xtzb(xh,xl,yh,yl);
		 	xszf(0x31,0x32);  //2
         	xszf(0x31,0x30);  //0
	     	clock_deal(guzhang[2]); //年
	     	xszf(0x31,0x2f);  //"/"
	     	clock_deal(guzhang[3]); //月
	     	xszf(0x31,0x2f);  //"/"
	     	clock_deal(guzhang[4]); //日
	     	kong(0x31,0x01);
	     	clock_deal(guzhang[5]); //时
	     	xszf(0x31,0x3a);  //":"
	     	clock_deal(guzhang[6]); //分
	     	zhuanhuan7(0x90,0x00);   //横坐标增加0x90,纵坐标不变
		 	xtzb(xh,xl,yh,yl);
		 	fdbs(0x04);
	     	switch(guzhang[7])
	     	{
	            case 1:
		    	{
		            xszf(0x34,0xe4);  //市
		       		xszf(0x34,0x38);  //电
		       		xszf(0x34,0x3b);  //故 
		       		xszf(0x34,0x3c);  //障
					kong(0x33,0x02);
		        }
				break;
		    	case 2:
		    	{
		            xszf(0x34,0x5d);  //备
		       		xszf(0x34,0x38);  //电
		       		xszf(0x34,0x3b);  //故 
		       		xszf(0x34,0x3c);  //障
					kong(0x33,0x02);
		        }
				break;
	        	case 3:
		    	{
		            xszf(0x34,0xe5);  //充
		       		xszf(0x34,0x38);  //电
		       		xszf(0x34,0x3b);  //故 
		       		xszf(0x34,0x3c);  //障
					kong(0x33,0x02);
		    	}
				break;
		    	case 4:
		    	{
		            xszf(0x34,0x4e);  //通
		       		xszf(0x34,0x4f);  //讯
		       		xszf(0x34,0x3b);  //故 
		       		xszf(0x34,0x3c);  //障
					kong(0x33,0x02);
		        }
				break;
		    	case 5:
		    	{
		            xszf(0x34,0x50);  //传
		       		xszf(0x34,0x51);  //感
		       		xszf(0x34,0x52);  //器
		       		xszf(0x34,0x3b);  //故 
		       		xszf(0x34,0x3c);  //障
					kong(0x33,0x01);
		        }
				break;
		    	case 6:
		    	{
		            xszf(0x34,0x87);  //联
		       		xszf(0x34,0x88);  //动
		       		xszf(0x34,0x76);  //设
		       		xszf(0x34,0x77);  //备
		       		xszf(0x34,0x3b);  //故 
		       		xszf(0x34,0x3c);  //障
		    	}
				break;
				case 7:
				{
				    xszf(0x34,0xd6);  //转
  	                xszf(0x34,0xd7);  //换
  	                xszf(0x34,0xd8);  //器
		       		xszf(0x34,0x3b);  //故 
		       		xszf(0x34,0x3c);  //障
					kong(0x33,0x01);
				}
				break;
				default: 
				break;
	        } 
	    }
	  //  xh=0xe0;
	  //  xl=0x08;
	    zhuanhuan7(0x00,0x23); //横坐标不变,纵坐标增加0x23
    }
}

/****************开关机记录显示*******************/
void open_close(void)
{
  	//uchar a[16];
    uchar c=0;
  	uchar kkk=0;
  	uchar onoffbuff[11];  //从外部E2取开关机记录
  	uchar temp1=0;
  	uchar temp2=0;
  	//addre2hi
  	//addre2lo
  	xh=0xe0;
  	xl=0x08;
  	yh=0x90;
  	yl=0x59;
  	fdbs(0x14);
  	num_open2=num_open;
	wdr();
  	for(kkk=0;kkk<8;kkk++)
  	{
        if((kkk==1)||(kkk==3)||(kkk==5)||(kkk==7))
	   	{
		    xh=0xc0;             //换行颜色为红色
     	    xl=0x08;
	        yh=yh|0x20;                    //字体背景设为青色
		}
	    else if((kkk==0)||(kkk==2)||(kkk==4)||(kkk==6))
	    { 
		    xh=0xe0;             //换行颜色为黄色
     	    xl=0x08;
	        yh=yh&0x9f;                    //字体背景设为蓝色
	    }
	    else
	    ;
	  	onoffbuff[1]= (uchar)((addre2>>8)&0x00ff ) ; //FM24C256片内地址高位字节
	  	onoffbuff[2]= (uchar)(addre2&0x00ff) ;      //FM24C256片内地址低位字节
		EIMSK&=~(1<<INT6);
		//do	
	  	fhz=I2cRead(SLA2_W,SLA2_R, onoffbuff[1],onoffbuff[2],8);
		//while(fhz==1);
		
	  	for(c=0;c<8;c++)
	        data[c]=i2c_rd_buff[c] ;   //本次开机
		EIMSK|=(1<<INT6);	
	    if(addre2==0x0000)     //到头
	        addre2=0x03f8 ;  //调整到关机    
	    else
	        addre2=addre2-8 ;  //调整到关机
	    onoffbuff[1]= (uchar)((addre2>>8)&0x00ff ) ; //FM24C256片内地址高位字节
	  	onoffbuff[2]= (uchar)(addre2&0x00ff) ;      //FM24C256片内地址低位字节
		EIMSK&=~(1<<INT6);
		//do	
	  	fhz=I2cRead(SLA2_W,SLA2_R, onoffbuff[1],onoffbuff[2],8);
		//while(fhz==1);
		
	  	for(c=0;c<8;c++)
	        data[c+8]=i2c_rd_buff[c] ;   //本次开机
	    EIMSK|=(1<<INT6);
	    addre2=addre2-8  ;  //调整到开机
      
	    //addre2lo= (uchar) (addre2&0x00ff) ;      //FM24C256片内地址低位字节	
	    // addre2hi= (uchar) ((addre2>>8)&0x00ff ) ; //FM24C256片内地址高位字节 
	  
	    //时间数组位置调整
	    for(c=3;c<6;c++)
	        data[c]=data[c+1];
	    for(c=11;c<14;c++)
	        data[c]=data[c+1];	  
     
        if((data[0]==0xff)&&(data[8]==0xff))          //如果读出的数为0xff,无操作
	    {
	        switch(kkk)
		    {
	            case 0:  juxing(0x90,0x00,0x04,0x50,0x01,0x68,0x00,0x72);  break; //第一行位空
            	case 1:  juxing(0xb0,0x00,0x04,0x73,0x01,0x68,0x00,0x95);  break; //第二行为空
            	case 2:  juxing(0x90,0x00,0x04,0x96,0x01,0x68,0x00,0xb8);  break; //第三行为空
            	case 3:  juxing(0xb0,0x00,0x04,0xb9,0x01,0x68,0x00,0xdb);  break; //第四行为空
            	case 4:  juxing(0x90,0x00,0x04,0xdc,0x01,0x68,0x00,0xfe);  break; //第五行为空
            	case 5:  juxing(0xb0,0x00,0x04,0xff,0x01,0x68,0x01,0x21);  break; //第六行为空
            	case 6:  juxing(0x90,0x00,0x05,0x22,0x01,0x68,0x01,0x44);  break; //第七行为空
            	case 7:  juxing(0xb0,0x00,0x05,0x45,0x01,0x68,0x01,0x67);  break; //第八行为空
				default: 
				break;
		    }
	    }
	    else
	    {
		    xtzb(xh,xl,yh,yl);     //系统坐标
		  	temp1=num_open/10+0x30;   //编号的高位
	      	temp2=num_open%10+0x30;   //编号的低位
          	xszf(0x31,temp1);                     
          	xszf(0x31,temp2); 
		  	zhuanhuan7(0x40,0x00);   
		  	xtzb(xh,xl,yh,yl);     //系统坐标
          	xszf(0x31,0x32);  //2
          	xszf(0x31,0x30);  //0
	      	clock_deal(data[0]); //年
	      	xszf(0x31,0x2f);  //"/"
		  	clock_deal(data[1]); //月
	      	xszf(0x31,0x2f);  //"/"
		  	clock_deal(data[2]); //日
	      	kong(0x31,0x01);  //空一格
		  	clock_deal(data[3]); //时
	      	xszf(0x31,0x3a);  //":"
	      	clock_deal(data[4]); //分
	      	xszf(0x31,0x3a);  //":"
	      	clock_deal(data[5]); //秒
		  	zhuanhuan7(0xa0,0x00); //横坐标增加0xa0,纵坐标不变
		  	xtzb(xh,xl,yh,yl);
		  	if(data[8]==0xff)
		  	{
		        switch(kkk)
		     	{
	                case 0:  juxing(0x90,0xe8,0x04,0x50,0x01,0x68,0x00,0x72);  break; //第一行位空
                 	case 1:  juxing(0xb0,0xe8,0x04,0x73,0x01,0x68,0x00,0x95);  break; //第二行为空
                 	case 2:  juxing(0x90,0xe8,0x04,0x96,0x01,0x68,0x00,0xb8);  break; //第三行为空
                 	case 3:  juxing(0xb0,0xe8,0x04,0xb9,0x01,0x68,0x00,0xdb);  break; //第四行为空
                 	case 4:  juxing(0x90,0xe8,0x04,0xdc,0x01,0x68,0x00,0xfe);  break; //第五行为空
                 	case 5:  juxing(0xb0,0xe8,0x04,0xff,0x01,0x68,0x01,0x21);  break; //第六行为空
                 	case 6:  juxing(0x90,0xe8,0x05,0x22,0x01,0x68,0x01,0x44);  break; //第七行为空
                 	case 7:  juxing(0xb0,0xe8,0x05,0x45,0x01,0x68,0x01,0x67);  break; //第八行为空
				 	default:  break;
		        }
		    }
		    else
		    {
		        xszf(0x31,0x32);  //2
             	xszf(0x31,0x30);  //0
	         	clock_deal(data[8]); //年
	         	xszf(0x31,0x2f);  //"/"
		     	clock_deal(data[9]); //月
	         	xszf(0x31,0x2f);  //"/"
		     	clock_deal(data[10]); //日
	         	kong(0x31,0x01);  //空一格
		     	clock_deal(data[11]); //时
	         	xszf(0x31,0x3a);  //":"
	         	clock_deal(data[12]); //分
	         	xszf(0x31,0x3a);  //":"
	         	clock_deal(data[13]); //秒
		    }
		    num_open++;         //节点编号加1
	    } 	 
	   // xh=0xe0;
	   // xl=0x08;
	    zhuanhuan7(0x00,0x23);
        NOP();	  
    }
} 

/**************************界面函数**************************/

/**********开关机记录的编号**************
void num_open(void)
{
   uchar temp1=0;
   uchar temp2=0;
   uchar num=0;
   xh=0x80;
   xl=0x08;
   yh=0xf0;
   yl=0x59;
   num=page*num2+1;
   for(i=0;i<8;i++)                       
    {
	  temp1=num/10+0x30;
	  temp2=num%10+0x30;
      xtzb(xh,xl,yh,yl);
	  fdbs(0x14);
   //   xszf(0x31,0x30);
      xszf(0x31,temp1);                     
      xszf(0x31,temp2); 
	  zhuanhuan();
	  y=y+0x23;
	  yl=y;
	  yh=y>>8;
	  num++;
	}
}*/

/****************选择界面********************/
void choice1(void)
{
    choice=1;  //置选择标志
  	juxing(0xf0,0x00,0x04,0x2d,0x00,0x80,0x01,0x3b);  //大矩形
  	juxing(0xb0,0x00,0x04,0x2d,0x00,0x80,0x00,0x5b);
  	juxing(0xb0,0x00,0x04,0x65,0x00,0x80,0x00,0x93);
  	juxing(0xb0,0x00,0x04,0x9d,0x00,0x80,0x00,0xcb);
  	juxing(0xb0,0x00,0x04,0xd5,0x00,0x80,0x01,0x03);
	juxing(0xb0,0x00,0x05,0x0d,0x00,0x80,0x01,0x3b);
 	// juxing(0xb0,0x00,0x05,0x0e,0x00,0x80,0x01,0x3c);
  	xtzb(0x00,0x0f,0x00,0x3d);
  	fdbs(0x04);
  	xszf(0x34,0x43);  //列
  	xszf(0x34,0x44);  //表
  	xszf(0x34,0x45);  //显
  	xszf(0x34,0x46);  //示
  	fdbs(0x14);
  	xszf(0x31,0x28);
  	xszf(0x31,0x56);
  	xszf(0x31,0x29);
  	fdbs(0x04);
  	xtzb(0x00,0x0f,0x00,0x75);
  	xszf(0x34,0x3f);                  //报
  	xszf(0x34,0x40);                  //警
  	xszf(0x34,0x49);                  //记
  	xszf(0x34,0x4a);                  //录
  	fdbs(0x14);
  	xszf(0x31,0x28);
  	xszf(0x31,0x58);
  	xszf(0x31,0x29);
  	fdbs(0x04);
  	xtzb(0x00,0x0f,0x00,0xad);
  	xszf(0x34,0x3b);                 //故
  	xszf(0x34,0x3c);                 //障
  	xszf(0x34,0x49);                 //记
  	xszf(0x34,0x4a);                 //录
  	fdbs(0x14);
  	xszf(0x31,0x28);
  	xszf(0x31,0x59);
  	xszf(0x31,0x29);
  	fdbs(0x04);
  	xtzb(0x00,0x0f,0x00,0xe5);
  	xszf(0x34,0x4b);                 //开
  	xszf(0x34,0x4c);                 //关
  	xszf(0x34,0x4d);                 //机 
  	xszf(0x34,0x49);                 //记
  	xszf(0x34,0x4a);                 //录
  	fdbs(0x14);
  	xszf(0x31,0x28);
  	xszf(0x31,0x5a);
  	xszf(0x31,0x29);
	fdbs(0x04);
	xtzb(0x00,0x0f,0x01,0x1d);
	xszf(0x34,0xfd);     //实
	xszf(0x34,0x53);     //时
	xszf(0x34,0xfe);     //界

⌨️ 快捷键说明

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