标准程序
- 格式:doc
- 大小:51.50 KB
- 文档页数:5
一、矩阵键盘void scan(){static ui n;key=16;h0=0;h1=0;h2=0;h3=0;l0=1;l1=1;l2=1;l3=1;if(l0==0||l1==0||l2==0||l3==0){n++;if(n==200){h0=0;h1=1;h2=1;h3=1;l0=1;l1=1;l2=1;l3=1;if(l0==0)key=0;if(l1==0)key=1;if(l2==0)key=2;if(l3==0)key=3;h0=1;h1=0;h2=1;h3=1;l0=1;l1=1;l2=1;l3=1;if(l0==0)key=4;if(l1==0)key=5;if(l2==0)key=6;if(l3==0)key=7;h0=1;h1=1;h2=0;h3=1;l0=1;l1=1;l2=1;l3=1;if(l0==0)key=8;if(l1==0)key=9;if(l2==0)key=10;if(l3==0)key=11;h0=1;h1=1;h2=1;h3=0;l0=1;l1=1;l2=1;l3=1;if(l0==0)key=12;if(l1==0)key=13;if(l2==0)key=14;if(l3==0)key=15;}}else n=0;} 二、数码管#define dm smcs1=0;smwr=0;smwr=1;smcs1=1 #define wm smcs2=0;smwr=0;smwr=1;smcs2=1 uc w[8],m[8];uc code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92, 0x82,0xf8,0x80,0x90,0xff};void smdisp(){static uc i,px=0xfe;static ui n;n++;if(n==500)n=0;P0=n<=250?seg[w[i]:m[i]];dm;P0=px;wm;px=_crol_(px,1);i++;if(i==8)i=0;}三、1602液晶void write(uc m,uc d){rs=m;rw=0;P0=d;e=1;e=0;}void init1602(){write(0,0x38); delay(1000);write(0,0x38); delay(1000);write(0,0x38); delay(1000);write(0,0x0c); delay(1000);write(0,0x06); delay(1000);write(0,0x01); delay(1000);}/**** 指定位置显示字符串*****/void lcdstr(uc *ad,uc d){ write(0,0x80+d);while(*ad){write(1,*ad++);}}四、12864图形液晶void write(uc m,d){rs=m;rw=0;P0=d;if(m==0)delay(20);e=1;if(m==0)delay(20);e=0;}void setxyz(uc m,uc d){if(m=='x')d+=0xb8;else d+=0x40;write(0,d);}void selscr(uc m){cs1=!m;cs2=m;}void clear(){uc i,j;for(i=0;i<8;i++){setxyz('x',i);setxyz('y',0);for(j=0;j<64;j++)write(1,0x00);}}void dispw(uc *ad,x,y,d,f){uc i,j;TR0=0;selscr(y>=64);for(i=0;i<2;i++){setxyz('x',i+x);setxyz('y',y>=64?y-64:y);for(j=0;j<16/d;j++)write(1,f?~*ad++:*ad++);}TR0=1;delay(200);} void dispw(uc *ad,x,y,d,f) //双屏任意位置{uc i,j,yy;for(i=0;i<2;i++){yy=y;for(j=0;j<16/d;j++){sel(yy>=64);set('x',x+i);set('y',yy>=64?yy-64:yy);write(1,f?~*ad++:*ad++);yy++;}}}void disps(uc * ad,n,x,y,f1, f2){uc i;for(i=0;i<n;i++){dispw(ad,x,y,1,i>=f1 && i<=f2);y+=16;ad+=32;}}uc s[8],wz;void dispn(uc x,y,n,f){uc i;for(i=0;i<n;i++){dispw(sz[s[i]],x,y,2,wz==i && f);y+=8;if(i==1){dispw(sz[10],x,y,2,0);y+=8;} }}uc read(){uc d;P0=0xff;rs=1;rw=1;e=1;d=P0;e=0;P0=0xff;rs=1;rw=1;e=1;d=P0;e=0;return d;}void point(uc x,y){uc d;sel(y>=64);set('x',7-x/8);set('y',y>=64?y-64:y);d=read();set('x',7-x/8);set('y',y>=64?y-64:y);write(1,d|0x80>>x%8);}void line(uc x1,y1,x2,y2){uc i,zl;if((x2-x1)>(y2-y1)){zl=(x2-x1)/(y2-y1);for(i=x1;i<x2;i+=zl,y1++)point(i,y1);}else{zl=(y2-y1)/(x2-x1);for(i=y1;i<y2;i+=zl,x1++)point(x1,i);}}void sp_line(x,y1,y2){if(y1<y2) while(y1<y2){ p oint(x,y1);y1++;}else while(y1>y2){ p oint(x,y1);y1--;}}void cz_line(y,x1,x2){uc i;for(i=x1;i>=x2;i--){point(i,y);delay(10000);} } 五、步进电机void djhl(){ui i=2755;dir=1;while(1){cp=~cp;delay(15);if(rl==1){delay(200);if(rl==1)break;}}dir=0;while(i--) {cp=~cp; delay(15);}}void go_to(ui n){n=2755*n;while(n--){cp=~cp;delay(20); }}六、ADCvoid adc(){TR0=0;P0=0XFF;adccs=0;adcwr=0;adcwr=1;adcwr=0;delay(2); adcval=P0;adccs=1;TR0=1;}七、机械手uc at1(){if(!gw1){ delay(2000);if(!gw1)return 1; }return 0;}uc at2(){if(!gw1){ delay(2000);if(!gw1)return 1; }return 0;}uc at3(){if(!gw3){ delay(2000);if(!gw1)return 1; }return 0;}uc atx(){if(!xw){delay(2000);if(!xw)return 1;}return 0;}uc ats(){if(!sw){delay(2000);if(!sw)return 1;}return 0;}uc is_gw1yl(){if(!gw1yl){delay(2000);if(!gw1yl)return 1;}return 0;}uc is_gw2yl(){if(!gw2yl){delay(2000);if(!gw2yl)return 1;}return 0;}void ud(uc m){if(at1() || at2()){if(m==0){sj=0;delay(60000);}else {sj=1;delay(60000);delay(60000);} }} void mv(uc m,d){if(m==1){zy=0;yy=1;}if(m==0){zy=1;yy=0;}while(!(d==1?at1():d==2?at2():at3())){}zy=1;yy=1;}void hd(uc m){if(m==1){sjj=0;sfs=1;delay(20000);}else {sjj=1;sfs=0;delay(20000);}}八、串口void init_s(){TMOD=0x21;SM0=0;SM1=1;REN=1; P CON=0;TH1=0xfd; TL1=0xfd;ES=1;EA=1;TR1=1;}void send(unsigned char dat){SBUF=dat; while(TI==0);TI=0;}void serial() interrupt 4{uc x;if(RI){x=SBUF;//-0x30; RI=0;}}九、1820温度void init1820(){dq=1;delay(100);dq=0;delay(100); d q=1;delay(100);}void wchar(uc d){uc i;for(i=0;i<8;i++){dq=0;1);pc(7,1);dq=0x01&d;delay(5);dq=1;d>>=1;}}uc rchar(){uc i=0,d=0;for (i=0;i<8;i++){dq = 0;d>>=1;dq = 1;if(dq) d|=0x80;delay(5);}return(d);}void getwd(){uc h,l;init1820();wchar(0xcc);wchar(0x44);delay(20);init1820();wchar(0xcc);wchar(0xbe);l=rchar();h=rchar();wdval=(h*256+l)*0.0625;}十、8255命令方式控制PCV oid pc(uc n,d){Cs8255=0;P0=n<<1|d;Wr8255=0;wr8255=1;cs8255=1;}//cs=0;P0=0x80;wr=0;wr=1;cs=1;//pc(0,1);pc(1,1);pc(2,1);pc(3,1);pc(4,1);pc(5,1);pc(6,。