说明书-单片机设计八路抢答计分显示器).doc

上传人:小飞机 文档编号:4228935 上传时间:2023-04-10 格式:DOC 页数:28 大小:767.50KB
返回 下载 相关 举报
说明书-单片机设计八路抢答计分显示器).doc_第1页
第1页 / 共28页
说明书-单片机设计八路抢答计分显示器).doc_第2页
第2页 / 共28页
说明书-单片机设计八路抢答计分显示器).doc_第3页
第3页 / 共28页
说明书-单片机设计八路抢答计分显示器).doc_第4页
第4页 / 共28页
说明书-单片机设计八路抢答计分显示器).doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《说明书-单片机设计八路抢答计分显示器).doc》由会员分享,可在线阅读,更多相关《说明书-单片机设计八路抢答计分显示器).doc(28页珍藏版)》请在三一办公上搜索。

1、目 录摘 要I引 言I1 题目32 抢答器系统的概述32.1 系统的主要功能32.2 抢答器的工作过程42.3 AT89C51的功能及简介53 抢答器的电路设计73.1 振荡电路的设计73.2 复位电路的设计83.3 显示电路的设计93.4 按键电路的设计93.5 发声电路的设计103.6 流水灯的设计103.7 总体电路图114 程序的设计124.1 程序系统结构图124.2 程序流程图125 抢答器的仿真实验185.1 仿真系统PROTEUS185.2 KELL简介185.3 仿真试验205.3.1 上电后的初始状态205.3.2 开始倒计时215.3.3 抢答成功并正常显示215 总论9

2、参 考 文 献10致 谢10附 录 主函数以及子函数 13摘要当今的社会竞争日益激烈,选拔人才,评选优胜,知识竞赛之类的活动愈加频繁,那么也就必然离不开抢答器。而现在的抢答器有着数字化,智能化的方向发展,这就必然提高了抢答器的成本。鉴于现在小规模的知识竞赛越来越多,操作简单,经济实用的小型抢答器必将大有市场。因此,我们制作了这款简易八路抢答器屏弃了成本高,体积大,而且操作复杂。我们采用了数字显示器直接指示,自动锁存显示结果,并具有复位的设计思想,本抢答器通过十分巧妙的设计仅用两块数字芯片便实现了数显抢答的功能,与其他抢答器电路相比较有分辨时间极短、结构简单、成本低、制作方便等优点,并且还有按键

3、报警功能。抢答器在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。如果在抢答中,靠视觉很难判断哪组先答题。利用数字芯片系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒,也可分辨出那组优先答题。数字抢答器由主体电路与扩展电路组成。优先编码电路、锁存器、译码电路将参赛队的输入信号在显示器上输出;用控制电路和主持人开关启动报警电路,以上两部分组成主体电路。经过布线、焊接、调试等工作后数字抢答器成形。 引言抢答器的设计就是在这种社会条件下诞生的,这次设计用AT89S51单片机为核心控制元件,设计一个实用的抢答器,本方案以单片机作为主控核心,与晶振、数码

4、管、蜂鸣器等构成八路抢答器,利用了单片机的延时电路、按键复位电路、时钟电路、定时/中断等电路,设计的八路抢答器具有实时显示抢答选手的号码和抢答时间的特点,还有复位电路,使其再开始新的一轮的答题和比赛,同时还利用C语言编程,使其实现一些基本的功能。本设计的系统实用性强、判断精确、操作简单、扩展功能强。它的功能实现是比赛开始,主持人读完题之后按下总开关,即计时开始,此时数码管开始进行20s的倒计时,直到有一个选手抢答时,对应的会在数码管上显示出该选手的编号和抢答所用的时间,如果在规定的20s时间内没有做出抢答,则此题作废,即开始重新一轮的抢答。在抢答和回答时间的最后5s,蜂鸣器和数码管都会给予相应

5、报警提示。1 题目八路抢答计分显示器设计本系统采用模块化设计智能抢答器,在抢答比赛中广泛应用,各组分别有一个抢答按键。主持人有开始和结束、复位键。开始时设定为初始的抢答时间5s, 数码管开始闪烁提示,主持人按键开始后,选手开始抢答为有效,数码显示屏显示抢答时间倒计时和选手号,在最后五秒扬声器发生提示。如果主持人没有按下开始键而选手就抢答视为无效,数码显示屏显示不做显示。主持人再可按键开,新一轮抢答将展开。通过研究并在设计验证后发现,采用单片机技术设计的抢答器与目前常用的抢答器相比,首先,电路连接简单,因为大多数功能单元都通过程序设计在单片机内部,第二,工作性能可靠,抗干扰能力优于目前抢答器。所

