1引言:抢答器在现实社会中有着很多的应用,而且设计多样化,对学生来说比较容易上手,故此次我选择的设计题目是抢答器。在设计开始,我查了不少关于抢答器的资料,其大体分为2种,一种是纯硬件实现,另一种是单片机实现。本次课程设计采用单片机实现。实现了多路抢答器的抢答和停止等功能。1.方案论证1.1用纯硬件实现方案用纯硬件实现方案来实现抢答器功能,用到数字电路中的一些例如逻辑电路等等来和相关的硬件来实现抢答器的功能。1.2用单片机方案用单片机方案来实现抢答器功能,用到单片机最小系统和存储器扩展设计、接口技术应用设计。其中,单片机最小系统主要要求学生熟悉单片机的内部结构和引脚功能、引脚的使用、复位电路、时钟电路、4个并行接口和一个串行接口的实际应用,从而可构成最小应用系统,实现抢答器的功能。1.3最终方案选择考虑到用纯硬件方案来设计抢答器,需要用到数字电路中的很多相关知识,例如逻辑电路等等,对于本专业的学生来说有一定的难度,而且比较麻烦,不容易上手,成本较高,故最终我选择了用单片机来设计实现抢答器。22.硬件详细设计2.1芯片的选择抢答器电路的核心是89C51单片机,其内部带有4KB的FLASHROM,无需外扩程序存储器;抢答器没有大量的运算和暂存数据现有的128B篇内RAM已经能满足容量需求,故不需外扩片外RAM,系统配有8位8段数码显示管,管采用共阴数码管,作为时钟的显示输出。2.2复位电路的设计该复位电路采用上电自动复位和手动复位两种复位方式,图中网络标号所指9连接到单片机的复位引脚。要实现复位只需在,51系列单片机的RESET引脚上加上5ms的高电平就可以了。上电复位是利用电容的充电来实现的,即上电瞬间RESET端的电位与Vcc相同,随着电容上储能增加,电容电压也逐渐增大,充电电流减小,RESET端的电位。这样就会建立一个脉冲电压,调节电容与电阻的大小可对脉冲的持续时间进行调节。通常若采用12MHz的晶振时,复位元件参数为22μF的电解电容和10kΩ的电阻。按钮复位电路是通过按下复位按钮时,电源对RESET端维持两个机器周期的高电平实现复位的。复位电路的设计如图1所示:图1复位电路原理图32.3数码显示管的选择数码显示管用来作为时间的显示输出,一般用7段数码显示管。本次设计中采用7段共阴数码显示管应用简单、可靠性高、成本低,作为显示输出。连接时段选信号接在P0口的P0.0~P0.6七个I/O口上,P1口是准双向I/O接口在输出驱动部分具有驱动4个TTL负载的能力,即输出电流不大于400μA,所以在接电阻时选择接510Ω限流电阻。而在位选方面采用单片机P2口的P2.0~P2.2三个I/O口作为位选信号的输出口。2.4晶振电路的设计MSC-51单片机的定时控制功能是用时钟电路和振荡器完成的,而根据硬件电路的不同,连接方式分为内部时钟方式和外部时钟方式。本设计中采用内部时钟方式。单片机内部有一个反相放大器,XTAL1、XTAL2分别为反相放大器的输入端和输出端,外接定时反馈元件组成振荡器(内部时钟方式),产生时钟送至单片机内部各元件。时钟频率越高,单片机控制器的控制节拍就越快,运算速度也就越快。一般来说单片机内部有一个带反馈的线性反相放大器,外界晶振(或接陶瓷振荡器)和电容就可组成振荡器,如图2-2所示。加电以后延时一段时间(约10ms)振荡器产生时钟,不受软件控制,图中Y1为晶振,震荡产生的时钟频率主要由Y1确定。电容C1,C2的作用有两个:一是帮助振荡器起振,二是对振荡器的频率起微调作用,典型值为30pF。晶振电路的设计如图2所示:图2晶振电路原理图43.软件设计3.1主程序设计此程序的及时采用定时器T0和T1中断完成,其余状态循环调用显示子程序。系统主程序流程图如图3所示。图3系统主程序流程图53.2显示子程序的设计由于采用软件动态扫描实现数据显示,显示用十进制BCD码的数据对应段码存放在ROM表中。显示时,先取出70H~75H某一地址中的数据,然后查得对应的显示段码从P0口输出。P2口将对应的数码管选中,就能显示该地址单元的数据值。3.3定时器T0.TI中断服务程序的设计定时器T0用于响铃程序,定时器T1用于计时程序。当答题剩余5秒种时P3.6口不断取反使喇叭发出一定频率的声音,提示选手。中断服务程序流程图如图4所示。图4中断服务程序流程图63.4抢答处理程序的设计当有选手第一个按下抢答器按扭时数码管显示选手号码,开始倒计时,并锁定抢答。当在此选手之后再有选手按下按扭时无效,数码管不变。4.源程序4.1主程序部分OKEQU20H;抢答开始标志位RINGEQU22H;响铃标志位ORG0000HAJMPMAINORG0003HAJMPINT0SUBORG000BHAJMPT0INTORG0013HAJMPINT1SUBORG001BHAJMPT1INTORG0040HMAIN:MOVR1,#30;初设抢答时间为30sMOVR2,#60;初设答题时间为60sMOVTMOD,#11H;设置未定时器/模式1MOVTH0,#0F0HMOVTL0,#0FFH;越高发声频率越高,越尖MOVTH1,#3CHMOVTL1,#0B0H;50ms为一次溢出中断SETBEASETBET0SETBET1SETBEX0SETBEX1;允许四个中断,T0/T1/INT0/INT1CLROKCLRRINGSETBTR17SETBTR0;4.2显示子程序,及部分注解如下:DISPLAY:MOVDPTR,#DAT1;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出,MOVA,R3MOVCA,@A+DPTRMOVP2,#0feHMOVP0,AACALLDELAYMOVDPTR,#DAT2MOVA,R5MOVCA,@A+DPTRMOVP2,#0fdHMOVP0,AACALLDELAYMOVA,R4MOVCA,@A+DPTRMOVP2,#0fbHMOVP0,AACALLDELAYRETDAT1:DB00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H;灭,1,2,3,4,5,6,7,8,9,灭,FDAT2:DB3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H第一个为零,其他与上相同,因为十位如果为零显示熄灭=====TO溢出中断(响铃程序)=====T0INT:MOVTH0,#0ECHMOVTL0,#0FFHJNBRING,OUT;CPLP3.6;RING标志位为1时候P3.6口不断取反使喇叭发出一定频率的声音OUT:RETI4.3T1溢出中断(计时程序):T1INT:MOVTH1,#3CH8MOVTL1,#0B0HINCR0RETIEND4.4抢答器处理程序:TRUE1:ACALLBARK;按键发声MOVA,R2MOVR6,A;抢答时间R2送R6MOVR3,#01HCLROK;因为答题的计时不再查询抢答,所以就锁了抢答AJMPCOUNTTRUE2:ACALLBARK;MOVA,R2MOVR6,AMOVR3,#02HCLROKAJMPCOUNTTRUE3:ACALLBARK;MOVA,R2MOVR6,AMOVR3,#03HCLROKAJMPCOUNTTRUE4:ACALLBARK;MOVA,R2MOVR6,AMOVR3,#04HCLROKAJMPCOUNTTRUE5:ACALLBARK;MOVA,R2MOVR6,AMOVR3,#05HCLROKAJMPCOUNTTRUE6:ACALLBARK;9MOVA,R2MOVR6,AMOVR3,#06HCLROKAJMPCOUNTTRUE7:ACALLBARK;MOVA,R2MOVR6,AMOVR3,#07HCLROKAJMPCOUNTTRUE8:ACALLBARK;MOVA,R2MOVR6,AMOVR3,#08HCLROKAJMPCOUNT105.结论试验的程序通过Keil软件编译,产生HEX文件如图5所示:图5程序在Keil软件上编译结果11通过Proteus进行仿真,如仿真结果所示,按下开始后,数码管开始倒计时,仿真结果如图6所示。图6仿真的结果当有选手按下按扭时,数码管显示选手号码并开始倒计时,如图7所示图7仿真的结果12通过仿真结果证实,该方案可行。该设计方案同过51系列单片机的P0口作为段选输出,用P2口作为位选输出,动态扫描LED显示管,显示时间。并通过接在P3.0-P3.6口的按键开关控制开始、结束、喇叭提示等功能。P1口接选手按键,控制抢答。本设计实现简单,成本较低很适合我们大学生动手实践。6.课程设计体会这样的课程设计真的很有意义,第一次自己真真切切的动手设计制作产品,感觉自己学会了很多,成长了很多,让我找回了往日奋斗的激情,也许这样的机会在大学不会再有了,我会深深的记住这次,记住这次饱含我汗水的综合课程设计。这次也发现了自身很多的不足,许多的基本电路都不是很熟悉,在画原理图的时候就不停的找以前的教材,以后还得多看看教材,牢记一些基本的电路。最后在这里忠心的感谢在教学大纲中安排了这次综合课程设计,感谢指导老师的辛勤付出。7.参考文献[1]贾金玲.单片机原理及应用.四川:电子科技大学出版社.2004.[2]张迎新.单片机初级教程.北京:航空航天大学出版社,2007.[3]周润景张丽娜.基与PROTEUS的电路及单片机仿真.北京:航空航天大学出版社,2007.[4]张万奎.模拟电子技术.湖南:湖南大学出版社,2005.