基于单片机的抢答器设计报告
基于单片机的抢答器系统设计报告(终稿)

基于单片机的抢答器系统设计报告(终稿)————————————————————————————————作者:————————————————————————————————日期:南昌航空大学计算机课程设计题目:基于单片机的抢答器系统设计学院:测试与光电工程学院专业名称:电子科学与技术班级学号:09083110学生姓名:XXX指导教师:王庆2012年6月基于单片机的抢答器系统设计摘要:单片机是一门技术性,应用性、实践性很强的学科。
课程设计是学好本门课程的又一重要实践性教学环节,课程设计的目的和任务就是配合单片机的教学和平时实验,以达到巩固消化课程的内容,进一步加强综合应用能力及单片机应用系统开发和设计能力的训练,启发创新思维,使之具有独立单片机产品和科研的基本技能,是以培养学生综合运用所学知识的过程,是知识转化为能力和能力转化为工程素质的重要阶段。
在实际生活中有好多地方都用到了单片机,因此学习好这门课程有着十分重要的意义此次设计提出了用AT89C52单片机为核心控制元件,设计了一个简易的八路抢答器,本方案中AT89C52单片机与按键、数码管、蜂鸣器等构成八路抢答器,利用了单片机的延时电路、按键复位电路、时钟电路、定时/中断等电路,利用汇编语言编程,以实现一些基本的功能,使设计的抢答器具有实时显示抢答成功的选手号和抢答后剩余时间以及选手抢答犯规报警的特点,并具有复位功能,使其能够开始新一轮的答题和比赛。
本设计的系统实用性强、判断精确、操作简单、扩展功能强,它的功能实现由按键控制.比赛开始,主持人读完题之后按下开始抢答键,数码管立即实时显示30秒倒计时,直到有一个选手抢答时,相应的会在数码管上显示出该选手的编号和抢答所剩的时间,同时蜂鸣器发出声音,以提示有人抢答本题,如果在规定的30s时间内没有做出抢答,则此题作废,即开始新一轮的抢答。
关键字:AT89C52单片机、实时显示、按键控制、复位目录1 绪论 (3)2 整体设计方案 (3)2。
单片机抢答器课程设计报告

单片机抢答器课程设计报告一、引言本篇报告主要介绍了单片机抢答器的课程设计,包括设计目的、设计原理、硬件系统和软件程序等方面。
单片机抢答器是一种基于单片机技术的电子设备,可以用于学校或公司内部的竞赛或考试等场合,提高参赛者的竞争力和活跃度。
二、设计目的本次课程设计的目的是通过实践操作,掌握单片机应用技术和电子电路基础知识,提高学生自主学习和解决实际问题的能力。
同时,也为学生提供一个锻炼自己竞争能力和团队协作能力的机会。
三、设计原理单片机抢答器主要由两个部分组成:硬件系统和软件程序。
硬件系统包括按键模块、LED显示模块、蜂鸣器模块、LCD液晶显示屏模块和单片机控制模块等。
软件程序则是由C语言编写而成,主要功能是控制各个模块之间的协调工作。
四、硬件系统1. 按键模块按键模块采用矩阵按键方式实现,可以同时检测多个按键的状态。
在设计中,我们采用了4x4的矩阵按键,即16个按键。
其中,有一个按键作为重置键,用于清除上一次抢答结果。
2. LED显示模块LED显示模块采用共阴极方式实现,可以同时控制多个LED的状态。
在设计中,我们采用了8个LED灯,分别代表1~8号选手。
3. 蜂鸣器模块蜂鸣器模块可以发出不同频率的声音信号,用于提示选手抢答成功或失败。
在设计中,我们采用了一个5V的主动蜂鸣器。
4. LCD液晶显示屏模块LCD液晶显示屏模块可以显示选手抢答结果和当前比赛状态等信息。
在设计中,我们采用了一个16x2字符型液晶显示屏。
5. 单片机控制模块单片机控制模块是整个硬件系统的核心部分,主要负责各个模块之间的协调工作。
在设计中,我们采用了AT89C51单片机作为控制芯片。
五、软件程序软件程序是整个系统的灵魂部分,主要负责实现各种功能。
在本次课程设计中,我们使用C语言编写了单片机抢答器的软件程序。
主要功能包括:初始化、检测按键状态、显示比赛状态、判断抢答结果等。
六、实验结果经过多次实验,我们成功地实现了单片机抢答器的设计。
基于51单片机智能抢答器的设计