6、以本研究是一个实用的工程设计,而且课扩展的到许多人的抢答模式,具有创新性。本论文章节的结构和内容如下:第一章:绪论。简要介绍了抢答器的发展现状,说明了本课题研究的内容。第二章:抢答器系统概述。说明了抢答器的工作过程和主要功能,并定下了本课题要达到的设计目标。第三章:抢答器的电路的设计。详细描述了本课题各个组成电路单元的设计思路。第四章:程序的设计。设计单片机内部运行的程序实现抢答及其他功能。第五章:抢答器的仿真试验。阐述了抢答器通过设计,制作成仿真原图之后的仿真试验。第二章 抢答器系统的概述抢答器是生活和娱乐中重要的一环,而且老式的抢答器不能胜任现在的需求或者是接线复杂故障率高,不方便使用,所

7、以我们开始了基于单片机的八路抢答器的设计。本章主要讲述设计的主要功能分析,和抢答器的工作过程,以及我们所采用的单片机的功能简介。2.1 系统的主要功能本系统是借用单片机采用模块化设计的八路抢答器,包括8路抢答按纽、倒时显示、提示功能等(根据需要可另设或多设相关功能)、开始与结束控制按键、各种相关显示调控功能等(根据需要也可另设或多设相关功能)。参赛者系统,除享有抢答按纽的权利功能外,还有人性化的提示功能和时间提示功能,也可设定由主持控制在参赛者终端表现的趣味性功能等;主控系统的控制按键做开始和结束按键对结束的控制,对抢答限时及回答问题限时设为倒计时,并有显示提示。系统的主要功能模块方框图如图2

8、-1所示。图2-1 系统主要功能模块本系统采用模块化设计的八路抢答器,在抢答比赛中广泛应用,各组分别有一个抢答按键。一共有8个按键输入,分别对应8路选手的抢答按键。主持人开始和结束用复位电路。活动开始可以预设置抢答的时间,修改改上述时间,主要是修改程序中的时间。设置好时间后抢答开始,主持人按开始键后,倒计时六秒。选手开始抢答为有效,数码显示屏显示抢答时间倒计时和选手号,扬声器发生提示、和数码管的闪烁进行提示。单片机是整个抢答器的核心,内部电路设计用C语言编写。它完成了时间参数的设定,抢按号码的译码,保存;显示;输出,抢答者序号和倒计时间。本设计中,有一个一位共阳的数码管组。主持人依次按下复位键

9、(Start)后开始抢答。若有选手在规定时间内抢按成功,则可以答题,数码管显示抢答时间的同时也显示选手号码。如果没人抢答,则最后5s蜂鸣器蜂鸣,数码管闪烁。2.2 抢答器的工作过程抢答器的基本工作原理:在抢答竞赛或呼叫时,有多个信号同时或不同时送入主电路中,抢答器内部的寄存器工作,并识别、记录第一个号码,同时内部的定时器开始工作,记录有关时间并产生超时信号。在整个抢答器工作过程中,显示电路、声音电路等还要根据现场的实际情况向外电路输出相应信号。抢答器的工作流程分为:系统复位、正常流程、显示流程等几部分。抢答器的工作过程如下:1、如果想调节抢答时间,在比赛开始的时候编辑程序,写到芯片里面。2、主

10、持人按复位键,并进入抢答倒计时(预设6s抢答时间)。3、系统会自动进入准备状态,等待主持人按“抢答开始”进入下次抢答计时。4、 流水灯启动,以做开始提醒。总而言之,本课题利用AT89C51单片机及外围接口实现的抢答系统设计了抢答器,该抢答器提高了系统的可靠性、简化了电路结构、节约了成本,是一个实用的工程设计。2.3 AT89C51的功能及简介AT89C51单片机是ATMAL公司89系列单片机的一种8位Flash单片机。它最大特点是片内含有Flash存储器,用途十分广泛,特别是在生产便携式商品手提式仪器等方面,有着十分广泛的应用。AT89C51单片机内部主要有以下部件:8031CPU、振荡电路、

