基于Arduino的无线抢答器设计说明

合集下载

单片机六路抢答器课程设计

单片机六路抢答器课程设计

单片机六路抢答器课程设计
单片机六路抢答器是一种用于教育培训场景的设备,旨在提高学生的抢答能力和思维敏捷性。

在这个课程设计中,我们将使用单片机来实现一个具有六个按钮的抢答器系统。

首先,我们需要准备硬件部分的材料。

一个典型的单片机抢答器系统包括一个单片机主控板、六个按钮、一个显示器以及一些连接线材。

在这里,我们选择使用常见的Arduino Uno作为单片机主控板,并将六个按钮分别连接到主控板的不同IO口上。

接下来,我们需要编写相应的代码来实现抢答器的功能。

在Arduino 编程环境中,我们可以使用C/C++语言来编写代码。

首先,我们需要初始化IO口和显示器。

然后,我们可以设置一个定时器,用于限制每个学生的抢答时间。

当某个按钮被按下时,我们可以通过判断相应的IO口状态来确定哪个学生抢答成功。

最后,我们将抢答结果显示在显示器上。

除了基本的抢答功能,我们还可以进一步扩展课程设计。

例如,我们可以加入抢答器的计分功能,每次学生抢答成功后,可以在显示器上显示相应的分数。

此外,我们还可以设置难度级别,给不同的学生设置不同的抢答时间限制,以提高学生的竞争性和抢答能力。

在课程设计的过程中,我们可以引入一些有趣的抢答游戏,例如多人对战、团队比赛等,以增加学生的参与度和趣味性。

此外,我们还可以加入音效和灯光效果,使整个抢答过程更加生动有趣。

总之,单片机六路抢答器是一个很好的教育培训工具,可以帮助学生提高抢答能力和思维敏捷性。

通过合理设计课程内容和引入一些有趣的元素,我们可以创造一个富有活力和互动性的课堂氛围,激发学生的学习兴趣和积极性。

基于单片机的无线抢答器设计

基于单片机的无线抢答器设计

摘要当今社会竞争日益激烈,知识竞赛等各项比赛、活动愈加频繁,因此抢答的应用与需求也越来越普遍,在生活中扮演的角色越来越重要。

同时,智力竞赛是一种生动活泼、寓教于乐的活动形式,而抢答是智力竞赛中非常常见的一种答题方式。

在进行智力竞赛时,往往都是几个组抢答问题,这就要求在时间上严格的区分先后。

若是仅凭主持人的主观判断,则很容易造成错判、误判。

为此,我们需要设计一种具备自动锁存、置位、清零等功能的智能抢答器来解决这些问题。

传统的抢答器都是导线布线,受现场环境影响很大。

本文介绍了一种用52系列单片机的数码显示无线抢答器的电路组成、设计思路及功能。

该抢答器除具有基本的抢答功能外,还具有计时和报警功能。

主持人通过时间预设开关计算抢答时间。

系统将完成自动倒计时。

若在规定的时间内有人抢答,则计时将自动停止;若在规定的时间内无人抢答,则系统中的蜂鸣器将发响,提示主持人本轮抢答无效,实现报警功能。

关键词:无线抢答,定时抢答,无线发射和接收,PT2262/PT2272ABSTRACTAt present, award winning, knowledge contests and other activities become more frequently, so the Application of Answer and demand will become increasingly common.At the same time,it is a lively competition, fun activities in the form of, and vies to answer first is very common in the quiz answer a way. In intelligence contest, often are several group vies to answer first problem, it is required in time in the strict distinction between successively. If only with the host of the subjective judgment, it is very easy to create the falsely accused, misjudgment. For this, we need to design a kind of have to be automatic lock to save, buy a, reset function of intelligent vies to answer first device to solve these problems.The traditional vies to answer first vessels were wire wiring, the environment by influence. This paper introduces a kind of 51 series microcontroller with the digital display wireless road 4 is composed of the circuit, vies to answer first design idea and function. This is in addition to the basic vies to answer first vies to answer first function outside, still have time and alarm function. By the time the switch calculation vies to answer first time. The system will complete automatic countdown. If the stipulated time someone vies to answer first, the timing will automatically stop; If the stipulated time no contest, the system will send the buzzer rang, indicating that the host this contest null and void, realize the alarm function.Key words: wireless Answer,timing answer,wireless transceiver,PT2262/PT2272目录摘要 (I)ABSTRACT (II)第1章绪论 (1)1.1 单片机抢答器的背景 (1)1.2单片机对抢答器的意义 (2)1.3 抢答器的应用 (2)第2章系统方案与论证 (4)2.1基本要求 (4)2.2 系统方案框图 (4)2.3系统方案的选择 (5)2.3.1 无线模块 (5)2.3.2微控制器模块 (8)2.3.3 显示和语言提示模块 (9)第3章硬件设计 (10)3.1AT89S52简介 (10)3.2无线发射电路 (12)3.3 无线接收电路 (13)3.4 输出控制模块 (14)第4章软件设计 (16)4.1抢答器流程图 (16)4.2主程序 (18)4.3中断程序 (21)4.3.1什么是中断 (21)4.3.2中断所用到的寄存器 (22)第5章系统仿真 (24)5.1proteus软件的介绍 (24)5.2抢答器proteus软件的仿真 (24)第6章调试功能说明 (27)6.1系统的调试 (27)6.2软件调试问题及解决 (28)第7章总结 (30)7.1结论 (30)7.2心得体会 (30)7.3工作展望 (31)致谢 (32)参考文献 (33)附录1 (34)附录2 (36)第1章绪论1.1单片机抢答器的背景早期的竞赛器只由几个过三极管、可控硅、发光二极管等组成,能通过发光二极管的指示辨认出选手号码,现在大多数竞赛器单片机或数字集成电路组成。