基于51单片机智能抢答器的设计一、引言二、设计思路1.系统功能需求智能抢答器主要包括以下功能:(1)抢答功能:允许学生在教师提出问题后进行抢答;(2)提前设置答题时间:教师可以设置每次抢答的时间;(3)显示抢答结果:显示学生选手的抢答结果和答题情况;(4)记录抢答情况:记录学生的抢答情况,方便教师进行统计和评估。
2.系统硬件设计系统采用51单片机作为核心,通过按键、显示屏等外设实现系统的各项功能。
系统还需配备一套抢答设备,每位学生需要配备一个手持式抢答器,用于进行抢答操作。
3.系统软件设计系统需要设计相关的软件程序,包括抢答逻辑、结果显示、数据统计等功能。
需要考虑系统的稳定性和易用性,确保教师和学生可以轻松操作系统。
三、系统设计与实现1.抢答器的设计抢答器采用51单片机作为核心,通过按键输入学生答案,再通过无线通信将答题结果发送给主控系统。
抢答器还需配备显示屏,显示学生的抢答结果。
为了保证系统的安全性,还需设计防作弊功能。
2.主控系统的设计主控系统也采用51单片机作为核心,通过接收抢答器的信号,处理并显示抢答结果。
主控系统还需要设计相应的操作界面,方便教师进行设置和操作。
系统还需设计数据存储和统计功能,记录学生的抢答情况。
四、系统性能测试及改进1.系统性能测试完成系统的硬件和软件设计后,需要进行系统的性能测试,主要包括以下几个方面:(1)抢答功能测试:测试学生抢答器的响应速度和稳定性;(2)结果显示测试:测试主控系统的抢答结果显示效果;(3)数据统计测试:测试系统的数据统计和记录功能。
2.系统改进根据测试结果,对系统进行相应的改进和调整,确保系统能够稳定运行并满足实际教学需求。
需要特别关注系统的稳定性、易用性和安全性等方面的改进。
五、系统应用与展望1.系统应用智能抢答器可以广泛应用于教育教学领域,提高课堂互动和学生的参与度。
还可以应用于各类知识竞赛、学科竞赛等活动中。
2.系统展望智能抢答器作为新型的教学辅助工具,具有较大的市场前景。
单片机抢答器实验报告(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)本日志用于记录实习(设计)过程中的各项活动内容,要求学生必须填写具体、齐全、工整。
基于单片机的八路抢答器毕业设计

基于单片机的八路抢答器毕业设计一、选题背景及意义1.1 选题背景抢答器是一种常见的电子竞赛设备,它可以被广泛应用于各种知识竞赛、智力竞赛和技能竞赛中。
抢答器的原理是通过按下按钮来触发电路,从而使得系统判断谁先按下了按钮。
由于抢答器具有响应速度快、准确性高等特点,因此在教育培训、科技竞赛等领域得到了广泛的应用。
1.2 选题意义本设计旨在通过单片机技术实现一个八路抢答器,以满足各种知识竞赛、智力竞赛和技能竞赛的需求。
该抢答器具有响应速度快、准确性高等特点,可以提高比赛的公正性和公平性,同时也可以增加比赛的趣味性和互动性。
二、设计思路及方案2.1 设计思路本设计采用基于单片机的八路抢答器方案,主要包括以下几个部分:(1)光电传感器模块:通过红外线发射管和接收管构成光电传感器,用于检测选手是否按下按钮。
(2)单片机模块:采用STC89C52单片机,负责控制整个抢答器的运行。
(3)LED显示模块:采用八个LED灯,用于显示哪个选手按下了按钮。
(4)音响提示模块:通过蜂鸣器发出声音提示哪个选手按下了按钮。
2.2 设计方案(1)硬件设计硬件设计主要包括光电传感器电路、单片机电路、LED显示电路和音响提示电路四个部分。
其中,光电传感器电路主要由红外线发射管和接收管构成;单片机电路采用STC89C52单片机,配合外部晶振、复位电路和ISP下载接口实现对整个系统的控制;LED显示电路采用常规的共阴极八段数码管,通过多工位选择来实现对不同选手的显示;音响提示电路采用蜂鸣器实现对选手按键行为的声音提示。
(2)软件设计软件设计主要包括系统初始化、中断服务程序、定时器控制程序和按键扫描程序四个部分。
其中,系统初始化主要负责对各个模块进行初始化设置;中断服务程序主要负责处理光电传感器的中断请求;定时器控制程序主要负责控制LED灯的显示和蜂鸣器的声音提示;按键扫描程序主要负责检测选手是否按下按钮,并触发相应的中断服务程序。
三、设计实现及测试3.1 设计实现本设计采用Protues仿真软件进行电路设计和调试,通过Keil C编译软件进行单片机程序编写和调试。
基于单片机的8路抢答器课程设计报告

