智能车走迷宫c语言程序,基于51单片机的智能迷宫小车设计 含PCB原理图 源程序... |
您所在的位置:网站首页 › 迷宫原理 › 智能车走迷宫c语言程序,基于51单片机的智能迷宫小车设计 含PCB原理图 源程序... |
#include #include #include #include #include #define uchar unsigned char //无符号字符型占用一个字节 范围0~255, #define uint unsigned int /*无符号整型占用二个字节 范围0~65535*/ #define dataPort P1 uchar bianma1; //编码计数 uint yejinjishu=0; //液晶计数 uchar wang=1; uchar guo=1; uchar a1=0,a2=0,a3=0,a4=0; //小车方向判断 uchar b1=0,b2=0,b3=0,b4=0; //电机操作初始化 uchar i=0,j=0; /* 中断计数器 */ uchar m1=0; /* 电机1速度值 */ uchar m2=0; /* 电机2速度值 */ sbit s1=P0^0; /* L298的Input 1 */ sbit s2=P0^1; /* L298的Input 2 */ sbit s3=P0^2; /* L298的Input 3 */ sbit s4=P0^3; /* L298的Input 4 */ sbit en1=P0^4; /* L298的Enable A */ sbit en2=P0^5; /* L298的Enable B */ //寻线 红外接收头 初始化 sbit P2_2=P3^1; sbit P2_3=P2^3; sbit P2_4=P2^4; sbit P2_5=P2^5; sbit P2_6=P2^6; sbit P2_7=P2^7; //按键初始化 sbit markkey=P2^0; sbit logokey=P2^1; uchar mark=0; //选线while 标志 uchar logo=0; //最佳路线行走标记 unsigned char idata road[30]; //转向数组 unsigned char code aa[10][4]={"LBL","LBA","ABL","ABA","ABR","RBA","RBR","RBL","LBR"};//数组无需改变 code unsigned char code a[10][2]={"A","R","R","B","L","L","A","B","B"}; unsigned char idata *p; //地址寄存器 用于字符串操作 //unsigned char idata cun24c02[15];//ram允许情况可以无限添加 记忆数组 // 函数初始化 void KEY(); void line(); void stop(); void youlun(); void zuolun(); void zhizou(); void zhizou1(); void zhizou2(); void ISD1420p(uchar t1,uint t2); void Run_SNAKE(void); /********简易延时函数******/ void delay(uint t) { for(t;t>0;t--); } void DelayUs(uint us) //标准延时 us { unsigned char uscnt; uscnt=us>>1; while(--uscnt); } void DelayMs(uint ms) //标准延时 ms { while(--ms) { DelayUs(250); DelayUs(250); DelayUs(250); DelayUs(250); } } //595 初始化 串转并 /*sbit sclk=P3^0; sbit dat=P3^1; sbit st = P2^1; void write595(uchar wrdat) { uchar sum; for(sum=0;sum uchar sum; for(sum=0;sum SDA=1; //发送起始条件的数据信号 _Nop(); SCL=1; _Nop(); //起始条件建立时间大于4.7us,延时 _Nop(); _Nop(); _Nop(); _Nop(); SDA=0; //发送起始信号 _Nop(); //起始条件锁定时间大于4μ _Nop(); _Nop(); _Nop(); _Nop(); SCL=0; //钳住I2C总线,准备发送或接收数据 _Nop(); _Nop(); } /*------------------------------------------------ 结束总线 ----------------------------------------------- void Stop_I2c() { SDA=0; //发送结束条件的数据信号 _Nop(); //发送结束条件的时钟信号 SCL=1; //结束条件建立时间大于4μ _Nop(); _Nop(); _Nop(); _Nop(); _Nop(); SDA=1; //发送I2C总线结束信号 _Nop(); _Nop(); _Nop(); _Nop(); } /*---------------------------------------------------------------- 字节数据传送函数 函数原型: void SendByte(unsigned char c); 功能: 将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对 此状态位进行操作.(不应答或非应答都使ack=0 假) 发送数据正常,ack=1; ack=0表示被控器无应答或损坏。 ------------------------------------------------------------------ void SendByte(unsigned char c) { unsigned char BitCnt; for(BitCnt=0;BitCnt |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |