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

📄 fourchannel.c

📁 89V51RD2单片机驱动步进电机带动一个测速的四通道光电传感器,分析传感器四个通道是否正常,并在12864的显示屏上显示并用TP微打根据屏幕显示的打印.内附ProtelPCB板并已成功制作样机两台.
💻 C
📖 第 1 页 / 共 5 页
字号:
					while(printexitflag)																//printexit<1,0>退出打印菜单1:菜单内循环0:退出打印菜单
					{	init();wrcommand(0x0c);												    		//整体显示on;游标off ;游标闪烁off
	                    setxy(0x80);dispen(0x30);dispen(0x3a);disphz(0xb4,0xf2);disphz(0xd3,0xa1);disphz(0xc8,0xab);disphz(0xb2,0xbf);disphz(0xcd,0xa8);disphz(0xb5,0xc0);  //0:打印全部通道
	                    setxy(0x90);dispen(0x32);dispen(0x3a);disphz(0xb4,0xf2);disphz(0xd3,0xa1);disphz(0xca,0xd7);disphz(0xce,0xb2);disphz(0xd0,0xc5);disphz(0xcf,0xa2);  //2:打印首尾信息
	                    setxy(0x88);dispen(0x35);dispen(0x3a);disphz(0xb4,0xf2);disphz(0xd3,0xa1);disphz(0xb5,0xb1);disphz(0xc7,0xb0);disphz(0xd7,0xaa);disphz(0xcb,0xd9);  //5:打印当前转速
	                    setxy(0x98);dispen(0x38);dispen(0x3a);disphz(0xb4,0xf2);disphz(0xd3,0xa1);disphz(0xb5,0xb1);disphz(0xc7,0xb0);disphz(0xcd,0xa8);disphz(0xb5,0xc0);  //8:打印当前通道
	                    smalldelay();smalldelay();smalldelay();
	                    while((ps=key())==15){;}
	                    switch(ps)
	                    {   case 0:init(); wrcommand(0x0c);
    setxy(0x80); dispen(0x07); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04);     						//显示花纹
    dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04);dispen(0x04);
    dispen(0x04); dispen(0x04); dispen(0x04);setxy(0x90); dispen(0x04);setxy(0x97); dispen(0x20);
    dispen(0x04); setxy(0x88); dispen(0x04); setxy(0x8f); dispen(0x20); dispen(0x04); setxy(0x98);
    dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04);
    dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x07);      
	setxy(0x91);disphz(0xd0,0xc5);disphz(0xcf,0xa2);disphz(0xb4,0xf2);disphz(0xd3,0xa1);disphz(0xd6,0xd0);       				//信息打印中。。。
	setxy(0x89);
							printall(dispgroup);break;                                   										//根据dispgroup<1,3>自动进行单组或三组通道测量
	                        case 2:init(); wrcommand(0x0c);
    setxy(0x80); dispen(0x07); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04);     						//显示花纹
    dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04);dispen(0x04);
    dispen(0x04); dispen(0x04); dispen(0x04);setxy(0x90); dispen(0x04);setxy(0x97); dispen(0x20);
    dispen(0x04); setxy(0x88); dispen(0x04); setxy(0x8f); dispen(0x20); dispen(0x04); setxy(0x98);
    dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04);
    dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x07);      
	setxy(0x91);disphz(0xd0,0xc5);disphz(0xcf,0xa2);disphz(0xb4,0xf2);disphz(0xd3,0xa1);disphz(0xd6,0xd0);       				//信息打印中。。。
	setxy(0x89);
							if(printtop==0)	{dout(0);pout4();dout(12);printtop=1;}
							else 			{dout(0);pout1();dout(12);}break;													//打印首尾信息
	                        case 5:init(); wrcommand(0x0c);
    setxy(0x80); dispen(0x07); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04);     						//显示花纹
    dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04);dispen(0x04);
    dispen(0x04); dispen(0x04); dispen(0x04);setxy(0x90); dispen(0x04);setxy(0x97); dispen(0x20);
    dispen(0x04); setxy(0x88); dispen(0x04); setxy(0x8f); dispen(0x20); dispen(0x04); setxy(0x98);
    dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04);
    dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x07);      
	setxy(0x91);disphz(0xd0,0xc5);disphz(0xcf,0xa2);disphz(0xb4,0xf2);disphz(0xd3,0xa1);disphz(0xd6,0xd0);       				//信息打印中。。。
	setxy(0x89);
							dout(0);pout5(printrev);dout(12);break;																		//打印当前转速
							case 8:init(); wrcommand(0x0c);
    setxy(0x80); dispen(0x07); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04);     						//显示花纹
    dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04);dispen(0x04);
    dispen(0x04); dispen(0x04); dispen(0x04);setxy(0x90); dispen(0x04);setxy(0x97); dispen(0x20);
    dispen(0x04); setxy(0x88); dispen(0x04); setxy(0x8f); dispen(0x20); dispen(0x04); setxy(0x98);
    dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04);
    dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x04); dispen(0x07);      
	setxy(0x91);disphz(0xd0,0xc5);disphz(0xcf,0xa2);disphz(0xb4,0xf2);disphz(0xd3,0xa1);disphz(0xd6,0xd0);       				//信息打印中。。。
	setxy(0x89);
							if(ee==0||ee==1){dout(0);pout3(1,group);dout(4);pout2(1,group);dout(8);pout2(0,group);dout(12);}
	                     	else {dout(0);pout3(3,group);dout(4);pout2(3,group);dout(8);pout2(2,group);dout(12);} break;
	                        case 13:printexitflag=0;smalldelay();smalldelay();smalldelay();break;
	                    }
  	    			}
		}
	    switch(displayer)
	    {	//case 0: dispmenu_0(); break;
	        case 1: dispmenu_1(ee,group); break;
	        case 2: dispmenu_2(ee,group); break;
	    }
        smalldelay(); 
    }
}
void auto_three(uchar group)            //自动测量单通道group<0-2>:"测量组"<0:自动测量300r/min;1:自动测量500r/min;2:自动测量1000r/min>
{	setxy(0x92);dispen(0x06);
    switch(group)
    {   case 0:dispen(0x33);break;
        case 1:dispen(0x35);break;
        case 2:dispen(0x31);dispen(0x30);break;
    }dispen(0x30); dispen(0x30); dispen(0x72); dispen(0x2f); dispen(0x6d); dispen(0x69); dispen(0x6e);dispen(0x20);    	//300/500/1000r/min       
    setxy(0x8a); disphz(0xc6,0xf0); disphz(0xb6,0xaf); disphz(0xb5,0xe7); disphz(0xbb,0xfa); dispen(0x10);	//启动电机>
    pwmthreeoutup(mi);delay();delay();
    setxy(0x8a); disphz(0xc2,0xf6); disphz(0xb3,0xe5); disphz(0xb2,0xe2); disphz(0xc1,0xbf); dispen(0x10);	//脉冲测量>
    delay();delay();pulse(group);
    setxy(0x8a); disphz(0xb5,0xe7); disphz(0xc6,0xbd); disphz(0xb2,0xe2); disphz(0xc1,0xbf); dispen(0x10);	//电平测量>
    delay();delay();ad(group);                                                                                        
}
void automeasure(void)             	    //自动测量
{   init();wrcommand(0x0c);                                                                            	    //光标关,闪烁关    
    setxy(0x80); dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07);        //显示花纹
    dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07);dispen(0x07);
    dispen(0x07); dispen(0x07); dispen(0x07);setxy(0x90); dispen(0x07);setxy(0x97); dispen(0x20);
    dispen(0x07); setxy(0x88); dispen(0x07); setxy(0x8f); dispen(0x20); dispen(0x07); setxy(0x98);
    dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07);dispen(0x07);
    dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07);  
    overtimeflag=0;
    setxy(0x8a); disphz(0xc6,0xf0); disphz(0xb6,0xaf); disphz(0xb5,0xe7); disphz(0xbb,0xfa); dispen(0x10);	//启动电机>
    mi=0;pwmoutup(0);
	delay();delay();delay();delay();delay();delay();
    auto_three(0);            //测量300r/min
    mi=2;delay();delay();
    auto_three(1);            //测量500r/min
    mi=6;delay();delay();
    auto_three(2);            //测量1000r/min
    setxy(0x8a);disphz(0xb5,0xe7);disphz(0xbb,0xfa);disphz(0xcd,0xa3);disphz(0xd6,0xb9);dispen(0x10);   //电机停止>
    pwmoutdown();
    setxy(0x8a);disphz(0xca,0xfd);disphz(0xbe,0xdd);disphz(0xb4,0xa6);disphz(0xc0,0xed);dispen(0x10);   //数据处理>
    mi=0;dataconversion(0);
    mi=2;dataconversion(1);
	mi=6;dataconversion(2);
    menu_main1(3);  
}void onemeasure(void)                   //单次测量
{   init(); wrcommand(0x0c);
    setxy(0x80); dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07);     //显示花纹
    dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07);dispen(0x07);
    dispen(0x07); dispen(0x07); dispen(0x07);setxy(0x90); dispen(0x07);setxy(0x97); dispen(0x20);
    dispen(0x07); setxy(0x88); dispen(0x07); setxy(0x8f); dispen(0x20); dispen(0x07); setxy(0x98);
    dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07);
    dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07); dispen(0x07);      
    setxy(0x91);disphz(0xc6,0xf0);disphz(0xb6,0xaf);disphz(0xb5,0xe7);disphz(0xbb,0xfa);dispen(0x10);   //启动电机>
    pwmoutup(mi);                                                                                       
    setxy(0x91);disphz(0xc2,0xf6);disphz(0xb3,0xe5);disphz(0xb2,0xe2);disphz(0xc1,0xbf);dispen(0x10);   //脉冲测量>
    delay();delay();delay();delay();delay();delay();delay();											//延时,等待电机转速稳定
    overtimeflag=0;
    pulse(0);
    setxy(0x91);disphz(0xb5,0xe7);disphz(0xc6,0xbd);disphz(0xb2,0xe2);disphz(0xc1,0xbf);dispen(0x10);   //电平测量>
    delay();delay();
	ad(0);
    setxy(0x91);disphz(0xb5,0xe7);disphz(0xbb,0xfa);disphz(0xcd,0xa3);disphz(0xd6,0xb9);dispen(0x10);   //电机停止>
    pwmoutdown();
    dataconversion(0x00);
    menu_main1(1);                                                                                      //主菜单
}
void numbersadd(void)					//编号加一
{	if(++numbers[3]>9)				//最低位
	{	numbers[3]=0;
		if(++numbers[2]>9)
		{	numbers[2]=0;
			if(++numbers[1]>9)
			{	numbers[1]=0;
				if(++numbers[0]>9)	//最高位
					{	numbers[0]=0;
	}	}	}		}
}
void numbersdec(void)					//编号减一
{	if(--numbers[3]>9)				//最低位
	{	numbers[3]=9;
		if(--numbers[2]>9)
		{	numbers[2]=9;
			if(--numbers[1]>9)
			{	numbers[1]=9;
				if(--numbers[0]>9)   	//最高位
					{	numbers[0]=9;
	}	}	}		}
}
void typedisp()							//显示类型
{	setxy(0x80); disphz(0xd0,0xcd); disphz(0xba,0xc5); dispen(0x3a); setxy(0x86); disphz(0xd0,0xcd);		//型号:_xxxxxx型
	setxy(0x83);
	switch(type)
	{	case 1: dispen(0x54); dispen(0x51); dispen(0x47); dispen(0x39); dispen(0x42); dispen(0x20);break;	//tqg9b_双通道;
		case 2: dispen(0x54); dispen(0x51); dispen(0x47); dispen(0x31); dispen(0x35); dispen(0x42);break;	//tqg15b_双通道
		case 3: dispen(0x44); dispen(0x46); dispen(0x38); dispen(0x20); dispen(0x20); dispen(0x20);break;	//df8_双通道
		case 4: dispen(0x54); dispen(0x51); dispen(0x47); dispen(0x31); dispen(0x35); dispen(0x44);break;	//tqg15d_四通道
		case 5: dispen(0x44); dispen(0x46); dispen(0x31); dispen(0x36); dispen(0x20); dispen(0x20);break;	//df16_四通道
	}
}
void revdisp()							//显示转速
{	setxy(0x90); disphz(0xd7,0xaa); disphz(0xcb,0xd9); dispen(0x3a);						//转速:_xxxxr/min
	setxy(0x93);
	switch(rev)
	{	case 1: disphz(0xd7,0xd4); disphz(0xb6,0xaf); disphz(0xb2,0xe2); disphz(0xc1,0xbf);
         	    dispen(0x20); dispen(0x20); break;											//自动测量
        case 2: dispen(0x33); dispen(0x30); dispen(0x30); dispen(0x20); setxy(0x95); 
         	    dispen(0x72); dispen(0x2f); dispen(0x6d); dispen(0x69); dispen(0x6e);break;	//300r/min
        case 3: dispen(0x34); dispen(0x30); dispen(0x30); dispen(0x20); setxy(0x95); 
           	    dispen(0x72); dispen(0x2f); dispen(0x6d); dispen(0x69); dispen(0x6e);break;	//400r/min
        case 4: dispen(0x35); dispen(0x30); dispen(0x30); dispen(0x20); setxy(0x95); 
           	    dispen(0x72); dispen(0x2f); dispen(0x6d); dispen(0x69); dispen(0x6e);break;	//500r/min
        case 5: dispen(0x36); dispen(0x30); dispen(0x30); dispen(0x20); setxy(0x95); 
          	    dispen(0x72); dispen(0x2f); dispen(0x6d); dispen(0x69); dispen(0x6e);break;	//600r/min
        case 6: dispen(0x37); dispen(0x30); dispen(0x30); dispen(0x20); setxy(0x95);
         	    dispen(0x72); dispen(0x2f); dispen(0x6d); dispen(0x69); dispen(0x6e);break;	//700r/min
        case 7: dispen(0x38); dispen(0x30); dispen(0x30); dispen(0x20); setxy(0x95); 
          	    dispen(0x72); dispen(0x2f); dispen(0x6d); dispen(0x69); dispen(0x6e);break;	//800r/min
		case 8: dispen(0x31); dispen(0x30); dispen(0x30); dispen(0x30); setxy(0x95); 
          	    dispen(0x72); dispen(0x2f); dispen(0x6d); dispen(0x69); dispen(0x6e);break;	//1000r/min
	}
}
void numberdisp(void) 					//显示编号
{	uchar ruw,i;
	setxy(0x88); disphz(0xb1,0xe0); disphz(0xba,0xc5); dispen(0x3a);//编号:_xxxx
	setxy(0x8b);
	for(i=0;i<4;i++)
	{	ruw=numbers[i];
		switch(ruw)
		{	case 10:dispen(0x20);break;
			case 11:dispen(0x2d);break;
			defa

⌨️ 快捷键说明

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