基于单片机的8路抢答器课程设计报告单片机原理及接口技术课程设计报告设计题目:基于单片机的8路抢答器学号:××××××姓名:××指导教师:×××信息与电气工程学院二零一五年七月基于单片机的8路抢答器单片机把我们带入了智能化的电子领域,许多繁琐的系统若由单片机进行设计,便能收到电路更简单、功能更齐全的良好效果。
若把经典的电子系统当作一个僵死的电子系统,那么智能化的现代电子系统则是一个具有“生命”的电子系统。
而随着技术的进步,单片机与串口通信的结合更多地应用到各个电子系统中已成一种趋势。
本设计就是基于单片机设计抢答系统,通过串口通信动态传输数据,使抢答系统有了更多更完善的功能。
单片机系统的硬件结构给予了抢答系统“身躯”,而单片机的应用程序赋予了其新的“生命”,使其在传统的抢答器面前具有电路简单、成本低、运行可靠等特色。
对于抢答器我们大家都知道那是用于选手做抢答题时用的,选手进行抢答,抢到题的选手来回答问题。
抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气。
选手们都站在同一个起跑线上,体现了公平公正的原则。
1. 设计任务结合实际情况,基于AT89C51单片机设计一个8路抢答器。
该系统应满足的功能要求为:(1) 设计一个可供8人进行的抢答器;(2) 系统设置复位按钮,按动后,重新开始抢答;(3) 抢答器开始时数码管显示序号0,选手抢答实行优先显示,优先抢答选手的编号一直保持到主持人将系统清除为止。
抢答后显示优先抢答者序号,同时发出音响。
,并且不出现其他抢答者的序号;(4) 抢答器具有定时抢答功能,且一次抢答的时间有主持人设定,本抢答器的时间可设定在1~99秒(本例中设置为20s),当主持人启动“开始”开关后,定时器开始减计时,数码管显示倒计时的时间,同时蜂鸣器有短暂的声响;(5) 设定的抢答时间内,选手可以抢答,这时定时器停止工作,显示器上显示选手的号码和抢答时间。
单片机实训抢答器课程设计报告实验

上海电机学院课程设计目录第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 抢答器的意义本系统采用单片机作为整个控制核心。
控制系统的四个模块为: 显示模块、存储模块、抢答开关, 总开关模块。
该系统通过一个自锁按键输入抢答信号;利用一个数码管来完成显示功能;用按键来让选手进行抢答, 在数码管上显示哪一组先答题的, 从而实现整个抢答过程。
在知识比赛中, 特别是做抢答题目的时候, 在抢答过程中, 为了知道哪一组或哪一位选手先答题, 必须要设计一个系统来完成这个任务。
如果在抢答中, 靠视觉是很难判断出哪组先答题。
利用单片机系统来设计抢答器, 使以上问题得以解决, 即使两组的抢答时间相差几微秒, 也可分辨出哪组优先答题。
相对于类似电视台这类花几万元采购的抢答器系统, 如果个人组织小型的抢答比赛, 这毕竟不合适, 但是依靠单片机的低成本, 低功耗, 可以很好的解决个人用户需要举办小型抢答比赛的需求, 而且精度高, 操作性好。
基于AT89S52单片机的抢答器设计

