| //=========================几个功能常用函数=================================
			
				void lcd_cls()         { lcd_B(0, 0x01+0, 2);  } //清屏
			
				void lcd_cur0()        { lcd_B(0, 0x0C+0, 0);  } //隐藏光标
			
				void lcd_goto1(uchar x){ lcd_B(0, 0x80+x, 0);  } //设置DDRAM地址,第1行x位
			
				void lcd_goto2(uchar x){ lcd_B(0, 0xC0+x, 0);  } //设置DDRAM地址,第2行x位
			
				void lcd_putc(uchar d) { lcd_B(1, 0x00+d, 0);  } //字符输出
			
				void lcd_puts(uchar *s){ for(; *s; s++) lcd_B(1,*s,0); } //字串输出
			
				//==============字符显示函数====================
			
				#define digW 4 //数字显示位数宏
			
				void lcd_puti(long a,char w){ //定宽显示正整数
			
				  char i=0, s[10]={32,32,32,32,32,32,32,32,32,32};
			
				  if(a<0) { a=-a; lcd_puts("-"); }
			
				  else    lcd_puts(" ");
			
				  do{
			
				   s[i++] = a%10+48;
			
				   a /= 10;
			
				  }while(a);
			
				  for(;w;w--) lcd_putc(s[w-1]);
			
				}
			
				void lcd_putf(float a,char n,char w){ //浮点输出,n是保留小数的位数,w是数字宽度
			
				char i,g,fi=0;
			
				long b,c=1;
			
				if(a<0) { lcd_putc('-'); a = -a; }
			
				else    { lcd_putc(' '); }
			
				for(i=0;i<n;i++) a *= 10;
			
				for(i=1;i<w;i++) c *= 10;
			
				b = a;
			
				for(i=0;i<w;i++){
			
				  g = b/c;
			
				  b -= g*c;
			
				  c /= 10;
			
				  if(g>9||g<0) g='*'-48;
			
				  if(i == w-n ) lcd_putc('.');
			
				  if(!g && !fi && i<w-n-1) { lcd_putc(' '); continue; }
			
				  lcd_putc(g+48);
			
				  fi = 1;
			
				}
			
				if(!n) lcd_putc(' '); //无小数点的补足显示宽度
			
				}
			
				 
			
				//==========================================================================
			
				//===============================延时函数===================================
			
				void delay(uint loop) { uint i; for(i=0;i<loop;i++); } //延时函数
			
				void delay2(uint k)   { for(;k>0;k--) delay(10000);  } //长延时,k=100大约对应1秒
			
				 
			
				 
			
				//==========================================================================
			
				//==================================EEPROW偏程==============================
			
				sfr IAP_data  = 0xC2;
			
				sfr IAP_addrH = 0xC3;
			
				sfr IAP_addrL = 0xC4;
			
				sfr IAP_cmd   = 0xC5;
			
				sfr IAP_trig  = 0xC6;
			
				sfr IAP_contr = 0xC7;
			
				/********************
			
				写字节时,可以将原有数据中的1改为0,无法将0改为1,只能使用擦除命令将0改为1
			
				应注意,擦除命令会将整个扇区擦除
			
				*********************/
			
				int eepEn = 0;
			
				void saEEP(){ //触发并EEP保护
			
				if(eepEn==12345) IAP_trig = 0x5A;  //先送5A
			
				if(eepEn==12345) IAP_trig = 0xA5;  //先送5A再送A5立即触发
			
				IAP_cmd = 0;      //关闭令,保护
			
				IAP_contr = 0;    //关EEPROM,保护  (责任编辑:admin) |