抢答器课程设计.docx
《抢答器课程设计.docx》由会员分享,可在线阅读,更多相关《抢答器课程设计.docx(32页珍藏版)》请在冰豆网上搜索。
抢答器课程设计
《单片机技术》课程设计说明书
数字抢答器
系、部:
电气与信息工程系
学生姓名:
指导教师:
王韧职称副教授
专业:
电气工程及其自动化
班级:
完成时间:
2014年6月5号
摘要
单片机把我们带入了智能化的电子领域,许多繁琐的系统若由单片机进行设计,便能收到电路更简单、功能更齐全的良好效果。
而随着技术的进步,单片机与串口通信的结合更多地应用到各个电子系统中已成一种趋势。
本设计就是基于单片机设计抢答系统,单片机系统的硬件结构给予了抢答系统“身躯”,而单片机的应用程序赋予了其新的“生命”,使其在传统的抢答器面前具有电路简单、成本低、运行可靠等特色。
对于抢答器我们大家都知道那是用于选手做抢答题时用的,选手进行抢答,抢到题的选手来回答问题。
抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气。
选手们都站在同一个起跑线上,体现了公平公正的原则
本设计采用单片机系统已经外部设备,比如数码管显示器、独立式键盘等外部输入输出设备。
分别采用了C51语言和单片机汇编语言来编写程序。
晶振为12MHz。
本设计基于AT89S52这款单片机,事先已经将这块电路板做完。
程序设计是再keil4的环境下编写的,用USB将程序下载到单片机里面就可以进行抢答了。
经过测试,本设计各方面指标已经达到任务书中的要求。
关键字:
单片机汇编抢答器
ABSTRACT
ThecontesthasbeenwidelyusedinallkindsofgamesandTVprogram,soasweelectronicandinformationengineeringofthecontemporarycollegestudentsisverybenecessarytounderstandtheprincipleofwork,thesubjectofthedesigncanletusmoreexercisetheirpracticeability.
ThisdesignUSESthemonolithicsystemhasbeenanexternaldevice,suchasdigitaltubedisplay,keyboardinputandoutputsuchasindependenttypeexternalequipment.C51areusedforthelanguageandMCUassemblylanguagetowritetheprogram.Crystalsfor12MHz.
ThedesignofthissinglechipmicrocomputerbasedonAT89S52devices,hasputthiscircuitboardfinishedinadvance.Theprogramdesigniskeil4againundertheenvironmentofthepreparation,anduseofthegenerationofUSBwillprogramhexadecimaldownloadtosinglechipinsideforviestoanswerfirst.
Throughtesting,thisdesignvariousaspectshasreachedtherequirementsoftheindexcommitments.Andthisdesigninthecallbuttonscanningprogram,isscanningfunctionkeysindelayprogramcalled,soaregreatlyimprovedviestoanswerfirstthesensitivity,soIthinkthisdesignorhavelargerdevelopmentspace.
Keywords:
Viestoanswerfirstdevice;Digitaltube;assembly
目录
1设计任务和方案1
1.1设计任务1
1.2功能要求说明1
1.3设计总体方案及工作原理说明2
2抢答器的硬件系统的设计3
2.1硬件系统各模块功能设计3
2.1.1单片机最小系统3
2.1.2独立式键盘模块3
2.1.3LED显示电路模块3
2.1.4LED流水灯电路模块3
2.1.5蜂鸣电路模块4
2.1.6违规指示灯电路模块4
2.1.7下载口电路模块4
2.2电路原理图、PCB图和实物4
2.3元器件清单4
3抢答器软件系统的设计5
3.1抢答器使用单片机资源的情况5
3.2抢答器软件系统各模块功能简要介绍5
3.2.1定时器模块5
3.2.2按键模块5
3.2.3LED显示模块6
3.3设计课题软件系统程序流程框图7
4设计结论8
4.1抢答器的设计结论及使用说明8
4.1.1设计结论8
4.1.2使用说明8
4.2抢答器的仿真结果8
4.3设计体会9
结束语10
致谢11
参考文献12
附录1电路原理图13
附录2PCB图14
附录3元器件分布图15
附录4元器件清单16
附录5程序清单17
附录6仿真结果25
1设计任务和方案
1.1设计任务
学生通过程序设计和实物制作相结合解决相应的实际问题,巩固和运用在课堂课余中所学的理论知识和实验技能,掌握单片机应用系统的一般设计方法,提高设计能力和实践动手能力,为以后从事电子电路设计、程序设计、研发电子产品打下良好的基础。
1.2功能要求说明
设计一个具有特定功能的抢答器。
该抢答器上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
主持人按下开始按钮后,抢答开始并限定时间30S;10S内无人抢答,蜂鸣器发出音响;主持人按下开始按钮之前有人按下抢答器,抢答违规,显示器显示违规台号,违规指示灯亮,其它按钮不起作用;正常抢答,显示器显示台号,蜂鸣器发出音响,其它抢答按钮无效;正常抢答下,从按下抢答按钮开始30S内,答完按钮没按下,则作超时处理,超时处理时,违规指示灯亮,数码管显示违规台号。
蜂鸣器发出音响;各台数字显示的消除,蜂鸣器音响及违规指示灯的关断,都要通过主持人按复位按钮。
1.3设计总体方案及工作原理说明
设计中采用AT89S52芯片、LED显示器、蜂鸣器、LED灯和一些独立式按键构成一个简易四路抢答器。
程序设计采用C51和汇编两种语言编写。
我设计的四路抢答方案设计框图如图1所示。
图1系统设计框图
设计中是采用单片机的内部定时器进行定时,原理框图如图2所示
图2原理框图
整个抢答器的工作原理是:
在正常的供电状态下,开始抢答时利用单片机倒计时,并由单片机将所需要显示的数据送到LED显示器的输入口,当上电时显示系统提示符“P.”有键按下时则执行相应的键功能程序。
2抢答器的硬件系统的设计
2.1硬件系统各模块功能设计
2.1.1单片机最小系统
单片机最小系统包括电源电路、时钟电路、复位电路,结构如图3所示。
只有当单片机有了这些电路才会工作。
电源电路给单片机供电,时钟电路给单片机提供计数时间,复位电路可以实现单片机的复位。
图3单片机最小系统结构图
2.1.2独立式键盘模块
采用独立式键盘接法,共有七个按键来对电路进行控制。
分别通过上拉电阻接在单片机的P1口线上。
其中有四个按键为抢答键(接在P1.0--P1.3口线上),开始键接在P1.4口线上,答完键接在P1.5口线上,复位键接在P1..6口线上。
2.1.3LED显示电路模块
采用两个四位一体共阳型数码管显示器进行显示。
由于位控线的驱动电流较大,因此在P2口线上接了8个PNP型三极管提高驱动能力;在单片机的P1口线和P2口线上接了16个470Ω的电阻,这些电阻起限流的作用。
将段控口a--dp接在P0.0--P0.7上,位控口接在P2口线上,实现对显示的控制。
LED显示电路模块主要用来指示第一抢答者,显示倒计时和违规的台号。
2.1.4LED流水灯电路模块
LED流水灯电路模块由电阻和二极管串联构成
2.1.5蜂鸣电路模块
单片机P3.1口线上接上一个1KΩ电阻然后再通过一个PNP型三极管与蜂鸣器相连接组成蜂鸣器电路,接入PNP型三极管是为了增强蜂鸣器的驱动电流。
蜂鸣电路主要完成提示和违规报警功能,电路如图6所示。
2.1.6违规指示灯电路模块
单片机P3.2口线上经过一个470Ω的电阻与LED灯的阴极相连接,LED灯的阳极接正五伏电压。
470Ω的电阻起限流的作用。
LED指示灯电路模块主要用来指示用违规操作发生。
2.1.7下载口电路模块
单片机下载口的功能为通过下载口将编好的程序用USB将程序生成的16进制下
载到单片机里面。
2.2电路原理图、PCB图和实物
抢答器Protel电路原理图见附录1。
抢答器PCB图见附录2。
元器件图见附录3。
2.3元器件清单
元器件清单见附录4。
3抢答器软件系统的设计
3.1抢答器使用单片机资源的情况
编写C语言时,在定时程序里,用到了定时器0,并且采用方式1中断方式工作。
而且用到了第一组通用寄存器,采用独立式键盘,键盘直接接在P1口上且按键的结果存贮在单片机的内部数据存储器里面。
用到的LED显示器接到了单片机的P0口线上和P2口线上。
LED指示灯和蜂鸣器接在P3口线上。
3.2抢答器软件系统各模块功能简要介绍
该抢答器所用的软件模块有定时器模块、按键模块、LED显示模块。
3.2.1定时器模块
选择定时器0,设置定时器定时方式为方式1以中断方式工作,设置定时时间为50mS。
循环20次达到一秒。
3.2.2按键模块
采用独立式键盘,共用七个按键对电路进行控制和操作,分别为S2、S3、S4、S5、S6、S7、S8来控制抢答器。
S4、S5、S6、S7代表选手;S2为开始键、S3为答完键、S8为复位键。
键扫描函数由键处理函数主要是将从P1口取值送往单片机进行取反处理。
键扫描函数主要是判断是否真的有键按下,即度过前沿抖动之后再判断是否有键按下,如果确实有键按下再判断是否释放,同样也要度过后沿抖动。
最终将处理完的键值作为返回值返回。
3.2.3LED显示模块
抢答器上电显示P.,按开始键开始抢答,显示器显示倒计时,若为无效抢答则显示器显示违规台号。
延时一毫秒函数要再显示函数中用到,由于时间比较短,就采用纯软件的方法延时。
3.2.4监控模块
单片机上电显示P.以及判断选手是否违规操作处理,违规时二极管发光且蜂鸣器报警。
3.3设计课题软件系统程序流程框图
抢答器程序流程框图如图4所示,键扫描函数流程图如图5所示。
图4:
程序主流程图
图5:
键扫函数流程图
3.4设计课题软件系统程序清单
见附录5
4设计结论
4.1抢答器的设计结论及使用说明
4.1.1设计结论
本系统就是充分利用了AT89S52芯片的I/O引脚。
该抢答器上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
正常抢答时显示台号和倒计时时间;抢答违规时显示违规台号、违规指示灯亮、蜂鸣器报警。
通过测试和仿真以及修改,该抢答器完成了设计任务,符合设计要求。
4.1.2四路抢答器的使用说明
本设计的S1到S4为抢答键,S7为自定义复位键,S0为开始键,S5为回答完毕键,S8为系统复位键。
当开始键按下后才能进行抢答,抢答时间为10秒,抢答时,其他按键无效,答完后,答题人按下完毕键,答题结束。
若没有按下开始就抢答则违规,违规灯亮,显示违规者台号。
若倒计时时间到,还没按下答完键则违规,违规灯亮,按复位键才能重新开始。
操作步骤如下:
(1).将+5V电源接到板子电源插口上,接通电源开关。
(2).把抢答器电路板上的ISP程序下载线连接到计算机USB接口,在计算机上通过avr_fighter软件把电子钟程序下载到单片机内。
(3).抢答器程序下载到单片机以后,抢答器进入命令状态,显示“P.”。
按下S0键,抢答器从10开始倒计时运行,并且可以听到滴答滴答声,在倒计到0之前按下S1-S4中的任何按键,表示该选手抢答成功,数码管显示选手号码和答题总时间,在规定时间到之前按下完毕键,表示答题成功,否则答题无效并蜂鸣器报警,只能主持人通过返回键回到开始显示P.状态。
然后具体再根据设计要求进行按键操作
4.2设计课题的误差分析
本次设计的过程中,在违规抢答的过程中,由于蜂鸣器的时间延时过长所以当还没有按下开始键时,按下S4至S7中的任意一个键时,按下复位键时还没有显示按实验要求显示的系统提示符“P.”,是因为单片机还在处理蜂鸣电路,没有来得及扫描键的按下,所以要按第二下时才能够复位,当缩短蜂鸣器报警函数中的延时时,硬件系统中程序运行正常。
所以不会出现由于时间的误差而引起的错误。
4.3设计体会
在本次课程设计的过程中我学会了很多,从刚开始对数码管系统的似懂非懂的状态到了解它的各个模块所要实现的功能,并且掌握它,学会如何运用它来编写程序。
总之,在这次课程设计的过程当中,让我学会了用Protel画原理图、PCB图来制作硬件电路,学会了用Proteus来仿真,以及用Keil来编写程序、调试程序,并且将它们有机地结合。
其次,通过本次课程设计,我更深一步地掌握了单片机的接口技术以及其汇编语言。
在编写程序时,经常也碰到很多难题,程序的跳转等等。
尤其是编写汇编程序的时候,程序的循环,多层循环,还有就是转移语句的跳转范围,这次编程的时候就遇到几次这样的情况,于是我就在跳转语句附近写一段跳转区程序,先让其跳到跳转区,然后通过无条件长转移指令跳到要去的程序段。
以前总是觉得编程序很难,如果要编写一个稍微长一点的程序,基本上很难写出来,可能有思路但是却不能很好的掌控整个思路过程,但是这次我通过2周的努力终于把程序编写出来了。
总之,通过这次的课程设计,让我学到了很多书本上学不到的东西,学到了实际应用时,是取用成本的最小化,做设计不仅要考虑大的方面,小的方面也必须做到完美。
最大的收获是:
对键盘,显示器,汇编语言的应用有了深刻的理解。
结束语
在本次设计完毕后,我对自己的程序进行了深刻的反思,当我做完后去看别人编的程序的时候发现它们的思路比我更加清晰,所以我觉得在项目设计上我还得再加把劲,熟能生巧,只有练习多了,才会有更加简洁的方案和更加清晰的路。
而且在程序设计上,有很多在设计过程中所遇到的问题需要加以改正。
致谢
在这里我要感谢老师平时对我的悉心教诲和在实验过程当中的严格要求,在每个实验的过程中,老师都会向我提出与实验相关的问题,而且是我自己没有遇到的,培养了我思考问题和解决问题的能力,使我学会在课程设计的过程中尝试着如何解决问题。
这段时间我确实学到了很多实用的知识,同时经过不断的实践操作,我也加深了对理论的理解。
在学习和实践过程中我要感谢老师和同学对我编程过程中提出的问题耐心的讲解,也很感谢他们对我的细心的帮助!
参考文献
[1]李广弟,朱月秀,冷祖祁.单片机基础[M].北京:
北京航空航天大学出版社,2007
LiGuangdi,ZhuYuexiu,LengZuqi.Microcontroller[M].beijing:
Beijinguniversityofaeronauticsandpress,2007
[2]马忠梅,籍顺心,张凯,马岩.单片机的C语言应用程序设计[M].北京:
北京航空航天大学出版社,2006
MaZhongmei,J,ZhangKai,MaYan.MCUClanguageprogramdesign[M].beijing:
Beijingaerospaceuniversitypress,2006
[3]李光飞.单片机课程设计实例指导[M].北京:
北京航空航天大学出版社,2004.9
LiGuangfei.Thiscoursedesignexampleguide[M].beijing:
Beijinguniversityofaeronauticsandpress,2004.9
[4]邢增平.Protel99SE设计专家指导[M].北京:
中国铁道出版社,2004
XingZengping.Protel99SEdesignexpertguidance[M].beijing:
Chinarailwaypublishinghouse,2004
附录1电路原理图
附录2PCB图
底层布局
附录3元器件分布图
附录4:
元器件清单
元器件名称
规格
数目
AT89S52单片机
40P
1
AT89S52单片机芯片锁紧座
40P
1
四位一体共阳数码管
2
四位一体共阳数码管插座
40P
1
74HC573
20P
1
74HC573芯片插座
20P
1
晶振
12MHz
1
发光二极管
9
单排插针
40P
2
三极管
9012
1
蜂鸣器
1
小按键
10
下载口座子
1
六脚按键电源开关
1
USB电源线
1
USB电源线插座
1
电阻
200
1
电阻
470
8
电阻
1K
4
电解电容
22uf
2
瓷片电容
33pf
2
排阻
10k
4
排阻
470
1
短路冒
4
杜邦线8P
1
PCB板子
1
固定螺钉螺帽
3mm
4
USB下载线
1
附录5
抢答器程序清单
;堆栈栈底30H;
;
;*****************************************************************************;
;LED数码管显示器设定;
;P0.0---P0.7段控线,分别接段控位a,b,c,d,e,f,g,dp
;P2.0---P2.7位控线,从左至右(LED0,LED1,LED2,LED3,LED4,LED5,LED6,LED7)
;显示缓冲区设定从左至右依次为78H,79H,7AH,7BH,7CH,7DH,7EH,7FH
;
;*****************************************************************************;
;独立式键盘设定;
;8个按键S0至S7分别依次接在P1.0至P1.7口线;
;
;*****************************************************************************;
;蜂鸣器和报警灯设定;
;蜂鸣器、报警灯均接P3.1口
;
;*****************************************************************************;
;数据存储器变量及常量单元定义;
;30H字节单元:
十进制数秒,压缩BCD码
;33H字节单元:
十进制数定时次数,压缩BCD码
;78H字节单元:
十进制数秒十位,非压缩BCD码
;79H字节单元:
十进制数秒个位,非压缩BCD码
;20H.0位单元:
布尔量,S0键键值,S0键按下为1,S0键未按下为0
;20H.1位单元:
布尔量,S1键键值,S1键按下为1,S1键未按下为0
;20H.2位单元:
布尔量,S2键键值,S2键按下为1,S2键未按下为0
;20H.3位单元:
布尔量,S3键键值,S3键按下为1,S3键未按下为0
;20H.4位单元:
布尔量,S4键键值,S4键按下为1,S4键未按下为0
;20H.5位单元:
布尔量,S5键键值,S5键按下为1,S5键未按下为0
;20H.6位单元:
布尔量,S6键键值,S6键按下为1,S6键未按下为0
;20H.7位单元:
布尔量,S7键键值,S7键按下为1,S7键未按下为0
;20H字节单元:
十六进制,S0键键值01H,S1键键值02H,S2键键值04H,S3键键值08H,S4键键值10H,S5键键值20H,S6键键值40H,S7键键值80H
;*****************************************************************************;
;键功能程序;
;KEYA(S0键键功能程序):
主持人开始键
;KEY1(S1键键功能程序):
一号抢答键
;KEY2(S2键键功能程序):
二号抢答键
;KEY3(S3键键功能程序):
三号抢答键
;KEY4(S4键键功能程序):
四号抢答键
;WANBI(S5键键功能程序):
回答完毕键
;S7键(主持人复位键)
;*****************************************************************************;
;中断服务程序;
;TC0(定时中断0)
;*****************************************************************************;
;常数表格;
;DISBH(系统提示符P.字型代码序号表)
;TAB(共阳数码管字型代码表)
;
;*****************************************************************************;
;子程序;
;DL(延时1毫秒子程序)
;DISP(数码管显示子程序)
;KEY(键扫描子程序);
;KEYCHULI(P1口数据处理子程序)
;JS(计算字符序号子程序)
;*****************************************************************************;
;伪指令定义:
;存储器单元
SECEQU30H;计时字符赋值
CISHUEQU33H;计定时次数
SECGEEQU78H
SECSHIEQU79H
HAOMAEQU7EH
;标志位
QDBIT20H.0;启动键标志位
YIHAOBIT20H.1;一号抢答台键标志位
ERHAOBIT20H.2;二号抢答台键标志位
SANHAOBIT20H.3;三号