11、总线控制部件、中断控制部件、片内Flash存储器、片内RAM、并行I/O接口、定时器和串行I/O接口AT89C51是89系列单片机的标准型,它是与MSC-51系列单片机兼容的。在内部含有4KB可重复编程的Flash存储器,可进行1000次擦写操作。全静态工作为0-24MHZ,有3级程序锁存器,内部含有128-256字节的RAM,有32条可编程I/O口线,2-3个16位定时/计数器,6-8个中断源,通用的串行接口,低电压空闲及电源下降方式。AT89C51单片机内部由CPU、4KB的FPEROM ,128B的RAM,两个16位的定时/计数器T0和T1,4个8位的I/O端P0、P1、P2、P3等组成

12、。单片微机内部最核心的部分是CPU。CPU主要功能是产生各种控制信号,控制存储器、输入/输出端口的数据传输、数据的算术运算、逻辑运算以及位操作处理等,CPU按其功能可分为运算器和控制器两部分。控制器由程序计数器PC、指令储存器、指令译码器、实时控制与条件转移逻辑电路等组成。它的功能是对来自存储器中的指令进行译码,通过实时控制电路,在规定的时刻发出各种操作所需的内部和外部的控制信号,使各部分协调工作,完成指令所规定的操作。运算器由算术逻辑器部件ALU、累加器ACC、暂存器、程序状态字寄存器PSW,BCD码运算调整电路等组成。图2-2 AT89C51单片机的内部结构图为了提高数据处理和位操作功能,

13、片内增加了一个通用寄存器B和一些专用寄存器,还增加了位处理逻辑电路的功能。其内部结构如图2-2所示。第三章 抢答器的电路设计本设计分为硬件设计和软件设计,这两者相互结合,不可分离;从时间上看,硬件设计的绝大部分工作量在最初阶段,到后期往往还要做一些修改。只要技术准备充分,硬件设计的大返工是比较少的,软件设计的任务贯彻始终,到中后期基本上都是软件设计任务,随着集成电路技术的飞速发展,各种功能很强的芯片不断出现,使硬件电路的集成度越来越高,硬件设计的工作量在整个项目中的所占的比重逐渐下降。为使硬件电路设计尽可能合理,应注意以下几方面:一、尽可能采用功能强的芯片,以简化电路,功能强的芯片可以代替若干

14、普通芯片,随着生产工艺的提高,新型芯片的的价格不断下降,并不一定比若干普通芯片价格的总和高。二、留有设计余地。在设计电路时,要考虑到将来修改扩展的方便。因为很少有一锤定音的电路设计,如果现在不留余地,将来可能要为一点小小的修改或扩展而被迫进行全面返工。三、程序空间,选用片内程序空间足够大的单片机,本设计采用AT89C51单片机。四、RAM空间,AT89C51内部RAM不多,当要增强软件数据处理功能时,往往觉得不足。如果系统配置了外部RAM,则建议多留一些空间。如选用8155作I/O接口,就可以增强256字节RAM。如果有大批数据需要处理,则应配置足够的RAM,如6264,62256等。随着软件

15、设计水平的提高,往往只要改变或增加软件中的数据处理算法,就可以使系统功能提高很多,而系统的硬件不必做任何更换就使系统升级换代。只要在硬件电路设计初期考虑到这一点,就应该为系统将来升级留足够的RAM空间,哪怕多设计一个RAM的插座,暂不插芯片也好。五、I/O端口:在样机研制出来后进行现场试用时,往往会发现一些被忽视的问题,而这些问题能靠单纯的软件措施来解决的。有些新的信号需要采集,就必须增加输入检测端;有些物理量需要控制,就必须增加输出端。如果在硬件电路设计就预留出一些I/O端口,虽然当时空着没用,那么用的时候就派上用场了。3.1 振荡电路的设计8051内部有时钟电路,只需外部接石英晶体和微调电

