《基于单片机的智能抢答器的设计与制作毕业论文》_第1页
《基于单片机的智能抢答器的设计与制作毕业论文》_第2页
《基于单片机的智能抢答器的设计与制作毕业论文》_第3页
《基于单片机的智能抢答器的设计与制作毕业论文》_第4页
《基于单片机的智能抢答器的设计与制作毕业论文》_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、金 华 职 业 技 术 学 院J I N H U A P O L Y T E C H N I C毕业教学环节成果 (2014届)题 目 基于单片机的智能_ _抢答器的设计与制作 学 院 信息工程学院 专 业 应用电子技术 班 级 应电 112 学 号 姓 名 王容 指导教师 郑惠群 2014年5月14号金华职业技术学院毕业教学成果目 录摘要1关键词1英文摘要.1英文关键词:1引言21 系统方案设计31.1 设计要求31.2 方案选择与确定3 1.3 系统工作流程设计42 硬件电路的设计52.1 硬件主要组成部分52.2 单片机最小系统52.2.1 STC89C51芯片52.2.2 振荡电路设计

2、72.2.3 复位电路设计72.3 按键电路设计82.4 计分显示电路设计102.5 报警电路设计123 软件设计143.1 抢答器主程序设计143.2 报警程序设计163.3 分数显示程序设计174.仿真与调试20结论与谢辞21附录1:程序清单23附录2:硬件电路图34附录3:实物图35基于单片机的智能抢答器的设计与制作信息工程学院应用电子技术专业 王容摘要:随着各种娱乐节目和竞赛的增加,抢答器的作用起到越来越大的重要性。抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。本文设计以STC89C51单片机为核心的四路抢答器,设定限时抢答和回答的功能,硬件由5个模块组成,包括直流电源模块、

3、报警模块、LED显示模块、数码管显示模块和单片机控制模块;软件上实现了智能抢答并数码管显示分数等功能。经过调试和运行使该系统达到预期目标,具有反应快、功能齐全、实用性强的特点。关键词:抢答器 单片机 数码管 锁存器Based on MCU to intelligent to answer first device design and production (Major of Applied Electronic Technology,Information and Engineering College,Wang Rong)Abstract:With the increase of all

4、kinds of entertainment and competition, the role of the buzzer play a more and more importance. Responder as a tool, has been widely used in all kinds of intelligence and knowledge competition. This paper designed a buzzer STC89C51 microcontroller as the core of the four road, the function of the se

5、t time vies to answer first and answer, the hardware is composed of five modules, including dc power supply module, alarm module, LED display module, digital tube display module and single-chip microcomputer control module; On the software implements the intelligent vies to answer first and digital

6、tube display scores, and other functions. After debugging and running the system achieve anticipated goal, has the characteristics of fast response and complete function, strong practicability.Keyword: The buzzer MCU Digital tube Latch引言抢答器是一种应用非常广泛的设备,在各种竞赛、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手。早期的抢答器只由几个三极管

7、、可控硅、发光管等组成,能通过发光管的指示辩认出选手号码。现在大多数抢答器均使用单片机(如MCS-51型)和数字集成电路,并增加了许多新功能,如选手号码显示、抢按前或抢按后的计时、选手得分显示等功能。八位抢答器广泛用于抢答器主要用于选手做抢答题时,选手进行抢答,抢到题的选手来回答问题。抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气。选手们都站在同一个起跑线上,体现了公平公正的原则本设计是以抢答为出发点。考虑到需设定限时回答的功能,利用89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时

8、,同时使数码管能够正确地显示时间。用开关做键盘输出,扬声器发生提示。同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效并报警提示,选手抢答成功后通过主持人来实现计分功能。1 系统方案设计1.1 设计要求设计一个供4名选手参加的四路智力竞赛抢答器。每人设计一个抢答按扭供选手使用。主持人控制4个按钮,分别实行开始答题和重新开始的功能及判断抢答者回答正确和回答错误。该抢答器具有定时抢答的功能,在设定的时间内抢答有效,否则无效;若选手犯规抢答能够报警,电路信息锁定存储功能。在主持人按下回答正确和回答错误按钮时,对应的数码管将显示选手的分数。电路还具有自锁功能,使其他人再按抢答