抢答器设计实验报告

抢答器设计实验报告

抢答器设计实验报告抢答器设计实验报告一、引言在现代教育中,互动性和参与度是学生学习的重要因素。

为了提高课堂的活跃程度和学生的参与度,我们设计了一种抢答器。

本实验报告将介绍抢答器的设计原理、实验过程和结果分析。

二、设计原理抢答器的设计基于无线电频率识别技术。

抢答器由两部分组成:主机和抢答器设备。

主机通过无线电频率识别技术与抢答器设备进行通信,实现答题者的抢答功能。

三、实验过程1. 材料准备我们准备了一台电脑、一块Arduino开发板、一块无线电频率识别模块、若干个按钮开关和一些导线。

2. 硬件连接我们将Arduino开发板与无线电频率识别模块通过导线连接,并将按钮开关分别连接到Arduino开发板上。

3. 软件编程我们使用Arduino开发环境编写了控制程序。

程序主要实现了无线电频率识别模块的初始化、按钮开关的状态检测和与主机的通信功能。

4. 抢答器设备制作我们将按钮开关固定在一个小盒子上,连接好导线,并将无线电频率识别模块放置在盒子内。

5. 实验验证我们进行了一系列实验来验证抢答器的功能。

首先,我们将主机与抢答器设备进行配对。

然后,我们进行了多次抢答实验,记录了每个学生的抢答时间和正确率。

四、结果分析通过实验,我们发现抢答器在提高课堂互动性和学生参与度方面有着显著的效果。

抢答器能够快速准确地记录学生的抢答时间,并通过主机进行统计分析。

我们还发现,学生在使用抢答器后更加积极主动地参与课堂讨论,提高了他们的学习兴趣和主动性。

然而,我们也发现了一些问题。

由于抢答器设备的制作过程较为复杂,需要一定的技术支持和时间投入。

此外,抢答器的使用也需要一定的操作技巧,对于一些不熟悉技术的教师和学生来说可能存在一定的学习成本。

五、结论抢答器作为一种课堂互动工具,能够有效提高学生的参与度和学习效果。

然而,在推广和应用抢答器时,需要考虑到设备制作和操作技巧等方面的问题。

未来,我们可以进一步改进抢答器的设计,使其更加简单易用,以满足更广泛的教育需求。

机器人三级实操抢答器设计

机器人三级实操抢答器设计

机器人三级实操抢答器设计一、前言机器人技术的发展已经越来越成熟,越来越多的人开始关注和学习机器人技术。

在机器人领域,抢答器是一个非常有用的工具,它能够帮助我们进行快速准确的抢答。

本文将介绍如何设计一个机器人三级实操抢答器。

二、材料准备1. Arduino UNO开发板2. 16×2字符液晶显示屏3. 红色LED灯4. 5V蜂鸣器5. 8个按键(4个作为答案选项,3个作为控制键,1个作为重置键)6. 杜邦线若干三、电路设计1. 将Arduino UNO开发板连接到计算机上,并打开Arduino IDE。

2. 将LCD显示屏与Arduino UNO开发板连接。

将LCD的VSS引脚连接到GND引脚上,将LCD的VDD引脚连接到+5V引脚上,将LCD的VO引脚连接到可变电阻上,再将可变电阻另一端连接到GND 引脚上。

将LCD的RS、RW和E引脚分别连接到Arduino UNO开发板的数字引脚12、11和10上。

将LCD的D4、D5、D6和D7引脚分别连接到Arduino UNO开发板的数字引脚5、4、3和2上。

3. 将红色LED灯与Arduino UNO开发板连接。

