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

📄 toucher.c

📁 基于PIC单片机
💻 C
📖 第 1 页 / 共 5 页
字号:
  	xszf(0x34,0x53); //时
  	xszf(0x34,0x54); //间
  	kong(0x33,0x04);
  	xszf(0x34,0x3f); //报
  	xszf(0x34,0x40); //警
  	xszf(0x34,0x55); //类
  	xszf(0x34,0x56); //型
  	kong(0x33,0x01);
  	xszf(0x34,0x3f);                 //报
  	xszf(0x34,0x40);                 //警
  	xszf(0x34,0x2a);                 //浓
  	xszf(0x34,0x2b);                 //度
  	kong(0x33,0x01);                                
  	xszf(0x34,0x28);                 //气
  	xszf(0x34,0x29);                 //体
  	xszf(0x34,0x55);                 //类
  	xszf(0x34,0x56);                 //型
}
/*****************故障记录界面第一行显示**************/
void bank3(void)
{
  	xszf(0x34,0xd6); //转
  	xszf(0x34,0xd7); //换
  	xszf(0x34,0xd8); //器
  	kong(0x33,0x02);
  	xszf(0x34,0x85); //探
  	xszf(0x34,0x86); //测
  	xszf(0x34,0x84); //器
  	kong(0x33,0x02);
  	xszf(0x34,0x3b);                 //故
  	xszf(0x34,0x3c);                 //障
  	xszf(0x34,0x53);                 //时
  	xszf(0x34,0x54);                 //间
  	kong(0x33,0x05);
  	xszf(0x34,0x3b);                 //故
  	xszf(0x34,0x3c);                 //障
  	xszf(0x34,0x55);                 //类
  	xszf(0x34,0x56);                 //型
}
/*****************开关机界面第一行显示*****************/
void bank4(void)
{
    xszf(0x34,0x26);                 //编
    xszf(0x34,0x27);                 //号
    kong(0x33,0x02);
    xszf(0x34,0x4b);                 //开
    xszf(0x34,0x4d);                 //机
  	xszf(0x34,0x53);                 //时
  	xszf(0x34,0x54);                 //间
  	kong(0x33,0x06);
  	xszf(0x34,0x4c);                 //关
  	xszf(0x34,0x4d);                 //机
  	xszf(0x34,0x53);                 //时
  	xszf(0x34,0x54);                 //间
}
/*************控制外部设备第一行显示********************/
void bank5(void)
{
    xszf(0x34,0xd6);                 //转
  	xszf(0x34,0xd7);                 //换
  	xszf(0x34,0xd8);                 //器
  	xszf(0x34,0x26);                 //编
  	xszf(0x34,0x27);                 //号
  	juxing(0xf0,0x68,0x04,0x33,0x00,0xa8,0x00,0x49);
  	xtzb(0x00,0xd8,0x00,0x36);
  	xszf(0x34,0x47);                 //节
  	xszf(0x34,0x48);                 //点
  	xszf(0x34,0x26);                 //编
  	xszf(0x34,0x27);                 //号
  	juxing(0xf1,0x28,0x04,0x33,0x01,0x68,0x00,0x49);
}
/***************节点设置界面中的第一行****************/
void bank6(void)
{
    xszf(0x34,0x26);//编
  	xszf(0x34,0x27);//号
  	kong(0x33,0x03);
  	xszf(0x34,0x85);//探
  	xszf(0x34,0x86);//测
  	xszf(0x34,0x84);//器
  	kong(0x33,0x04);
  	xszf(0x34,0x87);//联
  	xszf(0x34,0x88);//动
  	kong(0x33,0x04);
  	xszf(0x34,0x6f);//不
  	xszf(0x34,0xa7);//使
  	xszf(0x34,0x9c);//用
  	kong(0x33,0x04);
  	xszf(0x34,0x34);//状
  	xszf(0x34,0x35);//态
}
/*******************实时界面首报显示****************/
void bank7()
{
    uchar temp1=0,temp2=0,temp3=0,temp4=0;
	uint  temp=0;
	uint  addr_gas=0;   //外部E2中存放气体类型的初始地址
	uchar clarm_buff[2];
	if(shoubao[1]==0)   //无报警
	    juxing(0xb0,0x00,0x04,0x2d,0x02,0x80,0x00,0x4f);
	else 
	{
	    xh=0xc0;
		xl=0x08;
		yh=0x00;
		yl=0x36;
		addr_gas=0x5c00;
		addr_gas=addr_gas+shoubao[0]*32+shoubao[1]-1;
	 	clarm_buff[1]= (uchar)((addr_gas>>8)&0x00ff ) ; //FM24C256片内地址高位字节
	 	clarm_buff[2]= (uchar)(addr_gas&0x00ff) ;      //FM24C256片内地址低位字节	
		EIMSK&=~(1<<INT6);
		//do	  
	 	fhz=I2cRead(SLA2_W,SLA2_R, clarm_buff[1],clarm_buff[2],1);
		//while(fhz==1);
		
	 	gas_type=i2c_rd_buff[0] ;       //将读出的气体类型放入gas_type中
		EIMSK|=(1<<INT6);
		fdbs(0x04);             
		xtzb(xh,xl,yh,yl);
		xszf(0x34,0x70);   //首
		xszf(0x34,0x3f);   //报
		kong(0x33,0x02);
		temp1=shoubao[0]/10+0x30;
		temp2=shoubao[0]%10+0x30;
		temp3=shoubao[1]/10+0x30;       //探测器编号高位
	    temp4=shoubao[1]%10+0x30;       //探测器编号低位
		fdbs(0x14);        //放大
		zhuanhuan7(0x40,0x00);
	    xtzb(xh,xl,yh,yl); 
	    xszf(0x31,temp1);        //显示转换器编号高位
	    xszf(0x31,temp2);        //显示转换器编号低位
	    xszf(0x31,0x2f);         //"/"
	    xszf(0x31,temp3);        //显示探测器编号高位
	    xszf(0x31,temp4);        //显示探测器编号低位
	    zhuanhuan7(0x60,0x00);   //横坐标增加0x40,纵坐标不变
	    xtzb(xh,xl,yh,yl);
	    xszf(0x31,0x32);  //2
        xszf(0x31,0x30);  //0
	    clock_deal(shoubao[2]); //年
	    xszf(0x31,0x2f);  //"/"
	    clock_deal(shoubao[3]); //月
	    xszf(0x31,0x2f);  //"/"
	    clock_deal(shoubao[4]); //日
	    kong(0x31,0x01);
	    clock_deal(shoubao[5]); //时
	    xszf(0x31,0x3a);  //":"
	    clock_deal(shoubao[6]); //分
	    zhuanhuan7(0x80,0x00);    //横坐标增加0x80,纵坐标不变
	    xtzb(xh,xl,yh,yl);
	    fdbs(0x14);
		temp=(uint)(shoubao[7]);
	    temp=(temp<<8)+shoubao[8];      //报警浓度
	    xianshi(temp);             
		unit_common();             //浓度单位判断显示
	    zhuanhuan7(0x50,0x00);      //横坐标增加0x50,纵坐标不变
	    xtzb(xh,xl,yh,yl);
	    fdbs(0x04);   //不放大
	    switch(gas_type)
	    {
	        case 0xff:
		    {
		        xszf(0x34,0xe2); //天
		       	xszf(0x34,0xe3); //然
		       	xszf(0x34,0x28); //气
		    }
			break;
		    case 0x02:
		    {
		        xszf(0x34,0xf9); //液
				xszf(0x34,0xfa); //化
		       	xszf(0x34,0x28); //气
		    }
			break;
		    case 0x03:
		    {
		        xszf(0x34,0xac); //煤
				xszf(0x34,0xfa); //制
		       	xszf(0x34,0x25); //气
		    }
			break;
		    case 0x04:
		    {
		        xszf(0x34,0xf1); //毒
				xszf(0x34,0xf2); //性
		       	xszf(0x34,0x28); //气
				xszf(0x34,0x29); //体
			}
			break;
	        case 0x05:
		    {
		        xszf(0x34,0xf3); //可
				xszf(0x34,0xf4); //燃
		       	xszf(0x34,0x28); //气
				xszf(0x34,0x29); //体
		    }
			break;
	        case 0x06:
		    {
		        xszf(0x34,0xf5); //有
				xszf(0x34,0xf6); //机
		       	xszf(0x34,0xf7); //溶
				xszf(0x34,0xf8); //剂
		    }
			break;
			default:
			break;
		}
	}
}
/*******************实时记录第一行显示**************/
void bank8()
{
    xszf(0x34,0x26); //编
    xszf(0x34,0x27); //号
	kong(0x33,0x02);
	xszf(0x34,0x3f); //报
  	xszf(0x34,0x40); //警
  	xszf(0x34,0x55); //类
  	xszf(0x34,0x56); //型
	kong(0x33,0x02);
	xszf(0x34,0x3b); //故
  	xszf(0x34,0x3c); //障
  	xszf(0x34,0x55); //类
  	xszf(0x34,0x56); //型
}

