【51单片机】俄罗斯方块游戏-LED点阵


一、功能简介

本项目使用51单片机控制器,使88LED点阵,按键等。
主要功能:
系统运行后,8
8LED点阵显示游戏界面,K1和K2键控制左右移动,K3和K4键控制变形。


二、软件设计

/*
作者:嗨小易(QQ:3443792007)

*/


#include <REGX52.H>
#include "Tetris.h"
#include "Timer0.h"
#include "Key.h"

unsigned char KeyNum = 0;

void main()
{
	Tetris_Init();
	Timer0_Init();
	while(1)
	{
		KeyNum = Key();
		if(KeyNum)
		{
			//isPause = 1;
			switch(KeyNum)
			{
			case 1:
				Tetris_ToLeft();
				break;
			case 2:
				Tetris_ToRight();
				break;
			case 3:
				Tetris_RtLeft();
				break;
			case 4:
				Tetris_RtRight();
				break;
			default:
				break;
			}
		}
		Tetris_Display();
	}
}

void Timer0_Routine(void) interrupt 1
{
	static unsigned int T_Key_Count,T_Fall_Count;

	TL0 = 0x66;				//设置定时初始值
	TH0 = 0xFC;				//设置定时初始值
	++T_Key_Count;
	++T_Fall_Count;

	if(T_Key_Count >= 20)
	{
		T_Key_Count = 0;
		Key_Loop();		
	}
	
	if(T_Fall_Count >= 700)
	{
		T_Fall_Count = 0;
		if( !Tetris_Fall() )
		{
			Tetris_Stack();
			if(Tetris_GameOver())
			{
				TR0 = 0;
				Delay(1000);
				Tetris_Init();
				TR0 = 1;
			}
			else
			{
				Tetris_Full();
				Tetris_Create();
			}
		}
	}
}


三、实验现象

B站演示视频:https://space.bilibili.com/444388619
在这里插入图片描述


联系作者

专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

资源下载链接为: https://pan.quark.cn/s/a2fe00b11b66 俄罗斯方块。 红外遥控操作:通过红外遥控发送信息,实现游戏的开始、方块移动等功能。 LED矩阵显示:利用LED矩阵接收信息并操作俄罗斯方块。 串口通信:向电脑发送相关信息,包括开始信息、分数和结束信息。 打开单片机后,0.5秒内电脑串口显示“Welcome to play Tetris! Press Power_Key to start.”。 按下POWER键开始游戏。红外遥控键4和6分别用于左移和右移,2键用于旋转,5键用于加速下降。 游戏过程中,每消除一行,电脑串口会显示当前分数,如“Your score is 010.”。 游戏结束后,电脑显示“Game over!!! Press Power_key to replay.”,按下POWER键可重新开始。 封装设计:对俄罗斯方块游戏进行封装,对外只提供Tetris_Run()接口,其他功能由内部函数实现。 全局变量: LED_buf:8×8数组,用于保存LED矩阵状态。 Shape:7×2×4数组,保存七种方块形状。 其他变量:保存方块位置、方向、类型、分数、随机数种子、游戏状态等。 主要函数及实现思路: Tetris_Run():主循环函数。初始化相关变量,通过串口定时器向电脑发送信息,进入主循环接收并处理红外信号。 Timer2_Routine():定时器2中断函数。用于生成伪随机数,刷新LED矩阵,处理方块下落和行消除逻辑。 Set_Block():在指定位置设置方块。通过循环点亮对应LED。 Block_Move():移动方块。先清除当前位置方块,再点亮目标位置方块。 End_Check():判断游戏是否结束。检查新生成方块是否与已有方块碰撞,若碰撞则游戏结束,通过串口发送结束信息。 GenerateNewBlock():
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值