将LED的正极连接到数字引脚8上,将LED的负极连接到GND引脚上。

4. 将5V蜂鸣器与Arduino UNO开发板连接。

将蜂鸣器的正极连接到数字引脚9上,将蜂鸣器的负极连接到GND引脚上。

5. 将8个按键与Arduino UNO开发板连接。

将4个答案选项按键分别连接到数字引脚A0-A3上,将3个控制键分别连接到数字引脚A4-A6上,将重置键连接到数字引脚A7上。

四、程序设计1. 打开Arduino IDE,并新建一个工程。

2. 编写程序代码。

程序主要包括初始化LCD屏幕、初始化按键、显示题目和答案选项、检测用户输入并判断是否正确等功能。

具体实现方式可以参考以下代码:#include <LiquidCrystal.h>LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);int answerPin[4] = {A0,A1,A2,A3};int controlPin[3] = {A4,A5,A6};int resetPin = A7;int answer[4] = {0,0,0,0};int correctAnswer = 0;int userAnswer = 0;int score = 0;void setup() {lcd.begin(16, 2);pinMode(resetPin, INPUT_PULLUP);for(int i=0; i<4; i++){pinMode(answerPin[i], INPUT_PULLUP); answer[i] = digitalRead(answerPin[i]); }for(int i=0; i<3; i++){pinMode(controlPin[i], INPUT_PULLUP); }randomSeed(analogRead(0));}void loop() {lcd.clear();int a = random(10)+1;int b = random(10)+1;correctAnswer = a + b;lcd.setCursor(3,0);lcd.print(a);lcd.setCursor(5,0);lcd.print("+");lcd.setCursor(7,0);lcd.print(b);for(int i=0; i<4; i++){if(answer[i] == correctAnswer){answer[i] += random(-2,3); //随机生成答案选项 }}for(int i=0; i<4; i++){int positionX = (i%2)*8;int positionY = (i/2)*2+1;lcd.setCursor(positionX,positionY);lcd.print(i+1);lcd.setCursor(positionX+2,positionY); lcd.print(":");lcd.setCursor(positionX+4,positionY); if(answer[i]==correctAnswer){lcd.print(correctAnswer); //正确答案 }else{lcd.print(answer[i]); //错误答案}}while(1){for(int i=0; i<4; i++){if(digitalRead(answerPin[i])==LOW){ userAnswer = answer[i];break;}}if(userAnswer!=0){break;}}if(userAnswer==correctAnswer){ score++;lcd.setCursor(0,0);lcd.print("Correct!");digitalWrite(8,HIGH);tone(9, 2000, 500);delay(1000);digitalWrite(8,LOW);}else{lcd.setCursor(0,0);lcd.print("Wrong! ");lcd.setCursor(7,0);lcd.print(correctAnswer);delay(2000);}for(int i=0; i<4; i++){answer[i] = digitalRead(answerPin[i]);}userAnswer = 0;while(digitalRead(resetPin)==HIGH){}}五、实验结果通过上述电路和程序设计,我们可以成功制作出一个机器人三级实操抢答器。

arduino抢答器课程设计

arduino抢答器课程设计

arduino抢答器课程设计一、课程目标知识目标:1. 让学生理解Arduino的基本原理和编程概念;2. 让学生掌握抢答器的电路连接和编程方法;3. 让学生了解数字输入输出、条件语句和循环语句在Arduino编程中的应用。

技能目标:1. 培养学生动手搭建电路的能力,能独立完成抢答器的硬件连接;2. 培养学生运用Arduino编程软件进行编程的能力,能编写简单的抢答器程序;3. 培养学生分析问题、解决问题的能力,通过修改程序实现不同的抢答功能。

情感态度价值观目标:1. 激发学生对电子制作和编程的兴趣,培养创新意识和动手实践能力;2. 培养学生团队协作精神,学会在小组合作中分享观点和解决问题;3. 培养学生积极主动的学习态度,敢于面对挑战,勇于克服困难。

课程性质:本课程为实践性较强的课程,结合Arduino编程和电子制作,旨在培养学生的动手能力、编程思维和创新能力。

学生特点:五至六年级学生具有一定的逻辑思维能力和动手能力,对新鲜事物充满好奇心,但编程基础较弱。

教学要求:注重理论与实践相结合,以学生为主体,引导他们主动探索、实践和思考,提高解决问题的能力。

教学过程中,教师需关注学生的个体差异,给予个性化指导。

通过本课程的学习,使学生能够将所学知识应用于实际项目中,达到学以致用的目的。

二、教学内容1. Arduino基础知识:介绍Arduino的硬件组成、编程环境及基本编程语法,让学生对Arduino有初步的认识。

