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

📄 机械a型液晶显示.c

📁 使用8051单片机来实现电机的转速的调节和液晶显示
💻 C
📖 第 1 页 / 共 3 页
字号:
void dis_test()
{uchar i,j;
 for (j=0;j<4;j++)
   { for(i=0;i<4;i++)
    {
      wr_zb(0xf0,i,j);
      send(tab5[j*8+i*2]-0xa0);
      send(tab5[j*8+i*2+1]-0xa0);
    }
   }
 for (j=0;j<2;j++)
  { for (i=0;i<9;i++)
    {  wr_zb(0xf9,9+i,j*16);
       send(tab5[32+i]);
	}
  }
 for (j=2;j<4;j++)
  { for (i=0;i<8;i++)
    {  wr_zb(0xf9,9+i,j*16);
       send(tab5[41+i]);
	}
  }
  
    for(i=0;i<2;i++)
    {
      wr_zb(0xf0,10+i,0);
      send(tab6[i*2]-0xa0);
      send(tab6[i*2+1]-0xa0);
    }
   for(i=0;i<2;i++)
    {
      wr_zb(0xf0,10+i,2);
      send(tab6[4+i*2]-0xa0);
      send(tab6[4+i*2+1]-0xa0);
    }
	for(i=0;i<4;i++)
	{  wr_zb(0xf9,20+i,16);
       send(tab6[8+i]);
	   
	}
		for(i=0;i<5;i++)
	{  wr_zb(0xf9,19+i,48);
       send(tab6[12+i]);
	   
	}
	
}

//*-----------------------------------------显次级菜单
void disp_cz(uchar code *chn,uchar lnum)
{ uchar i,j;
      for(i=0;i<6;i++)
      { wr_zb(0xf0,i+1,0);
      send(chn[i*2]-0xa0);
      send(chn[i*2+1]-0xa0);
	  }
      for (j=1;j<3;j++)
	  {for (i=0;i<2;i++)
	   {
       wr_zb(0xf9,i+2,j*16);
       send(chn[12+(j-1)*lnum*2+(j-1)*2+i]);
	   }
	  }
   for (j=1;j<3;j++)
   { for(i=2;i<2+lnum;i++)
    {
      wr_zb(0xf0,i,j);
      send(chn[12+(j-1)*lnum*2+(j-1)*2+(i-1)*2]-0xa0);
      send(chn[12+(j-1)*lnum*2+(j-1)*2+(i-1)*2+1]-0xa0);
    }
   }
}
///**********************************************显示主菜单
void disp_chn (uchar code *chn)
{
  uchar i,j;
    for (j=0;j<4;j++)
	  {for (i=0;i<2;i++)
	   {
       wr_zb(0xf9,i+2,j*16);
       send(chn[j*14+i]);
	   }
	  }
   for (j=0;j<4;j++)
   { for(i=2;i<8;i++)
    {
      wr_zb(0xf0,i,j);
      send(chn[j*14+(i-1)*2]-0xa0);
      send(chn[j*14+(i-1)*2+1]-0xa0);
    }
   }
}


