基于51单片机的专注力训练游戏机的设计

电子说

1.3w人已加入

描述

内容:

人的学习能力中专注力是很重要的一项。现在的小朋友有很多都因为各种原因导致专注力较差。市面上也有很多训练专注力的书籍和玩具,玩具有的价钱太贵,有的设计反而不利于小朋友的专注。本系统要求设计并实现一款既有趣,让小朋友能玩下去,又能提高小朋友的专注力的玩具,而且性价比好。

因此,本系统要求使用单片机或其他控制器件实现一个专注力训练游戏机的设计和实现。要求系统能实现多级别难度,启动后随机亮灯,可语音、按键等方式熄灭相应点亮的灯。要求设计尽可能的方便使用,合理。要求熟悉单片机或其他控制器的原理和设计,熟练掌握C语言或其他编程语言的设计编程,完成时间管理器的软件、硬件设计与实现。整个毕业设计还要求完成相应的英文翻译和毕业设计论文。

1、通过学习掌握程序设计、调试技术。

2、掌握仿真软件的使用方法,并能编辑、编译和下载设计文件。

3、掌握系统搭建实用硬件系统的方法。

要求与数据

要求:

1、 设计并实现一款专注力训练游戏机。要求能随机亮灯,可通过识别语音,按键等不同方式,熄灭相应点亮的灯。

2、 游戏要可设置至少3个不同级别。

3、 游戏的不同级别,要设置不同的亮灯的数量和时间长度等,并逐级提高难度。

4、 游戏功能合理,有吸引性。

5、 游戏过程中播放不同频率的音乐。(可选项)

51单片机

部分程序:


 


 

/**********************************

包含头文件

**********************************/

#include "main.h"

#include "key.h"

#include "Time.h"

#include "uart.h"

#include


 


 

/**********************************

变量定义

**********************************/

uchar key_num = 0; //按键标志位

uint time_num = 0; //计时变量

uchar x=13; //随机数


 

uint time=0; //时间变量

uchar num=5;

uchar num_1=1; //判断错误变量

uchar num_2=1; //判断错误变量

uchar num_3=1; //判断错误变量

uchar num_4=1; //判断错误变量

uchar num_5=1; //判断错误变量

uchar num_6=1; //判断错误变量

uchar num_7=1; //判断错误变量

uchar num_8=1; //判断错误变量

uchar num_9=1; //判断错误变量

uchar num_10=1; //判断错误变量

uchar num_11=1; //判断错误变量

uchar num_12=1; //判断错误变量

uchar state=0; //开始变量

uchar state_time=4; //难度变量

uint i=0; //次数变量

bit state_min=0; //简单难度变量播报标志位

bit state_mind=0; //中断难度变量播报标志位

bit state_max=0; //高难度变量播报标志位

bit state_over=0; //高难度变量播报标志位

extern uint time_1s;


 

extern uchar uart_num,uart_buf[30],uart_time; //串口接收相关变量

extern bit uart_rx_flag=1; //串口接收标志位

/**********************************

函数声明

**********************************/

void Delay_function(uint x); //延时函数

void Monitor_function(void); //监测函数

void Manage_function(void); //处理函数

void Timer1_Init(void); //1毫秒@11.0592MHz


 

/****

******* 主函数

*****/

void main()

{

Timer0Init(); //定时器0初使化函数

Uart_Init(); //串口初始化函数

Timer1_Init(); //定时器1初始化

while(1)

{


 

Monitor_function(); //监测函数

Manage_function(); //处理函数

Delay_function(10); //延时10ms

time_num++; //计时变量+1

if(time_num > 5000)

{

time_num = 0;

}

}

}


 

/****

******* 延时 x ms函数

*****/

void Delay_function(uint x)

{

uint m,n;

for(m=x;m>0;m--)

for(n=110;n>0;n--);

}


 

/****

*******按键函数

*****/


 

void Timer1() interrupt 3

{

key_num = Chiclet_Keyboard_Scan(); //按键扫描

if(key_num != 0) //有按键按下

{

switch(key_num)

{

case 1: //按键1

LED_1=1; //关1

num_1--;

num--;

break;


 

case 2: //按键2

LED_2=1; //关2

num_2--;

num--;

break;


 

case 3: //按键3

LED_3=1; //关3

num_3--;

num--;

break;

51单片机

51单片机

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分