相关教材章节:第一章 Arduino入门2. 抢答器电路连接:讲解抢答器电路的原理,引导学生动手搭建电路,实现按钮输入和LED输出。

相关教材章节:第二章 电子元件与电路3. Arduino编程:教授如何使用Arduino编程软件,编写抢答器程序,包括数字输入输出、条件语句和循环语句的应用。

相关教材章节:第三章 数字输入输出;第四章 控制语句4. 抢答器功能实现:指导学生通过编程实现抢答功能,如抢答成功LED亮起、蜂鸣器响起等。

五路抢答器的设计

五路抢答器的设计

五路抢答器的设计一、硬件设计1. 控制主板:使用一块性能强大的控制主板,如Arduino、Raspberry Pi等,作为整个系统的控制中心。

主板具有多个IO口以及通信接口,能够连接各个模块并进行信息传输和控制。

2.按钮模块:每个参与者都配备一个按钮模块,该模块由一个按钮和一个可编程的LED显示屏组成,按钮用于参与者抢答,显示屏用于显示参与者答案。

3.抢答器主机:由一个大屏幕显示器和一个抢答指示灯构成。

大屏幕显示器用于显示所有参与者的答案,抢答指示灯用于指示当前回答问题的参与者。

4.通信模块:通过无线通信方式,实现各个模块之间的数据传输,包括控制指令的发送和答案的传递。

二、工作原理1.参与者按下按钮后,按钮模块将信号发送给控制主板,表示参与者已经抢答。

2.控制主板接收到信号后,将相应的参与者编号发送给抢答器主机,并点亮相应的抢答指示灯。

3.抢答器主机接收到编号后,将其显示在大屏幕上,同时关闭其他参与者的指示灯。

4.控制主板在一定时间内接收其他参与者的抢答信号,并判断每个参与者的答案是否准确。

5.控制主板根据答案的准确性,将结果发送给抢答器主机并在大屏幕上显示。

6.抢答器主机接收到结果后,将其显示在大屏幕上。

同时,控制主板清空所有按钮模块上的答案,准备下一轮抢答。

三、系统功能1.抢答功能:参与者按下按钮后,系统迅速显示参与者的答案,并将其显示在大屏幕上。

2.准确性判断:控制主板根据预设答案进行比对,判断参与者的答案是否准确,并将结果显示在大屏幕上。

3.交互性强:系统能够实时显示参与者的抢答情况,通过大屏幕和抢答指示灯提供视觉反馈,增加比赛的紧张感。

4.多人同时抢答:系统支持五个参与者同时抢答,保证公平性。

5.结果记录:系统能够记录每轮抢答的参与者和答案,并在大屏幕上显示。

6.灵活性:系统可以根据比赛需要进行扩展,支持更多参与者同时抢答。

四、系统优势1.简单易用:参与者只需按下按钮即可完成抢答,无需进行复杂的设置或操作。

抢答器说明书(附完整原理图及程序)

抢答器说明书(附完整原理图及程序)

