《基于51单片机8路抢答器设计.doc》由会员分享,可在线阅读,更多相关《基于51单片机8路抢答器设计.doc(18页珍藏版)》请在课桌文档上搜索。
1、-创新实践课课程名称: 创新实践课 实践题目: 基于51单片机8路抢答器设计 目录一、前言3二、电路原理图设计3三、印制幅员设计7四、软件设计9五、测试数据及分析16六、总结18一、前言目前,抢答器已经作为一种必不可少的工具广泛应用于各种智力和知识竞赛场合,但一般的抢答器可靠性低,使用寿命短,介于这些不方便因素,此次设计提出了用51单片机为核心控制元件,设计一个简易的八路抢答器。 本方案以51单片机作为主控核心,与晶振、数码管、蜂鸣器等通过外围接口实现的八路抢答器,利用了单片机的延时电路、按键复位电路、时钟电路、定时器/计数器等,设计的八路抢答器不仅具有实时显示抢答选手的和抢答时间的功能,同时
2、还利用汇编语言编程,使其实现复位、定时和报警的功能。本次设计的系统实用性强、判断准确、操作简单、扩展功能强。 功能:以STC89C52RC单片机作为主控核心,与晶振、数码管、蜂鸣器等通过外围接口实现的八路抢答器,利用了单片机的延时电路、按键复位电路、时钟电路等,设计的八路抢答器不仅具有实时显示抢答选手的和抢答时间的功能,同时还利用汇编语言编程,使其实现复位和报警的功能。此系统是基于51单片机 ,led发光二极管,一位共阳数码管,蜂鸣器,按键,等分立元件设计而成。元件设计的意义:关于按键:共设计了10个独立按键,其中8个分别为八位选手抢答输入用,另外两个分别为开场和停顿按键!只有裁判按下了开场键
3、才进入正常抢答,否那么属于犯规抢答,抢答完毕,裁判按下停顿,数码管显示0。关于led发光二极管:共设计了9个发光二极管,其中一个为电源指示,其他8个为选手抢答状态指示,正确抢答时led发光二极管缓慢闪烁,犯规抢答时,快速闪烁。关于数码管:选手按下自己的按键时显示相应的选手编号!裁判按下开场键时数码管显示倒计时,倒计时0-9-8-7-6-5-4-3-2-1-0共10秒。关于蜂鸣器:选手正确抢答时蜂鸣器响一声,犯规抢答时响两声,倒计时完毕时响一声。系统采用5v直流供电,通电前注意电源正负极,以及电源接口是否匹配。此系统通电有个短暂的自检时间,led发光二级管都亮下再灭,蜂鸣器也响一声再停,方便检测
4、局部元件好坏。二、电路原理图设计一介绍Altium Designer软件1、Altium Designer软件Altium Designer软件是原Protel软件开发商Altium公司推出的一体化的电子产品开发系统,主要运行在Windows XP操作系统。这套软件通过把原理图设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进展设计,熟练使用这一软件必将使电路设计的质量和效率大大提高。 Altium Designer 除了全面继承包括Protel 99SE、Protel DXP在的先前一系列版本的功能
5、和优点外,还增加了许多改良和很多高端功能。该平台拓宽了板级设计的传统界面,全面集成了 FPGA 设计功能和 SOPC 设计实现功能,从而允许工程设计人员能将系统设计中的 FPGA 与 PCB 设计及嵌入式设计集成在一起。 由于 Altium Designer 在继承先前Protel软件功能的根底上,综合了FPGA 设计和嵌入式系统软件设计功能,Altium Designer对计算机的系统需求比先前的版本要高一些。2.Altium Designer软件的界面图1-1 Altium Designer软件的界面3、功能 最根本的功能就是画原理图,设计PCB,另外还可以编辑Geber文件,以及FPGA
6、的设计,可以将你的设计输出为PDF文档或者CAD文档以方便保护自己的设计或者配合构造件的设计。二设计原理图步骤1、原理图设计流程图1-2 原理图设计流程图2、步骤(1创立 PCB工程工程文件启动ProtelDXP后,选择菜单【 File】 /【 New】 /【 Project】 /【 PCBProject】命令;完成后如图6-2.3所示图1-3 PCB创立图 (2保存 PCB工程工程文件选择【File】 /【Save Project】菜单命令,弹出保存对话框【SavePCB_Project1.PrjPCBAS】对话框如图6-2.4所示; 选择保存路径后在【 文件名】栏输入新文件名保存到自己自己
7、建立的文件夹中。 3创立原理图文件在新建的PCB工程工程下新建原理图文件。在新建的PCB工程工程下,选择菜单【 File】 /【 New】 /【 Schematic】命 4保存原理图文件选择 【 File】/ 【 Save】菜单命令, 弹出保存对话【 SaveSheet1.SchDocAS】图1-4 创立原理图3、 基于51单片机的八路抢答原理图图1-5 八路抢答的原理图4、 元件清单表1-1 元件清单元件名称规格型号数量电阻1k1个10k1个4.7k1个3k1个4707个排阻4701个电容100uf1个10uf1个22pf2个104pf1个红绿指示灯Led9个按键10个晶振12M1个电源座子
8、1个单片机STC89C52RC1个Dip40座子DY_5V1个蜂鸣器FMQ1个三极管80501个1位共阳数码管SMG_11个三、印制幅员设计(一)电路板设计流程图1-6 印制电路板流程图二PCB图1.方法在 PCB 编辑器窗口左侧的工作面板上,单击左下角的【 Files 】标签 ,翻开【 Files 】 菜单。单击【 Files 】面板中的【 New From Template 】标题栏下的 PCB Template选项 ,选择所需要的模板。2.创立PCB图的文件图1-7 PCB图的创立3.导入网络表格后的PCB图激活 PCB 文件 , 执行菜单命令 【 Design 】 / 【 Import
9、 Changes From 单片机最小系统 .PrjPCB 】 。图1-8 图1-94. 元件布局1选中红色器件盒,在键盘上按下 Delete 键,将其删除。2选中某个元件,按住鼠标左键拖动到板适宜的位置后放开鼠标左键在拖动过程中按下空格键可以旋转位置,将各个元件调整到适合的位置。(3)执行菜单【Auto Route】/【All.】5.绘制好导线的PCB图图1-10 绘制好导线的PCB图6、PCB的 Bottom layer和top layer图1-11 PCB图的 Bottom layer图1-12 PCB图的 top layer四、软件设计一单片机软件流程图图1-13 软件流程图(2) k
10、eil软件介绍Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、构造性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、器、库管理和一个功能强大的仿真调试器等在的完整开发方案,通过一个集成开发环境Vision将这些局部组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。Keil Vision4:200
11、9年2月发布Keil Vision4,Keil Vision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的外表对窗口位置的完全控制的任何地方。新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。新版本支持更多最新的ARM芯片,还添加了一些其他新功能。2011年3月ARM公司发布最新集成开发环境RealView MDK开发工具中集成了最新版本的Keil Vision4,其编译器、调试工具实现与ARM器件的最完美匹配。三Keil C编译步骤1、运行Keilc51进入编辑界面,如图4.1所示。图1-14 Keilc51编辑界面2
12、、首先进入菜单project/new project建立一个新工程,如图4.2所示。图1-15 建立新工程3、 选择要保存的路径,输入工程文件的名字,如图4-3所示。图1-16 保存路径4、 根据使用的单片机选择相应的型号,如图4.4所示。图1-17 选择单片机型号5、 单击Target 1前面的+号,然后在Source Group 1上单击右键,弹出如图4.5所示界面参加源文件。如还没有源文件请先进入菜单File/New生成一个*.C格式的文件。图1-18 参加源文件界面6、 进展输出文件设置,进入菜单project/options for target选择OUTPUT选项卡,勾选Crest
13、 HEX File项,如图4.6所示。图1-19 输出文件设置7、 程序编写完成后进入菜单Project/Build target编译工程,如图4.7所示。生成的*.HEX文件即可作为下载程序使用。图1-20 生成文件四程序设计及说明/8个选手,正确抢答:显示选手号,对应的led慢闪,蜂鸣器响一声/ 犯规抢答:显示选手号,对应的led快闪,蜂鸣器响两声#include#define uchar unsigned char#define uint unsigned intsbit key1=P10;sbit key2=P11;sbit key3=P12;sbit key4=P13;/选手1-4s
14、bit key5=P14;sbit key6=P15;sbit key7=P16;sbit key8=P17;/选手5-8sbit d1=P00;sbit d2=P01;sbit d3=P02;sbit d4=P03;/选手指示灯1-4sbit d5=P04;sbit d6=P05;sbit d7=P06;sbit d8=P07;/5-8sbit alarm=P31;/蜂鸣器控制端uchar code display10=0x81,0xcf,0x92,0x86,0xcc,0xa4,0xa0,0x8f,0x80,0x84;/共阳 0-9bit flag=0;/是否允许抢答标志,初始 【不允许】
15、bit flag1=1;/是否允许扫描按键标记,初始【允许】uchar counter,time=10;/计数器,10s抢答倒计时/=延时函数=void delay1m(uint k)uint j;while(k-)for(j=0;j=20)/1S时间到counter=0;time-;if(time=0)/10S到TR0=0;P2=displaytime;speak1();/显示0flag=0;/抢答的时间没人抢答,必须等待重新开场P2=displaytime; else/犯规抢答if (!key1)flag1=0;TR0=0;speak2();P2=display1;while(flag1=
16、0)d1=1;delay1m(100);d1=0;delay1m(100);/数码管显示1,蜂鸣器叫 else if(!key2)flag1=0;TR0=0;speak2();P2=display2;while(flag1=0)d2=1;delay1m(100);d2=0;delay1m(100);/数码管显示2,蜂鸣器叫 else if(!key3)flag1=0;TR0=0;speak2();P2=display3;while(flag1=0)d3=1;delay1m(100);d3=0;delay1m(100);/数码管显示3,蜂鸣器叫else if(!key4)flag1=0;TR0=
17、0;speak2();P2=display4;while(flag1=0)d4=1;delay1m(100);d4=0;delay1m(100);/数码管显示4,蜂鸣器叫else if(!key5)flag1=0;TR0=0;speak2();P2=display5;while(flag1=0)d5=1;delay1m(100);d5=0;delay1m(100);/数码管显示5,蜂鸣器叫 else if(!key6)flag1=0;TR0=0;speak2();P2=display6;while(flag1=0)d6=1;delay1m(100);d6=0;delay1m(100);/数码管
18、显示6,蜂鸣器叫 else if(!key7)flag1=0;TR0=0;speak2();P2=display7;while(flag1=0)d7=1;delay1m(100);d7=0;delay1m(100);/数码管显示7,蜂鸣器叫else if(!key8)flag1=0;TR0=0;speak2();P2=display8;while(flag1=0)d8=1;delay1m(100);d8=0;delay1m(100);/数码管显示8,蜂鸣器叫/=外部中断0中断函数,开场=void extern_int0() interrupt 0if(P2=display0)/数码管显示0时开
19、场键才响应flag=flag1=1;/允许抢答,允许响应按键time=10;P0=0x00;/灯都灭掉alarm=0;/关蜂鸣器TR0=1;/倒计时,开定时器/=外部中断1中断函数,停顿=void extern_int1() interrupt 2flag1=1;/允许抢答,flag=0;/ 不允许响应按键TR0=0;/关定时器 P0=0x00;/灯都灭掉alarm=0;/关蜂鸣器P2=display0;/显示0(5) 导程序1、利用以下两个软件将程序导入51单片机图1-212、在指定文件夹找到程序并添加图1-22五、测试数据及分析1、 程序初始化图1-23 未按下开场键2、按下开场键,属于正
20、常抢答,显示选手号,led慢闪,蜂鸣器响一声,锁定其他选手图1-24 开场抢答2、裁判按下开场键时数码管显示倒计时,倒计时0-9-8-7-6-5-4-3-2-1-0共10秒。选手8按下自己的按键8时,抢答器上显示相应的选手编号8,结果如图图1-25正常抢答3、未按下开场键,属于犯规抢答,显示选手号,led快速闪烁,蜂鸣器响两声,锁定其他选手图1-26 犯规抢答4、按下停顿,回到初始状态图1-27 复位六、总结 此次设计主要以硬件系统为根底,硬件系统关系到电子产品的好坏,如系统的抗干扰性,平安性和可行性等,所以要合理地选择,合理地安排,尽量减少干扰,以提高系统性能。单片机是很容易受干扰的控制器,
21、当采用外部晶振时,应尽量让其靠近单片机,以减少对其的干扰,防止程序的混乱现象。硬件系统的好坏很大局部在于经历,比方焊接是否干净利落,器件是否完好,操作是否规等,所以我们要有好的动手能力。 软件设计确实设计的核心,具有多样化,灵活性高,易移植等优点。首先我们要深深领会各指令的含义才能更加熟练应用。中断的合理利用可以有效减少对CPU的占用,更好的处理好其他功能。延时的应用会顺利地实现显示,鸣笛等功能,同时还可以去掉系统固有的不稳定性。定时的应用那么比拟实际,能实现我们所需的功能。软件的设计大局部采用模块化设计的方法以方便调试,并使其可读性大大增强,方便更改和移植。 通过此次的课程设计,让我们更进一步的稳固了单片机的各种知识。但在设计的过程中,遇到了很多的问题,有一些知识已经不太清楚了,但是通过一些资料又重新的翻阅并且认真的复习了相关教科书中的容。此次的课程设计树立了对自己工作能力的信心,相信会对今后的学习工作生活都有非常重要的影响,而且大大的提高了动手能力,使我们充分的体会到了创造过程中的探索的困难和成功的喜悦。虽然这次做出的作品还存在很多需要改良的地方,但是在整个设计过程中所学习到的东西是这次实践所得到的最大收获跟财富,使我们终身受益。. z.