16、容即可,通常选用的是6MHz、12MHZ、11.0592MHz。然而一般选用石英晶体振荡器。石英晶振的频率非常稳定,非常适合用在这个地方,上3-1电路晶振在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路中两个电容 C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。C1,C2的典型值为30PF。 图3-1 外部振荡电路我们选用的是12MHz的晶振,而它的机器周期是1微秒。3.2 复位电路的设计单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期也(就是4微妙)的高电平即可实现复位,复位后

17、单片机的各状态都恢复到初始化状态,其电路图如图3-2所示: 图3-2 复位电路电容隔离电源和地,充电充满的时候流过的电流是0,所以接的是低电平,处于正常的状态,当按键按下的时候,电容被短路,电阻被接入到电路当中,5V电直接接到电阻R8上面,所以电阻R8上的压降就是5V,所以第九脚的电压为电源电压5V,实现按键复位,电容起的作用就是开机上电复位!在方案中使用到了硬件复位和软件复位两种功能,由上面的硬件复位可使寄存器及存储器的值都恢复到初始值,而前面的功能提到了倒计时间需要有记忆功能,该功能实现的前提条件就是不能对单片机进行硬件复位,所以设定了软复位功能。软复位实际上就是当程序执行完毕之后,将程序

18、指针通过一条跳转指令让它跳转到程序执行的起始地址。3.3 显示电路的设计显示电路使用了一位七段数码管。虽然是共阴数码管是由高电平点亮,但是数码管需要三极管作为开关,将其位选打开或者是关闭,所以点亮的电平不仅取决于共阴还是共阳,还和使用的三极管有关系,我们使用的是9013型号的三极管,它是NPN的管子,所以是高电平予以点亮。 图3-3 共阳极七段数码管3.4 矩阵按键电路的设计键盘模块本次设计我采用的是2*4矩阵键盘,矩阵键盘是单片机外部设备中所使用的排布类似于矩阵的键盘组。在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接

19、连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成2*4=8个按键。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输入端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。按键直接与89C51的I/O口线相连接,通过读I/O口的电平状态,即可识别出按下的按键。 这些常开开关组成了抢答按键,硬件电路简单,在程序设计上也不复杂,只要在程序中消除在按键过程中产生的“毛刺”

20、 现象就可以了。这里采用最常用的方法即延时法,其的原理为:因为“毛刺”脉冲一般持续时间短,约为几ms,而按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间(这里取10ms)后再判断此电平是否保持原状态,如果是则为有效按键,否则无效。图3-4 抢答按键3.5 蜂鸣器电路的设计我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使喇叭发出不同的声音。图3-5 蜂鸣器电路 本文设计

21、如图3-5所示。图中单片机的14脚输出具有复合功能,这里能利用程序来控制单片机P3.4口(第14引脚)单片机通过内部定时器的操作实现交替变换的波形输出驱动扬声器发声。3.6 流水灯电路图从原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反, 如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效

22、应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。led流水灯电路电路原理图如下:3.7 总体电路图根据抢答器的基本功能,可以设计出如下的单片机外围电路:图3-6 总体设计图3-6中U1为单片机AT89C51。右边的八个开关分别为8路抢答按键,分别接到单片机的P2.0P2.5中。一位七段数码管的位选接P2口低四位,蜂鸣器输出为P3.3口。第四章 程序的设计抢答器以及其他的电子产品的抢答的功能的实现得益于元件功能的强大。抢答器的电路不是很复杂,其抢答功能显示功能以及报警功能主要是要靠软件来控制以及实现,本章主要阐述抢答器的系统软件。4

23、.1 程序系统结构图硬件电路确定后,软件的编程要与硬件相匹配,软硬件才能结合完成所要实现的功能。由功能分析得到的软件结构图如4-1所示。图4-1 程序系统图4.2 程序流程图先根据系统的程序图,设计出程序的流程图,然后再根据流程图设计出能实现基本功能的程序,下图就是我们根据上一章结构图设计出来的流程图,图如4-2所示。图4-2 软件流程图第五章 抢答器的仿真实验在保证硬件的原理和设计是正确的情况下才能开始焊接电路,因为电路一旦制作出来需要修改的工作量非常大,而且弄的万能板面目全非,所以必须在虚拟的环境下进行试验,然后再进行焊接,另外也检验一下设计的程序存不存在问题,还有就是发现设计的缺陷,在没