作品名称:八路抢答器组员:贾利伟、吴小勇、湛亚熙一、功能说明二、原理图说明1.数码管连接电路/********************************************数码管动态扫描处理程序(所有动态扫描显示共用)************************************************/void shumasm(uchar m,int n){int gewei,shiwei,baiwei;gewei=n%10;shiwei=n/10%10;baiwei=n/100;P0=m;//取显示数据,段码P2=0xef; //取第一位delay(20); //扫描间隙延时,时间太长会闪烁,太短会造成重影P0=LED[baiwei]; P2=0xdf;delay(20);P0=LED[shiwei]; P2=0xbf;delay(20);P0=LED[gewei]; P2=0x7f;delay(20);}2、按键机发光二极管连接图三、程序说明#include<reg52.h> //包含单片机寄存器的头文件#define uchar unsigned char#define uint unsigned intuchar LED[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳数码管:0-9uchar LED_num[]={0x40,0X79,0X24,0X30,0X19,0X12,0X02,0X78,0X00},num_mark=0;//共阳数码管:选手编号显示:0. 1.-8. ,num_mark用来标记最近一次抢答成功选手编号char num=0;//标记选手编号int score[9]={9,0,0,0,0,0,0,0,0};//score[0]用来寄存抢答时间限制限制标记位qdtime的值int dtime=120,qdtime,second,count;//答题时间标记位dtime、抢答时间限制限制标记位qdtime、抢答\答题倒计时标记位second、以及计数标记位countuchar qdtime_2=3,END_mark=0;//选手相关区sbit LED01=P1^0;sbit LED02=P1^1;sbit LED03=P1^2;sbit LED04=P1^3;sbit LED05=P1^4;sbit LED06=P1^5;sbit LED07=P1^6;sbit LED08=P1^7; //选手抢答“监视灯”sbit K1=P1^0;sbit K2=P1^1;sbit K3=P1^2;sbit K4=P1^3;sbit K5=P1^4;sbit K6=P1^5;sbit K7=P1^6;sbit K8=P1^7; //选手抢答按钮uchar K[]={0,0,0,0,0,0,0,0,0};//选手按钮按下标记位,按下后便标记为1 //主持人相关区sbit REST=P3^2;sbit END=P3^2;sbit B_score=P3^3;//分数调节按钮sbit last=P3^4;sbit next=P3^5;sbit KS1=P3^6;sbit KS2=P3^7;//主持人用功能开关,其中P3^2口两用,sbit ADD10=P2^0;sbit MIN10=P2^1;sbit ADD1=P2^2;sbit MIN1=P2^3;//主持人用功能开关,用于所有加减调节uchar ks1=0,ks2=0;//抢答和答题开关标记位//sbit BeepIO=P3^0;void delaynms(unsigned int j);//j毫秒延时void delay(uint i);//i微妙延时void BEEP();//提示音void BEEP2();//警告音void BEEP3();//void shumasm(uchar m,int n);void main(){ uint j;//用来构成循环TMOD=0x11;//T0设置为16位定时方式TH0=0x3c;TL0=0xb0;//50msIE= 0x82; //允许T0中断TR0=0; //关闭定时开关while(1){ while(1){ LED01=1;LED02=1;LED03=1;LED04=1;LED05=1;LED06=1;LED07=1;LED08=1;//监视灯初始化为灭if(KS1==0) {ks1=1;break;}//开始抢答倒计时if(KS2==0) {ks2=1;break;}//开始答题倒计时if(ADD1==0) {delaynms(20); if(ADD1==0) dtime++;if(dtime>=1000) dtime=0;}//答题时间调整if(MIN1==0) {delaynms(20); if(MIN1==0) dtime--;if(dtime<0) dtime=999;}if(ADD10==0) {delaynms(20); if(ADD10==0) dtime=dtime+10;if(dtime>=1000) dtime=0;}if(MIN10==0) {delaynms(20); if(MIN10==0) dtime=dtime-10;if(dtime<0) dtime=999;}shumasm(LED[qdtime_2],dtime);//数码管动态扫描4位if(B_score==0){ delaynms(20);if(B_score==0)while(1){ if(B_score==0){ delaynms(20);if(B_score==0) break;}//再次按下B_score退出分数调节shumasm(LED_num[num],score[num]); //数码管动态扫描4位,显示选手编号和对应分数if(next==0){ delaynms(20);if(next==0) num++; if(num==9) num=0;}//显示下一位选手编号和对应分数if(last==0){ delaynms(20);if(last==0) num--; if(num<0) num=8;}//显示上一位选手编号和对应分数if(REST==0) {delaynms(20); if(REST==0) score[num]=0; }//将当前选手分数清零if(ADD1==0) {delaynms(20); if(ADD1==0) score[num]++;if(score[num]>=1000) score[num]=0;}//调节数码管上对应选手分数,分数范围0-999if(MIN1==0) {delaynms(20); if(MIN1==0) score[num]--;if(score[num]<0) score[num]=999;}if(ADD10==0) {delaynms(20); if(ADD10==0)score[num]=score[num]+10;if(score[num]>=1000) score[num]=0;}if(MIN10==0) {delaynms(20); if(MIN10==0)score[num]=score[num]-10;if(score[num]<0) score[num]=999;}}}}if(ks1==1) //开始抢答倒计时{ ks1=0;TR0=1;//开始倒计时count=0;//计数标记位归零second=qdtime_2;P2=0xef;//选通最低位K[1]=0;K[2]=0;K[3]=0;K[4]=0;K[5]=0;K[6]=0;K[7]=0;K[8]=0;//选手按钮按下标记位归零while(1){P0=LED[second];if(second==0) {TR0=0;P0=LED[0];break;}if(second<=4) BEEP();//提示抢答快要开始if(K1==0&&K[1]==0) {LED01=0;K[1]=1;}//选手监视,并用红灯标记犯规选手if(K2==0&&K[2]==0) {LED02=0;K[2]=1;}if(K3==0&&K[3]==0) {LED03=0;K[3]=1;}if(K4==0&&K[4]==0) {LED04=0;K[4]=1;}if(K5==0&&K[5]==0) {LED05=0;K[5]=1;}if(K6==0&&K[6]==0) {LED06=0;K[6]=1;}if(K7==0&&K[7]==0) {LED07=0;K[7]=1;}if(K8==0&&K[8]==0) {LED08=0;K[8]=1;}if(END==0) {delaynms(10); if(END==0) { END_mark=1;break;}}//可按结束键随时结束抢答环节}if(END_mark==1) {END_mark=0;continue;}//若结束键按下则结束抢答环节if(K[1]==1&&K[2]==1&&K[3]==1&&K[4]==1&&K[5]==1&&K[6]==1&&K[7]==1&&K[8]==1) //若所有选手均犯规则报警一段时间后自动结束本次抢答{ for(j=0;j<22;j++)BEEP2();continue;}qdtime=score[0];count=0;//计数标记位归零second=qdtime;num_mark=0;while(1){ if(END==0) {delaynms(10); if(END==0) {END_mark=1;break;}}switch((uchar)!(K1||K[1])*1+(uchar)!(K2||K[2])*3+(uchar)!(K3||K[3])*5+(uchar)!(K4||K[4])*10+(uc har)!(K5||K[5])*20+(uchar)!(K6||K[6])*40+(uchar)!(K7||K[7])*80+(uchar)!(K8||K[8])*160){case 1: num_mark=1;break;case 3: num_mark=2;break;case 5: num_mark=3;break;case 10: num_mark=4;break;case 20: num_mark=5;break;case 40: num_mark=6;break;case 80: num_mark=7;break;case 160:num_mark=8;break;}if(num_mark!=0) break;//有人抢答成功则结束抢答if(qdtime!=0)//抢答时间不为999秒时则启动抢答倒计时{ if(second<=6) BEEP();TR0=1;shumasm(LED[num_mark],second);if(second==0) {TR0=0;break;}}}while(1){ if(END_mark==1) {END_mark=0;break;}P2=0xef;P0=LED[num_mark];if(num_mark!=0) BEEP3();//提示抢答成功else BEEP2(); //警告音if(END==0) {delaynms(10); if(END==0) break;}//可按结束键继续下一轮抢答或进入答题}}else if(ks2==1) //开始答题倒计时{ ks2=0;TR0=1;num=num_mark;//将抢答成功选手编号给numcount=0;//计数标记位归零second=dtime;while(1){ shumasm(0xff,second);//即用后三位显示答题倒计时if(second<10) BEEP();//提示答题时间将到if(second==0){ TR0=0;break;}if(END==0) {delaynms(10); if(END==0) {END_mark=1;break;}}//可按结束键随时结束答题}while(1){ shumasm(LED_num[num],score[num]); //数码管动态扫描4位,进入抢答成功选手分数调节if(END==0) {delaynms(10); if(END==0) break;}//可按结束键继续下一轮抢答或进入答题if(ADD1==0) {delaynms(20); if(ADD1==0) score[num]++;if(score[num]>=1000) score[num]=0;}//调节数码管上对应选手分数,分数范围0-999 if(MIN1==0) {delaynms(20); if(MIN1==0) score[num]--;if(score[num]<0) score[num]=999;}if(ADD10==0) {delaynms(20); if(ADD10==0)score[num]=score[num]+10;if(score[num]>=1000) score[num]=0;}if(MIN10==0) {delaynms(20); if(MIN10==0)score[num]=score[num]-10;if(score[num]<0) score[num]=999;}}}}}/******************************************延时函数**********************************************/void delaynms(unsigned int j)//j毫秒延时{ unsigned int i,k;for(k=0;k<j;k++)for(i=0;i<1000;i++) ;}void delay(uint i)//i微妙延时{ while(i--) ;}/****************************************************用来进行答题倒计时和抢答倒计时******************************************************/void Timer0(void) interrupt 1{TH0=0x3c; //重新赋值50msTL0=0xb0;count++;if(count==20){ count=0;second--;}}/************************************************************蜂鸣器发音程序区**************************************************************/void BEEP()//提示音{unsigned int i;for(i=0;i<100;i++)//喇叭发声的时间循环{delay(100); //参数决定发声的频率,估算值BeepIO=!BeepIO;}BeepIO=1; //喇叭停止工作,间歇的时间delay(5000);}void BEEP2()//警告音{ unsigned int i;for(i=0;i<400;i++)//喇叭发声的时间循环{BeepIO=0;delay(40); //参数决定发声的频率,估算值BeepIO=1;delay(30);}delay(12500);//喇叭停止工作,间歇的时间}void BEEP3()//抢答成功提示音{ unsigned int i;for(i=0;i<400;i++)//喇叭发声的时间循环{BeepIO=0;delay(25); //参数决定发声的频率BeepIO=1;delay(25);}delay(20000);//喇叭停止工作,间歇的时间}/********************************************数码管动态扫描处理程序************************************************/ void shumasm(uchar m,int n){int gewei,shiwei,baiwei;gewei=n%10;shiwei=n/10%10;baiwei=n/100;P0=m;//取显示数据,段码P2=0xef; //取第一位delay(20); //扫描间隙延时P0=LED[baiwei]; P2=0xdf;delay(20);P0=LED[shiwei]; P2=0xbf;delay(20);P0=LED[gewei]; P2=0x7f;delay(20);}。

单片机抢答器程序设计

单片机抢答器程序设计

单片机抢答器程序设计简介在现代教育中,抢答是一种常见的教学方法。

为了更好地组织抢答活动,并提高教学的互动性和趣味性,我们可以利用单片机来设计一个抢答器程序。

本文将详细介绍单片机抢答器程序的设计过程及实现方法。

硬件准备要设计一个单片机抢答器程序,首先需要准备以下硬件材料:1.单片机开发板:推荐使用常见的Arduino开发板。

2.按键模块:用于抢答器参与者按下回答问题的按钮。

3.显示模块:用于显示抢答器参与者的抢答次序和结果。

4.线路连接和电源供应。

硬件连接按照以下步骤进行硬件连接:1.将按键模块的一个引脚连接到单片机开发板的某个数字引脚上,并连接到地线(GND)。

2.将显示模块的引脚连接到单片机开发板的数字引脚上,并连接到地线(GND)。

3.连接电源供应。

程序设计下面是单片机抢答器程序设计的步骤:1.引入所需库文件。

2.定义按键和显示模块的引脚。

3.设置变量来记录抢答次序和结果。

4.设置变量来记录是否有人先按下了按钮。

5.设置变量来记录回答问题的时间。

6.初始化按键和显示模块。

7.设置主循环,监测是否有人按下了按钮。

8.当有人按下按钮时,检查是否已经有人先按下了按钮。

如果没有,则记录抢答次序和结果,并将变量标记为已按下。

9.更新显示模块的显示内容,显示抢答次序和结果。

10.延迟一段时间,然后清除显示内容。

11.返回主循环。

代码实现#include <LiquidCrystal.h>const int buttonPin = 2;const int lcd_rs = 12;const int lcd_en = 11;const int lcd_d4 = 5;const int lcd_d5 = 4;const int lcd_d6 = 3;const int lcd_d7 = 7;LiquidCrystal lcd(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7);int order = 0;bool isAnswered = false;bool isButtonPressed = false;void setup() {pinMode(buttonPin, INPUT);lcd.begin(16, 2);}void loop() {if (digitalRead(buttonPin) == HIGH && !isButtonPressed) {if (!isAnswered) {order++;lcd.setCursor(0, 0);lcd.print("Order: ");lcd.print(order);lcd.setCursor(0, 1);lcd.print("Answered");isAnswered = true;}isButtonPressed = true;}if (!isButtonPressed) {lcd.clear();isAnswered = false;}delay(100);isButtonPressed = false;}程序解释1.代码开始引入了LiquidCrystal库,该库用于控制液晶显示模块。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

无线抢答器
----电子设计与制作课程设计报告
班级:11电信
:巡胡盼
学号:25 35
指导教师:欣
轻工职业技术学院
2013年4月23日
目录
目录 (2)
引言 (3)
一.基本原理 (4)
1.1实验目的 (4)
1.2实验要求和容 (4)
1.3实验器件 (4)
二.基本流程图 (5)
三.硬件模块 (6)
3.1红外遥控与接收模块 (6)
3.2 Arduino模块 (7)
3.3 1602液晶显示模块 (7)
四.实物图 (8)
五.结论 (9)
六.致 (10)
七.参考文献 (11)
八.附录 (12)
引言
进入21世纪越来越来多的电子产品出现在人们的日常生活中,从而形式多样的抢答器已广泛应用于企事业单位及商业机构,为各种智力和知识活动竞赛提供快速客观公正的裁决,逐渐成为一种商业性电子产品。

现有抢答器虽有多种设计方案,各具特色,但存在两点主要不足:其一,显示系统和抢答按键之间距离较远,连线多,结构复杂,安装不便;其二,当抢答路数增多时电路修改困难,扩展不便。

本文介绍了一种采用红外遥控技术和arduino实现的抢答系统,具有反应速序快、可靠性高和连线及扩展方便等特点。

本作品连接整个电路只用了7跟线,结构简单,只用了3个模块!
一.基本原理
1.1实验目的
由arduino控制的红外遥控抢答系统组成,其控制核心是arduino,抢答按键中按键动作经红外发射电路编码后发出遥控信号,由红外接收电路将之译码输出,arduino对抢答信号裁决出最先按键者,最后由液晶显示系统将相应编号显示出来,同时要封锁对其他按键的继续响应。

1.2实验要求和容
(1)抢答器同时供4名选手或4个代表队比赛,分别用遥控器上的数字1,2,3,4表示。

(2)设置一个复位键控制开关,该开关由主持人控制。

(3)抢答器具有锁存与显示功能。

即选手按动按钮,锁存相应的编号,液晶显示屏上显示选手。

选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。

特点:安装方便,可随时拆装。

1.3实验器件
Arduino板一块
Lcd1602液晶一个
拓展板一块
遥控器四个
红外接收器一个
导线。

二.基本流程图
三.硬件模块
3.1红外遥控与接收模块
遥控器使用方便,功能多.目前已广泛应用在电视机、VCD、DVD、空调等各种家用电器中,且价格便宜,市场上非常容易买到。

如果能将遥控器上许多的按键解码出来.用作Arduino系统的输入.则解决了常规矩阵键盘线路板过大、布线复杂、占用I/O口过多的弊病。

而且通过使用遥控器,操作时可实现人与设备的分离,从而更加方便使用。

如下图
红外接收:接收电路是一种集成红外线接收和放大一体的一体化红外接收器模块,能够完成从红外线接收到输出与TTL电平信号兼容的所有工作,它适用于红外线遥控和红外线数据传输。

接收器做成的红外接收模块只有三个引脚,信号线,VCC,GND。

与arduino和其他单片机连接通信非常方便。

如下图
3.2 Arduino模块
Arduino 是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的arduino板)和软件(arduino IDE)。

