毕业论文-电子智能抢答器_第1页
毕业论文-电子智能抢答器_第2页
毕业论文-电子智能抢答器_第3页
毕业论文-电子智能抢答器_第4页
毕业论文-电子智能抢答器_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

.z摘要随着电子技术的飞速开展,基于单片机的控制系统已广泛应用于工业、农业、电力、电子、智能楼宇等行业,微型计算机作为嵌入式控制系统的主体与核心,代替了传统的控制系统的常规电子线路。同时楼宇智能化的开展与成熟,也为基于单片机的照明控制系统的普及与应用奠定了坚实的根底。电子技术和微型计算机的迅速开展,促进微型计算机测量和控制技术的迅速开展和广泛应用,单片机〔单片微型计算机〕的应用已经渗透到国民经济的各个部门和领域,它起到了越来越重要的作用。单片微型计算机就是将中央处理单元、存储器、定时/计数器和多种接口都集成到一块集成电路芯片上的微型计算机。因此一块芯片就构成了一台计算机。它已成为工业控制领域、智能仪器仪表、尖端武器、日常生活中最广泛使用的计算机。电子智能抢答计分器在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。如果在抢答中,靠视觉是很难判断出哪组先答题。利用单片机系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒,也可分辨出哪组优先答题。抢答组数可以在八组以内任意使用,本系统设计为模块形式采用九针插头进展连接,系统工作原理本系统采用AT89S51单片机作为核心。控制系统的五个模块分别为:单片机最小系统〔六位并行数码显示、4*4矩阵式键盘〕、显示模块、显示驱动模块、抢答开关模块、音乐音频输出模块。关键词:单片机;矩阵式键盘;显示;驱动;抢答目录摘要i目录ii第一章系统设计要点11.1抢答器的硬件设计要求11.2计分器系统的软件流程21.3计分器的硬件设计31.4人机交互程序设计31.5抢答器系统软件的流程图41.6抢答数码显示软件程序设计51.7音乐音频输出流程图6第二章各模块方案选择和论证及最终方案72.1抢答器显示模块72.2控制器模块82.3电源方案的选择92.4抢答器键盘的选择92.5计分器显示模块122.6计分器键盘的选择132.7模块的最终方案13第三章电子智能抢答器系统的硬件电路设计143.1计分器的电路设计14计分器系统的硬件电路14计分显示模块163.2抢答器的电路设计17抢答电路模块17抢答按键模块的设计18第四章单片机干扰防护194.1采用隔离技术194.2正确的接地措施19第五章结论21参考文献22致谢23附录24-.z第一章系统设计要点系统设计主要包括硬件和软件两大局部,依据控制系统的工作原理和技术性能,将硬件和软件分开设计。硬件设计局部包括电路原理图、合理选择元器件、绘制线路图,然后对硬件进展调试、测试,以到达设计要求。软件设计局部,首先在总体设计中完成系统总框图和各模块的功能设计,拟定详细的工作方案;然后进展具体设计,包括各模块的流程图,选择适宜的编程语言和工具,进展代码设计等;最后是对软件进展调试、测试,到达所需功能要求。硬件电路的设计最重要的选择用于控制的单片机,并确定与之配套的外围芯片,使所设计的系统既经济又高性能。硬件电路设计还包括输入输出接口设计,画出详细电路图,标出芯片的型号、器件参数值,根据电路图在仿真机上进展调试。本系统是采用51系列单片机,因此使用KeilC语言进展开发。软件设计采用模块化系统设计方法,先编写各个功能模块子程序,然后进展组合与调整,经过调试后,到达设计功能要求。1.1抢答器的硬件设计要求抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S1~S8表示。设置一个系统去除和抢答控制按扭,该按扭由主持人控制。抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统去除为止。图1-1计分器系统的软件流程1.2计分器系统的软件流程图1-1计分器系统的软件流程检测P3.7状态初始化检测P3.7状态初始化开场扫描键盘S1~S8是那一个组要加分,并组号显示在主板上(六个数码管)为0单组加减分为1全部统一加减分加分按键S14减分按键S15键盘录入分值,并显示在主板上(六个数码管)加分按键S12减分按键S13键盘录入分值,并显示在主板上(六个数码管)确定S16P1.7输入一个单次脉冲,并保持高电平(锁存数据由P3.0P3.1串口输出显示分数)1.3计分器的硬件设计加减计分有三位显示,用串行通信口,显示分数,用4*4阵列式键盘进展同时加减和单组加分。1.4人机交互程序设计系统的人机交互程序设计,主要是解决按键的扫描与信息的显示,让操作者能够灵活地控制系统工作。键盘用来输入指令,发光数码管用来显示单片机的状态,这是一个比较简单的人机交互形式。本系统的键盘采用的是4×4矩阵式键盘,矩阵式键盘由行线和列线组成,按键位于行、列线的穿插点上。一个4×4的行、列构造可以构成一个含有16个按键的键盘,显然,在按键数量较多时,矩阵式键盘较之独立式按键键盘要节省很多I/O口。矩阵式键盘中,行、列线分别连接到按键开关的两端,在进展键盘扫描时,首先把矩阵键盘列线的第一根线置高,然后分别再检测矩阵键盘行线是否有高电平的信号,如果有信号,则就证明这根行线与第一根列线相交处的按键被按下了,单片机就读入这个键值。如果所有的四根行线都没有信号,则就把第一根列线置低,把第二根列线置高,再一次检测行线有没有信号,然后依次类推。由于键盘扫描的速度很快,而人按键总会持续一定的时间,因此只要单片机处在等待输入的状态,这个键盘扫描程序根本上不会错过任何一个按键信号。由于一般人按键会有抖动,抖动信号造成键盘扫描时会出现一些错误的信号,要不就是扫描不进数据,要不就是重复输入很屡次数据,因此需要有一个消除抖动的程序。让单片机不响应一些相关的抖动信号,而只响应一次确实存在的按键信号。消抖动程序是这样实现的,当检测到一个脉冲信号时,并不立即认为是一次按键,而是延时一段时间以后再进展检测,如果三次检测都有信号,则就认为有一次按键动作发生了。延时的选择非常重要,太快,起不到消除抖动的效果,太慢了又让键盘太不灵活,错过较多的按键信号。键盘扫描程序的流程图如图1-2所示:图1-2键盘扫描程序流程图1.5抢答器系统软件的流程图抢答组数可以在八组以内任意使用,其流程如图1-3:开场开场初始化显示组号开音乐第一组第二组第三组第八组组否是是否否是是图1-3抢答系统软件流程图1.6抢答数码显示软件程序设计采用静态显示,显示器由9个共阳极数码管组成。输入只有两个信号,它们是串行数据线DIN和移位信号CLK。9个串/并移位存放器芯片74LS164首尾相连,了九位共阳极七段数码管,共阳极数码管的8个发光二极管的阳极〔二极管正端〕连接在一起,通常,公共阳极接高电平〔一般接电源〕,其他管脚接段驱动电路输出端。当*段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。数码显示程序流程如图1-4:图1-4数码显示程序流程图1.7音乐音频输出流程图音乐音频输出由P3.7输出,如图1-5:图1-5音乐音频输出流程图第二章各模块方案选择和论证及最终方案2.1抢答器显示模块在步进电机控制过程中,系统需要对运行的时间和转向、相数做必要的显示。我们考虑有以下两种显示方案。方案一:使用液晶屏显示时间。液晶显示屏〔LCD〕具有轻薄短小、低耗电量、无辐射危险,平面直角显示以及影像稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强的特点。但由于只需要显示时间和转向、相数这样的数字,信息量比较少,且由于液晶是以点阵的模式显示各种符号,需要利用控制芯片创立字符库,编程工作量大,控制器的资源占用较多,其本钱也偏高。在使用时,不能有静电干扰,否则易烧坏液晶显示芯片,不易维护。方案二:在使用传统的数码管显示。数码管具有:低能耗、低损耗、低压、寿命长、耐老化、防晒、防潮、防火、防高〔低〕温,对外界环境要求低,易于维护,同时其精度高,称量快,准确可靠,操作简单。数码显示是采用BCD编码显示数字,程序编译容易,资源占用较少。静态显示,电路图中所示。显示器由9个共阳极数码管组成。输入只有两个信号,它们是串行数据线DIN和移位信号CLK。9个串/并移位存放器芯片74LS164首尾相连,每片的并行输出作为LED数码管的段码74LS164的引脚图如图2-1所示:图2-1图2-174LS164引脚图74LS164为8位串入并出移位存放器,1、2为串行输入端,Q0-Q7为并行输出端,CLK为移位时钟脉冲上升沿移入一位;MR为清零端,低电平时并行输出为零。根据以上的论述,采用方案二。2.2控制器模块控制器主要用于各模块控制对显示、抢答、音乐、计分等。控制器的选择有以下两种方案。方案一:采用FPGA〔现场可编程门列阵〕作为系统的控制器。FPGA可以实现各种复杂的逻辑功能,规模大,密度高,它将所有器件集成在一块芯片上,减小了体积,提高了稳定性,并且可以应用EDA软件仿真、调试,易于进展功能扩展。FPGA采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模实时系统的控制核心。但由于本设计对数据处理的速度要求不高,FPGA的高速处理的优势得不到充分表达,并且由于其集成度高,使其本钱偏高,同时由于芯片的引脚较多,实物硬件电路板布线复杂,加重了电路设计和实际焊接的工作。方案二:采用ATMEL公司的AT89C51作为系统控制器的CPU方案。单片机算术运算功能强,软件编程灵活、自由度大,可以用软件编程实现各种算法和逻辑控制,并且由于其功耗低、体积小、技术成熟和本钱低等优点,使其在各个领域应用广泛。基于以上分析拟订方案二。2.3电源方案的选择系统需要多个电源,AT89C51使用5V稳压电源,驱动芯片需要5-50V电压驱动,步进电机等需要12V稳压电源。方案一:采用升压型稳压电路。用两片MC34063芯片分别将3V的电池电压进展直流崭波调压,得到5V和12V的稳压输出。只需使用两节电池,既节省了电池,又减小系统体积重量但该电路供电电流小,供电时间短,无法使相对庞大的系统稳定运作。方案二:采用三端稳压集成7805与7812分别得到5V和12V的稳定电压。利用该方法方便简单,工作稳定可靠。综上所述,选择方案二,采用三端稳压器电路。2.4抢答器键盘的选择键盘是单片机不可缺少的输入设备,是实现人机对话的纽带。键盘按构造形式可以分为非编码键盘和编码键盘,前者用软件方法产生键码,而后者则用硬件方法来产生键码。在单片机中使用的都是非编码键盘,因为非编码键盘构造简单,本钱低廉,非编码键盘的类型很多,常用的有独立式键盘,行列式键盘等。方案一:独立式键盘键盘接口中使用多少根I/O线,键盘中就有几个按键,键盘接口使用了8根I/O口线,该键盘就有8个按键,这种类型的键盘,其按键比较少,且键盘中各按键的工作互不干扰。因此可以根据实际需要对键盘中的按键灵活的编码。最简单的编码方式就是根据I/O输入口所直接反映的相应按键,按下的状态进展编码,称按键直接状态码,对于这样编码的独立式键盘,CPU可以通过直接读取I/O口的状态来获取按键的直接状态编码值,根据这个值直接进展按键识别,这样形式的键盘构造简单,按键识别容易。独立式键盘的缺点是需要占用比较多的I/O口线,当单片机应用系统键盘中需要的按键比较少或I/O口线比较充裕时,可以采用这样类型的键盘。方案二:行列式键盘行列式键盘是用N条I/O线作为行线,M条I/O线作为列线组成的键盘,在行线和列线的每个穿插点上,设置一个按键中按键的个数是M*N个。这种形式的键盘构造,能够有效的提高单片机系统中I/O的利用率,列线接P1.0~P1.3行线接P1.4~P1.7,行列适用于按键输入多的情况。CPU对键盘的扫描可以采用取程序控制的随机方式,即只有在CPU空闲是时才去扫描键盘,响应操作人员的键盘输入,但CPU在执行应用程序的过程中,不能响应键盘输入,对键盘的扫描可以采用定时方式,即利用单片机内部定时器每隔一定时间对键盘扫描一次,这样控制方式,不管键盘上有无键闭合,CPU总是定时的关心键盘状态。在大多数情况下,CPU对键盘可能进展空扫描。为了提高CPU的效率而又能及时响应键盘输入,可以采用中断方式,既CPU平时不必扫描键盘,只要当键盘上有键盘闭合时就产生中断请求,向CPU申请中断后,立即对键盘上有键盘进性扫描,识别闭合键,并做相应的处理。根据以上的论述,采用方案一,在本系统中采用了独立式键盘,其按键比较少,且键盘中各个按键的工作互不干扰。如图2-1所示:图2-2独立式键盘2.5计分器显示模块显示模块必须要显示三位数为一组,本系统设计为八组,共要显示27位数。采用静态显示,其方案如下:方案一:不带锁存方式。显示器由9个共阴极数码管组成。输入只有两个信号,它们是串行数据线DIN和移位信号CLK。9个串/并移位存放器芯片74LS164首尾相连,74LS164为8位串入并出移位存放器,1、2为串行输入端,Q0-Q7为并行输出端,CLK为移位时钟脉冲上升沿移入一位;MR为清零端,低电平时并行输出为零。方案二:带锁存方式。采用带有锁存功能的移位存放器74LS595芯片,74595的数据端:QA--QH:八位并行输出端,可以直接控制数码管的8个段。QH:级联输出端。SI:串行数据输入端。74595的控制端说明:SRCLR(10脚):低点平时将移位存放器的数据清零。通常接Vcc。SRCK(11脚):上升沿时数据存放器的数据移位。QA-->QB-->QC-->...-->QH;下降沿移位存放器数据不变。〔脉冲宽度:5V时,大于几十纳秒就行了。我通常都选微秒级〕RCK(12脚):上升沿时移位存放器的数据进入数据存储存放器,下降沿时存储存放器数据不变。(通常我将RCK置为低电平,)当移位完毕后,在RCK端产生一个正脉冲〔5V时,大于几十纳秒就行了。我通常都选微秒级〕,更新显示数据。13脚:高电平时制止输出〔高阻态〕。74164和74595功能相仿,都是8位串行输入转并行输出移位存放器。74164的驱动电流(25mA)比74595(35mA)的要小,14脚封装,体积也小一些。74595的主要优点是具有数据存储存放器,在移位的过程中,输出端的数据可以保持不变。这在串行速度慢的场合很有用处,数码管没有闪烁感。与164只有数据清零端相比,595还多有输出端时能/制止控制端,可以使输出为高阻态。根据以上论证,采用方案二。2.6计分器键盘的选择方案一:行列式键盘行列式键盘是用N条I/O线作为行线,M条I/O线作为列线组成的键盘,在行线和列线的每个穿插点上,设置一个按键中按键的个数是M*N个。这种形式的键盘构造,能够有效的提高单片机系统中I/O的利用率,列线接P1.0~P1.3行线接P1.4~P1.7,行列适用于按键输入多的情况。方案二:独立式键盘键盘接口中使用多少根I/O线,键盘中就有几个按键,键盘接口使用了16根I/O口线,需要占用比较多的I/O口线这种类型的键盘。根据以上论证,采用方案一。2.7模块的最终方案⒈主控制器模块:采用AT89C51单片机控制⒉抢答器显示模块:数码管显示⒊电源方案的选择:采用三端稳压器电路⒋抢答器键盘模块:独立式键盘⒌计分器显示模块:采用带有锁存功能的移位存放器74LS595芯片⒍计分器键盘模块:行列式键盘第三章电子智能抢答器系统的硬件电路设计3.1计分器的电路设计主控制器采用AT89C51单片机作为微处理器,AT89C51是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,片内含4Kbytes的可反复擦写的Flash只读程序存储器和128bytes的随机存取数据存储器〔RAM〕,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器〔CPU〕和Flash存储单元。计分器系统的硬件电路计分器的工作原理是采用最小系统,用4*4键盘来输入是选手需要加减进展分数的加减输入。主板上的6个数码显示,加几分的数,按确定键后分数值从串口p3.0,p3.1传到计分器显示模块上再通过数码管驱动模块显示。原理图如图3-1所示:图3-1计分器工作原理图计分显示模块计分显示模块是采用74LS595移位存放器。并带锁存功能,在数码显示不会闪。具有很好的观看效果。如图3-2:图3-2计分显示模块3.2抢答器的电路设计抢答电路模块抢答器的工作原理是采用单片机最小系统,用查询式键盘进展抢答。通过抢答按键模块,连接按键进展抢答。其工作原理为:主持人按清零键后,选手可按键抢答,单片机锁存信号,屏蔽外界信号。串显示编号,并有丁冬声输出。抢答选手的编号一直保持到主持人将系统去除为止。抢答器原理如图3-3:图3-3抢答器原理图抢答按键模块的设计抢答按键模块的设计是通过利用光电耦合器,光电偶合器的输入/输出之间没有接触,能有效地防止输入端的电磁干扰以电藕合的方式进入应用系统,而且光电偶合器的输入阻抗很小,干扰源的内阻很大,所以能输入到光电偶合器的干扰电压很小。把单片机信号和按钮的信号隔开,采用+12V电源给单片机开关量的控制。其原理图如图3-4:图3-4输入隔离电路第四章单片机干扰防护单片机应用系统在实际工作过程中,难免会受到各种外部或内部的干扰,使系统发生异常情况。比方,因干扰使程序指针发生错误时,可能会将非操作码执行,造成程序执行的混乱〔跑飞〕或进入死循环,甚至可能会损坏元器件。干扰窜入应用系统的主要渠道有三条:通过电磁波辐射窜入系统的空间干扰;通过输入/输出通道窜入的通道干扰;电源的干扰。4.1采用隔离技术对于供电系统的干扰,可以采用交流稳压器、不连续电源〔UPS〕、隔离变压器、底通虑波器等,以防止电源电压的波动和干扰噪声;在直流电源的抗干扰措施中,对应用系统中的不同等级的直流电源采取集成稳压块单独供电,以防止模块间的互相影响,使直流开关电源、DC-DC变换器以加强隔离提高电源稳定性等。在单片机应用系统的输入/输出通道中,普遍采用通道隔离技术来防止通道干扰。其中应用较多的是光电耦合器。光电耦合器的输入/输出之间没有接触,能有效地防止输入端的电磁干扰以电耦合的方式进入应用系统,而且光电耦合器的输入阻抗很小,干扰源的内阻很大,所以能输入到光电偶合器的干扰电压很小。4.2正确的接地措施在低频电路中,因寄生电抗的影响不大,常采用一点接地,以减少地线造成的地环路。在单片机系统中,数字地和模拟地应分别接地,即使一个芯片上有两种地也要分别接地,然后再在一点处把两种分别连接起来。在研制印刷电路板时,对地线的分布、形状、长度和宽度等也有一定的要求。单片机应用系统中的数字地、模拟地〔低电平电路地〕、大功率电气设备等强电设备的地〔噪声地〕、机壳或其他金属构件的屏蔽地应分开布置并在一点上和电源地相连。每个单元宜采用一个接地点,地线应尽量加粗以减少地线的阻抗。在采用屏蔽双绞线传递信号时,应将地与工作地连在一起。要注意只能在一个点接地,以免形成回路,在屏蔽体上产生较大的噪声。第五章结论单片机由硬件系统与软件系统组成。硬件系统是指构成微机系统的实体与装置,通常由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。其中运算器和控制器一般做在一个集成芯片上,统称中央处理单元〔CentralProcessingUnit〕,简称CPU,是微机的核心部件。CPU配上存放程序和数据的存储器、输入/输出〔Input/Output,简称I/O〕接口电路以及外部设备即构成单片机的硬件系统。软件系统是微机系统所使用的各种程序的总称,人们通过它对微机进展控制并与微机系统进展信息交换,使微机按照人的意图完成预定的任务。软件系统与硬件系统共同构成完整的单片微型计算机系统,两者相辅相成,缺一不可。这次毕业设计电子智能抢答计分器,采用了单片机技术、数字电子、模拟电子、制作电路板等相关技术。把在学校三年所学知识连成一串。理论联系实践,表达出大学生动手能力。通过查资料和搜集有关的文献,培养了自学能力和动手能力。并且由原先的被动的承受知识转换为主动的寻求知识,这可以说是学习方法上的一个很大的突破。通过毕业论文,我学会了如何将学到的知识转化为自己的东西,学会了怎么更好的处理知识和实践相结合的问题。把握重点、攻克难关,学到用到、活学活用。在设计过程中由于时间仓促有很多地方难免存在缺乏之处,硬件设计已经完成,在软件设计中有些功能还尚未开发出来。但在以后的工作中,我们会严格要求自己,追求完美。参考文献[1]康华光,邹寿彬编.电子技术根底数字局部〔第四版〕[M].:高等教育,2005[2]谢自美编.电子线路设计·实验·测试(第二版)[M].**:电子工业,2001[3]何立民.MCS-51系列单片机应用系统设计系统配置与接口技术[M].:航空航天大学,1999年[4]陆坤,奚大顺,李之权等,电子设计技术[M].**:电子科技大学1997年[5]何立民.MCS-51系列单片机应用系统设计系统配置与接口技术[M].:航空航天大学,1999年[5]胡学海.单片机原理及应用系统设计[M].:京电子工业,2005年[6]林凌,李刚,丁茹,李小霞.新型单片机接口器件与技术[M].**:**电子科技大学,2005年致谢三年的大学生活不知不觉中就要完毕了,在这段难忘的生活中,有我许多美好的回忆。在这份大学的最后一页里,首先感谢学院给我们提供这个能自我展示的平台,感谢我们的指导教师,*艳教师,从一开场的论文方向的选定,到最后的整篇文论的完成,都非常耐心的对我进展指导。给我提供了大量数据资料和建议,告诉我应该注意的细节问题,细心的给我指出错误,修改论文。我要感谢在我三年的学习中无私传授我知识的各位教师,是你们将自己珍贵的财富无私地奉献给了我们,让我们能在学业上有所成绩;是你们让我倍感教师职业的伟大,交给我们知识,又不忘教育我们如何做人!在此,我还要感谢寝室的兄弟们在我完成论文的过程中给予我的帮助和鼓励,也是他们陪我度过这三年的生活。附录单片机程序//抢答器加减记分显示程序2 DBUF EQU 30H ;三位显示缓冲区首址 ORG 0000H AJMP MAIN ORG 0030HMAIN: MOV SP,*60H ACALL KEYSCAN ;调用键盘扫描子程序判断是加分或减分 CJNE A,*0EH,NE*T2 ;不是加分键,则转移判断是减分键?NE*T1: ACALL KEYSZ ;是加分键,调用键盘设置子程序 ACALL DISPLAY ;调用串口静态显示子程序 SJMP MAINNE*T2: CJNE A,*0FH,MAIN ;都不是,则转MAIN AJMP NE*T1 ;是减分键,调用键盘设置子程序 ORG 0100HKEYSZ: PUSH PSW ;键盘设置子程序 PUSH ACC SETB RS1 MOV R0,*DBUF ;R0指向显示缓冲区首地址 MOV R7,*3 ;设置键盘输入位数L1: CLR RS1 ACALL KEYSCAN ;调用键盘扫描子程序取按下键的键号 SETB RS1 CJNE A,*0AH,L2 ;键入数合法性检测〔是否大于9〕L2: JNC L1 ;大于9,重新键入 MOV R0,A ;键号送显示缓冲区 INC R0 DJNZ R7,L1 ;3位数值输入完否.未完继续,否则返回 POP ACC POP PSW CLR RS1 RETKEYSCAN:MOV R3,*0F7H ;扫描初值〔P1.3=0〕 MOV R1, *00H ;取码指针L3: MOV A, R3 ;开场扫描 MOV P1, A ;将扫描值输出至P1 MOV A, P1 ;读入P1值,判断是否有键按下 MOV R4, A ;存入R4,以判断按键是否放开 SETB C ;C=1 MOV R5, *04H ;扫描P1.4~P1.7L4: RLC A ;将按键左移一位 JNC KEYIN ;判断C=0?有键按下则C=0,跳至KEYIN INC R1 ;C=1,则无键按下,将取码指针值加1 DJNZ R5, L4 ;4列扫描完毕了吗? MOV A, R3 ;扫描值载入 SETB C ;C=1 RRC A ;扫描下一行(P1.3~P1.0) MOV R3, A ;存回扫描存放器 JC L3 ;C=1?是则P1.0尚未扫描到 SJMP KEYSCAN ;C=0,则四行已扫描完毕KEYIN: MOV R7, *60 ;延时消除抖动D2: MOV R6, *248 ; DJNZ R6, $ ; DJNZ R7, D2 ;D3: MOV A, P1 ;延时后再读入P1值 *RL A, R4 ;与上次读入值作比较 JZ D3 ;A=0,表示按键未放,等待按键释放 MOV A, R1 ;按键已放开,取码指针载入累加器 MOV DPTR,*TABLE ;键盘码表首地址送DPTR MOVC A, A+DPTR ;查键码 RET ;返回TABLE: DB 00H,01H,02H,03H ;键码安排表与键盘一样 DB 04H,05H,06H,07H DB 08H,09H,0AH,0BH DB 0CH,0DH,0EH,0FH ORG 0200HDISPLAY:MOV R0, *DBUF ;串口静态显示子程序 MOV R2,*3 ;显示3位数码 MOV DPTR,*SEGTAB;DISP: MOV A,R0 ; MOVC A,A+DPTR ;取字段码 MOV SCON,*0 ;置串口工作方式0 MOV SBUF,A ;开场发送 JNB TI,$ ;等待发送完毕 CLR TI ;发送完毕,标志位清零 INC R0 ;缓冲单元地址增1 DJNZ R2,DISP ;三位数码发送完否? RET ;发送完毕,则返回SEGTAB: DB 0FCH,60H,0DAH,0F2H ;0,1,2,3〔共阳极字段码表〕DB 66H,0B6H,0BEH,0E0H ;4,5,6,7DB 0FEH,0F6H,0EEH,3EH ;8,9,A,B DB 9CH,7AH,9EH,8EH ;C,D,+,- ENDDBUF EQU 30H ;三位显示缓冲区首址ORG 0000HAJMP MAINORG 0030HMAIN: MOV SP,*60H ACALL KEYSCAN ;调用键盘扫描子程序判断是加分或减分 CJNE A,*0EH,NE*T2 ;不是加分键,则转移判断是减分键?NE*T1: ACALL KEYSZ ;是加分键,调用键盘设置子程序ACALL DISPLAY ;调用串口静态显示子程序SJMP MAINNE*T2: CJNE A,*0FH,MAIN ;都不是,则转MAIN AJMP NE*T1 ;是减分键,调用键盘设置子程序ORG 0100HKEYSZ: PUSH PSW ;键盘设置子程序 PUSH ACC SETB RS1 MOV R0,*DBUF ;R0指向显示缓冲区首地址 MOV R7,*3 ;设置键盘输入位数L1: CLR RS1 ACALL KEYSCAN ;调用键盘扫描子程序取按下键的键号 SETB RS1 CJNE A,*0AH,L2 ;键入数合法性检测〔是否大于9〕L2: JNC L1 ;大于9,重新键入 MOV R0,A ;键号送显示缓冲区 INC R0 DJNZ R7,L1 ;3位数值输入完否.未完继续,否则返回 POP ACC POP PSW CLR RS1 RETKEYSCAN: MOV R3,*0F7H ;扫描初值〔P0.3=0〕 MOV R1, *00H ;取码指针L3: MOV A, R3 ;开场扫描 MOV P0, A ;将扫描值输出至P1 MOV A, P0 ;读入P1值,判断是否有键按下 MOV R4, A ;存入R4,以判断按键是否放开 SETB C ;C=1 MOV R5, *04H ;扫描P1.4~P1.7L4: RLC A ;将按键左移一位 JNC KEYIN ;判断C=0?有键按下则C=0,跳至KEYIN INC R1 ;C=1,则无键按下,将取码指针值加1 DJNZ R5, L4 ;4列扫描完毕了吗? MOV A, R3 ;扫描值载入 SETB C ;C=1 RRC A ;扫描下一行(P1.3~P1.0) MOV R3, A ;存回扫描存放器 JC L3 ;C=1?是则P1.0尚未扫描到 SJMP KEYSCAN ;C=0,则四行已扫描完毕KEYIN: MOV R7, *60 ;延时消除抖动D2: MOV R6, *248 ; DJNZ R6, $ ; DJNZ R7, D2 ;D3: MOV A, P0 ;延时后再读入P1值 *RL A, R4 ;与上次读入值作比较 JZ D3 ;A=0,表示按键未放,等待按键释放 MOV A, R1 ;按键已放开,取码指针载入累加器 MOV DPTR,*TABLE ;键盘码表首地址送DPTR MOVC A, A+DPTR ;查键码 RET ;返回TABLE: DB 00H,01H,02H,03H ;键码安排表与键盘一样 DB 04H,05H,06H,07H DB 08H,09H,0AH,0BH DB 0CH,0DH,0EH,0FH ORG 0200HDISPLAY:MOV R0, *DBUF ;串口静态显示子程序 MOV R2,*3 ;显示3位数码 MOV DPTR,*SEGTAB;DISP: MOV A,R0 ; MOVC A,A+DPTR ;取字段码 MOV SCON,*0 ;置串口工作方式0 MOV SBUF,A ;开场发送 JNB TI,$ ;等待发送完毕 CLR TI ;发送完毕,标志位清零 INC R0 ;缓冲单元地址增1 DJNZ R2,DISP ;三位数码发送完否? RET ;发送完毕,则返回SEGTAB: DB 0FCH,60H,0DAH,0F2H ;0,1,2,3〔共阳极字段码表〕DB 66H,0B6H,0BEH,0E0H ;4,5,6,7DB 0FEH,0F6H,0EEH,3EH ;8,9,A,BDB 9CH,7AH,9EH,8EH ;C,D,+,- END抢答器软件程序〔附2〕*Description:上电后,P1口的八个LED依次点亮主持人按下抢答开关后,P2口的共阳数码管显示-,P0口八个选手可抢答抢答后P3.4脚发出报警声,抢答选手号显示在数码管上,延时6秒后可进展下一轮抢答*include<REG52.H>*include<INTRINS.H>sbitsounder=P3^4;//定义P3.4脚voidDelay1ms(unsignedintcount)//1ms延时函数{ unsignedinti,j; for(i=0;i<count;i++) for(j=0;j<120;j++);}voidmain(void){ unsignedchari;unsignedchartemp;unsignedch

温馨提示

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

评论

0/150

提交评论