24、有做成成品的时候进行修改,使电路做的完美。仿真试验在电路的设计中是不可或缺的一环!用Proteus仿真软件画好了原理图,并且将编译好的程序生成HEX文件,装载到单片机中就能进行仿真试验了。5.1 仿真系统PROTEUSProteus满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI 调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。目前支持的单片机类型有:68000系列、8051系列、AVR 系列、PIC12系列、PIC16系列、

25、PIC18系列、Z80系列、HC11 系列以及各种外围芯片。支持大量的存储器和外围芯片。该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大,是其他任何一款软件不能相比的。ISIS是Preoteus系统的中心,具有控制原理图画图的超强的设计环境。ISIS有下面的优势:丰富的器件库:超过27000种元器件,可方便地创建新元件;智能的器件搜索:通过模糊搜索可以快速定位所需要的器件; 智能化的连线功能:自动连线功能使连接导线简单快捷,大大缩短绘图时间; 支持总线结构:使用总线器件和总线布线使电路设计简明清晰; 可输出高质量图纸:通过个性化设置,可以生成印刷质量的BMP图纸,可以方便地供

26、WORD、POWERPOINT等多种文档使用。5.2 KELL简介对于51单片机而言,使用最广泛的软件编写语言主要是用C语言。在实际工程中,除了一些小型的应用程序或对效率要求较高的关键部分,一般不会采用汇编语言作为系统开发的主语言,取而代之是高级语言,如C语言。Keil内建了一个仿真CPU用来模拟执行程序,在调试状态下,该仿真CPU可以在没有硬件和仿真机的情况下进行程序的调试。与真实的硬件执行最明显的就是时序,软件模拟是不可能和真实的硬件具有相同的时序的,具体的表现就是程序执行的速度和各人使用的计算机有关,计算机性能越好,运行速度越快。将写好的程序编译成HEX文件,通过专用甲壳虫软件烧录到单片

27、机当中。HEX文件是直接能在单片机中运行的软件,实现对单片机的控制,图5-1就是在电脑上编辑设计的程序KELL软件的界面。图5-1 编写程序的kell软件界面编辑好程序,然后检查无误后进行生成HEX,图5-2就是生成文件是KELL软件的设置。图5-2 用kell软件创建Hex文件图5-3就是用KELL软件生成的HEX文件。5.3 仿真试验将写好的程序编译成HEX文件装载到单片机中,然后用点击开始进入到程序上电复位的初始状态,在软件设置的时候我们设置显示的是0F20,点击左边的开始按键就可以实现抢答了。5.3.1 上电后的初始状态在仿真实验中,先打开仿真试验的电源,上电开始复位之后开始,这个时候

28、就可一开始抢答了,于此同时开始倒计时。图5-5 通电初始状态5.3.2 开始倒计时打开仿真试验的电源,单片机初始化之后运行至初始状态,我们点击开始按键就可以实现抢答,开始抢答的时候,显示的电路就会出现倒计时的显示,从二十开始倒计时,到了最后的五秒,就会出现显示电路闪烁的提示,在这同时蜂鸣器还会蜂鸣!下图是仿真试验时在没有人抢答的情况下,倒计时到12S的瞬间截下图的图。图5-6中显示的就是开始倒计时到12S钟的时间依然没有人抢答,继续开始倒计时,只要有人抢答或者时间用完,时间用完将回归到初始状态,有人抢答则显示抢答的选手的编号和剩余的时间。图5-6 倒计时的显示图5.3.3 抢答成功并正常显示抢

29、答器初始化之后,到了等待开始的界面;按开始键,开始倒计时,如果在此时按下抢答键,则可以记录选手的编号和选手剩余的时间。图5-7 抢答成功时的显示图用鼠标点击开关,代表实际的场合中选手的抢答,图5-7中表示【5号】选手在离结束还有15S的时候按下抢答键,抢答成功。选手的编号和剩余的时间都显示正常。参考文献 1、黄惟公单片机原理与应用技术:西安电子科大出版社20072、张毅刚MC-51单片机应用设计(二版):哈工大出版社 20053、李广第单片机基础北京:北京航天航空大学出版社4、杨文龙单片微机原理及应用西安电子科技出版社5周航慈单片机程序设计基础北京:北京航天航空大学出版社6胡汉才单片机原理及其

