单片机抢答器课程设计Word文档下载推荐.docx
- 文档编号:20951755
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:24
- 大小:247.70KB
单片机抢答器课程设计Word文档下载推荐.docx
《单片机抢答器课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机抢答器课程设计Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。
3.实物制作并调试;
4.课程设计说明书的书写;
5.我主要负责硬件焊接与制作。
参考文献阅读:
[1]张毅刚,彭喜元,董继成。
单片机原理及应用.高等教育出版社,2003.
[2]童诗白,华成英.模拟电子技术基础.高等教育出版社。
2006
[3]张大明,刘振鹏.单片微机控制应用技术实操指导书。
机械工业出版社,2007.
[4]徐晨,陈继红,王春明,徐慧.微机原理及应用。
高等教育出版社。
2004.
工作计划:
5.4课程设计任务书下达5.5结合指导老师,完成硬件电路的设计5.6程序编写
5.7进行软硬件联机调试5.8~5.9课程设计说明书的书写5.10领元器件
5.11焊接电路板5.12~5.13程序的烧写和电路板调试5.14交课程设计说明书和焊接电路板
任务下达日期:
2010年5月4日
任务完成日期:
2010年5月17日
指导教师(签名):
学生(签名):
摘要:
本组设计目标为以AT89S52单片机作为主要模块、数码管做为显示模块组成的用于表决选择的抢答器。
本抢答器主要是通过八个按键开关来摸拟八路选手的抢答,开始键按下,则进入到八个按键的扫描中。
通过数码管来显示抢答选手的号数,并由蜂鸣器发出抢答产生信号。
具体功能为:
主持人读完题目后按下允许抢答开关,才能进行选手抢答,否则摁键抢答无效,抢答时,首先有时间优先,之后有位置优先。
本抢答器的主要特点有硬件比较简单,造价便宜,软件原理通俗易懂。
关键词:
单片机抢答器
目录
1.设计背景……………………………………………………………01
1.1专业背景………………………………………………………01
1.2课题提出………………………………………………………01
2.设计方案……………………………………………………………01
2.1硬件设计方案…………………………………………………01
2.2软件设计方案…………………………………………………02
3.方案实施……………………………………………………………03
3.1硬件方案实施…………………………………………………03
3.2软件方案实施…………………………………………………08
4.结果与结论…………………………………………………………15
4.1总体设计过程分析……………………………………………15
4.2总体结论………………………………………………………15
5.收获与致谢…………………………………………………………16
6.参考文献……………………………………………………………16
7.附件…………………………………………………………………17
7.1元器件清单……………………………………………………17
7.2硬件原理图……………………………………………………18
7.3程序清单………………………………………………………18
1.设计背景
1.1专业背景
随着现代电子电路的快速发展,以及电子行业对现有电子工程技术的不断需求,特别是对实际操作实践的电子人才的需求越来越多,所以加强学生动手能力﹑重视实践应该是电子发展需求的必然趋向。
实践动手能力的培养是一种综合能力,这种能力当然是在一定难度的前提下完成的,通过一定数量的实践才能逐步形成的。
因此在培养实践能力的同时,要通过实践来不断的发现问题和解决问题的途径和方法,从而提高实践能力。
近年来,随着单片机档次的不断提高,功能的不断完善,其应用日趋成熟、应用领域日趋扩大,特别是工业测控、尖端武器和日用家电等领域更是因为有了单片机而生辉增色。
单片机应用技术已成为一项新的工程应用技术。
本次实习设计的题目为基于单片机的抢答器。
1.2课题提出
抢答器又称为第一信号鉴别器,其主要应用于各种知识竞赛、文艺活动等场合。
普通抢答器一般是由很多电路组成的,线路复杂,可靠性不高,功能也比较简单,特别是当抢答路数很多时,实现起来就更为困难。
这个学期我们开设了单片机课程,为了进一步巩固我们的相关知识,老师精心组织了这次课程设计。
我们设计了以单片机为核心的新型的抢答器,在保留原始抢答器的基本功能的同时又增加了数码管显示电路实现了其它功能。
通过这次抢答器设计,是我们进一步掌握相关专业知识的综合应用,提高我们的实际设计能力和动手能力。
2.设计方案
2.1硬件设计方案
根据课程设计要求可以大概构思出硬件电路图:
数码管与单片机的P0口的低七位相连接;
P0.7口与蜂鸣器相连接;
P1口接八个按键;
P2口接八个LED灯分别显示八位选手抢答的指示信号。
1)主控部分的方案设计
用以AT89C52为核心的单片机控制方案,通过相应的程序,并通过按键来进行电平识别,再由单片机输出相应的程序,并将相应数值通过数码来显示。
用单片机来制作的抢答器,硬件电路比较简单,容易明白,且成本相对较低。
2)优先级的设定
对于八位选手的优先级的设置有两种方案。
方案一:
利用一片74LS09芯片分别把P1口的八个抢答信号个一组相与之后接到单片机的除主持人外的其他的中断,并有软件的编写来控制八个抢答信号的优先级。
方案二:
利用两片74LS09先把八个抢答信号各一组相与后,再把相与后的信号个一组再次相与,最后把相与的结果的一个信号接到单片机的外部中断0上,当有抢答信号时,通过软件编写查询各个选手顺序可以设置八个抢答的优先级。
显然,方案一虽然少用了一片74LS09芯片但它需要四个中断,甚是麻烦。
而方案二只需要设置两个中断的开通与关断以及内部查询顺序就可以设置八个抢答信号的优先级。
因此选择方案二。
2.2软件设计方案
1)中断的开通与关断设计
为达到在主持人未按下按键前抢答无效应该设置外部中断为开中断,外部中断0为关中断。
当开始抢答信号发出后,开外部中断0以接收选手抢答中断信号。
选手抢答后,开外部中断1从而使主持人再次按下按键后可以开始下一次抢答。
2)数码管的显示
采用静态显示,是指当数码管显示某一字符时,七段数码管的对应段的发光二极管被选中,在这种显示方式下,每段LED都对应一个单片机口线。
采用动态显示,对于多位数码管显示时,每一位数码管轮流显示,当显示间隔时间较短时人眼就分辨不出是动态显示,而是每一位都是一直都在显示。
比较二者,静态显示主要的优点是显示稳定,在发光二极管导通电流一定的情况下显示器的亮度大,系统运行过程中,在需要更新显示内容时,CPU才去执行显示更新子程序,这样既节约了CPU的时间,又提高了CPU的工作效率。
其不足之处是在需要用于显示的数码管较多时占用硬件资源较多,每个LED数码管需要独占8条输出线。
随着显示器位数的增加,需要的I/O口线也将增加。
动态显示器的优点是节省硬件资源,成本较低,但是要保证显示器正常显示,CPU必需每隔一段时间执行一次显示子程序,占用CPU大量时间,降低了CPU的工作效率,同时显示亮度较静态显示器低。
通过以上分析,结合本课题只提供一位数码管,所以采用方案一。
3)抢答信号指示灯
对于这一位LED灯的闪烁可以通过软件程序的编写,交替送出电平高低控制其闪烁。
3.方案实施
3.1硬件方案实施
1)相关应用软件的介绍
本次设计要用到的软件包括:
电路模拟仿真软件Proteus软件,汇编语言的编译器软件keil软件,布线制板软件dxp软件。
首先对于Proteus软件的用法:
如图1中所示,区域①为菜单及工具栏,区域②为预览区,区域③为元器件浏览区,区域④为编辑窗口,区域⑤为对象拾取区,区域⑥为元器件调整工具栏,区域⑦为运行工具条。
首先点击启动界面区域③中的“P”按钮(PickDevices,拾取元器件)来打开“PickDevices”(拾取元器件)对话框从元件库中拾取所需的元器件。
在对话框中的“Keywords”里面输入我们要检索的元器件的关键词,比如我们要选择项目中使用的AT89C52,就可以直接输入。
输入以后我们能够在中间的“Results”结果栏里面看到我们搜索的元器件的结果。
搜索到所需的元器件以后,我们可以双击元器件名来将相应的元器件加入到我们的文档中,那么接着我们还可以用相同的方法来搜索并加入其他的元器件。
当我们已经将所需的元器件全部加入到文档中时,我们可以点击“OK”按钮来完成元器件的添加。
添加好元器件以后,下面我们所需要做的就是将元器件按照我们的需要连接成电路。
首先在元器件浏览区中点击我们需要添加到文档中的元器件,这时我们就可以在浏览区看到我们所选择的元器件的形状与方向,如果其方向不符合你的要求,你可以通过点击元器件调整工具栏中的工具来任意进行调整,调整完成之后在文档中单击并选定好需要放置的位置即可。
接着按相同的操作即可完成所有元器件的布置,接下来是连线。
事实上Proteus的自动布线功能是如此的完美以至于我们在做布线时从来都不会觉得这是一项任务,而通常像是在享受布线的乐趣。
布线时我们只需要单击选择起点,然后在需要转弯的地方单击一下,按照你所需走线的方向移动鼠标到线的终点单击即可。
Proteus中单片机芯片默认已经添加电源与地,所以我们可以省略。
图1.proteus启动界面图
修改好各组件属性以后就要将程序(HEX文件)载入单片机了。
这里就要用到汇编语言的编译器软件keil软件了。
应用Keil进行软件仿真开发的主要步骤为:
编写源程序并保存—建立工程并添加源文件—设置工程—编译/汇编、连接,产生目标文件—程序调试。
Keil使用“工程”(Project)的概念,对工程(而不能对单一的源程序)进行编译/汇编、连接等操作。
工程的建立、设置、编译/汇编及连接产生目标文件的方法非常易于掌握。
首先选择菜单File-New…,在源程序编辑器中输入汇编语言或C语言源程序(或选择File-Open…,直接打开已用其它编辑器编辑好的源程序文档)并保存,注意保存时必须在文件名后加上扩展名.asm(.a51)或.c;
然后选择菜单Project-NewProject…,建立新工程并保存(保存时无需加扩展名,也可加上扩展名.uv2);
工程保存后会立即弹出一个设备选择对话框,选择CPU后点确定返回主界面。
这时工程管理窗口的文件页(Files)会出现“Target1”,将其前面+号展开,接着选择SourceGroup1,右击鼠标弹出快捷菜单,选择“AddFiletoGroup‘SourceGroup1’”,出现一个对话框,要求寻找并加入源文件(在加入一个源文件后,该对话框不会消失,而是等待继续加入其它文件)。
加入文件后点close返回主界面,展开“SourceGroup1”前面+号,就会看到所加入的文件,双击文件名,即可打开该源程序文件。
紧接着对工程进行设置,选择工程管理窗口的Target1,再选择Project-OptionforTarget‘Target1’(或点右键弹出快捷菜单再选择该选项),打开工程属性设置对话框,共有8个选项卡,主要设置工作包括在Target选项卡中设置晶振频率、在Debug选项卡中设置实验仿真板等,如要写片,还必须在Output选项卡中选中“CreatHexFi”;
其它选项卡内容一般可取默认值。
工程设置后按F7键(或点击编译工具栏上相应图标)进行编译/汇编、连接以及产生目标文件即扩展名为.hex文件了。
2)硬件电路框图
本系统采用AT89S52单片机作为控制核心,对按键开关送来的信号进行分析处理,最终控制数码管显示相应的数值。
本系统主要的单元电路有单片机主控电路、键盘控制电路、LED显示电路模块等。
系统硬件框图如下图图2所示。
图2.系统硬件框图
3)时钟电路
单片机必须在时钟电路的驱动下才能工作。
在单片机内部有一个时钟振荡电路,只需要外接一个振荡源,就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。
一般选用石英晶体振荡器。
此电路在加电大约延迟10ms后振荡器起振,其振荡频率主要由石英晶体的频率决定。
两个电容的作用是帮助振荡器起振,并对振荡器的频率进行微调。
电路如图3所示
图3.时钟电路图
4)复位电路
外部中断和内部中断并存,单片机有硬件复位端,输入一定周期的高电平即可实现复位。
复位后单片机的各个状态都恢复到了初始状态。
电路如图4所示:
图4.复位电路图
5)数码管的设计:
图中数码管采用的是1位七段共阳数码管,其中a~f段分别接到单片机的P0.0~P0.6口,由单片机输出的P0口数据来决定段码值,还有八个300欧姆的电阻,连接在P0口上,用作P0口的上拉电阻。
6)电源电路
电源电路由桥堆2w10和7805构成。
电源电路主要用用于为整个系统提供电源。
我们日常用电都是220V的交流电,所以在设计电源时要先把交流电整成直流,然后再经过稳压管输出整个系统所需的稳定的直流电压。
整流主要采用2W10桥堆和电容滤波以得到基本稳定的输出电压。
稳压部分是采用常用的稳压管W7805得到稳定的输出正5V电压。
如图5所示:
图5.电源电路图
7)LED和数码管显示
LED显示主要是给发光二极管送一恒定的电流,这种方法需要有寄存器、译码器、驱动电路灯逻辑部件。
而单片机的P0口每一位可以驱动八个TTL型LS型负载,所以可以采用直接由P0口驱动数码管,P2对应每一口接一个发光二极管。
由于采用的是阳极接5V电源的接法,所以需要限流电阻与发光二极管串联。
发光二极管允许通过的电流是3mA至10mA左右,为了使发光二极管亮度高点,所以,选择了串联300欧电阻。
8)蜂鸣器
蜂鸣器的发声主要用于对有抢答时的报警信号,以提示主持人。
蜂鸣器的发声由三极管放大电压、电流来驱动,其中三极管的基集接单片机的P0.7口,以提供导通基集电流,从而经放大后达到蜂鸣器的发声电压、电流。
其电路图如6所示:
图6.蜂鸣器电路
3.2软件方案实施
1)抢答器流程图
流程图是使用图形表示算法的思路是一种极好的方法,不论采用何种程序设计方法,程序总体结构确定后,一般以程序流程图的形式对其进行描述。
总体框图中的各个子模块或各个子任务也应该结合具体的教学模型和算法画出较详细的程序流程图,供后面编写具体程序和阅读程序使用。
为便于识别,绘制流程图的习惯做法是:
方框表示:
要执行的处理;
平行四边形表示:
输入;
不规则图形代表输出;
菱形表示:
判断。
对整个系统的功能分析知,汇编语言程序分为三大部分:
主持人未按允许抢答时没有响应,主持人按键为外部中断1,之后有抢答信号为外部中断0。
得到系统的流程图如下图。
图7.主程序流程图
2)主要程序分析
我们组所采用的编程语言是单片机汇编语言,汇编语言的特点是程序的各个部分除了必要的信息交流外彼此之间相互独立。
这种结构化方式可使程序层次清晰,便于使用、维护以及调试。
汇编语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
它的语法比较灵活,允许程序编写者有较大的自由度。
本次设计的主程序中包括主持人按键处理程序,主选手抢答处理程序,一号选手抢答处理程序,LED灯闪烁程序,键盘消抖延时程序以及蜂鸣器发声时间和LED闪烁间隔时间程序。
程序分析如下:
a.初始化程序
抢答器的程序初始化主要完成中断初始化,数码管显示初始化。
中断初始化主要是对主持人按键中断信号和抢答中断信号的初始化,首先设置为主持人中断优先,抢答中断其后,即只有主持人按下按键后才允许选手抢答。
而对于数码管的初始化显示在本课题中是使数码管全灭。
初始化程序如下:
MOVA,#7FH;
初始化
MOVP0,A
SETBEA;
CPU开中断
SETBEX1;
开外部中断1
SETBIT1;
外部中断1设为电平触发方式
CLREX0;
关外部中断0
b.外部中断1处理程序
程序主要是用来处理主持人按键发出的抢答信号的显示和选手抢答按键的允许:
在主持人按下按键后,使数码管显示0以示意选手可以开始抢答,同时开外部中断0,即允许选手抢答中断。
同时,数码管显示0就说明主持人已经按下按键,所以在这里没有调用键盘消抖延时程序。
处理程序和流程图如下:
SETBEX0;
开外部中断0
SETBIT0;
外部中断0设为电平触发方式
MOVA,#40H
MOVP0,A;
主持人按键显示段码送到P0口显示
RETI;
中断返回
图8.外部中断1处理程序
c.外部中断0处理程序
也就是选手抢答中断处理程序。
首先调用键盘消抖延时程序,确定有键按下后。
当有两位选手同时抢答时根据要求的八号选手优先级,一号选手优先级最低的要求,所以在编写软件的时候首先检测八号选手对应的口线、如果是该键按下,就直接跳转到对应按键处理程序,否则就检测下一位,依次检测下去。
例如八号选手的检测程序如下:
SETBIT1;
关外部中断0
CLRIT0
MOVA,P1;
把抢答状态送到累加器A
LCALLDEL0 ;
调用延时程序,软件消抖
CJNEA,P1,IN0 ;
没有抢答,跳转再次检测键盘状态
MOVA,#7FH ;
八号选手抢答的数值送到A
CJNEA,P1,K6 ;
不是八号选手抢答,转到K6
AJMPKEY7 ;
是八号抢答,转到KEY7
外部中断0处理程序的流程图如下:
图9.外部中断0处理程序
d.按键处理程序
此过程就是蜂鸣器响一声,数码管显示选手号,对应选手LED闪烁五次。
数码管显示就是给P0送入选手号对应段码;
P0.7高电平,使蜂鸣器发声,再调用蜂鸣器发声时间延时程序,然后使P0.7为低电平关闭蜂鸣器发声。
LED闪烁是给P2口对应的口线交替送高低电平,同时调用延时程序用来控制闪烁的时间间隔。
例如一号选手的处理程序如下:
MOVA,#0F9H
MOVP0,A ;
数码管显示一号选手抢答
LCALLDEL1 ;
调用蜂鸣器响声时间延时程序
CLRP0.7 ;
关闭蜂鸣器响声
MOVR0,#00H
LCALLFLASH ;
一号选手对应LED灯闪烁程序
RETI ;
e.延时程序
延时程序用来控制LED闪烁的时间间隔、蜂鸣器响声时间和按键消抖。
延时程序的编写就是利用给寄存器赋值,然后利用DJNZ指令判断寄存器是否为零,再利用几个DJNZ嵌套,结合指令执行所占用的机器周期,计算延时程序的延时时间。
根据延时时间的不同来设置寄存器的值。
例如消抖程序如下:
DEL0:
MOVR2,#40
LOP0:
MOVR3,#125
LOP1:
DJNZR3,LOP1
DJNZR2,LOP0
RET
f.闪烁程序
这部分程序中采用了查表程序,表格中的不同值赋给P2口控制等的亮与灭;
其中也调用了延时程序。
主要是控制选手指示灯的闪烁。
闪烁程序和流程图如下:
FLASH:
MOVDPTR,#TAB;
转移表首地址送DPTR
MOVR1,#05H;
闪烁次数到R1
LOP:
MOV30H,R0;
查表偏移量到寄存器30H
MOVA,30H
MOVCA,@A+DPTR;
查表
MOVP2,A;
对应查表结果的LED灯亮
LCALLDEL1;
调用闪烁延时程序
INC30H;
查表偏移量增1
对应查表结果的LED灯灭
DJNZR1,LOP;
闪烁次数减1不为0转移
RET;
返回
图10.闪烁程序流程图
4.结果与结论
4.1总体设计过程分析
首先,我觉得做单片机课程设计是十分有意义的,而且是十分必要的。
在已度过的大学时间里,我们大多数接触的是课堂授课。
我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?
如何把我们所学的专业基础课理论知识运用到实践中去呢?
很明显做类似的课程设计就为我们提供了良好的实践平台。
其次,这次课程设计大概持续了两周时间,由于刚开始时一直很轻视这些或那些问题,或者说有点心虚,猛然间面对一个挺大的问题:
从设计到实现全靠我们几个!
什么只想着去问问老师,没想到大家都很牛,很快就有人有思路了,我们也不能甘心落于人后,只能费尽心思的做了!
我们设计的课题是八路抢答器,抢答器主要是由单片机、主持人按键和选手抢答按键以及显示部分组成;
抢答器主要功能是:
实现主持人按下允许抢答按键后数码管显示0,并允许选手抢答;
当有有选手抢答时,其他选手再抢答无效;
当有两位以上选手同时抢答时,八号选手优先级最高,一号选手最低。
在有选手抢答后,数码管显示抢答选手号,对应选手抢答指示LED灯闪烁五次,同时蜂鸣器响一声。
当主持人再次按下按键后数码管显示0,又开始下一题的抢答。
说真的,整个过程不够流畅,专业知识与实际问题结合的不够灵活,思维不够敏捷,确实费了不少心思,设计结果也不是太理想。
最后,总结出以下要点:
在设计程序之前,设计者必学对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;
要有一个清晰的思路和一个完整的的软件流程图;
在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;
要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;
在设计课程过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。
4.2总体结论
经过近十天的努力,在老师帮助下,我们这一组较好的完成了设计任务,通过此次课程设计,我重新认识到了自学的重要性,以及学以致用的道理。
我在图书馆及网络上查阅了大量的资料,同时也认识到了团队合作的重要作用。
此次的抢答器的设计,让我重新认识了以前所学习的专业知识,我觉得此次设计让我更加巩固了所学的知识并在设计的过程中学会了与时俱进,克服了工作的枯燥感,让我受益匪浅。
在学习单片机这门课程的时候,我们应该好好的记笔记,课下好好的做练习题才
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 抢答 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)