9、键则不起作用。1.2 方案选择与确定方案1:如图1-1所示,采用数字电子技术,它的功能齐全,设计的电路也很稳定。但是它电路结构复杂,调试困难,涉及到的外围元件多,造价也很高。仅仅是集成电路它就用了四个,这跟我们当初的设计理念是相冲突的。我们要的是功能齐全,但是造价比较低的设计。四路抢答开关八D锁存器优先编码器七段译码器七段数码显示管秒脉冲发生器主持人控制开关十进制减计数器七段译码管七段数码显示器集成单稳态触发器报警电路图1-1 数字电子技术为主电路框图方案2:如图1-2所示,采用单片机进行系统设计,以单片机STC89C51为核心,其片内带有的4KFLASHROM,128B的RAM,以及15根I

10、/O口线能满足设计要求。利用单片机可以用很少元件实现相同功能,而且单片机性能可操作性强。通过比较以上两种方案,我们采用方案二实现多人智能抢答的功能。单片机STC89C51具有灵活性高,可靠性好,结构简单,强大的控制处理功能和可扩展功能,成本低廉的优点,控制系统已基本取代了以前复杂的电子线路或数字电路构成的控制系统,用软件来实现产品的智能化。图1-2 单片机为核心电路框图 系统工作流程设计图2-1 系统工作流程2 硬件电路的设计2.1 硬件主要组成部分 硬件电路主要由STC89C51单片机及外围电路组成,外围电路包括振荡电路、复位电路、按键电路、显示电路和蜂鸣器报警电路。2.2 单片机最小系统

11、STC89C51芯片STC89C51单片机主要有以下部件构成:八位微处理器CPU、振荡电路、总线控制部件、中断控制部件、片内Flash存储器、片内RAM、并行I/O接口、定时器和串行I/O接口。STC89C51单片机内部由CPU、4KB的FPEROM ,128B的RAM,两个16位的定时/计数器T0和T1,4个8位的I/O端P0、P1、P2、P3等组成。单片微机内部最核心的部分是CPU,CPU按其功能可分为运算器和控制器两部分。控制器由程序计数器PC、指令储存器、指令译码器、实时控制与条件转移逻辑电路等组成。它的功能是对来自存储器中的指令进行译码,通过实时控制电路,在规定的时刻发出各种操作所需

12、的内部和外部的控制信号,使各部分协调工作,完成指令所规定的操作。运算器由算术逻辑器部件ALU、累加器ACC、暂存器、程序状态字寄存器PSW,BCD码运算调整电路等组成。为了提高数据处理和位操作功能,片内增加了一个通用寄存器B和一些专用寄存器,还增加了位处理逻辑电路的功能。STC89C51的主要性能包括:STC89C51与MCS51控制器系列产品兼容,片内有4K可在线重复编程闪速电擦除存储器(Flash Memory),存储器可循环写入/擦除1000次;存储器数据保存时间可达10年;工作电压范围宽:Vcc可由2.7V到6V;全静态工作可由0Hz到16MHz;程序存储器具有3级锁存保护;128*8

13、位内部RAM;32条可编程I/O线;两个16位定时器/计数器;中断结构具有5个中断源和2个中断优先级;可编程全双工串行通信;空闲状态维持低功耗和掉电状态保存存储内容。STC89C51引脚图如图2-1所示。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8个TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。图2-1 STC89C51引脚图P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接

14、收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊

15、功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为STC89C51的一些特殊功能口,同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALEP:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端

16、以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次PSEN有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。EA/VPP:当保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,EA/VPP将内部锁定为RESET;当EA/VPP端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL

17、2:来自反向振荡器的输出。2 振荡电路设计单片机必须在时钟的驱动下才能工作。AT89C51单片机的时钟产生方法有两种:内部时钟方式和外部时钟方式。无论何种形式,都需要外部附加电路,产生时钟脉冲。外部时钟方式就是直接将外部的振荡脉冲通过XTALl或XTAL2接入单片机,外部时钟方式多用于多机系统,以便各个单片机能够同时工作。对外部震荡信号无特殊要求,但需保证脉冲宽度不小于20ns,且频率应低于单片机所支持的最高频率。内部时钟方式就是利用单片机芯片内部的振荡器,通过在引脚XTALl和XTAL2两端跨接晶体振荡器,构成稳定的自激振荡器的方法,再由获得的自激振荡器发出稳定的脉冲,直接送入芯片内部的时钟

18、电路的方式。跨接的晶体振荡器如果已经起振,则会向XTAL2引脚1上输出一定幅值的正弦波。自激振荡器的频率取决于晶体振荡器的频率,常见的晶体振荡器频率有6MHz和12MHz。AT89C51单片机的时钟频率最高可为24Mz。本系统中采用的是内部时钟方式。时钟电路如图2-2所示。图2-2 振荡电路2. 复位电路设计单片机系统在启动运行时,首先完成的复位操作,即上电复位。其目的是使CPU和系统中其他部件都处于一个确定的初始状态,并从这个状态开始工作。复位很重要,单片机有多种复位方式。这里仅介绍上电复位和按键复位这两种常用的复位方式。上电复位常用的方法是使用电容器。利用电容器的充电特性达到满足接通电源后

19、,单片机实现自动复位的要求。单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图2-3所示。图2-3 复位电路复位电路的原理是单片机RST引脚接收到2uS以上的电平信号,只要保证电容的充放电时间大于2uS,即可实现复位,所以电路中的电容值是可以改变的。值得注意的是,在设计当中使用到了硬件复位和软件复位两种功能,软复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序执行的起始地址。2.3 按键电路设计用于单片机系统的键盘按其结构形式分为两类非编码键盘和非编码键盘。编码键盘即键盘上闭合键的识别有

20、专用的硬件来实现,由硬件逻辑电路完成必要的键识别工作与可靠性措施。每按一次键,键盘自动提供被按键的读数,同时产生一选通脉冲通知微处理器,一般还具有反弹跳和同时按键保护功能。这种键盘易于使用,但硬件比较复杂,对于主机任务繁重之情况,采用8279可编程键盘管理接口芯片构成编码式键盘系统是很实用的方案。非编码键盘即键盘上闭合键的识别由软件来识别。只简单地提供键盘的行列与矩阵,其他操作如键的识别,决定按键的读数等仅靠软件完成,故硬件较为简单,但占用CPU较多时间。本次设计四路抢答器的按键不多,即使用的是独立键盘,独立键盘主要特点是每个按键独占一个I/O口,每个按键工作不会影响其他的I/O口线的状态,多

21、用于按键不多的场合。如图2-4所示。图2-4 按键电路组成键盘的按键有触点式和非触点式两种,单片机中应用的一般是由机械触点构成的。按键如图2-5所示,图2-5 按键图当开关S1断开时,单片机接入口输入为高电平,S1闭合时,单片机接入口输入为低电平。由于按键是机械触点,当机械触点断开、闭合时,会有抖动,P1输入端的波形如图2-6所示。图2-6 抖动波形图这种抖动对于人来说是感觉不到的,但对单片机来说,则是完全可以感应到的,因为单片机处理的速度是在微秒级,而机械抖动的时间至少是毫秒级,对单片机而言,这已是一段“漫长”的时间了。如果键处理程序采用中断方式的话,在响应按键时就可能会出现问题,也就是说按