它适用于艺术家、设计师、爱好者和对于“互动”有兴趣的朋友们。

Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。

在这里我用它来解码,并分析,然后控制液晶显示。

如下图
3.3 1602液晶显示模块
该液晶显示器以其微功耗、体积小、显示容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。

这里介绍的字符型液晶模块是一种用5x7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等等。

如下图
四.实物图
本作品接线简单,实用方便。

五.结论
本次电子课程设计实习将理论与实践有机地结合,既考查了同学对理论知识的掌握程度,由反映了实际动手能力,更主要的是考查了同学对知识的综合运用以及创新设计思维能力,为今后的发展提供了一次良好的学习环境。

针对课设题目无线抢答器,一开始还没有头绪,不会运用所学知识进行有效设计,但通过上网查阅各种类似的设计,查阅所提供模块功能,确定基本设计方案和实际应用性,虽说比较烦杂但却对设计一个电路有了基本的经验。

同时也使自己认识到拿下每个课题能有一个非常清晰的设计思路是至关重要的。

只有对课题的充分理解,对各种器件的熟练掌握,勾画出基本的设计图是成功的关键,,必须多花时间在设计上才能为后续工作提供更扎实的基础,上网查询各种所需资料是至关重要的。

通过这次试验对Arduino板又有了更深的了解,也发现了他的用处之大。

