基于51单片机抢答器的课程设计.docx
- 文档编号:8865535
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:21
- 大小:223.91KB
基于51单片机抢答器的课程设计.docx
《基于51单片机抢答器的课程设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机抢答器的课程设计.docx(21页珍藏版)》请在冰豆网上搜索。
基于51单片机抢答器的课程设计
西安文理学院物理与机械电子
工程学院专业课程设计报告
专业班级 测控技术与仪器
课程 51单片机技术与设计
题 目 基于51单片机得抢答器设计
学 号
学生姓名
指导教师
2014年5月
基于51单片机得八位抢答器设计
摘要随着电子技术得飞速发展,基于单片机得控制系统已应用于工业、农业、电力、电子、智能楼宇等行业,微型计算机作为嵌入式控制系统得主体与核心,代替了传统得控制系统得常规电子线路。
抢答器作为一种工具,已广泛应用于各种智力与知识竞赛场合。
但抢答器得使用频率较低,且有得要么制作复杂,要么可靠性低。
作为一个单位,如果专门购一台抢答器虽然在经济上可以承受,但每年使用得次数极少,往往因长期存放使(电子器件得)抢答器损坏,再购置得麻烦与及时性就会影响活动得开展,因此设计了本抢答器。
本设计就是以八路抢答为基本理念.考虑到依需设定限时回答得功能,利用AT89C51单片机及外围接口实现得抢答系统,利用单片机得定时器/计数器定时与记数得原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时。
同时使液晶显示屏能够正确地显示时间,并且给出指令得提示,扬声器发生提示.系统能够实现:
在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间与回答问题得时间可在1-99s设定;可以显示就是哪位选手有效抢答与无效抢答,正确按键后有声音得提示;抢答时间与回答问题时间倒记时显示,满时后系统计时有声音提示;抢答倒计时时间与回答问题时间均可通过硬件得按键调整.
ﻩ关键词:
AT89C51;单片机;液晶显示屏;抢答器;智能
2设计任务与要求概述ﻩ1
2、2设计任务1
2、3设计要求ﻩ1
2、4 设计目得ﻩ1
3 方案总体设计ﻩ2
3、1 方案ﻩ2
3、1、1控制芯片2
3、2原理框图ﻩ3
4硬件电路设计ﻩ3
4、1抢答器得工作原理3
4、2 单元电路设计ﻩ3
4、2、1抢答器电路3
4、2、2发声电路设计4
4、2、3 开始、复位按键输入电路得设计4
4、2、4时钟震荡电路ﻩ4
4、2、5设定时间、加减时间电路设计ﻩ4
4、2、6显示电路得设计5
5、1抢答器工作流程ﻩ6
5、2流程框图6
6电路仿真调试ﻩ7
6、1 上电准备状态7
6、2开始抢答7
6、3 非法抢答8
6、4 正常抢答ﻩ8
7实验仪器及元器件清单ﻩ9
9致谢9
10 参考文献10
附录一 系统电路图11
附录二程序清单ﻩ11
1引言
目前各种各样得竞赛越来越多,无论就是学校、工厂、军队还就是益智性电视节目,其中用到抢答器得概率非常大.目前很多抢答器基本上采用小规模数字集成电路设计,使用起来不够理想。
因此设计一款更易于使用与区分度高得抢答器成了非常迫切得任务。
现在单片机已进入各个领域,以其功耗小、智能化而著称。
所以若利用单片机来设计抢答器,便使以上问题得以解决.针对以上情况,本课程设计出以AT89C51单片机为核心得八路抢答器.它能根据不同得抢答输入信号,经过单片机得控制处理并产生不同得与输入信号相对应得输出信号,最后通过液晶显示屏显示相应得路数与答题时间以及各项命令等,使竞赛真正达到公正、公开、公平。
2设计任务与要求概述
2、1题目
8路比赛抢答器
2、2 设计任务
利用8051单片机中断系统,制作一个有8个按键得比赛抢答器,可供8名选手比赛得抢答,每组设置一个抢答按钮,按钮得编号与选手得编号对应,主持人设置控制开关,用来控制系统得清零与抢答得开始,在有人按键时进行对应选手显示。
2、3设计要求
1完成系统得硬件电路设计与软件设计;
2采用汇编或C语言编程;
3采用Proteus、KeilC等软件实现系统得仿真调试;
4论文要求思路清晰,结构合理,语言流畅,书写格式符合要求。
2、4设计目得
1综合运用相关课程中所学得理论知识去完成这一设计课题.
2通过查阅手册与相关文献资料,培养自己独立分析与解决问题得能力。
3 进一步熟悉单片机与常用接口电路,加深对专业知识与理论知识学习得认识与理解。
4学会电路得设计与程序得调试。
5学会撰写课程设计论文。
6 培养严肃认真得工作作风与严谨得科学态度。
3方案总体设计
3、1方案
3、1、1控制芯片
我们采用51系列单片机AT89C51作为控制核心,该系统可以完成运算控制、信号识别以及显示功能得实现。
单片机技术比较成熟,应用起来方便、简单并且单片机周围得辅助电路也比较少,便于控制与实现。
整个系统具有极其灵活得可编程性,能方便地对系统进行功能得扩张与更改。
MCS—51单片机特点如下:
a、可靠性好:
单片机按照工业控制要求设计,抵抗工业噪声干扰优于一般得CPU,程序指令与数据都可以写在ROM里,许多信号通道都在同一芯片,因此可靠性高,易扩充。
b、单片机有一般电脑所必须得器件,如三态双向总线,串并行得输入及输出引脚,可扩充为各种规模得微电脑系统.c、控制功能强:
单片机指令除了输入输出指令,逻辑判断指令外还有更丰富得条件分支跳跃指令。
3、1、2 显示方式
在实现基本功能时,我们采用了四位数码管显示,后两位显示倒计时时间,第一位显示抢答组号,第三位置空,在此基础上还在程序里加了更改抢答时间与倒计时时间得模块,也可通过数码管显示,成为一个比较完整得系统。
后来在实现拓展功能时,我们想加入语音显示得模块,发现proteus软件无法仿真,就改为用液晶显示屏1602显示.1602液晶显示屏也叫1602字符型液晶,它就是一种专门用来显示字母、数字、符号等得点阵型液晶模块1602液晶模块内部得字符发生存储器(CGROM)已经存储了160个不同得点阵字符图形,这些字符有:
阿拉伯数字、英文字母得大小写、常用得符号、与日文假名等,每一个字符都有一个固定得代码,它可以通过简短得英文提示与数字使人明确瞧到比赛进行得整个过程。
3、1、3程序语言得选择
ﻩ一开始实现基本功能时,使用数码管作为显示,采用了汇编语言,比较高效,条理也清晰;后来做拓展功能时改用液晶显示屏显示,发现液晶显示屏使用c语言编程更便捷高效,就整体使用了c语言。
3、2原理框图
图3、1原理框图
4 硬件电路设计
4、1抢答器得工作原理
用单片机得两个外部中断作为修改时间得选择按钮,选择修改抢答倒计时时间还就是回答问题时间;用定时器1作为时间得控制.
4、2 单元电路设计
4、2、1抢答器电路
该电路有八个按钮分别接于P1、0~P1、7可实现两个功能:
一就是分辨出选手按键得先后,并锁存优先抢答者得编号,同时译码显示电路显示编号;二就是禁止其她选手按键操作无效.如有再次抢答需由主持人将S开关重新置,“清除"然后再进行下一次抢答。
如图4、1
图4、1抢答器电路
4、2、2发声电路设计
用P3、6口与扬声器相连,主持人将控制开关拨到"开始”位置时,会发声,抢答电路与定时电路进人正常抢答工作状态;当参赛选手按动抢答键时,扬声器发声,抢答电路与定时电路停止工作.如图4、2
4、2、3开始、复位按键输入电路得设计
复位就是计算机得一个重要工作状态。
开始与复位键分别接于P3、0与P3、1口,在单片机工作时,接电之前,断电后也要复位。
在抢答器中复位则为定时做铺垫,在抢答之前要复位,抢答完也要复位。
按了复位键,显示屏得状态就是“start……”。
如图4、3
图4、2发声电路 图4、3开始、复位电路
4、2、4时钟震荡电路
CPU得操作需要精确得定时,可用一个晶体振荡器产生稳定得时钟脉冲来控制AT89C51单片机上得XTAL1与XTAL2分别为振荡电路得输入与输出。
如图4、4
4、2、5设定时间、加减时间电路设计
该电路主要就是对答题时间与抢答时间调整设计得,抢答时间接P3、2,答题时间接P3、3,加一秒接P3、4,减一秒接P3、5.如图4、5
图4、4 时钟振荡电路 图4、5 加减时间电路
4、2、6显示电路得设计
本系统通过液晶显示屏来显示各提示信息.如图4、6
图4、6显示时间电路
5 软件设计
5、1抢答器工作流程
为了能够达到抢答得公平、公正、合理,应该在主持人发布抢答命令之前必须先设定抢答得时间,因而在编开始抢答前得程序得先编写设定时间得程序,当时间设好了之后,主持人发布抢答命令按下P3、0按键,程序开始打开定时中断开始倒计时,然后调用键盘扫描子程序,编写键盘扫描程序。
当在扫描到有人按下了答题键,马上关闭T0、调用显示程序、封锁键盘。
接通电源后,液晶显示屏显示“Ready……",抢答器处于禁止状态,处于等待开始状态,此时有人抢答,会显示“error",也可以调整抢答时间与回答问题时间,;主持人将开关置,“开始”状态,宣布“开始"抢答器工作,显示屏显示“go!
”,扬声器给出声响提示,定时器倒计时;选手在定时时间内抢答时,抢答器完成,显示组号,并且倒计时,时间到扬声器提示。
当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间.如果再次抢答必须由主持人再次操作"开始、停止"状态开关。
5、2流程框图
图5、1流程框图
6电路仿真调试
6、1 上电准备状态
图6、1上电准备状态
6、2 开始抢答
图6、2 开始抢答
6、3非法抢答
图6、3非法抢答
6、4正常抢答
图6、4正常抢答
7实验仪器及元器件清单
表7-1实验仪器及元器件清单
器件名称
规格型号
数量
微处理器
AT89C51
1
极性电容
1uF
1
电阻(排阻)
RESPACK8
9
电容
10uF
2
晶振
12MHZ
1
按钮
15
液晶显示屏
LM020L
1
扬声器
BUZZER
1
8 设计总结
通过这次课程设计,我更进一步地认识了抢答器得工作原理,掌握了它得调整及测试方法。
本系统通过采用AT89C51单片机作为核心,以八个按键输入抢答信号,以液晶显示屏显示,根据烧录到单片机中得程序控制整个系统得工作流程,整体性好,效率高,实现了抢答器得智能化。
在这过程之中也遇到了一些问题,比如对汇编语言理解还不够,将其转化为C语言时在时序上出现一些问题,还有C语言基础也需要加强,编程能力有待提高。
9致谢
通过此次得课程设计,让我更进一步得巩固了单片机得各种知识。
但在设计得过程中,遇到了很多得问题,有一些知识已经不太清楚了,但就是通过一些资料又重新得翻阅并且认真得复习了相关教科书中得内容.此次得课程设计树立了对自己工作能力得信心,相信会对今后得学习工作生活都有非常重要得影响,而且大大得提高了动手能力,使我充分得体会到了创造过程中得探索得艰难与成功得喜悦。
虽然这次做出得作品还存在很多需要改进得地方,但就是在整个设计过程中所学习到得东西就是这次实训所得到得最大收获跟财富,使我终身受益.最后,我要感谢指导老师老师与杨浩辉同学在我将系统得汇编语言改为C语言时对我无私得帮助。
10参考文献
【1】戴梅蕚史嘉权 编著,《微型计算机技术及应用》(第四版)清华大学出版社,北京,2008、3
【2】(美)BruceEckel著 陈昊鹏译《JAVA编程思想》(第四版),机械工业出版社,北京,2007、6(2013、11重印)
【3】冯博琴吴宁主编,《微型计算机原理与接口技术》(第三版),清华大学出版社,北京密云胶印厂,2011、6
【4】张毅刚等编著,《新编MSC—51单片机应用设计》(第三版),哈尔滨工业大学出版社,哈尔滨东林印务有限公司,2008、4
附录一系统电路图
图附录系统电路图
附录二程序清单
#include<reg51、h> //包含单片机得头文件
#include〈intrins、h〉//包含_nop_()函数定义得头文件
sbit RS=P2^0; //寄存器选择位,将RS位定义为P2、0引脚
sbitRW=P2^1;//读写选择位,将RW位定义为P2、1引脚
sbit E=P2^2;
sbitring=P3^6;
sbitstart=P3^0;
sbitok=P3^1;
sbitadd=P3^4;
sbitsub=P3^5;
sbitD0=P1^0;
sbitD1=P1^1;
sbitD2=P1^2;
sbitD3=P1^3;
sbit D4=P1^4;
sbit D5=P1^5;
sbitD6=P1^6;
sbitD7=P1^7;
unsignedcharnum=0;
unsignedchar a=30,b=60,n=0,qd,hd,d;
voiddisplay();
voiddelay1ms()
{
unsignedchar i,j;
for(i=0;i<10;i++)
for(j=0;j<33;j++)
;
}
voiddelay(unsigned charn)
{
unsignedchar i;
for(i=0;i<n;i++)
delay1ms();
}
voidnopp(unsignedcharn)
{
unsignedchar i;
for(i=0;i _nop_(); } bit lcd_bz() { bitresult; RS=0; //根据规定,RS为低电平,RW为高电平时,可以读状态 RW=1; E=1; //E=1,才允许读写 ﻩnopp(4); //空操作四个机器周期,给硬件反应时间 result=(bit)(P0&0x80);//将忙碌标志电平赋给result E=0; return result; } voidWriteInstruction(unsignedchardictate) { while(lcd_bz()==1);//如果忙就等待 RS=0; //根据规定,RS与R/W同时为低电平时,可以写入指令 RW=0; E=1; //E置低电平 nopp (2); //空操作两个机器周期,给硬件反应时间 P0=dictate;//将数据送入P0口,即写入指令或地址 nopp(4);//空操作四个机器周期,给硬件反应时间 E=1; //E置高电平(正跳变) nopp(4);//空操作四个机器周期,给硬件反应时间 E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令 } voidWriteData(unsignedchary) { while(lcd_bz()==1); RS=1; //RS为高电平,RW为低电平时,可以写入数据 RW=0; E=1; //E置低电平 P0=y; //将数据送入P0口,即将数据写入液晶模块 nopp(4);//空操作四个机器周期,给硬件反应时间 E=1; //E置高电平(正跳变) nopp(4);//空操作四个机器周期,给硬件反应时间 E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令 } voidLcdInitiate(void) { delay(15); //延时15ms,首次写指令时应给LCD一段较长得反应时间 WriteInstruction(0x30);//显示模式设置: 8位数据,16×2显示,5×7点阵, delay(5); //延时5ms WriteInstruction(0x38); delay(5); WriteInstruction(0x0c); //显示模式设置: 显示开,有光标,光标闪烁 delay(5); WriteInstruction(0x06); //显示模式设置: 光标右移,字符不移 delay(5); WriteInstruction(0x01); //清屏幕指令,将以前得显示内容清除 delay(5); } void Display(unsignedchar string[]) { unsignedchari; ﻩi= 0; while(string[i]! ='\0') { // 显示字符 WriteData(string[i]); i++; } } /*void bark() { ﻩring=1; delay(10); ring=0; } */ void answer() { ﻩring=1; delay(500); ﻩring=0; ﻩWriteInstruction(0x01); ﻩdelay (1); Display(” go! "); ﻩTR1=1; ﻩqd=1; ﻩd=a; while (1){ ﻩ//TR0=1; if(! D0){n=1; ﻩ break;} ﻩif(! D1){n=2; break;} if(! D2){n=3; ﻩbreak; } ﻩif(! D3){n=4; break;ﻩ} if(! D4){n=5; ﻩbreak;} if(! D5){n=6; break; } if(! D6){n=7; break;ﻩ} ﻩif(! D7){n=8; break;} } ﻩ WriteInstruction(0x01); switch(n) { case1: Display("number: 1 ");hd=1;break; ﻩcase2: Display("number: 2”);hd=1;break;ﻩ case3: Display(”number: 3");hd=1;break; case4: Display("number: 4 ");hd=1;break; case5: Display(”number: 5");hd=1;break; case 6: Display(" number: 6");hd=1;break; case7: Display("number: 7");hd=1;break; case8: Display("number: 8");hd=1;break; ﻩ } n=0; //WriteInstruction(0x01); ﻩ delay(5000); ﻩd=b; ﻩ while(d+1); }ﻩ voiddisplay() { unsigned chartm[3]={0x20,0,0}; unsignedchara1,b1; ﻩa1=d/10; ﻩtm[1]=a1+0x30; ﻩb1=d%10; ﻩtm[2]=b1+0x30; WriteInstruction(0x01); ﻩdelay (1); Display(tm); } voidmain(void)//主函数 { TMOD=0X11; //选择定时器方式1 ﻩ TH0=0X00;//给定时器赋处置 ﻩTL0=0XFF; TH1=0X3C; TL1=0XB0; EA=1; ﻩET1=1;//开总中断 EX0=1; ﻩ ET0=1;ﻩﻩ EX1=1; ﻩ TR1=1; LcdInitiate(); //调用LCD初始化函数 ﻩﻩ Display(”ready、、、、、、"); ﻩwhile (1){ ﻩ if(start) { if(! (D0&D1&D2&D3&D4&D5&D6&D7)) { ﻩWriteInstruction(0x01); ﻩdelay (1); ﻩDisplay(" error”); ﻩring=1; delay(500); ﻩﻩring=0; ﻩdelay(500); WriteInstruction(0x01); ﻩ}ﻩ ﻩ } ﻩ else ﻩ answer(); }ﻩ } voidInt0() interrupt0 //中断服务程序 { ﻩWriteInstruction(0x01); ﻩDisplay("settingqd_tm”); ﻩdelay(1000); ﻩWriteInstruction(0x01); ﻩﻩd=a; ﻩﻩdisplay(); ﻩ while (1) {if(! add) ﻩ {a++; ﻩd=a; ﻩdisplay(); ﻩﻩﻩ delay(500); ﻩ} elseif(! sub) ﻩ{ a——;d=a; display(); ﻩ delay(500);} if(! ok) ﻩbreak;}ﻩﻩ } voidT0_timer()interrupt1 //中断服务程序 { TH0=0X00; TL0=0XFF; ﻩ ring=0; } voidInt1() interrupt2 //中断服务程序 { WriteInstruction(0x01);ﻩ delay (1); ﻩDisplay(" setting hd_tm”); delay(1000); WriteInstruction(0x01); ﻩﻩd=b; ﻩﻩdisplay(); while (1) {if(! add) { b++; ﻩd=b; ﻩﻩdisplay(); ﻩ delay(500); ﻩﻩ} ﻩelseif(! sub) { b—-;d=b; display(); ﻩﻩ delay(500);} if(! ok) ﻩbreak; ﻩ} } voidT1_timer()interrupt 3 //中断服务程序 { ﻩTH1=0X3C; //重装初值 TL1=0XB0; num++; if(num==20) ﻩ{ ﻩnum=0; display(); ﻩ d--; ﻩ} if(d==0) {TR1=0; ring=1; ﻩdelay(500);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 抢答 课程设计