51单片机迷宫游戏源码及实验报告


此实验详解见博客:https://blog.csdn.net/weixin_40874586/article/details/87939748 资源包括:实验源代码,实验报告及实验录屏
资源截图
代码片段和文件信息
#include 
#include     
 

sbit Beep =  P1^5; 
#define LCDPORT P0//数据引脚

#define uchar unsigned char
#define uint unsigned int

 
sbit LCD12864_RS  =  P2^6; //RS控制引脚
sbit LCD12864_RW  =  P2^5; //RW控制引脚
sbit LCD12864_EN  =  P2^7; //EN控制引脚
sbit LCD12864_PSB  =  P1^2;  //模式选择引脚,ST7920控制器,1为8位并行接口,0为串行接口

sbit wela    =  P2^6;
sbit dula    =  P2^7;
//开场显示
uchar code welcome[] = {“**迷宫**“};
uchar code tip_one[] = {“任意键启动游戏“};

//闭场显示
uchar code bye[]={“恭喜逃离“};
uchar code tip_two[]={“任意键重启游戏“};

// 对按键进行定义
sbit k1=P3^1;  //定义P31口是k1
sbit k2=P3^0; 
sbit k3=P3^2;
sbit k4=P3^3;

uint is_Blue=0;//用来记录蓝牙数据
uint numx_up;//记录x轴坐标  player[0][0]/8
uint numy_up;//记录y轴坐标  player[0][1]
uint loca_up=0;//记录当前是x坐标的第几位 (7-player[0][0]%8)
uchar Ordata_up;//用来和数据进行与的值

uint numx_down;//记录x轴坐标  player[0][0]/8
uint numy_down;//记录y轴坐标  player[0][1]
uint loca_down=0;//记录当前是x坐标的第几位 (7-player[0][0]%8)
uchar Ordata_down;//用来和数据进行与的值

uint ok_move=0;//移动允许
uint direct_t=3;

uint is_destination=0;//目的地检测函数,到达目的地 为1,没有 为0;

uint is_open=0;//是否开启游戏函数
uint step=0;//用来记录步数,在LED屏上显示
uint is_stopMusic=0;
unsigned char n=0;  //n为节拍常数变量    
unsigned char code music_tab[] ={   
0xff
                    0x390x300x330x300x300x200x300x200x330x200x390x200x330x10
                    0x300x100x330x200x300x300x400x300x330x200x390x200x400x200x00
};   
   
void int0()  interrupt 1   //采用中断0 控制节拍    
{  TH0=0xd8;   
   TL0=0xef;   
   n--;   
}   
   
void delay_Sound (unsigned char m)   //控制频率延时    
{   
 unsigned i=3*m;   
 while(--i);   
}   
   
void delayMs_Sound(unsigned char a)  //豪秒延时子程序    
{   
  while(--a);                  //采用while(--a) 不要采用while(a--); 
}  

 
void LCD12864_Init(void);  //LCD12864初始化函数
void LCD12864_WriteInfomation(unsigned char ucDatabit bComOrData);   //向LCD12864写入数据,bComOrData为1时写入的是数据,0时写入的是命令
void LCD12864_CheckBusy(void);//忙检测函数
void LCD12864_DisplayImage(unsigned char code *ucImageuint direction);
void Delay(unsigned int uiCount);
void ronghe();//融合函数
void OpenGame();
void ClearScreen();
void main();
void LEDDisplayTheEnd();
void delay_1(uint i);
 void  UsartInit();
   

void Sound()
{
  unsigned char pm;   //m为频率常数变量    
  unsigned char i=0;   
 
 TMOD&=0x0f;   
  TMOD|=0x01;   
 TH0=0xd8;
  TL0=0xef;   
  IE=0x82;   
  
  TR0=0;
  
play:   
   while(1)   
    {   

      
    a: p=music_tab[i];   
       if(p==0x00)       { i=0 delayMs_Sound(1000); goto play;}     //如果碰到结束符延时1秒回到开始再来一遍    
       else if(p==0xff)  { i=i+1;delayMs_Sound(100)TR0=0; goto a;}  //若碰到休止符延时100ms继续取下一音符    
            else         {m=music_tab[i++] n=music_tab[i++];}  //取频率常数 和 节拍常数    
             TR0=1;                                             //开定时器1    
           while(n!=0) Beep=~Beepdelay_Sound(m);                         //等待节拍完成 通过P1口输出音频(可多声道哦!)    
       TR0=0;                                  

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件       26629  2019-02-26 18:31  迷宫.c
     文件    41173629  2019-01-16 14:07  迷宫.mp4
     文件     4301840  2019-02-26 18:35  迷宫实验.doc

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)