此实验详解见博客:https://blog.csdn.net/weixin_40874586/article/details/87939748
资源包括:实验源代码,实验报告及实验录屏
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 26629 2019-02-26 18:31 迷宫.c
文件 41173629 2019-01-16 14:07 迷宫.mp4
文件 4301840 2019-02-26 18:35 迷宫实验.doc
#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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)