/*********************按钮*************************/
void button_page(void)                     //翻页按钮
{
    fdbs(0x04);
  	ltjx(0x8a,0x18,0x04,0xf4,0x02,0x6c,0x01,0x21);       //(0x218,0x104,0x26c,0x12c);
  	xtzb(0x02,0x2a,0x01,0x02);                  //系统坐标(554,272)
  	xszf(0x34,0x2c);//上
  	xszf(0x34,0x2d);//一
  	xszf(0x34,0x2e);//页
  	ltjx(0x8a,0x18,0x05,0x3a,0x02,0x6c,0x01,0x67);
  	xtzb(0x02,0x2a,0x01,0x48);                   //系统坐标(554,342)
  	xszf(0x34,0x2f);//下
  	xszf(0x34,0x2d);//一
  	xszf(0x34,0x2e);//页
}
void button_can(void)                      //转换器按钮
{
    fdbs(0x04);
  	ltjx(0x8a,0x18,0x04,0x68,0x02,0x6c,0x00,0x95); 
  	xtzb(0x02,0x2a,0x00,0x76);                  //系统坐标(554,272)
  	xszf(0x34,0x2c);//上
  	xszf(0x34,0x2d);//一
  	xszf(0x34,0x8a);//块
  	ltjx(0x8a,0x18,0x04,0xae,0x02,0x6c,0x00,0xdb);
    xtzb(0x02,0x2a,0x00,0xbc);                   //系统坐标(554,342)
  	xszf(0x34,0x2f);//下
  	xszf(0x34,0x2d);//一
  	xszf(0x34,0x8a);//块
}

