基于单片机的八位抢答器课程设计报告.docx
单片机课程设计报告题目电子抢答器系统设计学院电气信息学院专业通信工程姓名学号指导老师孙晓玲单片机课程设计报告2一、设计任务设计一个八路的电子抢答器系统,实现功能为可供8个选手使用,可显示30S倒计时,并可显示出抢到的选手号,并伴有提示音。要求1设计出硬件电路;2设计出软件编程方法,并写出源代码;3用PROTEUS进行仿真;二、方案设计1设置一个定时开关,开关按下后开始30S倒计时,在定时开关按下之前进行抢答无效,使用两位数码管显示倒计时。2在30S内,等待八个按钮中任意一个按下,按下后使用一位数码管显示按下的选手号,同时蜂鸣器发出响声。3一旦有选手按下后,其他选手再按下均无效,同时30S倒计时停止计时,等待复位信号。三、硬件设计(一)选用AT89C51单片机芯片单片机(SCM)是单片微型计算机(SINGLECHIPMICROCOMPUTER)的简称。它是把中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O接口电路、定时/计数器以及输入输出适配器都集成在一块芯片上,构成一个完整的微型计算机。它的最大优点是体积小,可放在仪表内部。但存储量小,输入输出适配器简单,功能较低。目前,单片机在民用和工业测控领域得到最广泛的应用,早已深深地融入人们的生活中。简单的说,用单片机系统来设计抢答器,实现两组的抢答时间即使是相差几微秒,也可分辨出哪组优先答题。P0端口(P00P07)P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1端口(P10P17)P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高电平,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2端口(P20P27)P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3端口(P30P37)P3口管脚是一个带有内部上拉电阻的8位的双向I/O端口,可接收输出4单片机课程设计报告3个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入端时,由于外部下拉为低电平,P3口将输出电流(ILL)。(二)关键电路1时钟电路一般选用石英晶体振荡器。此电路在加电大约延迟10MS后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路中两个电容C1,C2的作用有两个一是帮助振荡器起振二是对振荡器的频率进行微调。C1,C2的典型值为30PF。单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。其大小是时钟信号频率的倒数,常用FOSC表示。如时钟频率为12MHZ,即FOSC12MHZ,则时钟周期为1/12ΜS。2复位电路AT89C51的复位由外部的复位电路实现。复位电路通常采用上电自动复位和按钮复位两种方式。本次设计采用按钮复位方式。单片机的第9脚RST为硬件复位端,只要持续4个机器周期的高电平即可实现复位,硬件复位后的各状态可知寄存器以及存储器的值都恢复到了初始值。3数码管显示电路本次课程设计采用了7SEGMPX2CC的两位7段共阴极数码管,用来显示30S倒计时,和7SEGMPX1CC的一位7段共阴极数码管,用来显示抢答中的选手号码。位选端分别与P2口的第七位,第六位以及第零位相接。同时7段数码管线段通过上拉电阻接POWER,实现数码管的点亮。单片机课程设计报告44报警电路这里能利用程序来控制单片机P37口线反复输出高电平或低电平,即在该口线上产生一定频率的矩形波,接上扬声器就能发出一定频率的声音,再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使扬声器发出不同的声音。5按钮输入电路8个按钮接P1口,表示8个选手的抢答按钮,一个总开关接P30口负责启动定时程序。(三)整体电路单片机课程设计报告5四、软件设计(一)系统原理图数码管显示电路蜂鸣器报警电路AT89C51单片机八个抢答按钮定时开关(二)软件流程图在本设计中包括了以下四个主要的程序主程序;倒计时程序;正常抢答处理程序显示及发声程序。主流程图如图所示程序开始N判断KEY1按下YT0定时开始单片机课程设计报告6N,继续计时是否有选手按下Y显示选手号,停止计时,蜂鸣器响程序结束(三)关键程序1倒计时30S程序段VOIDTIMER0INTERRUPT1{TH06553650000/256//重新赋初值TL06553650000256AAIFAA20{AA0TEMPIFTEMP0{TEMP30}}利用计时器T0进行30S倒计时,T0工作在方式1下,该方式最大可计时65536US,利用计时公式THX65536X/256,TLX65536X256,设置单次计数初值为50MS,再重复20次就可获得1S,1S完成后AA清零,TEMP减1,TEMP总数为30,即可完成30S的倒计时。再利用七段数码管的动态扫描即可完成倒计时的显示。2显示选手号码程序段IFN1{IFK10{DELAY10IFK10{WHILEK1I1TR00N0BEEP1DELAY500BEEP0}}IFK20{DELAY10IFK20{WHILEK2I2TR00N0BEEP1DELAY500BEEP0}单片机课程设计报告7}IFK30{DELAY10IFK30{WHILEK3I3TR00N0BEEP1DELAY500BEEP0}}IFK40{DELAY10IFK40{WHILEK4I4TR00N0BEEP1DELAY500BEEP0}}IFK50{DELAY10IFK50{WHILEK5I5TR00N0BEEP1DELAY500BEEP0}}IFK60{DELAY10IFK60{WHILEK6I6TR00N0BEEP1DELAY500BEEP0}}IFK70{DELAY10IFK70{WHILEK7I7TR00N0BEEP1DELAY500BEEP0}}IFK80{DELAY10IFK80{WHILEK8I8TR00N0BEEP1DELAY500BEEP0}}}变量N为检测信号,当TR0开始计时时置为1,此时才开始检测是否有键按下,程序中包括按键去抖与松手检测,I用来传递键值给一位七段数码管,通过调用共阴极编码数组显示选中的号数,切一旦有键按下后,TR0置0,停止计时。N置0,之后按下无效。蜂鸣器延时取反