1、抢答器控制系统1课程设计的任务与要求1.1 课程设计的任务 (1)抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S1 S8表示(2)设置一个系统重置、系统停止和抢答控制开关S,该开关由主持人控制。 (3)抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统重置为止。 (4)抢答器具有定时提醒抢答功能,当主持人启动开始键后,定时器进行减计时,剩余5S时自动有声音和灯光闪烁提醒。 (5)参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统重置为止。 (6)如果定时时间已到,无人抢答
2、,本次抢答无效,系统禁止抢答,定时显示器上显示初始时间20s1.2 课程设计的要求(1)思路清晰,给出整体设计框图和总电路图;(2)单元电路设计,给出具体设计思路和电路;(3)写出设计报告;1.3 课程设计的研究基础(设计所用的基础理论)在各类竞赛中,特别是做抢答题时,在抢答过程中,为了知道哪一组或哪一名选手先答题,必须要有一个系统来完成这个任务。如果在抢答过程中,只靠人的视觉是很难判断出哪组先答题。利用单片机来设计抢答器,使以上问题得以解决,即使有两组的抢答时间相差几微秒,也可分辨出哪组优先答题。抢答器是一种应用非常广泛的设备,在各种竞赛、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选
3、手。早期的抢答器只由几个三极管、可控硅、发光管等组成, 能通过发光管的指示辨认出选手号码。现在大多数抢答器均使用单片机(如MCS-51型)和数字集成电路,并增加了许多新功能,如选手号码显示、抢按前或抢按后的计时、选手得分显示功能。像这类抢答器,制作过程简单,准确性与可靠性高,而且安装维护简单。对于抢答器的应用,如早期的数字电路,随着科技的逐步发展,进而到了单片机的控制来实现其功能,而且功能齐全,电路简单,成本低,性能高,真正朝着有利的方向发展。2 抢答器控制系统方案制定2.1 方案提出(以方框图模块化设计的形式给出至少2个方案,并简要说明)方案一(如图1)图1 PLC抢答器控制系统结构方案二(
4、如图2)图2 单片机抢答器控制系统结构12.2 方案比较单片机控制1:优点,经济实惠,成本相对较低;缺点,用单片机制作的主控板受制版工艺、布局结构、器件质量等因素的影响导致抗干扰能力差,故障率高,不易扩展,对环境依赖性强,开发周期长。一个采用单片机制作的主控板不经过很长时间的实际验证很难形成一个真正的产品1。PLC控制:优点:PLC是经过几十年实际应用中检验过的控制器,其抗干扰能力强,故障率低,易于设备的扩展,便于维护,开发周期短。缺点:成本相对单片机要高。2.3 方案论证抢答器的实现方式有种多样,通过纯电子器件搭建电路实现,如优先编码器,锁存器,555定时器译码器等,纯电子器件实现没有软件参
5、与,调试简单,但是它不易于扩展和修改,而且电路结构复杂,调试困难电子,电子器件管脚很多,实际搭建起来费时费力,焊接很容易出错。于是,我想到了用单片机实现。单片机体积小价格低,应用方便,稳定可靠。单片机将很多任务交给了软件编程去实现,大大简化了外围硬件电路,使外围电路的实现简单方便。由于单片机本身不具有软件编译测试的功能,我们需要借助其他软件编译,将编译好的程序“烧”入单片机内。 在实际电路设计中,需要先通过仿真软件测试电路以及编译的程序,检查外围电路设计是否合理,软件编译是否正确,以及软件和硬件电路能否正常配合工作,能否准确的实现所设计的功能。如果测试通过,电路仿真没有问题能完全实现功能的话就
6、可以实际的做板子的焊接工作了。在老师的指导下我选择了常用的单片机仿真软件proteus6.9以及keil 进行仿真。2.4 方案选择考虑到经济因素、器件的熟悉程度和应用泛围,我们选择了我们所熟悉的单片机来完成此次设计。3 抢答器控制系统方案设计3.1各单元模块功能介绍及电路设计(1)抢答电路参考电路如图3所示。该电路完成两个功能:一是分辨出选手按键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号;二是禁止其他选手按键操作无效。如有再次抢答需由主持人将S开关重新置,“重置”然后再进行下一次抢答,具体如图3所示。图3抢答电路(2)显示锁存电路通过p10,p32p39端口将最先抢答选手的编号
7、和所剩的时间显示在7SRG-MPX4-CA 显示屏上,具体如图4所示。图4显示锁存电路(3)报警电路这里的报警电路用于提示选手赶快抢答,当时间快用完时,发出警报。一般最简单的喇叭驱动方式就是利用达林顿晶体管,或者以两个常用的小晶体管连接成达林顿架势。此次审计中我们选用了PNP三极管来实现此功能,不过,我们还增加了个0.5K的上拉电阻。具体如图5所示。图5 报警电路(4)计时电路选手在设定的时间内抢答时,实现:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次作清除和开始状态开关。这里的记录时间的电路设计如图6所示
8、。图6计时电路3.2电路参数的计算及元器件的选择AT89C51 单片机、7SRG-MPX4-CA 显示屏、74HC573 八进制 3 态非反转透明锁存器、BUTTON 开关、CAP 电容、CRYSTAL 晶振、LED-BLUE 蓝光二极管、LED-RED 红光二极管、LED-YELLOW 黄光二极管、PNP 三极管、RES 电阻、RESPACK-8 阻排、SPEAKER 喇叭。3.3 特殊器件的介绍(1)74HC573八进制 3 态非反转透明锁存器图7 高性能硅门CMOS器件SL74HC573 跟 LS/AL573的管脚一样。器件的锁存器输入是和标准 CMOS 输出兼容的;加上拉电阻,他们能和
9、 LS/ALSTTL 输出兼容。 当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。 LE为锁存控制端;OE为使能端。图8 内部原理图74HC573内部原理图(2)respack 8阻排接在51单片机的P0口,因为P0口内部没有上拉电阻,不能输出高电平,所以要接上拉电阻。排阻就是好多电阻连载一起,他们有一个公共端 1端为公共端接VCC或地,分清是上拉电阻还是下拉电阻,其他接你要操作的端口3.4 系统整体电路图图9系统整体电路图4 抢答器控制系统仿真和调试 4.1 仿真软件介绍4.1.1 protues仿真简介2P
10、rotues2软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12
11、/16/18/24/30/DsPIC33、AVR、ARM、8086、MSP430、Cortex和DSP系列处理器等,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。4.1.2 Keil简介Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、
12、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。4.2 系统仿真实现启动后,蓝色D10灯亮,显示屏上显示20-0,系统正常运行。效果如图8所示图10 系统初始运行当主持人按下开始键的时候,显示屏上开始计时,效果如图9所示图11 开始计时当有选手按键抢答时,对应的灯亮,显示屏上记录下选手的编号和剩余时间,效果如图10所示图12 选手抢答时间剩余5s时,喇叭会发出警报并伴随有红灯闪烁,效果如图11所示图13 系统报警4.3 系统测试(要求测试环境、测
13、试仪器、测量数据)本次课程设计是在电脑上完成的,通过使用Proteus仿真软件,和Keil单片机开发系统对步进电机控制系统进行了仿真。结果基本符合设计要求。但由于条件原因,未能将其做成实物。以后会对其加以实物制作。5 总结5.1 设计小结通过这次课程设计。动手设计的电子智能抢答器,采用了单片机技术、软件仿真、程序编程、制作电路板等相关技术。把在学校这一段时间所学知识连成一串。理论联系实践,体现出大学生动手能力。通过查资料和搜集有关的文献,培养了自学能力和动手能力。并且由原先的被动的接受知识转换为主动的寻求知识,这可以说是学习方法上的一个很大的突破。在以往的传统的学习模式下,我们可能会记住很多的
14、书本知识,但是通过课程设计,我们学会了如何将学到的知识转化为自己的东西,学会了怎么更好的处理知识和实践相结合的问题。把握重点、攻克难关,学到用到、活学活用。5.2 收获体会通过本次基于单片机的抢答器控制系统的设计与仿真,察觉到自己在应用所学基础知识和专业知识解决问题的能力有了很大的提高。在设计过程中,遇到了大大小小的问题,有些是以前不知道的理论知识,但通过上网查询资料,询问同学后都得以解决。最重要的是在设计中,不但学习了新的知识,还巩固并加深了对已学知识的理解。在仿真过程中,也碰到了结果与预想不同的地方,通过对程序的调试,使仿真结果与预期的基本一致了。总的来说,通过这次的课程设计,让我在实际中
15、解决问题能力有了很大的提升。5.3 展望在设计过程中由于时间仓促有很多地方难免存在不足,硬件设计已经完成,在软件设计中有些功能还尚未开发出来。但在以后的工作中,我们会严格要求自己,追求完美。以后还会更深入的去研究各种复杂的控制系统,力求将每个系统做到简洁完美。6参考文献1谢维成,杨加国,等. 单片机原理与应用及C51程序设计(第2版)M.清华大学出版社,2009.7.2侯玉宝,陈忠平,李成群,等. 基于Proteus的51系列单片机设计与仿真M.电子工业出版社,2008.9.3谭浩强,等. C程序设计(第三版)M.清华大学出版社,2005.7附录7.1系统主要功能展示图图10 系统初始运行图1
16、1 开始计时图12 选手抢答图13 系统报警7.2器件清单表一、器件清单表2元件名称中文名个数AT89C51单片机17SRG-MPX4-CA显示屏174HC573八进制 3 态非反转透明锁存器1BUTTON开关11CAP电容3CRYSTAL晶振1LED-BLUE蓝光二极管1LED-RED红光二极管1LED-YELLOW黄光二极管8PNP三极管1RES电阻12SOUNDER喇叭1RESPACK-8阻排17.3 程序源代码3#include #define uint unsigned int#define uchar unsigned char/*-共阴极数码管编码表 0 - f显示-*/unsi
17、gned char code table=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e;/*-变量定义-*/sbit start= P36;sbit stop=P35;sbit reset = P37;sbit key1 = P10;sbit key2 = P11;sbit key3 = P12;sbit key4 = P13;sbit key5 = P14;sbit key6 = P15;sbit key7 = P16;sbit key8 = P17;sbit buzzer =
18、P34;bit start_flag = 0;bit stop_flag=0;bit key1_flag = 0;bit key2_flag = 0;bit key3_flag = 0;bit key4_flag = 0;bit key5_flag = 0;bit key6_flag = 0;bit key7_flag = 0;bit key8_flag = 0;bit reset_flag = 0;bit action = 0;uchar second = 20;uchar timer0_count = 0;uchar number = 0;uchar number_display = 0;
19、/*-延时函数-*/void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-);/*-数码管显示驱动函数-*/void display(uchar number,uchar second) uchar second_first,second_second; second_first = second / 10; second_second = second % 10; P2 = 0xfe; P0 = tablenumber; delay(2); P2 = 0xfd; P0 = 0x3f; delay(2); P2 = 0xfb; P
20、0 = tablesecond_first; delay(2); P2 = 0xf7; P0 = tablesecond_second; delay(2); /*-开始键扫描函数-*/void start_keyscan() if(start = 0) delay(8); if(start = 0)&(!start_flag) start_flag = 1; action = 1; TR0 = 1; else start_flag = 0; /*-八位抢答键扫描函数-*/uchar key_scan8() if(key1 = 0) delay(8); if(key1 = 0)&(!key1_f
21、lag) key1_flag = 1; number = 1; number_display = number; else key1_flag = 0; number = 0; if(key2 = 0) delay(8); if(key2 = 0)&(!key2_flag) key2_flag = 1; number = 2; number_display = number; else key2_flag = 0; number = 0; if(key3 = 0) delay(8); if(key3 = 0)&(!key3_flag) key3_flag = 1; number = 3; nu
22、mber_display = number; else key3_flag = 0; number = 0; if(key4 = 0) delay(8); if(key4 = 0)&(!key4_flag) key4_flag = 1; number = 4; number_display = number; else key4_flag = 0; number = 0; if(key5 = 0) delay(8); if(key5 = 0)&(!key5_flag) key5_flag = 1; number = 5; number_display = number; else key5_f
23、lag = 0; number = 0; if(key6 = 0) delay(8); if(key6 = 0)&(!key6_flag) key6_flag = 1; number = 6; number_display = number; else key6_flag = 0; number = 0; if(key7 = 0) delay(8); if(key7 = 0)&(!key7_flag) key7_flag = 1; number = 7; number_display = number; else key7_flag = 0; number = 0; if(key8 = 0)
24、delay(8); if(key8 = 0)&(!key8_flag) key8_flag = 1; number = 8; number_display = number; else key8_flag = 0; number = 0; if(number_display != 0) return 1; else return 0; /*-复位键扫描函数-*/void reset_keyscan() if(reset = 0) delay(8); if(reset = 0)&(!reset_flag) reset_flag = 1; number_display = 0; second=20
25、; else reset_flag = 0; void fengming() /蜂鸣函数,脉宽t = 1ms 周期T = 2ms 频率f = 0.5khz 实际发现延时1ms的时候效果最好 /延时1ms buzzer = 0; /给P3.7口送高电平 delay(100); /延时1ms buzzer = 1;delay(100);/*-主函数-*/void main() TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=0; while(1) start_keyscan(); reset_keyscan(); while(action=1) if(second0) fengming() ; while(!key_scan8()&!stop=0) display(number_display,second); if(second = 0) second = 20; break; TR0 = 0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1