51单片机 普中51 打地鼠游戏 仿真 程序 流程图

普中51-单核-A3&A4开发板原理图
在这里插入图片描述
用到数码管、LED、矩阵按键
描述:
(1)按键是0到15
(2)按键07对应着小灯07
(3)有三个小灯的引脚和数码管驱动的引脚重复了,所以实际上只用了5个小灯。
(4)初始状态下8个小灯全部点亮数码管所技术的分数为0。
(5)按键8开始游戏,5个小灯会随机点亮一个。在4秒内用户需要给出对应的按键进行打地鼠。如果4秒了用户还没有打地鼠,那么会随机点亮另一外的小灯。
(6)小灯带4秒的时候还没有被打分数不扣分。打地鼠打错了也不扣分。但是也可以自己添加逻辑达到扣分的要求。
(7)按键9结束游戏,小灯全部点亮,回到初始状态。

仿真图:
在这里插入图片描述
在这里插入图片描述

一部分代码:

		if ( counter_Whac == 0 )                                                /* 游戏只有一次不然只有复位 结束游戏后这个变量要变 */
		{
    
    
			randomNumber	= ramdomSeed % 5;                               /* 生成随机数 */
			ledpTempV	= (unsigned char) (0x01 << randomNumber);       /* 随机数  亮某一个灯 */
			ledpTempV	= ( (ledpTempV & 0x1c) << 3) + (ledpTempV & 0x03);
			P2		= ~ledpTempV;                                   /* 点亮随机灯 */
			timeifg_Whac	= 0;
			time_Whac	= 0;
			KeyValue	= 66;                                           /*按键初始化 */
			while ( !timeifg_Whac )                                         /* 4s后timeifg_Whac会成为1 */
			{
    
    
				KeyScan();                                              /*  KeyValue 的值改变为0 到7 */
				if ( KeyValue != 66 )                                   /*按键值一旦改变就说明按下了 */
				{
    
    
					if ( randomNumber == map[KeyValue] )                 /* 如果是随机数的值 */
					{
    
    
						score_Whac++;                           /* 加一分 */
						seg_disp[0]	= score_Whac / 1000;    /* 整除 取下千位数字 */
						seg_disp[1]	= score_Whac % 1000 / 100;
						seg_disp[2]	= score_Whac % 100 / 10;
						seg_disp[3]	= score_Whac % 10;
						P2		= 0xff;
						break;                                  /* 继续游戏 */
					}else if ( KeyValue == 9 )
					{
    
    
						counter_Whac	= 1;                    /* 结束游戏 */
						P2		= 0x1c;                 /* 小灯全部点亮 表示游戏结束 */
						break;
					}else{
    
    
						/*按错按键不处理 */
						break;
					}
				}
			}
			if ( timeifg_Whac == 1 )   /* 打地鼠超时 不处理 */
			{
    
    
			}
		}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/x1131230123/article/details/108547168