开发工具:
文件大小: 10mb
下载次数: 0
上传时间: 2013-06-04
详细说明:
很不错的智能小车设计开发资料哦 部分代码 #include #include #define uchar unsigned char #define uint unsigned int #define SYSCLK 22118400 sfr PH0=0xFA; sfr PH1=0xFB; sbit IN1=P3^0; sbit IN2=P3^1; sbit IN3=P3^2; sbit IN4=P3^3; sbit S1=P2^0; sbit S2=P2^1; sbit S3=P2^2; sbit S4=P2^3; sbit S5=P2^4; sbit S6=P2^5; uchar code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; uint num,temp,left,right,t,r,ge,shi,bai,qian; void SYSCLK_init() //时钟初始化 { int i; OSCXCN=0x67; for(i=0;i<256;i++); while(!(OSCXCN&0x80)); OSCICN=0x88; } void IO_init() //IO口初始化 { XBR0=0x10; XBR1=0x00; XBR2=0x40; P0MDOUT=0xff; P3MDOUT=0xff; } void PCA_int_init() //PCA0初始化 { PCA0MD=0x08; //使用系统时钟 禁止中断 PCA0CPM0=0xc2; PCA0CPM1=0xc2; PCA0CN=0x40; PCA0L=0x00; PCA0H=0x00; PCA0CPL0=0x00; //设置PCA0CP0脉冲宽度 PCA0CPH0=240; PCA0CPL1=0x00; //设置PCA0CP1脉冲宽度 PCA0CPH1=240; } void T_init() //定时器初始化 { IE=0x82; TMOD=0x01; TH0=(65536-18432)/256; TL0=(65536-18432)%256; TR0=0; } void delay1ms(uint z) //延时函数 { uint x,y,i; for(y=z;y>0;y--) { for(x=0;x<10;x++) for(i=0;i<221;i++); } } void control() //方向控制 { num=P2; num=num&0x3f; switch(num) { case 0x0c: //001100 011110 111111 case 0x1e: case 0x3f: { PH0=0xa0; //左路电机 PH1=0xa0; //右路电机 } break; case 0x0e: //001110 001111 011111 case 0x0f: case 0x1f: { PH0=0xa0; PH1=0x00; } break; case 0x06: //000110 000111 case 0x07: { PH0=0xa0; PH1=0x00; } break; case 0x01: //000011 000001 case 0x03: { PH0=0xb8; PH1=0x00; } break; case 0x1c: //011100 111100 111110 case 0x3c: case 0x3e: { PH0=0x90; PH1=0xa0; } break; case 0x18: //011000 111000 case 0x38: { PH0=0x80; PH1=0xa0; } break; case 0x30: //110000 100000 case 0x20: { PH0=0x60; PH1=0xb8; } break; case 0x00: //000000 { if(PH0PH1) { PH0=0x70; PH1=0x00; } } break; } } void display(uchar qian,uchar bai,uchar shi,uchar ge) //数码管显示函数 { if(qian!=0) { P4=0xef; P7=table[qian]; delay1ms(2); } if(qian!=0||bai!=0) { P4=0xdf; P7=table[bai]; delay1ms(2); } if(qian!=0||bai!=0||shi!=0) { P4=0xbf; P7=table[shi]; delay1ms(2); } P4=0x7f; P7=table[ge]; delay1ms(2); } void main() //主函数 { WDTCN=0xde; //关闭看门狗 WDTCN=0xad; SYSCLK_init(); IO_init(); PCA_int_init(); T_init(); IN1=0; IN2=1; IN3=0; IN4=1; TR0=1; //打开定时器 while(1) { control(); display(qian,bai,shi,ge); if(temp==1) { temp=0; ge=shi=bai=qian=0; display(qian,bai,shi,ge); for(r=0;r<5;r++) { P6=0x00; delay1ms(1000); P6=0xff; delay1ms(1000); } IN2=1; IN4=1; TR0=1; } } } void timer0() interrupt 1 { TH0=(65536-18432)/256; TL0=(65536-18432)%256; t++; if(t==100) { t=0; ge++; if(ge==10) //秒计数 { ge=0; shi++; } if(shi==10) { shi=0; bai++; } if(bai==10) { bai=0; qian++; } if(qian==10) ge=shi=bai=qian=0; } if(shi==5) { IN2=0; IN4=0; TR0=0; temp=1; } } ...展开收缩
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.