uchar address;
wr_lcd (comm,0x30); switch(a) {
case 0: address=0x80+b;break; case 1: address=0x90+b;break; case 2: address=0x88+b;break; case 3: address=0x98+b;break; default:address = 0x80 + b; }
wr_lcd (comm,address); while (*s) {
wr_lcd( dat, *s ); s++; } }
/*--------------显示点阵2no----------------*/ void lat_disp (uchar data1,uchar data2) {
uchar i,j,k,x; x=x1;
for(k=0;k<2;k++) {
for(j=0;j<16;j++) {
for(i=0;i<8;i++) {
wr_lcd (comm,0x34); wr_lcd (comm,y+j*2); wr_lcd (comm,x+i); wr_lcd (comm,0x30); wr_lcd (dat,data1); wr_lcd (dat,data1); }
for(i=0;i<8;i++) {
wr_lcd (comm,0x34); wr_lcd (comm,y+j*2+1); wr_lcd (comm,x+i); wr_lcd (comm,0x30);
36
wr_lcd (dat,data2); wr_lcd (dat,data2); } } x=x2; }
wr_lcd (comm,0x36); }
/*-----------------------------------------------*/
//当data1=0xff,data2=0xff时,在x0,y0处反白显示16xl*yl. //当data1=0xff,data2=0x00时,在x0,y0处前半反白显示8xl*yl. //当data1=0x00,data2=0xff时,在x0,y0处后半反白显示8xl*yl.
//x0为行 y0为起始列 x1为一行反白的字数 y1为每行内反白的高度
void con_disp (uchar data1,uchar data2,uchar x0,uchar y0,uchar xl,uchar yl) { uchar i,j; uchar aa,bb; switch(x0) {
case 0:aa=0x80+y0;bb=0x80;break; case 1:aa=0x90+y0;bb=0x90;break; case 2:aa=0x88+y0;bb=0x80;break; case 3:aa=0x98+y0;bb=0x90;break; default:break; }
for(j=0;j for(i=0;i wr_lcd (comm,0x34); wr_lcd (comm,bb+j); wr_lcd (comm,aa+i); wr_lcd (comm,0x30); wr_lcd (dat,data1); wr_lcd (dat,data2); } } wr_lcd (comm,0x36); } /*--------------------------------------------*/ //当data1=0xff,data2=0x00时,在x0,y0处显示前半光标. //当data1=0x00,data2=0xff时,在x0,y0处显示后半光标. 37 //当data1=0x00,data2=0x00时,在x0,y0处不显示光标. //y0=0x8f or y0=0x9f. void cur_disp(uchar data1,uchar data2,uchar x0,uchar y0) { wr_lcd (comm,0x34); wr_lcd (comm,y0); wr_lcd (comm,x0); wr_lcd (comm,0x30); wr_lcd (dat,data1); wr_lcd (dat,data2); wr_lcd (comm,0x36); } /*--------------清DDRAM------------------*/ void clrram (void) { wr_lcd (comm,0x30); wr_lcd (comm,0x01); delay_us (1500); //串行通信设1500的延时 } void LCD(void) { chn_disp(0,0,\ chn_disp(1,0,\ chn_disp(2,0,\ chn_disp(3,0,\} /*void time0(void) { TH0=0xBD; TL0=0xc0; ET0=1; TMOD =0X01; TR0=1; EA=1; }*/ void shijian_us() interrupt 1 { //TH0=0xBD; 38 //TL0=0xc0; js++; if(js==16) { qqs++; tab1[6]=qqs/100+0x30; tab1[7]=(qqs0)/10+0x30; tab1[8]=qqs+0x30; chn_disp(3,0,tab1); TH0=0xBD; TL0=0xc0; js=0; } } /* void delay_1(uint uu) { uint nn,wt,mm; for(nn=0;nn { for(mm=0;mm<1000;mm++) dds++; wt=dds; tab1[2]=wt+0x30; } }*/ void main() { P0=0XFF; P1=0XFF; P2=0XFF; P3=0XFF; ET0=1; TMOD =0X01; //TR0=1; EA=1; init_lcd (); clrram(); delay_us(20); chn_disp(0,2,\欢迎使用\ chn_disp(1,1,\自动控制系统\ chn_disp(2,0,\初始化中 请稍后\ delay_us(1000); 39 chn_disp(2,0,\开始工作 \ // time0(); while(1) { if(P1_0==0) //模式选择 { P2_2=1; P2_3=1; P0_1=1;P0_0=1; ms=ms+1; if(ms==3) ms=1; while(P1_0==0); LCD(); } if(ms==1) // { chn_disp(0,0,\手动\ if(P1_1==0) {chn_disp(1,3,\前进\ if(tts==1) { if(P1_5==0) { P2_2=1;P2_3=0;P0_0=0;P0_1=1; } // if(P1_4==0) {P2_2=1; P2_3=1; P0_1=1;P0_0=1;} // } if(P1_2==0) { chn_disp(1,3,\后退\ if(tts==2) { if(P1_5==0) {P2_2=0; P2_3=1;P0_1=0;P0_0=1;} // if(P1_3==0) {P2_2=1;P2_3=1; P0_0=1;P0_1=1;} // } } if(ms==2) // { chn_disp(0,0,\自动\ if(P1_6==0) { chn_disp(1,2,\单程清洗\ if(ns==1) { if(P1_5==0) {P2_2=1;P2_3=0; P0_1=0;P0_0=1; } if(P1_4==0) {P2_2=1;P2_3=1;P0_1=1;P0_0=1;} } if(P1_7==0) {chn_disp(1,2,\双程清洗\ if(ns==2) { if(P1_5==0) {P2_2=1;P2_3=0;P0_1=0;P0_0=1; } 压力 if(P1_4==0) {P2_2=0;P2_3=1;P0_1=1;P0_0=0; } 40 手动模式 压力 后限开关 压力 前限开关 自动模式 单程清洗 //压力 // 双程清洗//