智能车走迷宫c语言程序,基于51单片机的智能迷宫小车设计 含PCB原理图 源程序...

您所在的位置:网站首页 迷宫原理 智能车走迷宫c语言程序,基于51单片机的智能迷宫小车设计 含PCB原理图 源程序...

智能车走迷宫c语言程序,基于51单片机的智能迷宫小车设计 含PCB原理图 源程序...

2023-10-23 09:42| 来源: 网络整理| 查看: 265

#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