当然在这次试验中也有很多不足之处,由于不细心有接线接错,程序出现调试错误。

在今后的试验中应该多加细心。

六.致
通过这次实训我们不仅加深了对理论的理解,将理论很好的运用到实际当中去,而且我们还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己,团队精神也是至关重要的。

创新可以是在原有的基础上进行改进,使之功能不断完善,成为自己真正的东西。

对于这次实训,最大的体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨的。

还有,在做人上,我们认识到,无论做什么事情上,只要足够坚强,有足够的毅力与决心,有足够挑战困难的勇气,就没有什么办不到的。

这次抢答器设计能顺利地完成,除了我们的努力外,当然也离不开指导老师老师的辛勤指导,致使我们在设计的过程中学到了很多实用性的知识。

同时,对给过我们帮助的所有同学和指导老师表示衷心的感!
七.参考文献
1..baidu.。

2.1602液晶使用说明。

3.arduino相关资料。

八.附录
主程序
#include <Wire.h> lcd.print(" 4 "); #include <IRremote.h> delay(20000000); #include <Wire.h> break; #include <LiquidCrystal_I2C.h> } int RECV_PIN = 11;//定义红外接收器的引脚为1 irrecv.resume(); // 接收下 IRrecv irrecv(RECV_PIN); 一个值 decode_results results; } LiquidCrystal_I2C lcd(0x20,16,2); } void setup() { Serial.begin(9600); irrecv.enableIRIn(); // 初始化红外接收器 lcd.init(); // initialize the lcd
// Print a message to the LCD. lcd.backlight(); lcd.print("start"); } void loop() { if (irrecv.decode(&results)) { switch (results.value) { case 0xFF18E7: //2 lcd.print(" 2 "); delay(2000000000); break; case 0xFF30CF://1 lcd.print(" 1 "); delay(200000000); break; case 0xff7a85://3 lcd.print(" 3 "); delay(200000000); break; case 0xff10ef:。

相关文档
最新文档