作者:湖南省邵阳学院 陈铁宇
目 录
摘要
第一章 数字抢答器的总体设计
1.1 原理图的确定
1.2 抢答器的工作原理
1.3 抢答器的总体设计
1.4 抢答器实现功能
第二章 硬件电路详细设计
2.1硬件的选择与电路设计
2.1.1 芯片的选择
2.1.2 复位电路的设计
2.1.3 晶振电路的设计
2.2 数码显示管的选择
第三章 软件详细设计
3.1主程序的设计
3.2 显示子程序的设计
3.3 定时器T0、T1中断服务程序的设计
3.4 抢答处理程序的设计
第四章 试验结果及结论
第五章 PCB板的制作及产品的焊接调试
5.1 PCB板的设计
5.2 制板
5.3 焊接与调试
第六章 课程设计体会与不足
致谢
附录
参考文献
摘要
转眼大三即将结束,一直以来都在不停的问自己3年来到底学到了什么,我也一直很迷惘,很为自己毕业后着急。站在人来人往的校园里完全没有一个立足点去审视自己的能力,一直在等待着能自己实践的机会。我们的专业老师明白学生的心理,高瞻远瞩,在6月份给我们专业安排了一次综合课程设计,由学生自己选择课题,自己设计,自己制出产品。这样的一个安排我很是高兴,听到这消息我就暗暗的告诉自己一定好好努力做这次设计,结果并不是最重要的,就象我们老师说的:能实现固然是最好,不能成功,只要每位同学认真的走好每个过程都是非常有好处的。
我选择的课题是用单片机实现智能数字抢答器。
功能介绍
1、如果想调节抢答时间或答题时间,按"抢答时间调节"键或"答题时间调节"键进入调节状态,此时会显示现在设定的抢答时间或回答时间值,如想加一秒按一下"加1s"键,如果想减一秒按一下"-1s"键,时间LED上会显示改变后的时间,调整范围为0s~99s, 0s时再减1s会跳到99,99s时再加1s会变到0s。
2、主持人按"抢答开始"键,会有提示音,并立刻进入抢答倒计时(预设30s抢答时间),如有选手抢答,会有提示音,并会显示其号数并立刻进入回答倒计时(预设60s抢答时间),不进行抢答查询,所以只有第一个按抢答的选手有效。倒数时间到小于5s会每秒响一下提示音。
3、如倒计时期间,主持人想停止倒计时可以随时按"停止"按键,系统会自动进入准备状态,等待主持人按"抢答开始"进入下次抢答计时。
4、如果主持人未按"抢答开始"键,而有人按了抢答按键,犯规抢答,LED上不断闪烁FF和犯规号数并响个不停,直到按下"停止" 键为止。
5、P3.0为开始抢答,P3.1为停止,p1.0-p1.7为八路抢答输入 数码管段选P0口,位选P2口低3位,蜂鸣器输出为P3.6口。P3.2抢答时间调整结,P3.3回答时间调整,P3.4为时间加1调整,P3.5为时间减1调整。
关键词:80C51 PCB封装 焊接 调试
第一章 数字抢答器的总体设计
1.1 原理图的确定
在设计开始,笔者查了不少关于抢答器的资料,其大体分为2种,一种是纯硬件实现,另一种是单片机实现。由于当时觉得自己单片机学得不怎么好,用单片机实现会有难度,于是是刚开始设计了两个原理图都是纯硬件实现。如图1.1和图1.2
图1.1
这是由锁存器373和一个二极管阵列驱动数码管显示组成的纯硬件抢答器,只能实现基本的抢答功能,并且元件繁多,学校实验室做的是单层板,做PCB板时布线难度比较大。当时想到了做两块PCB板。一块是前面的按键部分和锁存核心电路,一块是后面的二极管阵列连上数码管,中间用连接器连接。
经过多次研究,决定把后面器件繁多的二极管阵列用译码器和与非门代替,于是修改成了图1.2
图1.2
功能上和图1.1一样,只是元件比图1.1少。,但基于电子市场没有电路中所用的与非门和非门,这设计完全被否定。后来找了实验室的江世民老师,他是专攻单片机的,看了原理图后,首先他同意了图1.1的设计,但也说明了做板时的难度,他建议用单片机去实现。回到寝室后便开始找关于单片机设计抢答器的资料,在努力之下终于做出了单片机实现抢答的原理图,如图1.3
图1.3
就这样抢答器的原理图确定了。
1.2 抢答器的工作原理
抢答器的工作原理是利用单片机的定时器T0、T1中断完成,其余状态循环调用显示子程序,用4个共阴极LED数码管来显示,用P0口作为数码管的八个段选,用P2口中的P2.0、P2.1、P2.2、作为4个数码管其中3个位选,P1口接8个按键,提供选手抢答,P3.0-P3.5四个接四个按键,提供开始、结束、答题时间调整、枪答时间调整,加1、减1调整之用。
1.3 抢答器的总体设计
倒计时方案方面利用MCS-51的内部的定时/计时器进行中断计时,配合软件延时实现倒计时。该方案节省硬件成本,并且能够在定时器/计数器的使用、中断及程序设计方案方面得到锻炼与提高,显示方面采用穿行传输实现动态显示,该方案的硬件连接简单,但动态扫描的显示方式需占用CPU较多的时间,适用于单片机没有太多实时测控的任务场合
1.4 抢答器实现功能
本抢答系统可实现以下功能:
抢答功能:通过八路按键配合程序来实现抢答功能。当主持人按下抢答键开始抢答后,此时任一路按下按钮均闭锁其它各路,由程序对键盘译码并显示最先按下抢答键的路数及其当前时间。
抢答限时:主持人按下抢答键后,设置5秒为抢答时间(此时间可在1-99秒之间修改)。若5秒内无人抢答,倒计时为0时发出报警,说明该抢答题目作废。此时闭锁所有抢答按键,只有当主持人再次按下抢答键开始下一次抢答方可抢答。
答题限时:当选手按下按钮时,启动倒计时(此倒计时时间可在1~99秒之间修改),,倒计时为0时发出报警,说明答题时间到。
第二章 硬件电路详细设计
2.1 硬件的选择与电路设计
2.1.1 芯片的选择
抢答器电路的核心是89C51单片机,其内部带有4KB的FLASH ROM,无需外扩程序存储器;抢答器没有大量的运算和暂存数据现有的128B篇内RAM已经能满足容量需求,故不需外扩片外RAM,系统配有8位8段数码显示管,管采用共阴数码管,作为时钟的显示输出。
2.1.2 复位电路的设计
复位电路的设计如图2-1所示:
图2-1 复位电路原理图
该复位电路采用上电自动复位和手动复位两种复位方式,图中网络标号所指9连接到单片机的复位引脚。要实现复位只需在,51系列单片机的RESET引脚上加上5ms的高电平就可以了。上电复位是利用电容的充电来实现的,即上电瞬间RESET端的电位与Vcc相同,随着电容上储能增加,电容电压也逐渐增大,充电电流减小,RESET端的电位。这样就会建立一个脉冲电压,调节电容与电阻的大小可对脉冲的持续时间进行调节。通常若采用12MHz的晶振时,复位元件参数为22μF的电解电容和10kΩ的电阻。按钮复位电路是通过按下复位按钮时,电源对RESET端维持两个机器周期的高电平实现复位的。
2.1.3 晶振电路的设计
MSC-51单片机的定时控制功能是用时钟电路和振荡器完成的,而根据硬件电路的不同,连接方式分为内部时钟方式和外部时钟方式。本设计中采用内部时钟方式。
单片机内部有一个反相放大器,XTAL1、XTAL2分别为反相放大器的输入端和输出端,外接定时反馈元件组成振荡器(内部时钟方式),产生时钟送至单片机内部各元件。时钟频率越高,单片机控制器的控制节拍就越快,运算速度也就越快。
一般来说单片机内部有一个带反馈的线性反相放大器,外界晶振(或接陶瓷振荡器)和电容就可组成振荡器,如图2-2所示。加电以后延时一段时间(约10ms)振荡器产生时钟,不受软件控制,图中Y1为晶振,震荡产生的时钟频率主要由Y1确定。电容C1,C2的作用有两个:一是帮助振荡器起振,二是对振荡器的频率起微调作用,典型值为30pF。
晶振电路的设计如图2-2所示:
图2-2 晶振电路设计
2.2 数码显示管的选择
数码显示管用来作为时间的显示输出,一般用7段数码显示管。本次设计中采用7段共阴数码显示管应用简单、可靠性高、成本低,作为显示输出。连接时段选信号接在P0口的P0.0~P0.6七个I/O口上,P1口是准双向I/O接口在输出驱动部分具有驱动4个TTL负载的能力,即输出电流不大于400μA,所以在接电阻时选择接510Ω限流电阻。而在位选方面采用单片机P2口的P2.0~P2.2三个I/O口作为位选信号的输出口。
以上是电子钟系统的硬件设计,该硬件设计选件简单、便于操作,下面将介绍电子钟系统的软件设计部分。
第三章 软件详细设计
3.1 主程序的设计
此程序的及时采用定时器T0和T1中断完成,其余状态循环调用显示子程序。系统主程序流程图如图3-1所示。
3.2 显示子程序的设计
由于采用软件动态扫描实现数据显示,显示用十进制BCD码的数据对应段码存放在ROM表中。显示时,先取出70H~75H某一地址中的数据,然后查得对应的显示段码从P0口输出。P2口将对应的数码管选中,就能显示该地址单元的数据值。
3.3 定时器T0、T1中断服务程序的设计
定时器T0用于响铃程序,定时器T1用于计时程序。当答题剩余5秒种时P3.6口不断取反使喇叭发出一定频率的声音,提示选手
图3-2 中断程序流程图
3.4 抢答处理程序的设计
当有选手第一个按下抢答器按扭时数码管显示选手号码,开始倒计时,并锁定抢答。当在此选手之后再有选手按下按扭时无效,数码管不变。
第四章 试验结果及结论
试验的程序通过Keil软件编译,产生HEX文件如图4-1所示
图4-1 Keil软件的编译结果
通过Proteus进行仿真,如仿真结果所示,按下开始后,数码管开始倒计时,
图4-2 仿真的结果
当有选手按下按扭时,数码管显示选手号码并开始倒计时,如图4-3所示
图4-3仿真的结果
通过仿真结果证实,该方案可行。该设计方案同过51系列单片机的P0口作为段选输出,用P2口作为位选输出,动态扫描LED显示管,显示时间。并通过接在P3.0-P3.6口的按键开关控制开始、结束、喇叭提示等功能。P1口接选手按键,控制抢答。本设计实现简单,成本较低很适合我们大学生动手实践。
第五章PCB板的制作及产品的焊接调试
5.1 PCB板的设计
所有准备就绪就开始制做PCB板了,由于PROTEUS软件中元件的封装有很多没有或者和购买的元件不同,所有不少元件都要自己画封装,由于这软件没有上过专门的课程,画封装遇到了很多的问题,开始不知道怎么画,网上的教程很笼统,看得不是很明白,后来自己慢慢摸索知道大体怎么画了,但总是导不到PCB板图中去,就由于这个卡住了个把星期,最后在网上买了一本《基于PROTEUS的电路及单片机系统的设计与仿真》才学会了封装,最后做好了PCB图,如图5.1
。
图5.1
5.2 制板
PCB板图做好之后就到实验室开始了制板,制板的流程还是比较简单的,首先把图5.1的PCB板图打印到半透明的菲林纸上,然后把裁好的感光板盖在菲林纸上放在暴光机中暴光一分钟,再把暴光好了的感光板在显影水中显影,最后把显完影的感光板放到Fecl3中腐刻,大概等待半个小时左右就可以得到PCB板了。腐刻好的PCB板经冲洗就可以按照上面的焊盘打孔了。在制板过程中一共浪费了2块板,第一块是由于实验室帮我们制板的同学放多了显影粉导致很多线路被洗断,然后又紧接着做第二块,第二块做的还是蛮好,结果拿回来后发现数码管的封装画错了,两排针脚的距离太近,完全不能焊接,第二块板宣布报废。回寝室后仔细查对每个元件的封装,确定没有任何错误后才做好PCB板图到实验室做了第三块板,这次做得很成功,也就是最终使用的PCB板。
5.3 焊接与调试
PCB板做好了,孔也打好了,接下来的工作就是焊接。由于以前没有焊接经验,怕焊坏了板子,中午时候在寝室拿废板子练习了一段时间,总算找到了诀窍,先把烙铁靠近焊盘,紧接着把锡丝往烙铁上送,等锡丝熔了轻轻一提,一个又圆又亮的焊点就做好了。下午板子做好后就很熟练的在一个小时左右把元件都焊上去了,总体还是蛮好的。焊接后的板子如图5.2和5.3所示。
图5.2
图5.3
焊接好后的调试就是最激动人心的时候,插上电源,发现数码管不亮,心里一凉,但当按下复位键时数码管就亮了,并且所有功能都能正常运行,于是赶紧到实验室重新打了个拨动开关的孔,用跳线把复位按纽接到了拨动开关,这样抢答器功能基本实现了,心里很是高兴。高兴完后认真分析开始复位开关的失败才发现复位我在原理图时就画错了,把地和电源接反了,幸好经过我拨动开关的接上能实现功能。总之这次设计还是比较成功的。
第六章 课程设计体会与不足
将近1个月的综合课程设计很快结束了,其中酸甜苦辣都尝到了,在这过程中几乎每晚12点后睡觉,遇到问题及时通过网络查找资料,就连晚上睡觉都会时常梦到做设计。很久很久没有这样的感觉了,虽然很累,但感觉很充实,很有收获,尤其是最后看到自己设计的产品成功运行后那种感觉无法用语言来描叙,感觉所有的付出都得到了回报,是那么的理所当然又是那么的出人意料。
这样的课程设计真的很有意义,第一次自己真真切切的动手设计制作产品,感觉自己学会了很多,成长了很多,让我找回了往日奋斗的激情,也许这样的机会在大学不会再有了,我会深深的记住这次,记住这次饱含我汗水的综合课程设计。这次也发现了自身很多的不足,许多的基本电路都不是很熟悉,在画原理图的时候就不停的找以前的教材,以后还得多看看教材,牢记一些基本的电路。最后在这里忠心的感谢老师安排了这次综合课程设计,感谢各个指导老师的辛勤付出。
致谢
经过自己不断的搜索努力以及各位指导老师的耐心指导和热情帮助,本设计已经基本完成。在这段时间里,各位老师严谨的治学态度和热忱的工作作风令我十分钦佩,他们的指导使笔者受益非浅。同时实验室的开放也为笔者的设计提供了实习场地。在此对指导老师和实验室的江老师李同学表示深深的感谢。
通过这次毕业设计,深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了大学几年的学习成果。虽然在这次设计中对于知识的运用和衔接还不够熟练。但是笔者将在以后的工作和学习中继续努力、不断完善。这将近1个月的设计是对过去所学知识的系统提高和扩充的过程,为今后的发展打下了良好的基础。
由于自身水平有限,设计中一定存在很多不足之处,敬请各位老师批评指正。
附录
主程序部分和注解如下:
OK EQU 20H;抢答开始标志位
RING EQU 22H;响铃标志位
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP INT0SUB
ORG 000BH
AJMP T0INT
ORG 0013H
AJMP INT1SUB
ORG 001BH
AJMP T1INT
ORG 0040H
MAIN: MOV R1,#30;初设抢答时间为30s
MOV R2,#60;初设答题时间为60s
MOV TMOD,#11H;设置未定时器/模式1
MOV TH0,#0F0H
MOV TL0,#0FFH;越高发声频率越高,越尖
MOV TH1,#3CH
MOV TL1,#0B0H;50ms为一次溢出中断
SETB EA
SETB ET0
SETB ET1
SETB EX0
SETB EX1;允许四个中断,T0/T1/INT0/INT1
CLR OK
CLR RING
SETB TR1
SETB TR0;
显示子程序,及部分注解如下:
DISPLAY:MOV DPTR,#DAT1;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出,
MOV A,R3
MOVC A,@A+DPTR
MOV P2,#0feH
MOV P0,A
ACALL DELAY
MOV DPTR,#DAT2
MOV A,R5
MOVC A,@A+DPTR
MOV P2,#0fdH
MOV P0,A
ACALL DELAY
MOV A,R4
MOVC A,@A+DPTR
MOV P2,#0fbH
MOV P0,A
ACALL DELAY
RET
DAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H
;"灭","1","2","3","4","5","6","7","8","9","灭","F"
DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H
第一个为零,其他与上相同,因为十位如果为零显示熄灭
=====TO溢出中断(响铃程序)=====
T0INT: MOV TH0,#0ECH
MOV TL0,#0FFH
JNB RING,OUT;
CPL P3.6;RING标志位为1时候P3.6口不断取反使喇叭发出一定频率的声音
OUT: RETI
T1溢出中断(计时程序):
T1INT: MOV TH1,#3CH
MOV TL1,#0B0H
INC R0
RETI
END
抢答器处理程序:
TRUE1: ACALL BARK;按键发声
MOV A,R2
MOV R6,A;抢答时间R2送R6
MOV R3,#01H
CLR OK;因为答题的计时不再查询抢答,所以就锁了抢答
AJMP COUNT
TRUE2:ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#02H
CLR OK
AJMP COUNT
TRUE3:ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#03H
CLR OK
AJMP COUNT
TRUE4:ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#04H
CLR OK
AJMP COUNT
TRUE5: ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#05H
CLR OK
AJMP COUNT
TRUE6: ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#06H
CLR OK
AJMP COUNT
TRUE7: ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#07H
CLR OK
AJMP COUNT
TRUE8: ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#08H
CLR OK
AJMP COUNT
设计成本:
AT89C51 7元
按钮开关 1.5元
电阻(10K)+排阻(10K) 1.5元
电容(30PF+10uF*2个) 0.6元
晶振(12MHZ) 1元
蜂鸣器 1元
数码显示管(四位 共阴极) 4.5元
感光板 10元
制板耗材 5元
总计 32.1元
参考文献:
[1]张迎新.单片机初级教程. 北京: 航空航天大学出版社,2007.
[2]周润景张丽娜.基与PROTEUS的电路及单片机仿真. 北京: 航空航天大学出版社,2007.
[3]张万奎.模拟电子技术.湖南:湖南大学出版社,2005.