void button3(void)        //位置与翻页按钮相同
{
    fdbs(0x04);
    ltjx(0x8a,0x18,0x04,0xf4,0x02,0x6c,0x01,0x21);       //(0x218,0x104,0x26c,0x12c);
  	xtzb(0x02,0x30,0x01,0x02);                  //系统坐标(554,272)
  	xszf(0x34,0x71);//确
  	xszf(0x34,0xb2);//定
  	ltjx(0x8a,0x18,0x05,0x3a,0x02,0x6c,0x01,0x67);
  	xtzb(0x02,0x30,0x01,0x48);                
  	xszf(0x34,0x66);//退
  	xszf(0x34,0x67);//出
}
void button_print(void)      //打印按钮
{
    fdbs(0x04);
  	ltjx(0x8a,0x18,0x04,0x68,0x02,0x6c,0x00,0x95); 
  	xtzb(0x02,0x30,0x00,0x76);                  //系统坐标(554,272)
  	xszf(0x34,0x7c);    //打
  	xszf(0x34,0x7d);    //印
}
/*******************背景函数******************/
void background(void)
{
    juxing(0xb0,0x00,0x04,0x2d,0x02,0x80,0x00,0x4f);  //(0x00,0x2d,0x280,0x4f)
  	juxing(0x90,0x00,0x04,0x50,0x02,0x80,0x00,0x72);  //(0x00,0x50,0x280,0x72)
  	juxing(0xb0,0x00,0x04,0x73,0x02,0x80,0x00,0x95);  //(0x00,0x73,0x280,0x95)
  	juxing(0x90,0x00,0x04,0x96,0x02,0x80,0x00,0xb8);  //(0x00,0x96,0x280,0xb8)
  	juxing(0xb0,0x00,0x04,0xb9,0x02,0x80,0x00,0xdb);  //(0x00,0xb9,0x280,0xdb)
  	juxing(0x90,0x00,0x04,0xdc,0x02,0x80,0x00,0xfe);  //(0x00,0xdc,0x280,0xfe)
  	juxing(0xb0,0x00,0x04,0xff,0x02,0x80,0x01,0x21);  //(0x00,0xff,0x280,0x121)
  	juxing(0x90,0x00,0x05,0x22,0x02,0x80,0x01,0x44);  //(0x00,0x122,0x280,0x144)
  	juxing(0xb0,0x00,0x05,0x45,0x02,0x80,0x01,0x68);  //(0x00,0x145,0x280,0x167)
}
/****************转换器编号***********************/
void num_conversion(void)
{
    xtzb(0x01,0xe0,0x00,0x36);
  	fdbs(0x04);
  	xszf(0x34,0xd6); //转
  	xszf(0x34,0xd7); //换
  	xszf(0x34,0xd8); //器
  	xszf(0x34,0x26); //编
  	xszf(0x34,0x27); //号
}
/*********************从内部E2中读取信息******************/
uchar Read1(uint addr,uchar num)       //读取转换器信息
{
    uchar k1=0;
  	uchar temp=0;
  	k1=(num-1)/8;
  	temp=canuse[k1];           //读取can的使用情况
  	return temp;
}
uchar Read2(uint addr,uchar num)      //读取节点使用情况
{
    uchar temp1=0;
	uchar k2=0;
  	addr=num_can*4+addr;
	k2=(num-1)/8;
  	temp1=detuse[num_can][k2];          
  	return temp1;
}
uchar Read3(uint addr)                 //读取节点探测器和联动的选择情况
{
    uchar temp1=0;
  	addr=num_can+addr;
  	temp1=det_link[num_can];
  	return temp1;
}
//uchar Read4(uint addr)
//{
   //uchar temp;
  // temp=EEPROMread(addr);
  // return temp;
