dsfsfsf
四 川 理 工 学 院
课 程 设 计 书
系别 计算机学院
专业 计算机科学与技术
班级 2006.1
题目 智能抢答器的设计与功能实现
教师 陈光建 蒋华龙
学生 陈新林 李亚 严晓凤
dsfsfsf
目 录
第一节 课程设计目标 ......................................................................................... 2
1.1概述 ......................................................................................................... 2
1.2功能介绍: ............................................................................................. 3
1.3设计方案 ................................................................................................. 4
1.3.1 原理图的确定 ............................................................................. 4
1.3.2 抢答器的工作原理 ..................................................................... 4
1.4 抢答器的总体设计 ................................................................................ 5
第二节 硬件电路详细设计 ................................................................................. 6
2.1 硬件的选择与电路设计 ........................................................................ 6
2.1.1 芯片的选择 ................................................................................. 6
2.1.2 复位电路的设计 ......................................................................... 6
2.1.3 晶振电路的设计 ......................................................................... 7
2.2 数码显示管的选择 ................................................................................ 8
第三节 软件详细设计 ......................................................................................... 8
3.1 主程序的设计 ........................................................................................ 8
3.2 显示子程序的设计 ................................................................................ 9
3.3 定时器T0、T1中断服务程序的设计 ................................................. 9
3.4 抢答处理程序的设计 .......................................................................... 10
第四节 试验结果及结论 ................................................... 错误!未定义书签。
第五节 PCB板的制作及产品的焊接调试 ...................... 错误!未定义书签。
5.1 PCB板的设计 ...................................................... 错误!未定义书签。
5.2 制板 ...................................................................... 错误!未定义书签。
5.3 焊接与调试 .......................................................... 错误!未定义书签。
第六节 心得体会及成员分工 ........................................... 错误!未定义书签。
第七节 附录(源程序) ................................................................................... 11
第八节 参考文献 ............................................................... 错误!未定义书签。
dsfsfsf
一、 课程设计目标
1.1概述
单片机原理及应用课程设计是学生综合运用所学知识,全面
掌握单片微型计算机及其接口的工作原理、编程和使用方法的重
要实践环节。通过独立或协作提出并论证设计方案,进行软、硬
件调试,最后获得正确的运行结果,可以加深和巩固对理论教学
和实验教学内容的掌握,进一步建立计算机应用系统整体概念,
初步掌握单片机软、硬件开发方法,为以后进行实际单片机软、
硬件应用开发奠定良好的基础。
课程设计的主要内容:根据单片机原理及应用课程的要求,主要
进行两个方面的设计,即单片机最小系统和存储器扩展设计、接
口技术应用设计。其中,单片机最小系统主要要求学生熟悉单片
机的内部结构和引脚功能、引脚的使用、复位电路、时钟电路、4
个并行接口和一个串行接口的实际应用,从而可构成最小应用系
统,并编程进行简单使用。
存储器扩展设计要求学生掌握常用半导体芯片与单片机的接
口,如EPROM存储器用作外部程序存储器时与单片机的连接关系,
SRAM存储器用作外部数据存储器时与单片机的连接关系,E2PROM
存储器用作外部程序/数据存储器时与单片机的连接关系。能合理
分配和使用单片机的内部和外部存储器,编程实现正常的读写功
能。
接口技术应用设计主要要求学生能综合运用单片机、存储器、
常用接口芯片构成单片机应用系统,有针对性地进行软、硬件设
dsfsfsf
计与开发。
1.2功能介绍:
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调整。
dsfsfsf
1.3设计方案
1.3.1 原理图的确定
在设计开始,我们查了不少关于抢答器的资料,其大体分为2种,一种是纯硬件实现,另一种是单片机实现。本次课程设计采用单片机实现。
单片机实现抢答的原理图:
1.3.2 抢答器的工作原理
抢答器的工作原理是利用单片机的定时器T0、T1中断完成,其余状态循环调用显示子程序,用4个共阴极LED数码管来显示,用P0口作为数码管的八个段选,用P2口中的P2.0、P2.1、P2.2、作为4个数码管其中3个位选,P1口接8个按键,提供选手抢答,
dsfsfsf
P3.0-P3.5四个接四个按键,提供开始、结束、答题时间调整、抢答时间调整,加1、减1调整之用。
1.4 抢答器的总体设计
倒计时方案方面利用MCS-51的内部的定时/计时器进行中断计时,配合软件延时实现倒计时。该方案节省硬件成本,并且能够在定时器/计数器的使用、中断及程序设计方案方面得到锻炼与提高,显示方面采用穿行传输实现动态显示,该方案的硬件连接简单,但动态扫描的显示方式需占用CPU较多的时间,适用于单片机没有太多实时测控的任务场合。
抢答功能:
通过八路按键配合程序来实现抢答功能。当主持人按下抢答键开始抢答后,此时任一路按下按钮均闭锁其它各路,由程序对键盘译码并显示最先按下抢答键的路数及其当前时间。
抢答限时:
主持人按下抢答键后,设置5秒为抢答时间(此时间可在1-99秒之间修改)。若5秒内无人抢答,倒计时为0时发出报警,说明该抢答题目作废。此时闭锁所有抢答按键,只有当主持人再次按下抢答键开始下一次抢答方可抢答。
答题限时:
当选手按下按钮时,启动倒计时(此倒计时时间可在1~99秒之间修改),,倒计时为0时发出报警,说明答题时间到。
dsfsfsf
二、 硬件电路详细设计
2.1 硬件的选择与电路设计
2.1.1 芯片的选择
抢答器电路的核心是89C51单片机,其内部带有4KB的FLASH ROM,无需外扩程序存储器;抢答器没有大量的运算和暂存数据现有的128B篇内RAM已经能满足容量需求,故不需外扩片外RAM,系统配有8位8段数码显示管,管采用共阴数码管,作为时钟的显示输出。
2.1.2 复位电路的设计
复位电路的设计如图2-1所示:
图2-1 复位电路原理图
该复位电路采用上电自动复位和手动复位两种复位方式,图中
dsfsfsf
网络标号所指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所示:
dsfsfsf
图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所示。
dsfsfsf
图3-1 系统主程序流程图
3.2 显示子程序的设计
由于采用软件动态扫描实现数据显示,显示用十进制BCD码的数据对应段码存放在ROM表中。显示时,先取出70H~75H某一地址中的数据,然后查得对应的显示段码从P0口输出。P2口将对应的数码管选中,就能显示该地址单元的数据值。
3.3 定时器T0、T1中断服务程序的设计
定时器T0用于响铃程序,定时器T1用于计时程序。当答题剩余5秒种时P3.6口不断取反使喇叭发出一定频率的声音,提示选手。中断服务程序流程图如图3-2所示。
dsfsfsf
图3-2 中断服务程序流程图
3.4 抢答处理程序的设计
当有选手第一个按下抢答器按扭时数码管显示选手号码,开始倒计时,并锁定抢答。当在此选手之后再有选手按下按扭时无效,数码管不变。
dsfsfsf
四、 附录(源程序)
主程序部分和注解如下:
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
dsfsfsf
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
dsfsfsf
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
dsfsfsf
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
dsfsfsf
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