30、接口技术北京:清华大学出版社7林志琦. 单片机原理接口及应用(C语言版). 北京:中国水利水社8赵克林. C语言实例教程. 北京:人民邮电出版社总 结对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计中的问题。而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力。它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。首先画的是原理图,原理图是设计思路的展现,可以实现自己的设计思想,这个很重要。在

31、原理图中麻烦的是建立新的库,但是也方便自己以后使用,直接添加就可以了。其实仿真图要简单一些,并且很方便的运行程序以得到理想的模拟结果,在仿真图中,要注意各种电阻的大小分别,很可能是一两个电阻的问题导致运行不起,这个让人很苦恼。在写程序时,要注意C文件与H文件分开,这样方便以后的查看程序及修改,并且一目了然。要注意想法,保持清晰的思路。但是,通过这次设计我也发现自己的很多不足之处。在设计过程中我发现自己考虑问题很不全面,自己的专业知识掌握的很不牢固,所掌握的计算机应用软件还不够多,我希望自己的这些不足之处能在今后的工作和学习中得到改善。而且,通过这次设计,我懂得了学习的重要性,学会了坚持和努力,

32、这将为以后的学习做出了最好的榜样!致 谢 在这里首先要感谢张恕远老师,是他将我带入这个五彩的单片机世界,他严谨的讲学作风使得在他的课程当中学到了很多关于单片机的知识,也学到了关于课程的一些思想方法。在这里还要感谢同学对我的帮助,在不懂一些专业知识时其为自己提供了很大的帮助并对程序进行的仿真。 附件程序:主函数以及子函数本节主要介绍单片机的内部运行的程序。程序分为八个模块:主函数、延时函数、数码管显示驱动函数、按键扫描函数、抢答键扫描函数、复位键扫描函数、蜂鸣函数、中断服务函数。主函数是函数的主体,其他的各个函数是实现不同的功能用的:例如蜂鸣函数、是生成声音信号是蜂鸣器发声用的。程序总共有300

33、多行,函数体比较长,所以就不在本章节中意义一一列出,只选取其中有代表性的来介绍。在本节主要介绍主函数、延时函数、数码管驱动函数、开始键扫描函数。#include key.h#include led.h#include display.hvoid main() startdisplay(); while(1) key_scan(); #include led.huchar z;uchar code table1=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;void led() z=0xfe;while(1)P1=z;delay(100);temp1=_crol

34、_(temp1,1);delay(100);#include key.huchar temp,key;sbit beep=P33;void key_scan() P2=0x7F; temp=P2; temp=temp&0X3C; if(temp!=0x3C) delay(10); P2=0x7F; temp=temp&0x3C; if(temp!=0x3C) temp=P2; switch(temp) case 0x7B:key=1;P1=0X01;break; case 0x77:key=3; P1=0X04;break; case 0x6F:key=5; P1=0X10;break; ca

35、se 0x5F:key=7; P1=0X40;break; while(temp!=0x3C) /等待按键释放 temp=P2; temp=temp&0x3c; display(key); beep=0; P3=0xBF; temp=P2; temp=temp&0x3c; if(temp!=0x3c) delay(10); P2=0xbf; temp=temp&0x3c; if(temp!=0x3c) temp=P2; switch(temp) case 0xbb:key=2;P1=0X02;break; case 0xb7:key=4; P1=0X08;break; case 0xaf:ke

36、y=6;P1=0X20;break; case 0x9f:key=8;P1=0X80;break; while(temp!=0x3c)temp=P2; temp=temp&0x3c;display(key);beep=0; #include display.huchar code table=0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f;uchar code table1=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;void delay(uchar z)uchar x,y;for(x=z;x0;x-)for(y=110;y0

37、;y-);void startdisplay(int num,c)for(num=0;num7;num+)P0=tablenum;delay(650);for(c=0;c7;c+)P1=tablec;delay(50);void display(uchar number) P0=tablenumber;delay(10);#ifndef _LED_H#define _lED_H#include #include display.h#include extern void led();#endif#ifndef _DISPLAY_H#define _DISPLAY_H#include #define uchar unsigned char extern void display(uchar number);extern void delay(uchar z);#endif#ifndef _KEY_H#define _KEY_H#include #include display.hextern void key_scan();#endif

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号