22、键有时灵,有时不灵,其实就是这个原因,你只按了一次按键,可是单片机却已执行了多次中断的过程,若执行的次数正好是奇数次,那么结果正如你所料,若执行的次数是偶数次,那就不对了。而如果键处理程序采用查询方式的话也会存在响应按键迟钝的现象,甚至可能会漏掉信号。为了使CPU能正确地读出按键接入口的状态,对每一次按键只作一次响应,就必须考虑如何去除抖动,也就是消除在按键过程中产生的“毛刺”现象。常用的去抖动的方法有两种:硬件方法和软件方法。单片机设计中常用软件法,因此,对于硬件方法我们在此不做介绍。软件去除抖动其实很简单,这里采用最常用的方法,即延时重复扫描法,延时法的原理为:因为“毛刺”脉冲一般持续时间

23、短,约为几ms,而我们按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静(按键按下或释放)后再延时一段时间(这里我们取10ms)后再判断此电平是否保持原状态,如果是则为有效按键,否则无效。不过一般情况下,我们通常不对按键释放的后沿进行处理,实践证明,也能满足一定的要求。当然,实际应用中,对按键的要求也是千差万别,要根据不同的需要来编制处理程序。2.4 计分显示电路设计在单片机的应用系统中,显示器是最常见的输出设备,而数码管则是最常用到的工具。数码管发光原理分两种情况:共阴极型a、b、c、d、e、f、g 各引脚输入高电平有效。只要哪个引脚输入为高电平,对应的二极管就会发亮;共阳极型结构

24、数码管的a、b、c、d、e、f、g 各引脚输入低电平有效。只要哪个引脚输入低电平,对应的二极管就会发亮。通过点亮不同的发光段可组成不同的字形。输入到数码管 dp 、g、f、e、d、c、b、a 的二进制码称为字段码(或称字形码),数码管显示的结果为字形。表2-1是显示字形与共阳极和共阴极两种接法的字段码对应关系。表2-1 显示字形字段码对应关系(字体)显示字型共阳极段选码共阴极段选码0C0H3FH1F9H06H2A4H5BH3B0H4FH499H66H592H6DH682H7DH显示字型共阳极段选码共阴极段选码7F8H07H880H7FH990H6FHA88H77HB83H7CHCC6H39HD

25、A1H5EHE86H79HF8EH71H“灭”FFH00H表2-1中,各发光段 a、b、c、d、e、f、g 及 dp 与数据线的对应关系是 D0D7,即 a 对应 D0、b 对应D1、依次类推,而 dp 对应 D7。只要把共阳极数码管按照引脚 a、b、c、d、e、f、g、dp 的顺序分别对应接单片机 P0 口的 P0.0P0.7,由于 P0 口在输出时具有锁存功能,只要用指令向 P0 口送出字段码,数码管就可显示出所需字形。例如 MOV P0,#3FH,若采用共阴的数码管,则数码管显示“0”; 若采用共阳型数码管,MOV P0,#88H 则显示“A ”显示功能与硬件关系极大,当硬件固定后,如何

26、在不引起操作者误解的前提下提供尽可能丰富的信息,全靠软件来解决。七段数码管通常在显示上我们采用的方法一般包括两种:一种是静态显示,一种是动态显示。静态显示就是显示某一字符时,相应的发光二极管恒定的导通或截止,这种方法,每一显示位都需要一个8位的输出口控制,一般仅用于显示位数较少的场合,其特点是显示稳定不闪烁,程序编写简单,但占用端口资源多;动态显示就是一位一位的轮流点亮各位显示器,对每一位显示器而言,每隔一段时间点亮一次,利用人的视觉留感达到显示的目的,显示器的亮度跟导通的电流有关,也和点亮的时间与间隔的比例有关,其的特点是显示稳定性没静态好,程序编写复杂,但是相对静态显示而言占用端口资源少,

27、硬件成本较低。在本设计中根据实际情况采用的是共阳极静态显示方法。4位七段数码管显示电路如图2-7所示。图2-7智能抢答器显示模块图3-7中数码管采用的是4位七段共阳极数码管,其中A-G段分别通过八路D 型透明锁存器74HC573接到单片机的P1口,由锁存器的LE和OE口数据来决定输入输出,位选码P1-P7分别接到另一个锁存器上,由锁存器的LE和OE口来决定当前该显示的是位码还是段码。74HC573包含八路D 型透明锁存器,每个锁存器具有独立的D 型输入,以及适用于面向总线的应用的三态输出。所有锁存器共用一个锁存使能(LE)端和一个输出使能(OE)端。当LE为高时,数据从Dn输入到锁存器,在此条

