• 大小: 0.01M
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-05-29
  • 语言: 其他
  • 标签: 其他  

资源简介

迷宫小车代码.c

资源截图

代码片段和文件信息

//示例迷宫信息 
/*uchar map[8][8] = {{0x070x050x090x030x010x050x090x0b}
{0x030x050x000x080x0a0x0b0x0a0x0a}
{0x0a0x0b0x0a0x0e0x0e0x020x000x0c}
{0x0a0x020x000x050x050x080x0a0x0b}
{0x060x0c0x0a0x0b0x0b0x0a0x0a0x0a}
{0x030x010x0c0x0a0x020x080x060x08}
{0x0a0x020x050x040x080x020x050x0c}
{0x0e0x060x050x0d0x0e0x060x050x0d}};
uchar map[8][8] = {{0x070x050x090x030x050x050x090x0b}
{0x030x010x080x060x010x0d0x0a0x0a}
{0x0a0x0a0x060x050x000x050x000x0c}
{0x0e0x020x050x0d0x0a0x070x040x09}
{0x070x040x010x0d0x0a0x070x050x08}
{0x030x010x040x050x040x010x0d0x0a}
{0x0a0x0a0x030x050x050x000x050x0c}
{0x0e0x060x040x050x0d0x060x050x0d}};*/
/*
地图默认从左下角为起点,右上角为终点,按照坐标的记忆方式,这样的上下左右是固定的 
07 17 27 37 47 57 67 77
06 16 26 36 46 56 66 76
05 15 25 35 45 55 65 75
04 14 24 34 44 54 64 74
03 13 23 33 43 53 63 73
02 12 22 32 42 52 62 72
01 11 21 31 41 51 61 71
00 10 20 30 40 50 60 70
跟数组的方向转了90° 
数组的记忆方式是
00 01 02 03 04 05 06 07
10 11 12 13 14 15 16 17
20 21 22 23 24 25 26 27
30 31 32 33 34 35 36 37
40 41 42 43 44 45 46 47
50 51 52 53 54 55 56 57
60 61 62 63 64 65 66 67
70 71 72 73 74 75 76 77
因此示例迷宫信息在看的时候注意将地图信息逆时针旋转90°来观认
注意:“全体代码均按照坐标方式进行记忆和标记,非数组的排列方式 ”
全篇信息记录也可以改做为数组记忆方式,不过得重新确定上下左右的方向以及修改通过A(小车方向)来执行命令的代码 
*/
#include 

#define uchar unsigned char
#define uint unsigned int

uchar map[8][8] = {0xff}; //地图信息
uint t = 5000; //坐标,定时器时间 
uchar x = 0y = 0 i j A = 0 m n flag count;//标记 ,A用于记录方向,0是上,1是右,2是下,3是左 
uchar code forw[8] = {0x110x930x820xc60x440x6c0x280x39}; //前进 
uchar code tR[8] = {0x110x330x220x660x440xcc0x880x99}; //往左偏 
uchar code tL[8] = {0x110x990x880xcc0x440x660x220x33}; //往右偏 
char r[8][8] = {0}; //等高表的存储 
uchar irC = 0irL = 0irR = 0irLU = 0irRU = 0;//传感器
uchar code table[]={0xc00xf90xa40xb00x990x920x820xf80x800x90};//数码管的显示数字
sfr P4 = 0xe8; //定义P4 
sbit beep = P3^7; //蜂鸣器 
sbit irR1 = P2^1; //前
sbit irR2 = P2^2; //左前
sbit irR3 = P2^3; //左 
sbit irR4 = P2^4; //右 
sbit irR5 = P2^5; //右前 
sbit well = P4^3; //数码管
sbit welr = P4^2; //数码管
sbit A0 = P4^0;
sbit A1 = P2^0;
sbit A2 = P2^7;

void Delay_ms(uint ms) //延时函数 
{
uchar k;
while(ms--)
for(k = 0; k < 114; k++);
}

/*void Display(uint s) //数码管显示 
{
uint ab;
a = s/10;
b = s%10;
well=0;
P0=table[b];
Delay_ms(5);
well=1;
welr=0;
P0=table[a];
Delay_ms(5);
welr=1;
}*/

void CorrectR() //向右修正
{
for(m = 0; m < 4; m++)
for(n = 0; n < 8; n++)
{
P1 = tR[n];
Delay_ms(2);
}
}

void CorrectL() //向左修正
{
for(m = 0; m < 4; m++)
{
for(n = 0; n < 8; n++)
{
P1 = tL[n];
Delay_ms(2);
}
}
}

void Forward() //前进一格 
{
for(i = 0; i < 105; i++)
{
for(j = 0; j < 8; j++)
{
P1 

评论

共有 条评论