暑期实习程序终结版(程序版).doc_第1页
暑期实习程序终结版(程序版).doc_第2页
暑期实习程序终结版(程序版).doc_第3页
暑期实习程序终结版(程序版).doc_第4页
暑期实习程序终结版(程序版).doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include #include #define uchar unsigned char #define uint unsigned int #define LED1 XBYTE0x0000 #define LED2 XBYTE0x2000 #define LED3 XBYTE0x4000 #define LED4 XBYTE0x6000 #define LED5 XBYTE0x8000 #define motor XBYTE0xA000 /电机 #define XIWE XBYTE0xE000 uchar key=0,num3=0,num4=0,num5=1,num10=0,num11=0; uint slant_x=0,slant_y=0,i=0; uchar code table16= 0x7E,0x60,0x57,0x75, /0 1 2 3 0x69,0x3D,0x3F,0x70, /4 5 6 7 0x7F,0x7D,0x7B,0x2F, /8 9 A b 0x1E,0x67,0x1F,0x1B, ; uchar code y_forward= 0x90,0xb0,0xa0, 0xe0,0xc0,0xd0, ; uchar code y_inversion= 0xd0,0xc0,0xe0, 0xa0,0xb0,0x90, ; uchar code x_forward= 0x09,0x0b,0x0a, 0x0e,0x0c,0x0d, ; uchar code x_inversion= 0x0d,0x0c,0x0e, 0x0a,0x0b,0x09, ; void delay(uint z); /延时函数 void x_forward(); /x轴正转函数 void x_inversion(); /x轴反转函数 void y_forward(); /y轴正转函数 void y_inversion(); /y轴反转函数 void keyscan(); /键盘扫描函数 void keyscan1(); void keyscan2(); void driver(); /驱动函数 void slant_line_1(); /斜线函数 void slant_line_2(); void slant_line_3(); void slant_line_4(); void round_line_1(); /圆弧函数 void round_line_2(); void round_line_3(); void round_line_4(); void motor_control(); /电机控制函数 void circle(); void exter1() interrupt 2 i=60000;void interrupt_init()EX1 = 1; /INT1中断允许IT1 = 1; /INT1为下降沿触发EA = 1; /开全局中断 void main() interrupt_init(); while(1) keyscan(); motor_control(); void keyscan() uchar temp; P1=0xfe; temp=P1; temp=temp&0xf8; if(temp!=0xf8) delay(10); temp=P1; temp=temp&0xf8; if(temp!=0xf8) temp=P1; switch(temp) case 0x7e: key=4; break; case 0xbe: key=3; break; case 0xde: key=2; break; case 0xee: key=1; break; while(temp!=0xf8) temp=P1; temp=temp&0xf8; LED1=tablekey; P1=0xfd; temp=P1; temp=temp&0xf8; if(temp!=0xf8) delay(10); temp=P1; temp=temp&0xf8; if(temp!=0xf8) temp=P1; switch(temp) case 0x7d: key=9; slant_x=0; slant_y=0; break; case 0xbd: key=8; break; case 0xdd: key=7; break; case 0xed: key=6; break; case 0xf5: key=5; break; while(temp!=0xf8) temp=P1; temp=temp&0xf8; LED1=tablekey; P1=0xfb; temp=P1; temp=temp&0xf8; if(temp!=0xf8) delay(10); temp=P1; temp=temp&0xf8; if(temp!=0xf8) temp=P1; switch(temp) case 0x7b: key=14; num3=0; num4=0; break; case 0xbb: key=13; num4=num4+1; break; case 0xdb: key=12; num3=num3+1; break; case 0xeb: key=11; num5=0; break; case 0xf3: key=10; num5=num5+1; break; while(temp!=0xf8) temp=P1; temp=temp&0xf8; LED1=tablenum5; LED4=tablenum3; LED5=tablenum4; void keyscan1() uint num6=0,num7=0,num8=0,num9=0; uchar temp; while(num10=0) P1=0xfd; temp=P1; temp=temp&0xf8; if(temp!=0xf8) delay(10); temp=P1; temp=temp&0xf8; if(temp!=0xf8) temp=P1; switch(temp) case 0x7d: key=9; num6=0; num7=0; num8=0; num9=0; break; case 0xbd: num9=num9-1; break; case 0xdd: num8=num8-1; break; case 0xed: num7=num7-1; break; case 0xf5: num6=num6-1; break; while(temp!=0xf8) temp=P1; temp=temp&0xf8; LED2=tablenum6;LED3=tablenum7; LED4=tablenum8;LED5=tablenum9; P1=0xfb; temp=P1; temp=temp&0xf8; if(temp!=0xf8) delay(10); temp=P1; temp=temp&0xf8; if(temp!=0xf8) temp=P1; switch(temp) case 0x7b: num10=num10+1; break; case 0xbb: num9=num9+1; break; case 0xdb: num8=num8+1; break; case 0xeb: num7=num7+1; break; case 0xf3: num6=num6+1; break; while(temp!=0xf8) temp=P1; temp=temp&0xf8; LED2=tablenum6;LED3=tablenum7; LED4=tablenum8;LED5=tablenum9; slant_x= num6*1000+num7*100+num8*10+num9; key=0;void keyscan2() uint num6=0,num7=0,num8=0,num9=0; uchar temp; while(num11=0) P1=0xfd; temp=P1; temp=temp&0xf8; if(temp!=0xf8) delay(10); temp=P1; temp=temp&0xf8; if(temp!=0xf8) temp=P1; switch(temp) case 0x7d: num6=0; num7=0; num8=0; num9=0; break; case 0xbd: num9=num9-1; break; case 0xdd: num8=num8-1; break; case 0xed: num7=num7-1; break; case 0xf5: num6=num6-1; break; while(temp!=0xf8) temp=P1; temp=temp&0xf8; LED2=tablenum6;LED3=tablenum7; LED4=tablenum8;LED5=tablenum9; P1=0xfb; temp=P1; temp=temp&0xf8; if(temp!=0xf8) delay(10); temp=P1; temp=temp&0xf8; if(temp!=0xf8) temp=P1; switch(temp) case 0x7b: num11=num11+1; break; case 0xbb: num9=num9+1; break; case 0xdb: num8=num8+1; break; case 0xeb: num7=num7+1; break; case 0xf3: num6=num6+1; break; while(temp!=0xf8) temp=P1; temp=temp&0xf8; LED2=tablenum6; LED3=tablenum7; LED4=tablenum8; LED5=tablenum9; slant_y= num6*1000+num7*100+num8*10+num9; key=0; void delay(uint z) /延时 1*Z msuint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/*电机x,y轴正反转程序*/void x_forward() uint j; for(i=0;i6;i+) motor=x_forwardi; for(j=0;j=num3;j+) delay(1) ; void x_inversion() uint j; for(i=0;i6;i+) motor=x_inversioni; for(j=0;j=num3;j+) delay(1) ; void y_forward() uint j; for(i=0;i6;i+) motor=y_forwardi; for(j=0;j=num4;j+) delay(1) ; void y_inversion() uint j; for(i=0;i6;i+) motor=y_inversioni; for(j=0;j=num4;j+) delay(1) ; void slant_line_1() /斜线插补 uint x=0,y=0; int fm=0; x=slant_x; y=slant_y; for(i=0;i=0) x_forward(); delay(2); fm=fm-y; if(fm0) y_forward(); delay(2); fm=fm+x; key=0; void slant_line_2() /斜线插补 uint x=0,y=0; int fm=0; x=slant_x; y=slant_y; for(i=0;i=0) x_inversion(); delay(2); fm=fm-y; if(fm0) y_forward(); delay(2); fm=fm+x; key=0; void slant_line_3() /斜线插补 uint x=0,y=0; int fm=0; x=slant_x; y=slant_y; for(i=0;i=0) x_inversion(); delay(2); fm=fm-y; if(fm0) y_inversion(); delay(2); fm=fm+x; key=0; void slant_line_4() /斜线插补 uint x=0,y=0; int fm=0; x=slant_x; y=slant_y; for(i=0;i=0) x_forward(); delay(2); fm=fm-y; if(fm0) y_inversion(); delay(2); fm=fm+x; key=0; void round_line_1()/圆弧插补 int x=0,y=0; int fm=0; y=slant_y; for(i=0;i=0) y_inversion(); fm=fm-2*y+1; y=y-4; if(fm0) x_forward(); fm=fm+2*x+1; x=x+4; if(key!=1) key=0; void round_line_2()/圆弧插补 int x=0,y=0; int fm=0; x=slant_x; for(i=0;i=0) x_forward(); fm=fm-2*x+1; x=x-4; if(fm0) y_forward(); fm=fm+2*y+1; y=y+4; if(key!=1) key=0; void round_line_3()/圆弧插补 int x=0,y=0; int fm=0; y=slant_y; for(i=0;i=0) y_forward(); fm=fm-2*y+1; y=y-4; if(fm0) x_inversion(); fm=fm+2*x+1; x=x+4; if(key!=1) key=0; void round_line_4()/圆弧插补 int x=0,y=0; int fm=0; x=slant_x; for(i=0;i=0) x_inversion(); fm=fm-2*x+1; x=x-4; if(fm0) y_inversion(); fm=fm+2*y+1; y=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论