28、件下,锁存器进入透明模式,也就是说,锁存器的输出状态将会随着对应的D输入每次的变化而改变。当LE为低时,锁存器将存储D输入上的信息一段就绪时间,直到LE的下降沿来临。当OE为低时,8个锁存器的内容可被正常输出;当OE为高时,输出进入高阻态。OE端的操作不会影响锁存器的状态。2.5 报警电路设计报警信号通常有三种类型:一是闪光报警,因为闪动的指示灯更能提醒人们注意;二是鸣音报警,发出特定的音响,作用于人的听觉器官,易于引起和加强警觉;三是语音报警,不仅能起到报警作用,还能直接给出警报种类的信息中。前两种报警装置因硬件结构简单,软件编程方便,常常在单片机应用系统中使用;而语音报警虽然警报信息较直接

29、,但硬件成本高,结构较复杂,软件量也增加,综合考虑采用鸣音报警。发声电路用于报警,当遇到发声信号时,发出警报。一般喇叭是一种电感性,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭(压电陶瓷型扬声器)就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使喇叭发出不同的声音。抢答器发声电路设计如图2-8所示。单片机的23脚的IO端口功能,单片机通过内部定时器的操作实现交替变换的波形输出驱动扬声器发声。图2-8 发声电路在图 2-8中,接三极管基极输入端,当输出

30、高电平“1”时, 三极管导通,蜂鸣器的通电而发音,当 输出低电平“0”时,三极管截止,蜂鸣器停止发音。在本系统中,当抢答时间和答题时间倒计10秒后就调用报警子程序发声报警。3 软件设计3.1 抢答器主程序设计图3-1 主程序流程图void Compere_key_function(void)if(have_key = 0)return;have_key = 0;switch (key_value)case start_all_key:answer_statu = 0;score0 = 0;score1 = 0;score2 = 0;score3 = 0;Led_Off_All();break;

