嵌入式实验 贪吃蛇 瑞 民大 LED

本文详细介绍了如何在嵌入式开发板上实现贪吃蛇游戏,涉及LED矩阵接口、键盘接口、C语言程序的显示和键盘接口设计。通过交叉编译环境的建立、Makefile文件编写及应用程序开发,最终实现贪吃蛇的基本功能,并讨论了显示频率和移动速度的调整。
摘要由CSDN通过智能技术生成

** 贪吃蛇**

By 草木灰

### 一、实验内容

1、利用LED矩阵、 键盘编写一个简单的贪吃蛇游戏

2、通过编写贪吃蛇游戏这一任务,理解驱动,交叉编译,嵌入式开发

二、实验分析

此次实验可以实验的目的是进一步熟练前面学过的知识,体验嵌入式开发的过程。而且有了键盘和LED矩阵的驱动、C语言贪吃蛇程序,任务的关键就是明确各个接口:

1、嵌入式开发板的LED矩阵接口。

2、嵌入式开发板的键盘接口。

3、C语言贪吃蛇程序的显示接口。

4、C语言贪吃蛇程序的键盘接口。

5、C语言贪吃蛇的频率接口,包括地图显示频率,蛇的移动频率。

所以要求C语言贪吃蛇程序是模块化的,下面实验准备部分着重分析各个接口。

三、实验准备

1、嵌入式开发板的LED矩阵接口

下面是LED矩阵的扫描函数,主体是两层for循环

//该程序是LED驱动测试程序的一部分
d = open(DEVICE_NAME, O_RDWR);  

for (i=1;i<=8;i++) 
{
	buf[0]=c;
	buf[1]=~r;                  // row   r虽然是整型,但通过移位和取反同样实现了行和列的选择
	for (j=1;j<=8;j++) 
	{
		write(fd,buf,2);
		printf ("buf[0],buf[1]: [%x,%x]\n",buf[0],buf[1]);
		usleep(200000); // sleep 0.2 second
		c = c<<1;
		buf[0]=c; // column 
	}
	c = 1;
	r = r<<1;
}
// close 
ret = close(fd);
2、嵌入式开发板的键盘接口

把读取到的值存在pre_scancode,没有键按下时,读到的值为255,有按键被按下时反馈值为按键数值,比如按下 “ 6 ” 就反馈 “ 6 ”。

//该程序是键盘驱动测试程序的一部分
fd = open(DEVICE_NAME, O_RDWR);
buf[0]=0x22;
while (1)
{
   
	read (fd,buf,1);
	if(buf[0]!= pre_scancode)  //	初始化 char pre_scancode = 0xff;	
	{
   
		if(buf[0]!=0xff)
		printf("key =%x\n",buf[0]);
	}
	pre_scancode = buf[0];  		
	usleep(50000);	// sleep 0.05 second
}
// close 
ret = close(fd);
3、C语言贪吃蛇程序的显示接口

地图大小:

下面两个宏定义设定地图大小

#define H 10 //高 
#define W 20 //宽 

地图标志:

三种输出分别为“ ” 、“ o ”和“#”,开发板上可以设置为LED亮灭

void DrawMap()      //画地图
{
           
    int i,j;
    for(i=0;i<H;i++)
    {
   
        for(j=0;j<W;j++)            //两重for循环遍历数组
        {
   
            if(map.a[i][j]==0)    
			{
       
                printf(" "); 
        	}
            else if(i==0
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值