单片机实训抢答器课程设计报告实验
4路抢答器设计单片机课程设计报告
目录1、课程设计目的 (3)2、课程设计正文 (3)1、软件方面设计 (3)①总程序流程图 (3)②显示子程序流程图 (4)2、硬件方面设计 (5)①方案设计 (5)②单元电路设计 (5)③系统调试 (8)3、课程设计总结或结论 (8)4、参考文献 (8)附录一:总的原理图附录二:PCB图附录三:总程序1、课程设计目的①可以自主设计简单地电路;②掌握响应外部中断的原理;③利用Protel硬件设计电路原理图和PCB图;④初步掌握使用Proteus进行单片机的软硬件联机调试。
技术要求:①设置4个抢答台和4个抢答成功指示灯,1个比赛主持人“开始”键和1个抢答指示灯以及1个LED显示器。
②采用中断和查询结合的方法确定按键的动作。
③主持人按下“开始”键后,若有人抢答,则抢答指示灯确认有人抢答,并用7段LED显示抢答者的号码(1--4),并同时点亮对应抢答台上的抢答成功指示灯;若10秒内无人抢答,则发出超时报警,此题作废,主持人可按下“开始”键开始下一题的抢答。
2、课程设计正文1、软件设计方面①总程序流程图②显示子程序2、硬件方面设计①方案设计采用以52为内核的STC系列的芯片,组成一个单片机的最小应用系统,运用C语言编程来实现四路抢答器的设计,采用独立式键盘来作为输入,LED数码管显示,蜂鸣器来报警。
用此方案的优点是:编程简单、操作方便、成本低和错误率低。
②单元电路设计各引脚接线:通过单片机各引脚功能的介绍,本硬件设计中,P0口接数码管显示器;P1口接独立式键盘;P2.0通过PNP驱动接数码管;/ALE脚和/PSEN脚悬空,/EA脚接高电平;复位电路包含了上电复位和按键复位;晶振选择为6MHz,GND接地,VCC接+5V电源;蜂鸣电路接在P2.1上面。
针对抢答器的设计,输入电路键盘按下开始键后,开始抢答,按下相应的键,输出电路相应的LED二极管发光、数码管显示相应的序号⑴复位电路复位电路有两种复位方式:上电复位和按键复位。
基于51单片机的抢答器实验报告
实习(设计)报告姓名班级学号实习(设计)科目基于51单片机的五路抢答器实习(设计)地点实习(设计)时间电气工程及自动化学院School of Electrical Engineering & Automation说明:(1)本日志用于记录实习(设计)过程中的各项活动内容,要求学生必须填写具体、齐全、工整。
(2)实习(设计)结束后由专业科主任审查签字。
实习(设计)成绩评定表班级姓名学号1、实习(设计)名称:基于51单片机的五路抢答器2、实习(设计)题目:基于51单片机的五路抢答器3、实习(设计)时间:自2013 年12 月30 日至2014 年1 月17 日4、实习(设计)地点:12#405A5、主要内容简述:设计一个五路抢答器,必须有主持人按钮,当主持人按下按钮,开始30秒倒计时,这30秒内即是五位选手抢答的时长,若30秒内没有选手抢答,则视为所有选手弃权。
倘若30秒内有人抢答,定时到10秒,同时在屏幕上显示该抢答选手号码,当主持人按下开始答题键时,则倒计时从10秒开始,同时选手号码清零。
若10秒内无法回答,则该选手视为回答错误。
6、指导教师评语:7、指导小组复评意见:8、成绩:指导教师签名:年月日指导小组组长签名:年月日教研室主任签名:年月日摘要此次设计提出了用AT89C51单片机为核心控制元件,设计一个简易的抢答器,本方案以AT89C51单片机作为主控核心,与74HC573、发光二极管、数码管、等构成五路抢答器,利用了单片机的延时电路、按键复位电路、时钟电路、定时/中断等电路,设计的抢答器具有实时显示抢答选手的号码和抢答时间的特点,还有复位电路,使其再开始新的一轮的答题和比赛,同时还利用C语言编程,使其实现一些基本的功能。
本设计的系统实用性强、判断精确、操作简单、扩展功能强。
关键字单片机抢答器数码管 74HC573目录一.绪论 (3)1.1单片机抢答器背景 (3)1.2单片机抢答器意义 (3)1.3抢答器意义 (3)二.实验安排............................... (4)三.整体设计方案 (5)3.1单片机的选择 (5)3.2单片机的基本结构 (7)3.3单片机的存储配置 (10)四.单片机设计 (12)4.1抢答器流程图 (12)4.2最小系统的设计 (13)4.3数码管显示电路 (14)4.4按键控制电路 (15)五.单片机调试 (16)六.结束语 (18)参考文献 (19)附录一五路抢答器源程序 (20)附录二五路抢答器原理图 (30)一.绪论1.1 单片机抢答器的背景二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。
单片机抢答器课程设计报告
单片机抢答器课程设计报告一、引言本篇报告主要介绍了单片机抢答器的课程设计,包括设计目的、设计原理、硬件系统和软件程序等方面。
单片机抢答器是一种基于单片机技术的电子设备,可以用于学校或公司内部的竞赛或考试等场合,提高参赛者的竞争力和活跃度。
二、设计目的本次课程设计的目的是通过实践操作,掌握单片机应用技术和电子电路基础知识,提高学生自主学习和解决实际问题的能力。
同时,也为学生提供一个锻炼自己竞争能力和团队协作能力的机会。
三、设计原理单片机抢答器主要由两个部分组成:硬件系统和软件程序。
硬件系统包括按键模块、LED显示模块、蜂鸣器模块、LCD液晶显示屏模块和单片机控制模块等。
软件程序则是由C语言编写而成,主要功能是控制各个模块之间的协调工作。
四、硬件系统1. 按键模块按键模块采用矩阵按键方式实现,可以同时检测多个按键的状态。
在设计中,我们采用了4x4的矩阵按键,即16个按键。
其中,有一个按键作为重置键,用于清除上一次抢答结果。
2. LED显示模块LED显示模块采用共阴极方式实现,可以同时控制多个LED的状态。
在设计中,我们采用了8个LED灯,分别代表1~8号选手。
3. 蜂鸣器模块蜂鸣器模块可以发出不同频率的声音信号,用于提示选手抢答成功或失败。
在设计中,我们采用了一个5V的主动蜂鸣器。
4. LCD液晶显示屏模块LCD液晶显示屏模块可以显示选手抢答结果和当前比赛状态等信息。
在设计中,我们采用了一个16x2字符型液晶显示屏。
5. 单片机控制模块单片机控制模块是整个硬件系统的核心部分,主要负责各个模块之间的协调工作。
在设计中,我们采用了AT89C51单片机作为控制芯片。
五、软件程序软件程序是整个系统的灵魂部分,主要负责实现各种功能。
在本次课程设计中,我们使用C语言编写了单片机抢答器的软件程序。
主要功能包括:初始化、检测按键状态、显示比赛状态、判断抢答结果等。
六、实验结果经过多次实验,我们成功地实现了单片机抢答器的设计。
抢答器单片机课程设计报告
目录一课程设计题目及要求 (2)二设计整体思路 (2)三原理图 (2)四程序模块 (3)五软件程序 (4)六心得体会 (13)一、课程设计题目及要求①抢答开关电路分别设定选手抢答键8个、主持人开始抢答键和复位键,开始指示灯,犯规指示灯,抢答成功指示灯。
②系统工作后,首先由主持人按下开始键,开始指示灯亮,单片机进入20秒倒计时并显示,台位号显示0。
③选手们开始抢答,如果在20秒内无人抢答,则蜂鸣器发声报警,等待主持人按复位键,进入下一题;④若有人抢答,数码管同步显示抢答选手的编号,同时蜂鸣器器发声提示,表示抢答成功,抢答成功指示灯亮,开始指示灯灭。
同时封锁输入电路,禁止其他选手抢答⑤在主持人按下开始抢答键前,有选手提前按下抢答键时,视为抢答犯规,犯规指示灯点亮,数码管显示犯规选手台位号,同时蜂鸣器发声提示抢答犯规。
⑥主持人按下复位键,系统返回到抢答状态,进行下一轮抢答。
⑦当主机发送09H,从机回发09H,主机显示9,当主机发送非09H时,从机回发台位号,并在主机显示。
⑧二、设计整体思路根据任务要求抢答器由抢答输入、单片机识别和处理、输出信息和状态的显示、串行通信四部分组成。
抢答器的工作原理是采用单片机最小系统,用程序查询方式采用动态显示组号。
由波码开关K1~K8组成8路抢答器的输入,有复位按钮和C1,电阻组成复位电路。
单片机运行时对P1口扫描检测,判断是否有按键按下,进一步确定是哪路键位按下。
P2口做倒计时20秒两位数码管驱动,每位数码管输入为8位二进制代码。
第一位数码管为抢答台位数码显示。
D1、D2、D3发光二极管只是抢答器的工作状态,蜂鸣器BUZI发出声音提示。
其工作原理为:接通电源后,主持人将开关拨到“清除”状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置,“开始”状态,宣布“开始”抢答器工作。
定时器倒计时,选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。
单片机抢答器实训报告
一、实训背景与目的随着电子技术的飞速发展,单片机作为一种低功耗、高性能的微处理器,被广泛应用于各个领域。
为了提高学生的实践能力和创新意识,本实训课程旨在通过设计和实现单片机抢答器,让学生深入了解单片机的基本原理、接口技术以及编程方法,同时培养学生的团队合作精神和动手能力。
二、实训内容与要求本次实训要求设计并实现一个基于单片机的六路抢答器。
该抢答器应具备以下功能:1. 抢答功能:六位选手通过按下对应的按钮(K0~K5)进行抢答,系统优先识别并锁存第一个按下按钮的选手编号。
2. 显示功能:抢答成功后,在LED数码管上显示该选手的编号。
3. 锁存功能:一旦选手抢答成功,其编号将保持显示,直至主持人手动清除。
4. 提示功能:扬声器发出报警声提示主持人抢答成功。
三、实训过程与实现1. 硬件设计本实训采用AT89C52单片机作为主控芯片,外围电路主要包括以下部分:- 按键模块:六位选手分别通过K0~K5按钮进行抢答。
- 显示模块:使用LED数码管显示选手编号。
- 锁存模块:通过单片机的I/O口实现选手编号的锁存。
- 提示模块:使用扬声器发出报警声。
2. 软件设计软件设计主要涉及单片机编程,主要包括以下部分:- 主程序:初始化单片机,设置I/O口,并进入主循环。
- 抢答程序:检测按键状态,判断是否发生抢答,并执行相应的操作。
- 显示程序:根据锁存的选手编号,更新LED数码管显示。
- 提示程序:抢答成功后,通过扬声器发出报警声。
3. 系统调试在完成硬件和软件设计后,需要进行系统调试。
主要步骤如下:- 硬件调试:检查电路连接是否正确,确保各个模块能够正常工作。
- 软件调试:通过仿真软件或实际硬件进行程序调试,修正错误。
四、实训结果与分析经过一系列的硬件和软件设计、调试,最终成功实现了基于单片机的六路抢答器。
该抢答器能够满足以下要求:1. 抢答功能:能够正确识别并锁存第一个按下按钮的选手编号。
2. 显示功能:能够通过LED数码管显示选手编号。
单片机抢答器实验报告(2篇)
单片机抢答器实验报告(2篇)以下是网友分享的关于单片机抢答器实验报告的资料2篇,希望对您有所帮助,就爱阅读感谢您的支持。
篇一:单片机抢答器实验报告单片机八路抢答器实验报告一实验任务1. 设计一个竞赛抢答器,可同时供8名选手或者8个代表队参加比赛,他们的编号分别是1、2、3、4、5、6、7、8,各用一个抢答器的按钮,按钮的编号与选手的编号相对应。
2. 给节目主持人设计一个控制开关,用来控制系统的清零和抢答开始。
3.抢答器具有数据显示,声音提示的功能。
二.源程序(1)头文件#include#include#include#include#define uint unsigned int#define uchar unsigned char//-------------------------------------------------------------------------------------void show(); //液晶显示程序//-------------------------------------------------------------------------------------//12864液晶显示部分子程序模块//-------------------------------------------------------------------------------------sbit LCD_RS = P2 ; //寄存器输入sbit LCD_RW = P2; //液晶读/写控制sbit LCD_EN = P2; //液晶使能控制sbit LCD_PSB = P2;sbit SW1 = P1 ;sbit SW2 = P1;sbit SW3 = P1;sbit SW4 = P1;sbit SW5 = P1;sbit SW6 = P1;sbit SW7 = P1;sbit SW8 = P1;sbit beep = P3;#define LCD_data P0//sbit busy=P0; //lcd busy bitvoid lcd_xieping0(uchar x,uchar y,uchar date); void lcd_xieping(uchar x,uchar y,uchar *str); void chn_disp0(uchar code *chn);void img_disp(uchar code *img);void lcd_xieping1(uchar x,uchar y,uchar *str); void lcd_init();void write_cmd(uchar cmd); void delay_ms1(uint z);void delay_ms(uint z);void dingding(int a);//void Init_Timer0(void);void clr(void);extern unsigned char mmm[8][9]; char keynumber();(2)显示部分的程序#include “head.h”unsigned char mmm[8][9];void delay_ms(uint z)//长延时{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void delay_ms1(uint z)//长延时{uint x,y;for(x=z;x>0;x--)for(y=10;y>0;y--);}//-------------------------------------------------------------------------------------// 液晶显示部分//-------------------------------------------------------------------------------------void write_cmd(uchar cmd){LCD_RS = 0;LCD_RW = 0;LCD_EN = 0;P0 = cmd;delay_ms1(1);LCD_EN = 1;delay_ms1(1);LCD_EN = 0;}void write_dat(uchar dat){LCD_RS = 1;LCD_RW = 0;LCD_EN = 0;P0 = dat;delay_ms1(1);LCD_EN = 1;delay_ms1(1);LCD_EN = 0;}void lcd_xieping0(uchar x,uchar y,uchar date) {switch(x){case 0: write_cmd(0x80+y); break;case 1: write_cmd(0x90+y); break;case 2: write_cmd(0x88+y); break;case 3: write_cmd(0x98+y); break;}write_dat(date);}void lcd_xieping(uchar x,uchar y,uchar *str) {switch(x){case 0: write_cmd(0x80+y); break;case 1: write_cmd(0x90+y); break;case 2: write_cmd(0x88+y); break;case 3: write_cmd(0x98+y); break;}while (*str){write_dat(*str);str++;}}void lcd_xieping1(uchar x,uchar y,uchar *str) {switch(x){case 0: write_cmd(0x84+y); break;case 1: write_cmd(0x94+y); break;case 2: write_cmd(0x8C+y); break; case 3: write_cmd(0x9C+y); break; }while (*str){write_dat(*str);str++;}}void lcd_init(){LCD_PSB = 1; //并口方式write_cmd(0x30); //基本指令操作delay_ms(5);write_cmd(0x0C); //显示开,关光标delay_ms(5);write_cmd(0x01); //清除显示内容delay_ms(5);}void chn_disp0(uchar code *chn) {uchar i,j;write_cmd(0x30); //void write_cmd(uchar cmd) write_cmd(0x84);j=0;for(i=0;iwrite_dat(chn[j*16+i]);write_cmd(0x8c);j=1;for(i=0;iwrite_dat(chn[j*16+i]);}void show(){lcd_xieping(0,0,mmm[0]);lcd_xieping(0,4,mmm[1]);lcd_xieping(1,0,mmm[2]);lcd_xieping(1,4,mmm[3]);lcd_xieping(2,0,mmm[4]);lcd_xieping(2,4,mmm[5]);lcd_xieping(3,0,mmm[6]);lcd_xieping(3,4,mmm[7]);}(3)抢答器:#include “head.h”unsigned int ms,i=0;//定义全局变量bit FLag=0;//定义停止,计时标志char yy[8]={0,0,0,0,0,0,0,0};void main(){unsigned char num=0,k,j,temp;EX0=1; //外部中断0开IT0=1; //IT1=0表示边沿触发EX1=1; //外部中断1开IT1=1; //IT1=1表示边沿触发Init_Timer0();lcd_init();for(k=0;kfor(j=0;jmmm[k][j]=0;//mmm[0][0]=…0‟;mmm[1][0]=…0‟;mmm[2][0]=…0‟;mmm[3][0]=…0‟;mmm[4][0]=…0‟;mmm[5][ 0]=…0‟;mmm[6][0]=…0‟;mmm[7][0]=…0‟;while(1){temp= keynumber();if(temp){mmm[i][0]=temp+‟0‟;mmm[i][1]=…:‟;mmm[i][2]= ms/1000+‟0‟;mmm[i][3]=ms%1000/100+‟0‟;mmm[i][4]=ms%100/10+‟0‟;mmm[i][5]=ms%10+‟0‟;mmm[i][6]=…m‟;mmm[i][7]=…s‟;mmm[i][8]=…\0‟;show();i++;}show();}}/*------------------------------------------------定时器初始化子程序------------------------------------------------*/ void Init_Timer0(void){TMOD |= 0x01;EA=1;ET0=1;TR0=1;}/*------------------------------------------------ 定时器中断子程序------------------------------------------------*/ void Timer0_isr(void) interrupt 1{TH0=0xFC; //重新赋值1ms TL0=0x66;if(FLag){ms++;if (ms==60000){ms=0;}}}/*------------------------------------------------ 外部中断0程序------------------------------------------------*/ void ISR_INT0(void) interrupt 0{EX0=0;dingding(50);lcd_xieping(0,2,” 可以开始抢答“); FLag=!FLag;}/*------------------------------------------------ 外部中断1程序------------------------------------------------*/ void ISR_INT1(void) interrupt 2 {if(FLag==0)//停止时才可以清零clr();}/*------------------------------------------------ 数值清零------------------------------------------------*/ void clr(void){unsigned char k,j;for(k=0;kmmm[k][j]=0;for(k=0;kms=0; //清空计时i=0;write_cmd(0x01); //清屏}char keynumber(){if((!SW1)&&(!yy[0])){delay_ms1(20);if((!SW1)&&(!yy[0])) {yy[0]=1;return 1;}}if((!SW2)&&(!yy[1])){delay_ms1(20);if(!SW2){yy[1]=1; return 2; } } if((!SW3)&&(!yy[2])) { delay_ms1(20); if(!SW3) { yy[2]=1; return 3; } } if((!SW4)&&(!yy[3])) { delay_ms1(20); if(!SW4) { yy[3]=1; return 4; } } if((!SW5)&&(!yy[4])) { delay_ms1(20); if(!SW5){ yy[4]=1; return 5; } } if((!SW6)&&(!yy[5])) { delay_ms1(20); if(!SW6) { yy[5]=1; return 6; } } if((!SW7)&&(!yy[6])) { delay_ms1(20); if(!SW7){yy[6]=1; return 7; }}if((!SW8)&&(!yy[7])) {delay_ms1(20); if(!SW8) {yy[7]=1; return 8; }}return 0;}void dingding(int a) {int k;for(k=0;kbeep=0;delay_ms(1); beep=1; }}篇二:单片机抢答器实验报告实习(设计) 报告姓名班级学号实习(设计) 科目基于51单片机的五路抢答器实习(设计) 地点实习(设计) 时间电气工程及自动化学院School of Electrical Engineering & Automation说明:(1)本日志用于记录实习(设计)过程中的各项活动内容,要求学生必须填写具体、齐全、工整。
8路抢答器实验报告
8路抢答器实验报告1. 实验目的本实验的主要目的是使用8051单片机实现一个8路抢答器,通过此实验进行对8051单片机的基本功能使用的学习与实践。
2. 实验设备本实验所需设备为:8051单片机,LED灯8个,按键8个,继电器8个,电阻8个,电源、面包板、杜邦线等。
3. 实验原理抢答器是一种用来考验大家反应速度的体育游戏,而这种游戏的核心就是一个电子计时器,本实验的抢答器就是一个基于8051单片机的电子计时器。
抢答器的原理:开启定时器,确定一个随机时间,随机时间结束后,第一个按下按键的人获得了抢答的权利,按下按键之后,其它的按键则无法工作。
等到所有的按键都无法工作时,即抢答结束,此时可以利用LED或者接上继电器进行开关控制。
4. 实验步骤4.1 硬件电路连接将8个LED灯和8个按键分别连接到8个口线上,除此之外还需要连接8个电阻和8个继电器,将其连接到端口上,在连接好之后,进行外部与单片机的连接。
根据本实验需要,固定内部高低电平,同时其他单片机口线需要接继电器。
最后将电脑串口线同单片机串口接口相连。
4.2 编写单片机程序在编写单片机程序之前,首先需要对手册进行分析,确定采用的指令集,并开始编写程序。
4.3 配置定时器在本实验中,需要实现的功能是随机时间,所以需要通过定时器来实现,实现方法是使用定时器的计数器,改变计数器的初始值,以达到随机时间的效果。
在对定时器进行初始化之后,对计数器的值进行配置。
4.4 实现抢答器功能首先需要将单片机初始化,在初始化完成后,开始进行随机时间的计算。
每当按下按键之后,需要进行一些特定的操作,比如计算按键时间,进行相应的判断,并激活LED或继电器。
当最后一个按键被按下之后,抢答器即时结束。
这种方式的实现是在倒计时结束之前,抢答器不会被激活,直到倒计时结束后,抢答器才会被激活,同时相应的LED或继电器也会被关闭或关闭。
5. 实验总结通过本次实验,我对8051单片机有了更深刻的认识,了解了使用8051单片机实现抢答器的程序结构和代码实现方式,了解了定时器的使用和编程,掌握了按键的使用和程序控制的方法。
单片机实训抢答器课程设计报告实验
上海电机学院课程设计目录第1章绪论 (1)1.1 单片机抢答器的背景 (1)1.2 抢答器的意义 (1)第2章设计概述 (2)2.1 抢答器的工作原理 (2)2.2 设计任务 (2)第3章系统硬件电路设计 (2)3.1 AT89C51单片机硬件电路 (2)3.2原理及电路总框图 (3)第4章系统软件设计 (6)4.1 主程序设计 (6)4.2 子程序设计 (6)4.2.1数码管显示电路 (6)4.2.2键盘扫描段码表 (7)4.3 系统流程图 (7)4.3.1系统主程序流程图 (7)4.3.2系统中断程序流程图 (7)4.4 源程序代码 (9)第5章结束语 (17)5.1 小结 (17)5.2 心得体会 (17)参考文献 (18)第1章绪论1.1 单片机抢答器的背景对于抢答器我们大家来说并不陌生, 他是用于很多竞赛场合。
真正实现先抢先答, 让最先抢到题的选手来回答问题。
抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气, 选手们都站在同一个起跑线上, 体现了公平公正的原则。
1.2 抢答器的意义本系统采用单片机作为整个控制核心。
控制系统的四个模块为: 显示模块、存储模块、抢答开关, 总开关模块。
该系统通过一个自锁按键输入抢答信号;利用一个数码管来完成显示功能;用按键来让选手进行抢答, 在数码管上显示哪一组先答题的, 从而实现整个抢答过程。
在知识比赛中, 特别是做抢答题目的时候, 在抢答过程中, 为了知道哪一组或哪一位选手先答题, 必须要设计一个系统来完成这个任务。
如果在抢答中, 靠视觉是很难判断出哪组先答题。
利用单片机系统来设计抢答器, 使以上问题得以解决, 即使两组的抢答时间相差几微秒, 也可分辨出哪组优先答题。
相对于类似电视台这类花几万元采购的抢答器系统, 如果个人组织小型的抢答比赛, 这毕竟不合适, 但是依靠单片机的低成本, 低功耗, 可以很好的解决个人用户需要举办小型抢答比赛的需求, 而且精度高, 操作性好。
单片机课程设计(基于多路数字抢答器)(范文)
单片机课程设计(基于多路数字抢答器)(范文)第一篇:单片机课程设计(基于多路数字抢答器)(范文)一、概述大学四年的学习生活中,会遇到各种各样的竞赛,抢答器便成为了主要的工具之一。
而现在的抢答器智能化越来越强,这必然会提高抢答器的成本。
本抢答器与其他抢答器电路相比较成本低、制作方便,并且还有作弊显示功能。
因此,这款四路抢答器摒弃了成本高、体积大、操作复杂等不足。
我们采用了数字显示器直接指示,因而本抢答器具有显示直观,操作简单的特点。
二、主要功能及技术指标抢答器的工作原理是用矩阵式键盘进行抢答。
采用动态显示组号。
主持人按下开始抢答键才可以抢答。
主持人没有按下开始抢答按纽(P3.2),有人抢答则抢答违规,报警并显示组号,主持人按下开始抢答开关重新抢答。
主持人按下开始抢答按纽(P3.2),蜂鸣响声提示,且数码管10秒倒计时(10秒内抢答有效),有人在10秒抢答,蜂鸣器响声提示并显示他的组号,3秒开始20秒倒计时(20秒内必须回答完问题)。
20秒后主持人按下复位开关为下一题的抢答做准备。
单片机最小系统、抢答按键模块(四位并行数码显示、1*4矩阵式键盘)、显示模块、抢答开关模块、蜂鸣器输出模块。
三、系统组成及原理1、分图四、软件1、分配流程图初始化开始20秒回答问题时间到并响声提示调用读键子程序作为延时程序设定定时器初值并启动定时器中断条件是否满足Y开中断并响声提示NN 读键盘是否有键按下Y调用显示抢答违规并报警子程序报警提示编号10秒抢答倒计时开始显示显示违规者编号是否有按键按下NY调用抢答者获得回答的子程序10到时中断并返回响声提示设定定时器初值并启动显示抢答者并且3秒后倒计时RET32、源程序ORG 0000H LJMP MAIN ORG 0013H LJMP ESS1 ORG 0100H MAIN:SETB EA SETB EX1 SETB IT1;外部中断1初始化L16:MOV P1,#0FFH MOV R2,#00H CLR P1.0 INC R2 JB P1.4,L0 LCALL DE0 L0:INC R2 JB P1.5,L1 LCALL DE0 L1:INC R2 JB P1.6,L2 LCALL DE0 L2:INC R2 JB P1.7,L3 LCALL DE0 L3:SETB P1.0 CLR P1.1 INC R2 JB P1.4,L4 LCALL DE0 L4:INC R2 JB P1.5,L5 LCALL DE0 L5:INC R2 JB P1.6,L6 LCALL DE0 L6:INC R2 JB P1.7,L7 LCALL DE0 L7:SETB P1.1 CLR P1.2 INC R2 JB P1.4,L8 LCALL DE0 L8:INC R2JB P1.5,L9 LCALL DE0 L9:INC R2 JB P1.6,L10 LCALL DE0 L10:INC R2 JB P1.7,L11 LCALL DE0 L11:SETB P1.2 LJMP L16;读行列式键盘 ESS1:MOV 70H,#30D;外部中断1 MOV R7,#0CH CLR P3.0 S2:LCALL DELAY DJNZ 70H,S2 SETB P3.0;蜂鸣器提示开始抢答 MOV TMOD,#00010000B MOV R3,#0AH L20:MOV 55H,#14H L19:MOV TH0,#3CH MOV TL0,#0B0H;定时器1初始化 SETB TR1;启动定时器1 MOV A,R3 MOV B,#0AH DIV AB MOV DPTR,#TAB MOVC A,@A+DPTR MOV 53H,A CLR P2.4 MOV P0,53H LCALL DELAY1 SETB P2.4 MOV A,B MOVC A,@A+DPTR MOV 54H,A CLR P2.5 MOV P0,54H LCALL DELAY1 SETB P2.5 L18:JNB TF1,L18 CLR TF1 DJNZ 55H,L19 DEC R3 CJNE R7,#00H,D6LJMP D5 D6:CJNE R3,#0FFH,L21 LJMP L22 L21:LJMP L20;抢答倒计时 L22:MOV 73H,#02D S5:MOV 70H,#20D MOV 71H,#20H CLR P3.0 S4:LCALL DELAY DJNZ 70H,S4 SETB P3.0 S6:LCALL DELAY DJNZ 71H,S6 DJNZ 73H,S5;抢答倒计时时间到声音提示D5:RETI DE0:MOV DPTR,#TAB;抢答违规报警并显示抢答违规组号MOV A,R2 MOV B,#0AH S10:MOV 72H,#20D MOV 73H,#10D CLR P3.0 S8:LCALL LCC DJNZ 72H,S8 SETB P3.0 S9:LCALL LCC DJNZ 73H,S9 DJNZ 71H,S10 L17:LCALL LCC LJMP L17 LCC:CLR P2.4 MOV P0,50H LCALL DELAY DELAY1:MOV P1,#0FFH;正常抢答读键MOV R4,#250D W17:MOV R2,#00H CLR P1.0 INC R2 JB P1.4,W0 LCALL DE1 W0:INC R2 JB P1.5,W1 LCALL DE1 W1:INC R2 JB P1.6,W2 LCALL DE1 W2:INC R2 JB P1.7,W3 LCALL DE1 W3:SETB P1.0 CLR P1.1 INC R2 JB P1.4,W4 LCALL DE1 W4:INC R2 JB P1.5,W5 LCALL DE1 W5:INC R2 JB P1.6,W6 LCALL DE1 W6:INC R2 JB P1.7,W7 LCALL DE1 W7:SETB P1.1 CLR P1.2 INC R2 JB P1.4,W8 LCALL DE1 W8:INC R2 JB P1.5,W9 LCALL DE1 W9:INC R2 JB P1.6,W10 LCALL DE1 W10:INC R2 JB P1.7,W15 LCALL DE1 W15:SETB P1.3 DJNZ R4,W16 LJMP W18 W16:LJMP W17 W18:RET DE1:MOV P1,#0FFH;MOV 70H,#20D CLR P3.0 S3:LCALL DELAY DJNZ 70H,S3 SETB P3.0 SETB P2.0 抢答成功声音提示及回答问题时间20秒倒计时7SETB P2.1 MOV DPTR,#TAB MOV A,R2 MOV B,#0AH DIV AB MOVC A,@A+DPTR MOV 56H,A MOV A,B MOVC A,@A+DPTR MOV 57H,A MOV TMOD,#00000001B MOV R5,#16H L32:MOV R6,#14H L31:MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 CLR P2.4 MOV P0,56H LCALL DELAY SETB P2.4 CLR P2.5 MOV P0,57H LCALL DELAY SETB P2.5 CJNE R5,#14H,L34 LJMP L35 L34: JC L35 LJMP L30 L35: MOV A,R5 MOV B,#0AH DIV AB MOVC A,@A+DPTR MOV 58H,A MOV A,B MOVC A,@A+DPTR MOV 59H,A CLR P2.6 MOV P0,58H LCALL DELAY SETB P2.6 CLR P2.7 MOV P0,59H LCALL DELAY SETB P2.7 L30:JNB TF0,L30 CLR TF0 DJNZ R6,L31 DEC R5 CJNE R5,#0FFH,L32 MOV P1,#0FFH MOV 70H,#50D CLR P3.0 S7:LCALL DELAY DJNZ 70H,S7 SETB P3.0 MOV P2,#0FFH MOV R3,#00H MOV R7,#00H RET DELAY:MOV 51H,#10D;延时子程序D0:MOV 52H,#248D D1:DJNZ 52H,D1 DJNZ 51H,D0 RET TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END五、分析这次实训遗憾的是,我的实训材料是买的成品的板,没有自己去焊制自己的实训板,当然这节省了一些时间,但是,在原理图上确实也花费了一些时间。
基于某单片机的抢答器设计报告材料
基于某单片机的抢答器设计报告材料一、设计目的:本设计旨在利用单片机技术制作一个简单的抢答器,用于进行课堂或者活动中的抢答活动。
通过本设计,可以提高学生们的积极性和参与度,增加互动性,使课堂更加生动有趣。
二、设计原理:本设计基于单片机技术,利用单片机的输入输出功能和定时器等模块实现。
抢答器由一个发射器和多个接收器组成,发射器用于发射信号,接收器用于接收信号并显示抢答者的编号。
具体原理如下:1.发射器:发射器由一个按钮和一个LED灯组成。
当按钮按下时,单片机产生一个信号,并同时点亮LED灯表示开始抢答。
单片机发送一个指令给接收器,并记录抢答者的编号。
2.接收器:接收器由若干LED灯和一个蜂鸣器组成。
当接收器接收到发射器发送的信号时,单片机点亮对应的LED灯并发出声音提示抢答成功。
同时,单片机记录并显示抢答者的编号。
三、硬件设计:本设计的硬件主要包括发射器和接收器两部分。
1.发射器硬件设计:-单片机:选用STM32系列单片机作为控制核心。
-按钮:用于启动抢答器。
-LED灯:用于指示抢答器状态。
-电池供电:为了方便携带和使用,采用电池供电。
2.接收器硬件设计:-单片机:选用STM32系列单片机作为控制核心。
-LED灯:用于显示抢答者编号。
-蜂鸣器:用于抢答成功提示。
-电源模块:接收器需要外接电源供电。
四、软件设计:1.发射器软件设计:-初始化:设置单片机的输入输出引脚。
-按钮检测:检测按钮是否按下。
-发送信号:当按钮按下时,发送抢答信号给接收器。
-点亮LED灯:同时点亮LED灯表示抢答开始。
-记录编号:记录抢答者编号。
2.接收器软件设计:-初始化:设置单片机的输入输出引脚。
-接收信号:接收发射器发送的信号。
-点亮LED灯:根据接收到的编号点亮对应的LED灯。
-发出声音:抢答成功时发出蜂鸣器声音。
五、实验结果:经过搭建和测试,本设计的抢答器能够正常工作,发射器按下按钮后,接收器能够准确接收并显示抢答者编号。
单片机课程设计抢答器
单片机课程设计 抢答器一、课程目标知识目标:1. 让学生掌握单片机的基本原理和功能,了解抢答器的电路构成和工作原理。
2. 使学生熟悉抢答器程序设计的基本方法,掌握相关编程语言和开发工具。
3. 帮助学生了解抢答器在实际应用中的技术要求和注意事项。
技能目标:1. 培养学生动手搭建简单抢答器电路的能力,提高实践操作技能。
2. 培养学生运用编程语言设计抢答器程序的能力,提升编程技巧。
3. 培养学生分析问题、解决问题的能力,提高团队协作和沟通能力。
情感态度价值观目标:1. 激发学生对单片机及电子制作的兴趣,培养创新意识和实践精神。
2. 培养学生严谨、细心的学习态度,养成勤奋、刻苦的学习习惯。
3. 增强学生的团队合作意识,培养公平竞争、尊重他人的价值观。
课程性质分析:本课程为单片机课程设计,以实践操作为主,注重培养学生的动手能力和实际应用能力。
学生特点分析:学生处于高中年级,已具备一定的电子基础和编程知识,具有较强的学习兴趣和求知欲,但实践操作经验不足。
教学要求:1. 结合课本知识,注重理论与实践相结合,提高学生的实际操作能力。
2. 采取分组教学,培养学生的团队协作能力和沟通能力。
3. 注重过程评价,关注学生的个体差异,激发学生的学习兴趣和自信心。
二、教学内容1. 单片机原理:回顾课本第二章内容,讲解单片机的组成、工作原理及主要性能参数。
- 单片机的基本结构- 工作原理及性能参数- 单片机的应用领域2. 抢答器电路设计:结合课本第四章实例,学习抢答器电路的构成及原理。
- 抢答器电路的构成- 抢答器工作原理- 常用元器件的选择与使用3. 抢答器程序设计:参考课本第五章编程知识,学习抢答器程序设计方法。
- 编程语言基础- 程序设计思路- 编程技巧及调试方法4. 实践操作:根据教学进度,安排学生进行抢答器电路搭建和程序设计。
- 电路搭建与调试- 程序编写与优化- 成果展示与评价5. 教学大纲:- 第一周:回顾单片机原理,学习抢答器电路构成及原理;- 第二周:学习抢答器程序设计方法,进行程序编写;- 第三周:实践操作,完成抢答器电路搭建和程序设计;- 第四周:成果展示,总结评价。
C51单片机8路抢答器实训报告
《单片机与接口技术》课程设计报告抢答系统设计学生姓名:_ _____曾超________学号:___201358264031____________班级:___物联网____________指导老师:__刘艳军_____________日期:__2015/06/28_____________1 题目与要求 (3)1.1 问题提出 (3)1.2 本系统涉及的知识点 (3)2系统硬件设计 (3)2.1 模块图 (3)2.2 部分模块电路图 (4) (6)3系统软件设计 (6)4 总结 (20)4.1程序调试情况 (20)4.2本人在程序设计中感想 (22)(四)参考文献(左对齐,宋体粗四号) (22)1 题目与要求1.1 问题提出实现一个“抢答系统设计”。
1)制作一个8人抢答器,以开关中的某个开关的按下(闭合)作为抢答按键。
2)无人抢答时,8只数码管轮流循环显示1~8(跑马),谁先抢答,数码管停止跑马,8个数码管同时亮谁的编号,并用蜂鸣器发提示音;其后再有人按键,系统不予响应,直到复位键按下,开始下一轮抢答。
3)主持人端有一个复位键,可重新开始抢答;有一个答案正确的按键,和一个答案错误的按键,按下时有不同的提示音;要想实现8路抢答器,首先要清楚抢答器的功能。
需要设置多少个功能键?功能按键通过哪个I/O口控制?对于此系统,我们第一步应该做什么,先完成哪个部分?1.2 本系统涉及的知识点本系统涉及到的知识点有:1.按键的处理。
2.数码管的动态静态显示。
2系统硬件设计2.1 模块图2.2 部分模块电路图1. 4*3矩阵键盘,本系统中只用到3个功能键,故令P1^4=0控制列线,P1^1,P1^2,P^3分别为横线,不需要做扫描。
分别控制S1,S5,S9.2.8路独立按键,为本系统的8路抢答按键。
通过P3口输入控制。
3.蜂鸣器,接在P1^5.3系统软件设计延时函数模块代码如下:V oid mDelay(unsigned int Delay){unsigned int i;for(;Delay>0;Delay--){for(i=0;i<124;i++){;}}}主程序函数模块,代码:#include<reg51.h>sbit P14=P1^4;sbit Right=P1^1;sbit False=P1^2;sbit P13=P1^3;sbit Beep = P1^5;unsigned char table[8]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f}; unsigned char wei[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F}; void main(){int i,t;P14=0;//ap1:P3=0xff;while(1){for(i=0;i<8;i++){P2=wei[i]; //从这里开始修改选手编号跑马效果P0=table[i];mDelay(150);if(P3!=0xff){//r8=P3;switch(P3){case 0xfe:{//for(t=0;t<2;t++)//抢答后选手编号闪烁次数//{P2=0xfe;//按下哪一个按键,则数码管位码送该位。
单片机课程设计报告--三组抢答器
1功能描述(课程设计内容及要求)基于单片机控制的智力竞赛抢答器1)能实现3组抢答。
2)能显示抢答组号。
3)各组计分,并能计分显示。
4)比赛结束时,能发出报警声。
5)显示实时温度(扩展功能)2 方案设计2.1 系统分析根据系统功能要求,可将系统组成结构分成六大部分:单片机控制中心、按键控制、选手显示、得分显示、倒计时显示和光电报警,如下图为系统的组成结构图。
其中,单片机控制中心是核心。
MCU根据按键输入,可切换不同的显示模式或设置不同的参数。
选手显示是显示抢答选手的信息。
得分显示是显示选手得分信息。
倒计时显示是显示开始抢答与选手回答时间倒计时。
光电显示可完成抢答时间与回答时间到的警示。
系统组成结构图2.2 器件选择2.2.1 微处理器市场上微处理器种类很多。
这里,选取微处理器从多方面考:成本低、性能高、能够满足功能要求等等。
这里,选取STC89C52芯片。
因为其功能与普通51芯片相同,其价格非常低廉、程序空间大、资源较丰富、在线下载非常方便。
同时,使用该芯片,编程上亦可采用所熟悉的KEIL软件,使课程设计非常简单。
2.2.2 显示器常见的显示器件LED数码管和LED灯。
由于系统要求显示选手号,选手分数和倒计时时间和时间到的报警显示,采用四位数码管显示与一个LED灯的显示。
2.2.3 按键按键是用来选手用来抢答与主持人按键启停,加分减分与查分功能的。
这里采用普通按键即可,选用原则:以最少的按键,实现尽可能多的功能。
所以这里,设置六个按键:模式键、加分键、减分键与三个抢答键。
模式键:主持人按键,对应于P32接口的按键。
加分键:对应于P10接口。
减分键:对应于P11接口。
抢答键:三个选手1、2、3分别对应于P20、P21、P22接口。
3、硬件电路设计3.1 最小系统设计图3.1 单片机最小系统3.2 显示电路设计图3.2 数码管显示3.3 按键电路设常见的键盘种类可分为:独立式按键和矩阵式键盘。
本设计采用独立式按键结构,如图3.3与图3.4所示。
实习报告--单片机抢答器设计
西安郵電大学单片机课程设计C 报告书院(系)名称:自动化学院学生姓名:孙天骜、张梦圆、李咪咪、左鹏飞专业名称:智能科学与技术班级:智能1202时间:2014年10月20日至2014年10月31日目录单片机课程设计报告 ............................... 错误!未定义书签。
一、数字抢答器的概述 (3)二、设计任务与要求 (3)三、抢答器原理 (4)四、抢答器方案论证 (4)五、注意事项 (5)六、系统原理图 (6)七、硬件结构设计 (6)1.时钟频率电路的设计 (6)2.复位电路的设计 (7)3.数码管电路的设计 (8)4.蜂鸣器电路的设计 (8)八、主程序系统结构图 (8)1.系统程序 (8)九、实验心得 (17)一、数字抢答器的概述对于抢答器我们大家都知道那是用于选手做抢答题时用的,选手进行抢答,抢到题的选手来回答问题。
抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气。
选手们都站在同一个起跑线上,体现了公平公正的原则。
本实验设计的数字抢答器由主体电路与扩展电路组成。
优先编码电路、锁存器、译码电路将参赛队的输入信号在显示器上输出;用控制电路和主持人开关启动报警电路,以上两部分组成主体电路。
通过定时电路和译码电路将秒脉冲产生的信号在显示器上输出实现计时功能,构成扩展电路。
经过布线、焊接、调试等工作后数字抢答器成形。
更具有实用性。
二、设计任务与要求1、基本要求(1)抢答器同时供4名选手或4个代表队比赛,分别用4个按钮S1 ~ S4表示。
(2)设置一个系统清除和抢答控制开关S,该开关由主持人控制。
(3)抢答器具有锁存与显示功能。
即选手按动按钮,锁存相应的编号,并在LED数码管上显示。
选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。
(4)抢答器具有定时抢答功能,且一次抢答的时间由主持人设定为30秒。
当主持人启动"开始"键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。
基于51单片机八路抢答器课程设计
基于51单片机八路抢答器课程设计一、引言在现代教育中,抢答器作为一种教学辅助工具经常被用于进行课堂互动和知识点检测。
本课程设计旨在基于51单片机设计一个八路抢答器,通过硬件电路和软件程序的配合,实现对答题速度的测量和抢答器的控制。
二、实验目的1.熟悉并掌握51单片机的基本原理和编程方法;2.学会使用按键、LED等外设控制电路进行实验设计;3.理解抢答器的工作原理,掌握测量答题速度的方法;4.实际动手设计并制作一个八路抢答器。
三、实验原理3.1 51单片机基本原理51单片机是一种常见的单片机,具有低功耗、低成本和强大的功能特点。
它通过内部的CPU、存储器、I/O口等组成,可以实现各种控制任务。
在本次实验中,我们将使用51单片机来控制八路抢答器的功能。
3.2 抢答器的原理八路抢答器的原理是基于51单片机和按键、LED等外设的配合实现的。
抢答器中的每个按键对应一个LED灯,当某个按键被按下时,对应的LED灯会亮起。
同时,51单片机会记录下按键按下的时间,用于测量答题速度。
抢答器的控制逻辑可以通过编程实现。
四、实验步骤4.1 硬件电路设计1.连接51单片机与按键、LED等外设,确保电路连接正确;2.按照抢答器的八路设计,为每个按键连接一个LED灯;3.确保电路的供电正常,能够正常控制LED灯的亮灭。
4.2 软件程序设计1.编写51单片机的控制程序,实现按键与LED灯的互动;2.程序中需要包括按键检测、LED亮灭控制和答题速度记录等功能;3.调试程序,确保各个功能正常运行;4.将程序下载到51单片机中,进行全面测试。
五、实验结果5.1 硬件电路测试1.针对每个按键依次按下,观察对应的LED灯是否亮起;2.测试按键按下时的按键反馈是否正常;3.检查电路连接是否稳定,无松动情况。
5.2 软件程序测试1.模拟按键按下,观察对应的LED灯是否亮起;2.检查答题速度记录功能是否正常;3.检查程序逻辑是否正确,没有出现死循环等异常情况。
单片机抢答器课程设计报告书
目录简介 -- ---------二简介 -- ---------- 1第一章系统设计内容---------- ----------------- 21.1 系统设计基础------- - -------- 21.2 设计任务及要求-------- ---- 21. 3 设计目的------- ---------- -- ---------- -- 2第 2 章硬件设计-------- -- - 52.1 单片机控制原理-------- ---- 52.2 响应者的原理----------------- --------------- --- 52.2.1示意图 -- ------ 52.3 功能模块电路--------- ------- 52.3.1启动抢答电路和玩家抢答按钮----------- ----------------- 5 2.3.2.显示及显示驱动电路---------- -------------- 5第 3 章软件设计- -------- ----------------- 103.1 编程 --------- --- --------- - 10第 4 章系统调试------ -- ------------ 18第五章小结-------- ------------ 18参考 - - - - - - - - ---------------- 19附录 1 程序代码 --------- - ------------ 20附录二示意图 --------- - ------------- 27摘要随着社会的不断进步,电子技术也在飞速发展。
尤其是大规模集成电路的发展,使我们进入了电子时代。
越来越多的电子产品让我们的生活越来越方便。
尤其是计算机的发展突飞猛进。
自1946年世界第一台计算机诞生以来,不到六十年的时间里,计算机取得了举世瞩目的成就。
尤其是在通信领域,信息融合时代已经实现。
单片机制八路抢答器实训报告
单片机制八路抢答器一、设计任务与要求1.抢答器同时供8名选手或8个代表队比赛, 分别用8个按钮S0 ~ S7表示。
2.设置一个系统清除和抢答控制开关S, 该开关由主持人控制。
3.抢答器具有锁存与显示功能。
即选手按动按钮, 锁存相应的编号, 并在LED数码管上显示, 同时扬声器发出报警声响提示。
选手抢答实行优先锁存, 优先抢答选手的编号一直保持到主持人将系统清除为止。
4.抢答器具有定时抢答功能, 且一次抢答的时间由主持人设定(如30秒)。
当主持人启动"开始"键后, 定时器进行减计时, 同时扬声器发出短暂的声响, 声响持续的时间0.5秒左右。
5.参赛选手在设定的时间内进行抢答, 抢答有效, 定时器停止工作, 显示器上显示选手的编号和抢答的时间, 并保持到主持人将系统清除为止6.如果定时时间已到, 无人抢答, 本次抢答无效, 系统报警并禁止抢答, 定时显示器上显示00。
二、方案设计1.设计原理与参考电路其工作原理为: 接通电源后, 主持人将开关拨到"清除"状态, 抢答器处于禁止状态, 编号显示器灭灯, 定时器显示设定时间;选手在定时时间内抢答时, 抢答器完成: 优先判断、编号锁存、编号显示、扬声器提示。
当一轮抢答之后, 定时器停止、禁止二次抢答、定时器显示剩余时间。
如果再次抢答必须由主持人再次操作"清除"和"开始"状态开关。
三、电路硬件设计1. 电源: 交直流均可输入, 桥式整流后有1000UF电容滤波, 7805稳压, 输入电压较宽, 适应性好, 电路工作稳定;2. 显示: 用0。
56 英寸的共阴数码管, 动态扫描, 不需三极管来驱动, 字符大, 亮度适中;3. 发声: 用无源蜂鸣器。
由8050、8550复合驱动, 信号用电容C7耦合, 电阻R1作为泄放电荷(不发声时, 迅速拉低Q1的基极电位);4. 复位和时钟: 这部分电路放在单片机块子的内部, 节约一点空间。
单片机实训报告抢答器
一、实训目的1. 熟悉单片机的编程环境和调试方法。
2. 掌握单片机外围电路的设计与连接。
3. 学会使用单片机实现抢答器的功能。
4. 提高实际动手能力和解决问题的能力。
二、实训背景随着电子技术的不断发展,单片机在各个领域得到了广泛应用。
抢答器作为一种常见的电子设备,在竞赛、培训等场合中发挥着重要作用。
本实训项目旨在通过设计一款基于单片机的抢答器,使学生掌握单片机的编程、调试及外围电路设计等方面的知识。
三、实训内容1. 硬件设计(1)主控芯片:选用AT89C52单片机作为主控芯片。
(2)按键模块:设计6个按键K0~K5,分别对应6个选手。
(3)显示模块:采用LED数码管显示选手编号。
(4)声音模块:采用蜂鸣器发出报警声响。
(5)其他电路:电源电路、复位电路等。
2. 软件设计(1)程序编写:使用C语言编写单片机程序,实现抢答器功能。
(2)程序调试:使用Keil uVision5软件进行程序编译、调试。
3. 抢答器功能(1)选手抢答:6个选手分别按动对应的按键,抢答器会根据按键优先级显示选手编号,并发出报警声响。
(2)锁存功能:优先抢答的选手编号会一直保持,直至主持人清除系统。
(3)显示功能:LED数码管显示抢答选手的编号。
(4)报警功能:蜂鸣器发出报警声响。
四、实训步骤1. 硬件搭建(1)将AT89C52单片机、按键、LED数码管、蜂鸣器等元器件焊接在电路板上。
(2)连接电源电路和复位电路。
2. 程序编写(1)在Keil uVision5软件中创建新工程,并添加AT89C52单片机头文件。
(2)编写按键扫描程序,实现按键的识别和优先级判断。
(3)编写LED数码管显示程序,显示抢答选手的编号。
(4)编写蜂鸣器报警程序,实现报警声响。
(5)编写主函数,实现抢答器的整体功能。
3. 程序调试(1)在Keil uVision5软件中编译程序,生成HEX文件。
(2)使用Proteus仿真软件进行仿真,观察程序运行效果。
单片机抢答器课程设计报告书
目录绪论------------------------------------------------------------------------------------------------------------ II引言------------------------------------------------------------------------------------------------------------- 1第1章系统设计内容--------------------------------------------------------------------------------- 2 1.1 系统设计依据------------------------------------------------------------------------------------------- 2 1.2 设计任务和要求------------------------------------------------------- 2 1.3 设计目的------------------------------------------------------------------------------------------------- 2第2章硬件设计-------------------------------------------------------------------------------------- 5 2.1 单片机控制原理---------------------------------------------------------------------------------------- 5 2.2 抢答器的原理------------------------------------------------------------------------------------------- 5 2.2.1 原理框图---------------------------------------------------------------------------------------------- 5 2.3 功能模块电路------------------------------------------------------------------------------------------- 5 2.3.1 开始抢答电路和选手抢答键--------------------------------------------------------------------- 5 2.3.2.显示与显示驱动电路------------------------------------------------------------------------------ 5 第3章软件设计---------------------------------------------------------------------------------------- 10 3.1程序设计-------------------------------------------------------------------------------------------------- 10第4章系统调试-------------------------------------------------------- 18第5章总结------------------------------------------------------------ 18 参考文献----------------------------------------------------------------- 19附录一程序代码---------------------------------------------------------- 20 附录二原理图------------------------------------------------------------ 27摘要随着社会的不断进步,电子技术也飞速的向前发展.特别是大规模集成电路的发展,把我们带进了电子化时代。
单片机抢答器实验报告
单片机八路抢答器实验报告一实验任务1.设计一个竞赛抢答器,可同时供8名选手或者8个代表队参加比赛,他们的编号分别是1、2、3、4、5、6、7、8,各用一个抢答器的按钮,按钮的编号与选手的编号相对应。
2.给节目主持人设计一个控制开关,用来控制系统的清零和抢答开始。
3.抢答器具有数据显示,声音提示的功能。
二.源程序(1)头文件#include <REG52.H>#include <intrins.h>#include <string.h>#include <stdio.h>#define uint unsigned int#define uchar unsigned char// -------------------------------------------------------------------------------------void show(); //液晶显示程序// -------------------------------------------------------------------------------------//12864液晶显示部分子程序模块// -------------------------------------------------------------------------------------sbit LCD_RS = P2^0; //寄存器输入sbit LCD_RW = P2^1; //液晶读/写控制sbit LCD_EN = P2^2; //液晶使能控制sbit LCD_PSB = P2^3;sbit SW1 = P1^0;sbit SW2 = P1^1;sbit SW3 = P1^2;sbit SW4 = P1^3;sbit SW5 = P1^4;sbit SW6 = P1^5;sbit SW7 = P1^6;sbit SW8 = P1^7;sbit beep = P3^6;#define LCD_data P0//sbit busy=P0^7; //lcd busy bitvoid lcd_xieping0(uchar x,uchar y,uchar date);void lcd_xieping(uchar x,uchar y,uchar *str);void chn_disp0(uchar code *chn);void img_disp(uchar code *img);void lcd_xieping1(uchar x,uchar y,uchar *str);void lcd_init();void write_cmd(uchar cmd);void delay_ms1(uint z);void delay_ms(uint z);void dingding(int a);//void Init_Timer0(void);void clr(void);extern unsigned char mmm[8][9];char keynumber();(2)显示部分的程序#include "head.h"unsigned char mmm[8][9];void delay_ms(uint z)//长延时{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void delay_ms1(uint z)//长延时{uint x,y;for(x=z;x>0;x--)for(y=10;y>0;y--);}// ------------------------------------------------------------------------------------- // 液晶显示部分// ------------------------------------------------------------------------------------- void write_cmd(uchar cmd){LCD_RS = 0;LCD_RW = 0;LCD_EN = 0;P0 = cmd;delay_ms1(1);LCD_EN = 1;delay_ms1(1);LCD_EN = 0;}void write_dat(uchar dat){LCD_RS = 1;LCD_RW = 0;LCD_EN = 0;P0 = dat;delay_ms1(1);LCD_EN = 1;delay_ms1(1);LCD_EN = 0;}void lcd_xieping0(uchar x,uchar y,uchar date) {switch(x){case 0: write_cmd(0x80+y); break;case 1: write_cmd(0x90+y); break;case 2: write_cmd(0x88+y); break;case 3: write_cmd(0x98+y); break;}write_dat(date);}void lcd_xieping(uchar x,uchar y,uchar *str) {switch(x){case 0: write_cmd(0x80+y); break;case 1: write_cmd(0x90+y); break;case 2: write_cmd(0x88+y); break;case 3: write_cmd(0x98+y); break;}while (*str){write_dat(*str);str++;}}void lcd_xieping1(uchar x,uchar y,uchar *str) {switch(x){case 0: write_cmd(0x84+y); break;case 1: write_cmd(0x94+y); break;case 2: write_cmd(0x8C+y); break;case 3: write_cmd(0x9C+y); break;}while (*str){write_dat(*str);str++;}}void lcd_init(){LCD_PSB = 1; //并口方式write_cmd(0x30); //基本指令操作delay_ms(5);write_cmd(0x0C); //显示开,关光标delay_ms(5);write_cmd(0x01); //清除显示内容delay_ms(5);}void chn_disp0(uchar code *chn){uchar i,j;write_cmd(0x30); //void write_cmd(uchar cmd) write_cmd(0x84);j=0;for(i=0;i<8;i++)write_dat(chn[j*16+i]);write_cmd(0x8c);j=1;for(i=0;i<8;i++)write_dat(chn[j*16+i]);}void show(){lcd_xieping(0,0,mmm[0]);lcd_xieping(0,4,mmm[1]);lcd_xieping(1,0,mmm[2]);lcd_xieping(1,4,mmm[3]);lcd_xieping(2,0,mmm[4]);lcd_xieping(2,4,mmm[5]);lcd_xieping(3,0,mmm[6]);lcd_xieping(3,4,mmm[7]);}(3)抢答器:#include "head.h"unsigned int ms,i=0;//定义全局变量bit FLag=0;//定义停止,计时标志char yy[8]={0,0,0,0,0,0,0,0};void main(){unsigned char num=0,k,j,temp;EX0=1; //外部中断0开IT0=1; //IT1=0表示边沿触发EX1=1; //外部中断1开IT1=1; //IT1=1表示边沿触发Init_Timer0();lcd_init();for(k=0;k<8;k++)for(j=0;j<8;j++)mmm[k][j]=0;//mmm[0][0]='0';mmm[1][0]='0';mmm[2][0]='0';mmm[3][0]='0';mmm[4][0]='0';mmm[5][0]='0';mmm[6][0]='0';mmm[7][0]=' 0';while(1){temp= keynumber();if(temp){mmm[i][0]=temp+'0';mmm[i][1]=':';mmm[i][2]= ms/1000+'0';mmm[i][3]=ms%1000/100+'0';mmm[i][4]=ms%100/10+'0';mmm[i][5]=ms%10+'0';mmm[i][6]='m';mmm[i][7]='s';mmm[i][8]='\0';show();i++;}show();}}/*------------------------------------------------定时器初始化子程序------------------------------------------------*/ void Init_Timer0(void){TMOD |= 0x01;EA=1;ET0=1;TR0=1;}/*------------------------------------------------定时器中断子程序------------------------------------------------*/ void Timer0_isr(void) interrupt 1{TH0=0xFC; //重新赋值1msTL0=0x66;if(FLag){ms++;if (ms==60000){ms=0;}}}/*------------------------------------------------外部中断0程序------------------------------------------------*/ void ISR_INT0(void) interrupt 0{EX0=0;dingding(50);lcd_xieping(0,2," 可以开始抢答");FLag=!FLag;}/*------------------------------------------------外部中断1程序------------------------------------------------*/ void ISR_INT1(void) interrupt 2{if(FLag==0)//停止时才可以清零clr();}/*------------------------------------------------数值清零------------------------------------------------*/ void clr(void){unsigned char k,j;for(k=0;k<8;k++) //清空显示for(j=0;j<8;j++)mmm[k][j]=0;for(k=0;k<8;k++) //清空标志yy[k]=0;ms=0; //清空计时i=0;write_cmd(0x01); //清屏}char keynumber(){if((!SW1)&&(!yy[0])){delay_ms1(20);if((!SW1)&&(!yy[0])){yy[0]=1;return 1;}}if((!SW2)&&(!yy[1])){delay_ms1(20);if(!SW2){yy[1]=1;return 2;}}if((!SW3)&&(!yy[2])) {delay_ms1(20);if(!SW3){yy[2]=1;return 3;}}if((!SW4)&&(!yy[3])) {delay_ms1(20);if(!SW4){yy[3]=1;return 4;}}if((!SW5)&&(!yy[4])) {delay_ms1(20);if(!SW5){yy[4]=1;return 5;}}if((!SW6)&&(!yy[5])) {delay_ms1(20);if(!SW6){yy[5]=1;return 6;}}if((!SW7)&&(!yy[6])) {delay_ms1(20);if(!SW7){yy[6]=1;return 7;}}if((!SW8)&&(!yy[7])){delay_ms1(20);if(!SW8){yy[7]=1;return 8;}}return 0;}void dingding(int a){int k;for(k=0;k<a;k++){beep=0;delay_ms(1);beep=1;}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上海电机学院课程设计目录第1章绪论 (1)1.1 单片机抢答器的背景 (1)1.2 抢答器的意义 (1)第2章设计概述 (2)2.1 抢答器的工作原理 (2)2.2 设计任务 (2)第3章系统硬件电路设计 (2)3.1 AT89C51单片机硬件电路 (2)3.2原理及电路总框图 (3)第4章系统软件设计 (5)4.1 主程序设计 (5)4.2 子程序设计 (5)4.2.1数码管显示电路 (5)4.2.2键盘扫描段码表 (6)4.3 系统流程图 (6)4.3.1系统主程序流程图 (6)4.3.2系统中断程序流程图 (6)4.4 源程序代码 (8)第5章结束语 (16)5.1 小结 (16)5.2 心得体会 (16)参考文献 (17)第1章绪论1.1 单片机抢答器的背景对于抢答器我们大家来说并不陌生,他是用于很多竞赛场合。
真正实现先抢先答,让最先抢到题的选手来回答问题。
抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气,选手们都站在同一个起跑线上,体现了公平公正的原则。
1.2 抢答器的意义本系统采用单片机作为整个控制核心。
控制系统的四个模块为:显示模块、存储模块、抢答开关,总开关模块。
该系统通过一个自锁按键输入抢答信号;利用一个数码管来完成显示功能;用按键来让选手进行抢答,在数码管上显示哪一组先答题的,从而实现整个抢答过程。
在知识比赛中,特别是做抢答题目的时候,在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。
如果在抢答中,靠视觉是很难判断出哪组先答题。
利用单片机系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒,也可分辨出哪组优先答题。
相对于类似电视台这类花几万元采购的抢答器系统,如果个人组织小型的抢答比赛,这毕竟不合适,但是依靠单片机的低成本,低功耗,可以很好的解决个人用户需要举办小型抢答比赛的需求,而且精度高,操作性好。
第2章设计概述2.1 抢答器的工作原理抢答器的工作原理是采用单片机最小系统,用中断式键盘进行抢答。
采用动态显示组号。
主持人按下开始抢答键才可以抢答。
主持人没有按下开始抢答按纽(P3.0),各组人员无法抢答,主持人按下开始抢答按纽(P3.0),数码管10秒倒计时(10秒内抢答有效),如果有人按下按键,程序就会判断是谁先按下的,然后数码显示管就会显示抢答成功选手的号码,并封锁键盘,数码管显示当前选手的编号,禁止其他人按键的输入,从而实现了抢答的功能。
如果在设定的时间中没有一个人按下按键,一到时间,则倒计时停止,不可以抢答。
抢答成功后。
当要进行下一次的抢答时,由主持人抬起自锁按键,主程序再次进入初始化,进入下一次抢答的就绪状态。
2.2 设计任务(1)多路数字抢答器的硬件和软件设计;(2)分析电路图;(3)画出程序流程图;(4)编写代码;(5)程序分析与调试;第3章系统硬件电路设计3.1 AT89C51单片机硬件电路单片机(SCM)是单片微型计算机(Single Chip Microcomputer)的简称。
它是把中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O 接口电路、定时/计数器以及输入输出适配器都集成在一块芯片上,构成一个完整的微型计算机。
它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出适配器简单,功能较低[2]。
目前,单片机在民用和工业测控领域得到最广泛的应用,早已深深地融入人们的生活中。
近年来,AT89C51在我国非常流行,它最大的特点是内部有可以多次重复编程的ROM,并且ROM可以直接用编程器来擦写,使用起来比较方便。
本设计使用到的元器件包括:AT89C51芯片、LED二极管、七段LED数码管的译码。
其中AT89C51是系统的核心,它主要负责控制各个部分的协调工作。
在其外围接上复位电路,数码管,LED二极管,按钮以及振荡器,P1口为8个LED二极管,P2.1-P2.7为抢答输入键接口,数码管段选P0口,位选P3.5和P3.4口。
3.2原理及电路总框图图3.1 抢答器原理框图图3.2 抢答器总原理图上海电机学院课程设计第4章系统软件设计4.1 主程序设计单片机通电以后,2位数码管显示数字“10”此时自锁开关为打开状态,任何选手的按键都无效,8个LED等长灭,当自锁开关闭合后,数码管开始”10-0”的10秒倒计时,在10秒内任意选手抢答,数码管会立即显示对应选手的号码,对应号码的LED灯也会亮起,此时任何选手的按键都无效。
若10秒内无选手抢答,则倒计时完毕以后数码管显示“00”,LED全灭,任意选手按键无效。
在任意时候打开自锁开关,则程序初始化,再次按下时可再次抢答4.2 子程序设计4.2.1数码管显示电路LED数码管,实现七段数码管的显示二位十进制数。
来进行倒计时,即来限制抢答的时间。
由于本次课设选用的共阳接法所以对应的段码表如下表4-1 共阳接法数码管段码表4.2.2键盘扫描段码表本次键盘扫描程序采用的是行列翻转法扫描键盘,即先置行为0,读列值,存在变量1中,然后把列置为0,读行值,存在变量2中,把变量1和变量2相加即为按键对应的键值,下表为相应按键对应的键值表4-2 行列翻转法键盘键值表4.3 系统流程图4.3.1系统主程序流程图4.3.2系统中断程序流程图4.4 源程序代码#include<reg51.h>sbit p3_0=P3^0;sbit p3_4=P3^4;sbit p3_5=P3^5;unsigned char key,num;unsigned char x,y;unsigned char count;unsigned char keycode;unsigned charLED_T[10]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff};//P1口LED表flag=0;start=0;flagl=0;void delay() //延时{unsigned int i;i=500;while(i--);}int keyscan() //键盘扫描{unsigned char read,recode,keyvalue;P2=0xf0;read=P2;if(read!=0xf0){delay();if(read!=0xf0){P2=0x0f;recode=P2;keyvalue=read+recode;return keyvalue;}}return 0;}void display() //显示{unsigned char code Table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管段码表switch(num){case 0:{x=0;y=0;break;}case 1:{x=1;y=0;break;}case 2:{x=2;y=0;break;}case 3:{x=3;y=0;break;}case 4:{x=4;y=0;break;}case 5:{x=5;y=0;break;}case 6:{x=6;y=0;break;}case 7:{x=7;y=0;break;}case 8:{x=8;y=0;break;}case 9:{x=9;y=0;break;}case 10:{x=0;y=1;break;} }p3_4=0;p3_5=0;P0=Table[x];p3_4=0;p3_5=1;delay();p3_4=0;p3_5=0;P0=Table[y];p3_4=1;p3_5=0;delay();}unsigned char decode() //解码按键{switch(key){case 0xb7:return 1;case 0xbb:return 2;case 0xbd:return 3;case 0xbe:return 4;case 0xd7:return 5;case 0xdb:return 6;case 0xdd:return 7;case 0xde:return 8;}return 0;}void main(){while(1){while(start==0) //P3.0自锁开关按下,程序跳出循环,开始初始化中断{num=10;P1=LED_T[9];display();if(p3_0==0)start=1;}EA=1;TMOD=0x01;TH0=0xd8;TL0=0xf0;ET0=1;TR0=1;count=100;num=9;while(flag==0&&p3_0==0) //flag=0且P3.0按下时执行此循环{if(flagl==1) //若中断里检测到按键,P1口对应LED亮起P1=LED_T[num-1];display();}start=0;flag=0;flagl=0;}}void timer_1(void) interrupt 1{TH0=0xD8;TL0=0xf0;if(p3_0==1) //中断途中抬起P3.0自锁开关,关中断{TR0=0;flag=0;}key=keyscan(); //检测到按键,解码按键至对应case,并且显示对应数字,关中断,防止再次进入中断,保证锁住状态if(key!=0){num=decode();display();TR0=0;flag=0;flagl=1;}count--; //10秒倒计时if(count==0){num--;if(num==0){TR0=0;flag=0;}count=100;}}第5章结束语5.1 小结为期一周的课程设计即将结束,在拿到课题后经过仔细的考虑和组员间的分组,我主要负责用绘图工具制作连线图的任务。
在程序以及硬件的完成后经过了解和深刻的认识后,我开始了绘制过程。
说道绘图工具,现在有很多,AUTOCAD,PROTEL,PROTEUS和altium design9等等,我选用了PROTEL来绘制。
作为一款历史悠久的工具相比起PROTEUS的容易仿真,PROTEL也有着其容易控制和强大的PCB版设计。
在绘制过程中,遇到了许多问题,比如元器件的引脚,以及连线不能自动伸缩,在修改时要多费功夫,还有字体大小比例问题等。
在经过长时间的修改后,终于完成了绘制。
5.2 心得体会然后便是开始对实验报告的整理与对自己这一星期来的心得体会。
通过这次试验我发现自己对于软件方面尤其是编写程序那块有着长远的不足,这给了自己警示,提醒自己在未来的学习生活中要更加重视这块方面的练习与实践,光看懂是不够的,学生要能够自己流畅的编写这才是关键。
在这里我要感谢知道我的高桂革老师,是她在设计过程中给了我们许多的帮助,正因为有着她孜孜不倦的教导和指正才会是我们少走许多弯路,令我们顺利的完成了课题。