void disitem () ///////////////////------请选择实验项目
{ uchar i,j;
  for (i=0;i<7;i++)
   { wr_zb(0xf0,i+1,0);
     send(tab11[i*2]-0xa0);
	 send(tab11[i*2+1]-0xa0);
   }
   for(i=1;i<3;i++)
   { for(j=0;j<2;j++)
     {wr_zb(0xf9,j+2,i*16);
      send(tab11[i*14+j]);
     }
    }
   for(i=1;i<3;i++)
   {for(j=0;j<6;j++)
      {wr_zb(0xf0,j+2,i);
       send(tab11[i*14+(j+1)*2]-0xa0);
       send(tab11[i*14+(j+1)*2+1]-0xa0);
      }
    }
}
void disdt()         //------------------------动态测试窗体
{uchar i,j;
 for (i=0;i<2;i++)
  { for(j=0;j<2;j++)
    {  wr_zb(0xf0,j+i*6,0);
       send(tab112[i*4+j*2]-0xa0);
       send(tab112[i*4+j*2+1]-0xa0);
	}
  }
}
void dispwy(uchar xnum)    //--------------显speed 、current
{uchar i,bbit,shbit,gbit;
  
  for(i=0;i<7;i++)
  {wr_zb(0xf9,i,1);
   send(tab22[xnum*7+i]);
  }
  if(xnum==0)
  {bbit=sdspeed/100;
   shbit=(sdspeed-bbit*100)/10;
   gbit=sdspeed-bbit*100-shbit*10; 
  }
  else if(xnum==1)
  {bbit=sdlc/100;
  shbit=(sdlc-bbit*100)/10;
   gbit=sdlc-bbit*100-shbit*10;
  }
 
  wr_zb(0xf9,10,1);
   send(tab7[bbit]);
  wr_zb(0xf9,11,1);
   send(tab7[shbit]);
   wr_zb(0xf9,12,1);
   send(tab7[gbit]);
   for(i=0;i<2;i++)
  {wr_zb(0xf9,8+i,1);
   send(tab7[10]);
  }
}
//***-----------------------------------------数字按键处理     *********sw[0]<2!!!!!!还未处理。。。
void digkey(uchar num)
{ if(keychoose==2)
  {sw[gbnum]=num;
  wr_zb(0xf9,gbnum+9,32);
   send(tab7[10]);
   wr_zb(0xf9,gbnum+9,32);
   send(tab7[num]);
   clear_star(gbnum);
   gbnum=gbnum+1;
   if(gbnum>=1)gbnum=1;
   dis_star(gbnum);
   }
   else if(keychoose==3)
   {lc[gblcnum]=num;
  wr_zb(0xf9,gblcnum+9,32);
   send(tab7[10]);
   wr_zb(0xf9,gblcnum+9,32);
   send(tab7[num]);
   clear_star(gblcnum);
   gblcnum=gblcnum+1;
   if(gblcnum>=2)gblcnum=2;
   dis_star(gblcnum);
   }
}

        /*主程序*/