//}
/*********************浓度显示*******************/
void chroma_disp(void)
{
    uchar sum1=0;
	uchar sum2=0;
    uchar k1=0;
    uchar ii=0;
  	uchar kkk=0;
  	uchar temp0=0;
  	uchar temp1=0;
  	uchar temp2=0;
  	uchar temp3=0;
  	//uchar temp4=0;
  	uchar temp5=0;
  	uchar temp6=0;
  	uchar temp7=0;
  	uchar counter=0;
  	uint temp=0;
  	uint addr=0;
  	uint addr_unit=0  ;   //外部E2中存储浓度单位的初始地址
  	uchar rambuff[11] ;
  	uchar nongdu[3]   ;
	uchar a[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
	
	/**************求出最后一个投用的结点号******************/
	for(i=3;i>=0;i--)
	{
	    for(k1=0;k1<8;k1++)
		{
		    if((detuse[num_can][i]&a[k1])!=0)         //如果没投用
			    sum1++;                      //没投用的节点个数
			else
			{
			    temp6=1;
				break;
			}
		}
		if(temp6==1)
		    break;
	}
	sum2=32-sum1;                  //投用的最大节点数
	/*******************显示部分*********************/
  	xh=0xe0;   //颜色 e0
  	xl=0x08;   
  	yh=0x90;
  	yl=0x59;
  	num_det=page*num1+1;
  	temp7=(0x01<<((num_det-1)%8));
  	counter=0;
  	for(kkk=0;kkk<8;kkk++)
    {
	    wdr();    //dog
        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
	    ;
        for(j=0;j<2;j++)
	    { 
		    wdr();      //feed dog
		    fdbs(0x14);                //放大1倍
		    addr=(uint)num_can*256+(num_det-1)*8;   //探测器和节点对应的RAM地址                  
			rambuff[1]=(uchar)(((addr&0xff00)>>8)); //高址
			rambuff[2]=(uchar)(addr&0x00ff);        //低址
			EIMSK&=~(1<<INT6);
			//do
			fhz=I2cRead(SLA1_W,SLA1_R,rambuff[1],rambuff[2],8);  //读出
			//while(fhz==1);
			
			for(ii=0;ii<8;ii++)
		        rambuff[ii]=i2c_rd_buff[ii];
			EIMSK|=(1<<INT6);	
		    /***************从外部E2中读取浓度单位**************************/
			addr_unit=0x6100;
	        addr_unit=addr_unit+num_can*32+num_det-1;
	   		nongdu[1]= (uchar)((addr_unit>>8)&0x00ff ) ; //FM24C256片内地址高位字节

⌨️ 快捷键说明

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