基于AT89S52单片机的抢答器设计一、AT89S52 单片机简介AT89S52 是一款低功耗、高性能的 CMOS 8 位单片机,具有 8K 在系统可编程 Flash 存储器。
使用 Atmel 公司高密度非易失性存储器技术制造,与工业 80C51 产品指令和引脚完全兼容。
片上 Flash 允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使得 AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
二、抢答器的功能需求分析抢答器的主要功能是在多个参赛者同时抢答时,能够准确地判断出最先抢答的选手,并进行相应的显示和提示。
具体来说,抢答器应具备以下功能:1、抢答功能:参赛者在规定的时间内按下抢答按钮,系统能够准确地捕捉到最先抢答的信号。
2、计时功能:设置抢答时间和答题时间,时间到后进行相应的提示。
3、显示功能:能够显示抢答者的编号和答题剩余时间。
4、报警功能:在违规抢答或时间到后,发出声音或灯光报警。
三、硬件设计1、单片机最小系统AT89S52 单片机:作为核心控制单元。
晶振电路:为单片机提供时钟信号。
复位电路:确保单片机能够正常初始化。
2、抢答输入电路采用独立按键作为抢答按钮,每个参赛者对应一个按键。
通过上拉电阻将按键信号连接到单片机的 I/O 口。
3、显示电路采用数码管显示抢答者的编号和时间。
可以使用动态扫描的方式驱动数码管,以节省 I/O 口资源。
4、报警电路使用蜂鸣器和发光二极管进行报警。
通过三极管驱动蜂鸣器和发光二极管。
四、软件设计1、主程序流程系统初始化,包括设置 I/O 口状态、初始化定时器和中断等。
进入抢答等待状态,检测是否有抢答信号。
若有抢答信号,判断抢答是否合法,并进行相应的处理。
在答题过程中,进行计时,并在时间到后进行提示。
2、抢答检测程序采用中断方式检测抢答信号。
当有按键按下时,产生中断,在中断服务程序中读取按键状态,确定抢答者的编号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
湖南商学院《单片机应用系统》课程设计(实习)报告题目基于单片机的抢答器设计姓胡飘名:学100910122号:专电子信息工程业:班电信1004班级:指导教肖婧师:职实验师称:计算机与信息工程学院2013年6月课程设计(实习)评审表课程设计(实习)作品验收表注:1. 除“验收情况”栏外,其余各栏均由学生在作品验收前填写。
2. “验收情况”栏由验收小组按实际验收的情况如实填写。
目录1 设计任务与要求 (1)2 系统功能描述 (1)3 系统总体设计 (1)4 系统详细设计 (3)4.1 主要电路设计 (3)4.1.1 输入模块设计 (3)4.1.2 单片机模块 (4)4.1.3 显示模块 (4)4.1.4 声音模块 (5)4.2 软件设计 (6)4.2.1 主程序设计 (6)4.2.2 定时器设计 (7)5 系统实现与测试 (7)5.1 Proteus软件 (7)5.2 安装和调试过程 (8)5.2.1 软硬件调试 (8)5.2.2 硬件安装 (8)6 课程设计总结 (10)6.1 心得体会 (10)6.2. 实践总结 (10)参考文献 (11)附录 (11)基于单片机的抢答器设计1 设计任务与要求具有3路抢答输入(由独立按键实现),时间分辨率小于100ms 。
显示抢答剩余时间,初始为10秒。
抢答成功,蜂鸣器响,同时显示抢答成功的号码。
2 系统功能描述(1)具有3路抢答输入(由独立按键实现),时间分辨率小于100ms 。
(2)主持人按“开始”键,显示抢答剩余时间,初始为10秒。
(3)抢答成功,蜂鸣器响,同时显示抢答成功的号码。
(4)主持人按“清除键”键,复位为初始10秒,进入准备状态。
(5)若十秒倒计时时间到,则蜂鸣器响。
3 系统总体设计抢答输入和控制输入共同控制单片机输出显示和蜂鸣器响,输出锁存控制输入的优先性。
各模块如下:(1)输入模块:由独立按键实现抢答输入和“开始”“清除”控制输入。
(2)单片机控制模块:采用AT89S51芯片控制输出。
(3)输出锁存模块:采用74HC573芯片锁存数据。
(4)显示输出模块:由四位共阳数码管输出显示倒计时和抢答者号码。
(5)声音输出模块:由蜂鸣器的工作来控制声音。
原理方框图如图1所示。
图1 原理方框图整体电路图如图2所示。
图2 基于单片机的抢答器系统整体电路图4 系统详细设计4.1 主要电路设计4.1.1 输入模块设计(1)抢答键输入模块抢答键输入电路图如图3所示。
图3 抢答键输入电路图由3个独立按键表示1号,2号,3号抢答者,一端接地一端分别接接单片机的P1.0,P1.1,P1.2,如果按下,则相应I/O口变为低电平,从而控制单片机P1口。
(2)“开始”“清除”控制键输入模块“开始”“清除”控制键输入电路图如图4所示图4 “开始”“清除”控制键输入电路图由2个独立按键控制“开始”和“清除”,一端接地一端分别接接单片机的P3.6,P3.7,如果按下,则相应I/O口变为低电平,从而控制单片机P1口。
4.1.2 单片机模块单片机主要由程序设计和输入模块信号控制,用于对显示、声音等模块进行控制。
单片机控制输出电路图如图5所示。
接排阻和74HC753接数码管位选端接蜂鸣器图5 单片机控制输出电路图P0口连接有一个排阻,用作P0口的上拉电阻,保证P0口没有数据输出时候处于高电平状态。
还接在74HC753芯片的D端,作为它的输入,锁存输出到数码管。
P2口低四位接数码管未选端,P3.4接蜂鸣器。
4.1.3 显示模块显示模块主要是显示抢答倒计时的时间,抢答者号码。
数码管显示方法包括两种:一种是静态显示,一种是动态显示。
其中静态显示的特点是显示稳定不闪烁,程序编写简单,但占用端口资源多;动态显示的特点是:显示稳定性没静态好,程序编写复杂,但是相对静态显示而言占用端口资源少。
在本设计中根据实际情况采用的是动态显示方法。
4位七段数码管显示电路如图6所示。
接74HC753即P0口接AT89S51的P2端口低四位图6 4位七段数码管显示电路图上图中数码管采用的是4位一体七段共阳数码管,其中A~G段分别接到单片机的P0口,由单片机输出的P0口数据来决定段码值,位选码COM1, COM2,COM3,COM4分别接到单片机的P2.0,P2.1,P2.2 ,P2.3,由单片机来决定当前该显示的是哪一位。
通过查表法,将其在数码管上显示出来,其中P0口为字型码输入端,P2口低4位为字选段输入段。
在这里我们通过查表将字型码送给7段数码管显示的数字。
4.1.4 声音模块声音模块主要是单片机控制蜂鸣器发声。
选取压电式无源蜂鸣器,声音的频谱范围约在几十到几千赫兹,编写程序控制单片机P3.4口的“高”“低”电平转换频率,产生一定频率的巨型波,接上蜂鸣器就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使蜂鸣器发出不同的声音。
单片机控制蜂鸣器电路图如图7所示。
图7 单片机控制蜂鸣器电路图单片机通过内部定时器的操作实现交替变换的波形输出驱动扬声器发声。
4.2 软件设计4.2.1 主程序设计一上电数码管显示10—0,表示初始时间为10s,0表示没有抢答,先扫描“开始”“清除”键,判断“开始”键是否按下,若按下,则开始倒计时,并扫描抢答键,若有抢答键按下,则显示抢答者号码和抢答的时间,判断倒计时是否为0,若是则蜂鸣器响。
程序流程图如图8所示。
图8 程序流程图4.2.2定时器设计采用定时器/计数器T0的方式1定时,定时时间为50ms,对应的十进制数的初始值为15536,因使用的时钟为12MHz,所以定时的时间为1us*(65536-15536)=1us*50000=50ms。
要想定时1s,需要20次中断,因此程序中定义了中断次数单元count,来对中断次数进行计数。
要使最小分辨率为50ms,在定时器计时一次即50ms时,对键盘进行一次扫描实现。
因为采用74HC753芯片,因此程序变得简单,只需将秒单元进行“second / 10”运算,即可得到秒的十位的BCD码,秒的个位BCD码只需取余数“second % 10”运算就可得到,并都送P0口经锁存器利用动态方式显示。
5 系统实现与测试5.1 Proteus 软件Proteus软件是由英国Labcenter Electronics公司于1989年推出的EDA工具软件,Proteus软件不仅具有原理布图,PCB自动制版或人工布线及互动电路仿真的功能,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试,如有显示及输出, 还能看到运行后输入输出的效果,配合系统配置的虚拟仪器如示波器,逻辑分析仪等,为单片机系统的虚拟仿真提供了功能强大的软硬件调试手段。
Proteus软件的特点:(1)除了既可以仿真模拟电路又可仿真数字电路以及数字、模拟混合电路外,其独特是能够仿真各种单片机及嵌入式处理器。
(2)具有各种仿真仪器仪表工具,如示波器、逻辑分析仪、各种信号发生器、计数器、电压源、电压表、电流表、虚拟终端等,同一种仪器仪表可在同一电路中随意调动。
(3)可以进行软、硬件结合的仿真系统,且仿真是交互的、可视化的。
5.2 安装和调试过程5.2.1软件调试利用Keil uVision4软件进行程序编写,编译,调试,生成.hex文件,利用Proteus 进行电路原理图描绘,然后把.hex文件载入AT89S51芯片中,再仿真,通过功能对照,来检查修改程序,一步步使仿真与实现功能相近。
一开始蜂鸣器怎么的都不响,通过查资料请教别人,最后发现是因为蜂鸣器的一次高低电平变换的程序没有循环,所以没有维持一定时间让它工作,通过在蜂鸣器的子程序中加入一个100次的循环,并是高低电平之间延时1ms发现蜂鸣器的工作是最合理的。
后来又发现按下抢答键,倒计时不停止,经过很多次试验之后,发现是应该在判断抢答键是否按下的肯定条件下是定时器的使能标示位置0。
当主持人按下开始键,2号抢答者按下抢答键时,Proteus仿真运行图如图所示图9 Proteus仿真运行图5.2.2 硬件安装由于经费的限制,元件数量也不是特别多,所以准备自己焊板子,晶振复位都准备自己焊。
精心策划每个元件的安装位置,和可以节省的引线,我把每个元件多余的引脚部分当做线路来用,以使电路美观一点。
完工之后运行不正常,分析可能是各个引脚和线路之间不稳定的原因,特别是所以电源和地都是通过引一根线出来接的电源孔悬在空中接的电源,觉得还是不可靠,于是最后还是决定用最小系统来作为硬件的核心,以避免不必要的影响。
后来又最小系统,杜邦线和排针再一次焊好了电路,一上电显示-1,8,8,0,蜂鸣器响的时间和仿真图里蜂鸣器该响的时间一样长,“开始”“抢答”“清除”键都不作用。
暂时连接数码管的各线我都用万用表测试过了,是连通的,我想可能会是以下的原因:(1)可能是排阻的问题,但是如果是的话,数码管应该不会亮。
(2)可能是数码管的问题,但是也已经测试过,是正确的对应的各引脚,而且可以显示。
(3)调用蜂鸣器响的程序放错位置了,但是检查了没错。
经过仔细检查、测试、修改、调试之后,硬件电路图如图10所示。
图10 硬件电路图6 课程设计总结6.1 心得体会此次课程设计,先从分析题目开始,从课本上找类似可能实现的功能块,明确整体思路,大概画出整体电路模块,由于第一次接触实际应用设计,思维比较混乱,很多功能觉得考虑的地方太多,很难。
后来去图书馆查阅了两天资料,找到类似的应用系统,仔细研究了一番,多了个没接触过的芯片,通过几本书上的资料,拼凑修改之后还是仿真不了,也请教了一些老师,后来通过比较另外一种方案,觉得性价比和简便程度更高,所以放弃了原有的方案,重新开始设计。
经过修改程序和仿真调试,显示的部分是差不多按我所想实现了,但蜂鸣器要么不响,要么能听到一丁点声响,参考了别的同学蜂鸣器响的程序,还有在网上找了很多关于蜂鸣器的资料,又请教老师问题,最终终于把蜂鸣器的问题解决了。
仿真出来后,焊接电路,中途发现焊反了,怕影响电路拆了又重焊,还是显示不正常,一上电是一些不该有的数字,按开始键三个数码管都一起显示倒计时,蜂鸣器一直响,一动电路又断断续续,问过老师之后,决定还是用最小系统来作为硬件的核心,以避免不必要的影响。
终于是又把电路板焊出来了,但是还是不如我所愿,显示还是不正常,一上电蜂鸣器响的时间和仿真蜂鸣器该响时的时间一样长,按开始键也没有反应。
经过同学帮助,检验了数码管以及和单片机连接的地方,都没有问题,按理来说一上电应该和主程序一开始设定的功能一样,只能再重新测好每一个电路线和元件。
经老师指导,应该在上电时,测每个脚应该有的电压,看元件输出功能是否正确,再逐步确定每一个芯片和电路的是否有问题,然后修改调试。