void main(void)
{  float share;
// uchar i,j;
  delay200();         //------延时以使所有芯片同步-------/
  init();
   vbell(2000);
 send(0xf4);    //清屏
 	 //keychoose=1;
	   disp_img(tab9);   //显一图片
 
	while(1)
	{
	 DOG=~DOG;
	 if(keychoose==6 && altra==1)
	 {altra=0;
	  
	  wbit=dig1/1000;
	  qbit=(dig1-wbit*1000)/100;
	  bbit=(dig1-wbit*1000-qbit*100)/10;
	  share=dig1-wbit*1000-qbit*100-bbit*10;
	  shbit=(int)share;
	  gbit=share*10-shbit*10;
      wr_zb1(0xf9,9,0);
       send(tab7[wbit]);
	    wr_zb1(0xf9,10,0);
       send(tab7[qbit]);
	    wr_zb1(0xf9,11,0);
       send(tab7[bbit]);
	    wr_zb1(0xf9,12,0);
       send(tab7[shbit]);
	    wr_zb1(0xf9,14,0);
       send(tab7[gbit]);

	   wbit=dig2/1000;
	  qbit=(dig2-wbit*1000)/100;
	  bbit=(dig2-wbit*1000-qbit*100)/10;
	  share=dig2-wbit*1000-qbit*100-bbit*10;
	  shbit=(int)share;
	  gbit=share*10-shbit*10;
       wr_zb1(0xf9,9,16);
       send(tab7[wbit]);
	    wr_zb1(0xf9,10,16);
       send(tab7[qbit]);
	    wr_zb1(0xf9,11,16);
       send(tab7[bbit]);
	    wr_zb1(0xf9,12,16);
       send(tab7[shbit]);
	    wr_zb1(0xf9,14,16);
       send(tab7[gbit]);

       wbit=analog1/10;
	   share=analog1-wbit*10;
       qbit=(int)share;
	   bbit=share*10-qbit*10;
	   shbit=share*100-qbit*100-bbit*10;
	   gbit=share*1000-qbit*1000-bbit*100-shbit*10;
       wr_zb1(0xf9,9,32);
       send(tab7[wbit]);
	    wr_zb1(0xf9,10,32);
       send(tab7[qbit]);
	    wr_zb1(0xf9,12,32);
       send(tab7[bbit]);
	    wr_zb1(0xf9,13,32);
       send(tab7[shbit]);
	    wr_zb1(0xf9,14,32);
       send(tab7[gbit]);


	    wbit=analog2/10;
	   share=analog2-wbit*10;
       qbit=(int)share;
	   bbit=share*10-qbit*10;
	   shbit=share*100-qbit*100-bbit*10;
	   gbit=share*1000-qbit*1000-bbit*100-shbit*10;
       wr_zb1(0xf9,9,48);
       send(tab7[wbit]);
	    wr_zb1(0xf9,10,48);
       send(tab7[qbit]);
	    wr_zb1(0xf9,12,48);
       send(tab7[bbit]);
	    wr_zb1(0xf9,13,48);
       send(tab7[shbit]);
	    wr_zb1(0xf9,14,48);
       send(tab7[gbit]);

	   xiaoyu=analog2*dig2;
	   if(dig1>0)xiaoyu=xiaoyu/dig1;
	   if(analog1>0)xiaoyu=xiaoyu/analog1;
       bbit=xiaoyu*10;
	   shbit=xiaoyu*100-bbit*10;
	   gbit=xiaoyu*1000-bbit*100-shbit*10;
       wr_zb1(0xf9,20,16);
       send(tab7[bbit]);
	   wr_zb1(0xf9,21,16);
       send(tab7[shbit]);
	   wr_zb1(0xf9,23,16);
       send(tab7[gbit]);


	   
	   if(dig2>0)huaca=dig1/dig2;
	   bbit=huaca/100;
	   shbit=(huaca-bbit*100)/10;
	   gbit=huaca-bbit*100-shbit*10;
       qbit=(huaca-bbit*100-shbit*10-gbit)*10;
	   wr_zb1(0xf9,19,48);
       send(tab7[bbit]);
       wr_zb1(0xf9,20,48);
       send(tab7[shbit]);
	   wr_zb1(0xf9,21,48);
       send(tab7[gbit]);
	   wr_zb1(0xf9,23,48);
       send(tab7[qbit]);
	 }	
 	 else if(keychoose==7 && altra==1 && pause==0)
	 { altra=0;
       share=48*analog1;     //假定ANA<=1
      wbit=(int)share;
      wbit=64-wbit;
	  share=48*dig1/300;     //假定dig1<=300
	  bbit=(int)share;
	  bbit=64-bbit;
	   send(0xf7);
      wr_zb1(0xf2,191,wbit);
      wr_zb1(0xf2,191,bbit);
      disdt();
      dig1=dig1*10;
	   wbit=dig1/1000;
	  qbit=(dig1-wbit*1000)/100;
	  bbit=(dig1-wbit*1000-qbit*100)/10;
	  share=dig1-wbit*1000-qbit*100-bbit*10;
	  shbit=(int)share;
	  gbit=share*10-shbit*10;
      wr_zb1(0xf9,4,0);
       send(tab7[wbit]);
	    wr_zb1(0xf9,5,0);
       send(tab7[qbit]);
	    wr_zb1(0xf9,6,0);
       send(tab7[bbit]);
	    wr_zb1(0xf9,7,0);
       send(tab7[shbit]);
	   wr_zb1(0xf9,8,0);
       send(tab7[11]);
	    wr_zb1(0xf9,9,0);
       send(tab7[gbit]);

	    wbit=analog1/10;
	   share=analog1-wbit*10;
       qbit=(int)share;
	   bbit=share*10-qbit*10;
	   shbit=share*100-qbit*100-bbit*10;
	   gbit=share*1000-qbit*1000-bbit*100-shbit*10;
       wr_zb1(0xf9,17,0);
       send(tab7[wbit]);
	    wr_zb1(0xf9,18,0);
       send(tab7[qbit]);
	   wr_zb1(0xf9,19,0);
       send(tab7[11]);
	    wr_zb1(0xf9,20,0);
       send(tab7[bbit]);
	    wr_zb1(0xf9,21,0);
       send(tab7[shbit]);
	    wr_zb1(0xf9,22,0);
       send(tab7[gbit]);


	 }
	 if(keydd==1)
	 {keydd=0;
      EA=0;
	 switch(keydownnum)
	 {  
	    case 1:
	    {send(0xf4);
		  disp_speed(tab3);
          dis_star(0);
		 gbnum=0;
		}break;
		case 2:
		{send(0xf4);
		  disp_lc(tab2);
          dis_star(1);
		 gblcnum=1;
		}break;
		case 3:
		{ send(0xf4);
         disitem();
		 dismark(connum+1);
		}break;
		case 4:
		{send(0xf4);
        disp_cz(tab4,3);
		dismark(bellnum+1);
		}break;
		case 5:
		{send(0xf4);
         disp_chn(tab1);
		 dismark(menunum);
		}break;
		case 6:
		{ send(0xf4);
         dis_test();
		}break;
		case 7:
		{send(0xf4);
        disdt();
		}break;
		case 8:       //数字1
		{digkey(1);
		}break;
			case 9:   //数字2
		{digkey(2);
		}break;
			case 10:  //数字3
		{digkey(3);
		}break;
			case 11:  //数字4
		{digkey(4);
		}break;
			case 12:  //数字5
		{digkey(5);
		}break;
			case 13:  //数字6
		{digkey(6);
		}break;
			case 14:  //数字7
		{digkey(7);
		}break;
			case 15:  //数字8
		{digkey(8);
		}break;
			case 16:  //数字9
		{digkey(9);
		}break;
		case 17:      //数字0
		{digkey(0);
		}break;
			case 18://MENU
		{ send(0xf4);
        disp_chn(tab1);
		dismark(menunum);
		}break;
		case 19:   //<
		{if(keychoose==2)
		   {clear_star(gbnum);
		   if(gbnum>0)gbnum=gbnum-1;
		   
		   dis_star(gbnum);
		   }
		   else if(keychoose==3)
		   {clear_star(gblcnum);
		   if(gblcnum>0)gblcnum=gblcnum-1;
		   
		   dis_star(gblcnum);
		   }
		}break;
        case 20:   //>
		{if(keychoose==2)
		   {clear_star(gbnum);
		   gbnum=gbnum+1;
		   if(gbnum>=1)gbnum=1;
		   dis_star(gbnum);
		   }
		   else if(keychoose==3)
		   {clear_star(gblcnum);
		   gblcnum=gblcnum+1;
		   if(gblcnum>=2)gblcnum=2;
		   dis_star(gblcnum);
		   }
		}break;
		case 21:   //∧
		{ if(keychoose==1)
	    {clearmark(menunum);
		 if(menunum>0)menunum=menunum-1;
		 if(menunum<=0)menunum=0;
         dismark(menunum);
        }
		else if(keychoose==4)
		{clearmark(2);
         connum=0;
         dismark(1);
		}
		
        else if(keychoose==5)
         {clearmark(2);
         bellnum=0;
         dismark(1);
         }
		  if(specur==0 && (keychoose==6 || keychoose==7))
		 { if(sdspeed<80)sdspeed++;
		    send(0xf4);
		   dispwy(0);
		   delay200();
		   SERCONTROL=1;
		   sendspeed();
		   SERCONTROL=0;
		   if(keychoose==6)dis_test();
		   else if(keychoose==7)disdt();
		 }
		 else if(specur==1 && (keychoose==6 || keychoose==7))
		 { if(sdlc<100)sdlc++;
		   send(0xf4);
		   dispwy(1);
		   delay200();
		   SERCONTROL=1;
		   sendlc();
		   SERCONTROL=0;
		  if(keychoose==6)dis_test();
		   else if(keychoose==7)disdt();
		 }
		}break;
		case 22:   //∨
		{if(keychoose==1)
	    {clearmark(menunum);
		 menunum=menunum+1;
		 if(menunum>=3)menunum=3;
         dismark(menunum);
        }
		else if(keychoose==4)
		{clearmark(1);

⌨️ 快捷键说明

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