31、case start_answer_key:answer_time0 = 0;answer_time1 = 0;answer_time2 = 0;answer_time3 = 0;answer_statu = 1; /* = 1Led_Off_All();Answer_time_count = 10*500*time_2ms;break;case answer_right_key:if(answer_statu = 2)answer_statu = 0;if(scoreanswer_group <= 97)scoreanswer_group = scoreanswer_group + 2

32、;break;case answer_error_key:if(answer_statu = 2)answer_statu = 0;if(scoreanswer_group > 0) scoreanswer_group = scoreanswer_group - 1; break;default :break; 3.2 报警程序设计图3-2 主程序子程序流程图void En_beep(void)unsigned char i;for (i=0;i<100;i+)Delay(50);BEEP=!BEEP;BEEP=1;void Cheak_Answer_time_over(void)

33、if(Answer_time_over = 1 | answer_statu = 1) En_beep();Delay(250);Delay(250);En_beep();Delay(250);Delay(250);En_beep(); 3.3 分数显示程序设计图3-3分数显示子程序流程图void Display_shumaguan(void)static unsigned char Witch_isplay;unsigned char Temp_score,Display_score;if(Display_time = 0)return;Display_time = 0;cs_1 = 1;P

34、0 = 0xff;cs_1 = 0;Delay(1);cs_1 = 1;switch (Witch_isplay)case 0:P0 = 0x010xff;break;case 1:P0 = 0x020xff;break;case 2:P0 = 0x040xff;break;case 3:P0 = 0x080xff;break;case 4:P0 = 0x100xff;break;case 5:P0 = 0x200xff;break;case 6:P0 = 0x400xff;break;case 7:P0 = 0x800xff;break;default :break;cs_1 = 0;cs_

35、0 = 1;Temp_score = scoreWitch_isplay/2;if(unsigned char)(Witch_isplay%2) = 0)Display_score = Temp_score/10;elseDisplay_score = Temp_score%10;P0 = tableDisplay_score;Delay(1);cs_0 = 0;if(+Witch_isplay = 8)Witch_isplay = 0;4.仿真与调试在进行方案论证和软硬件设计之后,做出的成品要进行系统调试和测试,并对调试中产生的问题加以解决和改进。调试分为软件调试和硬件调试两个模块。软件调试

36、主要是利用集成开发环境Keil uVision4开发环境进行调试,初步地检查是否有定义错误,语法错误等常见的错误。编译是否通过,是否有.hex 文件输出。以及用集成开发环境Keil uVision4开发环境所带的仿真部分进行仿真(包括定时器),以确定显示程序,主程序的正确性。系统的硬件调试主要是排查PCB上的连接问题。硬件调试中主要注重工艺性和设计性两类错误和缺陷。调试方法为:首先检查电路板上元器件的焊接情况,有无虚焊、漏焊或者连焊。然后用万用表检查电源,芯片I/O口与地有无短路,接着不加芯片接通电源,检查各焊点的电压是否正常,最后接上芯片,接通电源,观测工作电流是否过大。完成以上步骤,确保无

37、误之后,可结合软件硬件进行整体调试,按下按键看是否出现预定的现象。通过调试,本次抢答器可实现预期功能。如图4-1为4号选手连续回答正确4次后的分数显示效果图。图4 选手抢答正确效果图结论与谢辞本次设计的四路智能抢答器采用了通用的电子元器件,用STC89C51单片机及外围接口实现抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行倒计时,同时使数码管能够正确地显示分数。设计时,首先通过软件编程及原理图仿真,然后实物制作,安装下载,完全实现了要求功能。通过这次整个项目的制作完成,我也对大学里三年来学到的各种知识做了一次整理汇总。通过这次课程设计,我

38、知道了理论和实际的距离,也知道了理论和实际相结合的重要性,也从中得知了很多书本上无法得知的知识。在整个设计制作过程中,我要感谢我的指导老师郑惠群教授,从开始的设计构思到后来的实物制作,她都给了我很大程度的点拨指导。同时我还要感谢我的一些同学,他们陪伴着我一起完成了任务,在最需要帮助的时候伸出了援助之手,在此,对于他们无私的帮助表示深深的感谢。除此之外,我还要感谢我的一些从事电子行业工作的朋友,通过和他们的探讨交流,让我的理论知识得到了强化,动手实践能力得到了提升。再次对所有在本次设计制作过程中帮助过我的朋友表示最诚挚的谢意。参考文献1 M.人民邮电出版社,20102 李广弟.单片机基础M.北京

39、:北航出版社,20103 胡学海.单片机原理及应用系统设计M.北京:京电子工业出版社,20054 陈大钦编.电子技术基础实验(第二版)M.湖北:机械工业出版社,20015 彭为单片机典型系统设计实例精讲M北京:电子工业出版社,20066 梁超.一款基于单片机技术的电子抢答器J.机电工程技术,20057 余发山单片机原理及应用技术M中国矿业大学出版社,20038 余锡存单片机原理及接口M.陕西:西安电子科技大学出版社,2000附录1:程序清单#include<reg51.h>#include "main.h"sbit cs_0 = P20;sbit cs_1 =

40、P21;sbit BEEP = P22;unsigned char key_new_statu,key_old_statu,key_scan_time_count,have_key;unsigned char key_new_statu_group,key_old_statu_group,answer_time4;unsigned char answer_statu,answer_group;unsigned char key_value;unsigned char score4;unsigned char Display_time;unsigned int Answer_time_count

41、;unsigned char Answer_time_over;unsigned char code table= 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77;void Init_IO (void);void InitTIMER(void);void Compere_key_function(void);void Compere_Key_Scan(void);void answer_key_sacn_and_function(void);void Var_int(void);void Delay(unsigned num);vo

42、id Display_shumaguan(void);void Display_Led(unsigned char group_led);void Led_Off_All(void);void En_beep(void);void Cheak_Answer_time_over(void);void main(void)Init_IO();InitTIMER();Var_int();while(1)Compere_key_function();Display_shumaguan();Cheak_Answer_time_over();void Init_IO (void)P0 = 0xff;P1

43、= 0xff;P2 = 0xff;void InitTIMER(void)TMOD|=0x01; TH0=(65536-2000)/256; TL0=(65536-2000)%256; ET0=1;TR0=1; EA=1;void Var_int(void)key_old_statu_group = P0 & 0x0f;void timer0(void) interrupt 1 using 1 TH0=(65536-2000)/256; TL0=(65536-2000)%256;Display_time+;if(answer_statu = 1)if(Answer_time_count

44、)Answer_time_count - ;if(Answer_time_count = 0)Answer_time_over = 1;Compere_Key_Scan(); answer_key_sacn_and_function();void answer_key_sacn_and_function(void)key_new_statu_group = P0 & 0x0f;if(key_new_statu_group & key_goup1_bit) != (key_old_statu_group & key_goup1_bit)answer_time0+;if(a

45、nswer_time0 = 10)answer_time0 = 0;if(key_new_statu_group & key_goup1_bit) = 0)if(answer_statu = 1)answer_group = 0;answer_statu = 2;Display_Led(answer_group);elseEn_beep();elseanswer_time0 = 0;if(key_new_statu_group & key_goup2_bit) != (key_old_statu_group & key_goup2_bit)answer_time1+;i

46、f(answer_time1 = 10)answer_time1 = 0;if(key_new_statu_group & key_goup2_bit) = 0)if(answer_statu = 1)answer_group = 1;answer_statu = 2;Display_Led(answer_group);elseEn_beep();elseanswer_time1 = 0;if(key_new_statu_group & key_goup3_bit) != (key_old_statu_group & key_goup3_bit)answer_time2

47、+;if(answer_time2 = 10)answer_time2 = 0;if(key_new_statu_group & key_goup3_bit) = 0)if(answer_statu = 1)answer_group = 2;answer_statu = 2;Display_Led(answer_group);elseEn_beep();elseanswer_time2 = 0;if(key_new_statu_group & key_goup4_bit) != (key_old_statu_group & key_goup4_bit)answer_ti

48、me3+;if(answer_time3 = 10)answer_time3 = 0;if(key_new_statu_group & key_goup4_bit) = 0)if(answer_statu = 1)answer_group = 3;answer_statu = 2;Display_Led(answer_group);elseEn_beep();elseanswer_time3 = 0;void Compere_key_function(void)if(have_key = 0)return;have_key = 0;switch (key_value)case star

49、t_all_key:answer_statu = 0;score0 = 0;score1 = 0;score2 = 0;score3 = 0;Led_Off_All();break;case start_answer_key:answer_time0 = 0;answer_time1 = 0;answer_time2 = 0;answer_time3 = 0;answer_statu = 1;Led_Off_All();Answer_time_count = 10*500*time_2ms;break;case answer_right_key:if(answer_statu = 2)answ

50、er_statu = 0;if(scoreanswer_group <= 97)scoreanswer_group = scoreanswer_group + 2;break;case answer_error_key:if(answer_statu = 2)answer_statu = 0;if(scoreanswer_group > 0) scoreanswer_group = scoreanswer_group - 1;break;default :break;void Compere_Key_Scan(void)key_new_statu = P0 & 0xf0;i

51、f(key_new_statu != key_old_statu)key_scan_time_count+;if(key_scan_time_count = 10)key_scan_time_count = 0;if(key_new_statu & key_srart_all_bit) != (key_old_statu & key_srart_all_bit) && (key_new_statu & key_srart_all_bit) = 0)key_value = start_all_key;have_key = 1;else if(key_new_statu & key_start_bit) != (key_old_statu & key_start_bit) && (key_new

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论