为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

单片机八路抢答器

2017-09-26 29页 doc 105KB 34阅读

用户头像

is_841159

暂无简介

举报
单片机八路抢答器单片机八路抢答器 摘 要 电子智能抢答计分器在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。如果在抢答中,靠视觉是很难判断出哪组先答题。利用单片机系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒,也可分辨出哪组优先答题。抢答组数可以在八组以内任意使用,本系统设计为模块形式采用九针插头进行连接,系统工作原理本系统采用AT89S51单片机作为核心。控制系统的五个模块分别为:单片机最小系统(六位并行数码显示、4*4矩阵式键盘)、显示模块、显示驱动模块、抢答开关模块、音乐音频输出...
单片机八路抢答器
单片机八路抢答器 摘 要 电子智能抢答计分器在抢答过程中,为了知道哪一组或哪一位选手先答,必须要设计一个系统来完成这个任务。如果在抢答中,靠视觉是很难判断出哪组先答题。利用单片机系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒,也可分辨出哪组优先答题。抢答组数可以在八组以内任意使用,本系统设计为模块形式采用九针插头进行连接,系统工作原理本系统采用AT89S51单片机作为核心。控制系统的五个模块分别为:单片机最小系统(六位并行数码显示、4*4矩阵式键盘)、显示模块、显示驱动模块、抢答开关模块、音乐音频输出模块。 关键词:单片机;矩阵式键盘;显示;驱动;抢答 目 录 引言……………………………………………………………………3 1 单片机的应用技术………………………………………………3 2 系统设计要点………………………………………………………3 2.1 抢答器的硬件设计要求……………………………………………3 2.2 计分器系统的软件流程……………………………......…..…………..3 2.3 计分器的硬件设计要求…………………………………………5 2.4 人机交互程序设计…………………………………………..……….5 2.5 抢答器系统软件的流程图…………………………………………7 2.6 抢答数码显示软件程序设计………………………………………8 2.7 音乐音频输出程系流程图…………………………………………9 3各模块选择和论证……………………………………………10 3.1 抢答器显示模块………………………………………………10 3.2 控制器模块……………………………………………………10 3.3 电源方案的选择……………………………………………………11 3.4 枪答器键盘的选择………………………………………………11 3.5 计分器显示模块……………………………………………………13 3.6 计分器键盘的选择…………………………………………………14 4 模块的最终方案……………………………………………………14 5 电子智能抢答器系统的硬件电路设计……………………………14 5.1计分器的电路设计………………………………………………14 5.2抢答器的电路设计…………………………………………………16 6 单片机干扰防护……………………………………………………18 6.1 采用隔离技术……………………………………………………18 6.2 正确的接地措施……………………………………………………19 结论…………………………………………………………………….19 谢 辞………………………………………………………………….19 参考文献……………………………………………………………20 计分器显示程序(附1)………………………………………………21 抢答器软件程序(附2)………………………………………………26 1 1 单片机的应用技术 单片机由硬件系统与软件系统组成。硬件系统是指构成微机系统的实体与装置,通常由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。其中运算器和控制器一般做在一个集成芯片上,统称中央处理单元(Central Processing Unit),简称CPU,是微机的核心部件。CPU配上存放程序和数据的存储器、输入/输出(Input/Output,简称I/O)接口电路以及外部设备即构成单片机的硬件系统。软件系统是微机系统所使用的各种程序的总称,人们通过它对微机进行控制并与微机系统进行信息交换,使微机按照人的意图完成预定的任务。软件系统与硬件系统共同构成完整的单片微型计算机系统,两者相辅相成,缺一不可。 2 系统设计要点 系统设计主要包括硬件和软件两大部分,依据控制系统的工作原理和技术性能,将硬件和软件分开设计。硬件设计部分包括电路原理图、合理选择元器件、绘制线路图,然后对硬件进行调试、测试,以达到设计要求。软件设计部分,首先在总体设计中完成系统总框图和各模块的功能设计,拟定详细的工作;然后进行具体设计,包括各模块的流程图,选择合适的编程语言和工具,进行代码设计等;最后是对软件进行调试、测试,达到所需功能要求。 在系统设计中设计的选用是系统设计能否成功的关键。硬件电路是采用结构化系统设计方法,该方法保证设计电路的标准化、模块化。硬件电路的设计最重要的选择用于控制的单片机,并确定与之配套的外围芯片,使所设计的系统既经济又高性能。硬件电路设计还包括输入输出接口设计,画出详细电路图,标出芯片的型号、器件参数值,根据电路图在仿真机上进行调试,发现设计不当及时修改,最终达到设计目的。软件设计的方法与开发环境的选取有着直接的关系,本系统由于是采用51系列单片机,因此使用Keil C语言进行开发。此编程工具相比汇编语言具有结构化、适用范围大、可移植性好等特点。本系统软件设计采用模块化系统设计方法,先编写各个功能模块子程序,然后进行组合与调整,经过调试后,达到设计功能要求。 2.1 抢答器的硬件设计要求 抢答器同时供8名选手或8个代队比赛,分别用8个按钮S1~S8表示。设置一个系统清除和抢答控制按扭,该按扭由主持人控制。抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提 2 示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。 2.3 计分器的硬件设计要求 加减计分有三位显示,用串行通信口,显示分数,用4*4阵列式键盘进行同时加减和单组加分。 2.4 人机交互程序设计 系统的人机交互程序设计,主要是解决按键的扫描与信息的显示,让操作者 能够灵活地控制系统工作。键盘用来输入指令,发光数码管用来显示单片机的状态,这是一个比较简单的人机交互形式。 3 各模块方案选择和论证 3.1 抢答器显示模块 在步进电机控制过程中,系统需要对运行的时间和转向、相数做必要的显示。我们考虑有以下两种显示方案。 方案一:使用液晶屏显示时间。液晶显示屏(LCD)具有轻薄短小、低耗电量、无辐射危险,平面直角显示以及影像稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强的特点。但由于只需要显示时间和转向、相数这样的数字,信息量比较少,且由于液晶是以点阵的模式显示各种符号,需要利用控制芯片创建字符库,编程工作量大,控制器的资源占用较多,其成本也偏高。在使用时,不能有静电干扰,否则易烧坏液晶显示芯片,不易维护。 方案二:在使用传统的数码管显示。数码管具有:低能耗、低损耗、低压、寿命长、耐老化、防晒、防潮、防火、防高(低)温,对外界环境要求低,易于维护,同时其精度高,称量快,精确可靠,操作简单。数码显示是采用BCD编码显示数字,程序编译容易,资源占用较少。 静态显示,电路图中所示。显示器由9个共阳极数码管组成。输入只有两个信号,它们是串行数据线DIN和移位信号CLK。9个串/并移位寄存器芯片74LS164首尾相连,每片的并行输出作为LED数码管的段码74LS164的引脚图如图3.1所示: 3 图3.174LS164的引脚图 74LS164为8位串入并出移位寄存器,1、2为串行输入端,Q0-Q7为并行输出端,CLK为移位时钟脉冲上升沿移入一位;MR为清零端,低电平时并行输出为零。根据以上的论述,采用方案二。 3.2 控制器模块 控制器主要用于各模块控制对显示、抢答、音乐、计分等。控制器的选择有以下两钟方案。 方案一:采用FPGA(现场可编程门列阵)作为系统的控制器。FPGA可以实现各种复杂的逻辑功能,规模大,密度高,它将所有器件集成在一块芯片上,减小了体积,提高了稳定性,并且可以应用EDA软件仿真、调试,易于进行功能扩展。FPGA采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模实时系统的控制核心。但由于本设计对数据处理的速度要求不高,FPGA的高速处理的优势得不到充分体现,并且由于其集成度高,使其成本偏高,同时由于芯片的引脚较多,实物硬件电路板布线复杂,加重了电路设计和实际焊接的工作。 方案二:采用ATMEL公司的AT89C51作为系统控制器的CPU方案。单片机算术运算功能强,软件编程灵活、自由度大,可以用软件编程实现各种算法和逻辑控制,并且由于其功耗低、体积小、技术成熟和成本低等优点,使其在各个领域应用广泛。基于以上分析拟订方案二。 3.3 电源方案的选择 系统需要多个电源,AT89C51使用5V稳压电源,驱动芯片需要5-50V电压驱动,步进电机等需要12V稳压电源。 方案一:采用升压型稳压电路。用两片MC34063芯片分别将3V的电池电压进行直流崭波调压,得到5V和12V的稳压输出。只需使用两节电池,既节省了电池,又减小系统体积重量但该电路供电电流小,供电时间短,无法使相对庞大的系统稳定运作。 4 方案二:采用三端稳压集成7805与7812分别得到5V和12V的稳定电压。利用该方法方便简单,工作稳定可靠。 综上所述,选择方案二,采用三端稳压器电路。 3.4 抢答器键盘的选择 键盘是单片机不可缺少的输入设备,是实现人机对话的纽带。键盘按结构形式可以分为非编码键盘和编码键盘,前者用软件方法产生键码,而后者则用硬件方法来产生键码。在单片机中使用的都是非编码键盘,因为非编码键盘结构简单,成本低廉,非编码键盘的类型很多,常用的有独立式键盘,行列式键盘等。 方案一:独立式键盘 键盘接口中使用多少根I/O线,键盘中就有几个按键,键盘接口使用了8根I/O口线,该键盘就有8个按键,这种类型的键盘,其按键比较少,且键盘中各按键的工作互不干扰。因此可以根据实际需要对键盘中的按键灵活的编码。如图3.4.1。 0 1 2 3 P14 5 6 7 图3.2独立式键盘 最简单的编码方式就是根据I/O输入口所直接反映的相应按键,按下的状态进行编码,称按键直接状态码,对于这样编码的独立式键盘,CPU可以通过直接读取I/O口的状态来获取按键的直接状态编码值,根据这个值直接进行按键识别,这样形式的键盘结构简单,按键识别容易。 独立式键盘的缺点是需要占用比较多的I/O口线,当单片机应用系统键盘中需 5 要的按键比较少或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申请中断后,立即对键盘上有键盘进性扫描,识别闭合键,并做相应的处理。 根据以上的论述,采用方案一,在本系统中采用了独立式键盘,其按键比较少, 且键盘中各个按键的工作互不干扰。如图3.4.2所示。 P1.0 P1.1 P1.2 3210P1.3 P1.4 P1.5 7654P1.6 P1.7 BA98 FEDC 图3.3行列式键盘 6 3.5 计分器显示模块 显示模块必须要显示三位数为一组,本系统设计为八组,共要显示27位数。采用静态显示,其方案如下: 方案一:不带锁存方式。显示器由9个共阴极数码管组成。输入只有两个信号,它们是串行数据线DIN和移位信号CLK。9个串/并移位寄存器芯片74LS164首尾相连,74LS164为8位串入并出移位寄存器,1、2为串行输入端,Q0-Q7为并行输出端,CLK为移位时钟脉冲上升沿移入一位;MR为清零端,低电平时并行输出为零。实验证明在显示位数超出6位,数码管有闪烁的现象。 方案二:带锁存方式。采用带有锁存功能的移位寄存器74LS595芯片,74595的数据端:QA--QH: 八位并行输出端,可以直接控制数码管的8个段。QH': 级联输出端。我将它接下一个595的SI端。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还多有输出端时能/禁止控制端,可以使输出为高阻态。 根据以上论证,采用方案二。 3.6 计分器键盘的选择 方案一:行列式键盘 行列式键盘是用N条I/O线作为行线,M条I/O线作为列线组成的键盘,在行线和列线的每个交叉点上,设置一个按键中按键的个数是M*N个。这种形式的键 7 盘结构,能够有效的提高单片机系统中I/O的利用率,列线接P1.0~P1.3行线接P1.4~P1.7,行列适用于按键输入多的情况。 方案二:独立式键盘 键盘接口中使用多少根I/O线,键盘中就有几个按键,键盘接口使用了16根I/O口线,需要占用比较多的I/O口线这种类型的键盘, 根据以上论证,采用方案一。 4 硬件设计 4.1 硬件模块方案 主控制器模块:采用AT89C51单片几机控制 抢答器显示模块:数码管显示 电源方案的选择:采用三端稳压器电路 抢答器键盘模块:独立式键盘 计分器显示模块:采用带有锁存功能的移位寄存器74LS595芯片 计分器键盘模块:行列式键盘 4.2 计分器的电路设计 主控制器采用AT89C51单片机作为微处理器,AT89C51是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,片内含4K bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash 存储单元。 计分器的工作原理是采用最小系统,用4x4键盘来输入是选手需要加减进行分数的加减输入。主板上的6个数码显示,加几分的数,按确定键后分数值从串口p3.0,p3.1传到计分器显示模块上再通过数码管驱动模块显示。原理图如图4.1所示 8 U989S51 139P10P00238P11P01337P12P02436P13P03535P14P04634P15P05733P16P06832P17P071321INT1P201222INT0P2123P221524T1P231425T0P2426P253127EA/VPP2628P2719X118X2910RESETRXD11TXD1730RDALE/P1629WRPSEN J2C08 C17C26C35C44C53C62C71 B5串口输出 C3U1FC274ALS0691213C51VCCaC4DS62baB43cB6fbVCC4dgY15eB7ec62fdU1E17gdp74ALS0698dp11R910C0J11VCCC1S0VCCCON2aDS52C1C2SC7R9baB0B1B2B3330P30PC6cfb4A0C3dg5A1eec6A2R6fdU1D7A35.6K10uFgdp74ALS069898A4R5dpA510K1C41000uFVCCD0aDS4A62baA73cfb4C5A0dgLED5A1eec60.1uFA2fdU1C7A3gdp74ALS065698A4dpA51VCCaDS3A62U2baA7374ALS245cfb4218A0A0A0A0A0dgA0B05317A1A1A1A1A1eA1B1ec6416A2A2A2A2A2fdU1BA2B27515A3A3A3A3A3gdp74ALS06A3B33498614A4A4A4A4A4dpA4B4713A5A5A5A5A51VCCaA5B5DS2812A6A6A6A6A62bA6B6a911A7A7A7A7A73cA7B7fb4dg195eE1ec6DIRfdU1A7gdp74ALS061298dp DS1VCCJ316R1R210KR3R4R7R8R9R10R11R210K10K10K10101010101073S1S2S3S48495D01VCCaS5S6S7S8D12baD23cfbD34dgD45eecD56fdS9S10S11S12D67gdp8dpB0B1B2B3S13S14S15S16B4VCCB5SW-PB图4.1计分器系统的硬件电路B6B7 D0D1D2D3D4D5D6P1.7 C0 C1 P1.7 9 L 4.3 抢答器的电路设计 4.3.1抢答电路模块 抢答器的工作原理是采用单片机最小系统,用查询式键盘进行抢答。通过抢答按键模块,连接按键进行抢答。其工作原理为: 主持人按清零键后,选手可按键抢答,单片机锁存信号,屏蔽外界信号。串显示编号,并有丁冬声输出。抢答选手的编号一直保持到主持人将系统清除为止。抢答器原理如图4.2。 图4.2 抢答器原理图 4.3.2抢答按键模块的设计 抢答按键模块的设计是通过利用光电耦合器,光电偶合器的输入/输出之间没有接触,能有效地防止输入端的电磁干扰以电藕合的方式进入应用系统,而且光电偶合器的输入阻抗很小,干扰源的内阻很大,所以能输入到光电偶合器的干扰电压 10 很小。把单片机信号和按钮的信号隔开,采用+12V电源给单片机开关量的控制。其原理图如图4.3。 图4.3 输入隔离电路 11 5 软件设计 5.1 抢答器系统软件的流程图 抢答组数可以在八组以内任意使用,其流程如图5.1 开始 初始化 是 第一组 否显 是 示 第二组 组 号 否 是 开第三组 音 乐 是否 第八组 图5.1抢答器系统软件的流程图 12 5.2 计分器系统的软件流程 开始 初始化 为1全部统 一加减分 检测P3.7状态 为0单组 加减分 扫描键盘S1~S8是那一个组加分按键减分按键 要加分,并组号显示在主板S14 S15 上(六个数码管) 键盘录入分值,并显示在主板上加分按键减分按键 (六个数码管) S12 S13 键盘录入分值,并显示在主板上(六 个数码管) 确定S16 P1.7输入一个单次脉冲,并保持高电平(锁存数据 由P3.0 P3.1串口输出显示分数) 图5.2 计分器系统的软件流程 5.3键盘扫描程序流程图 本系统的键盘采用的是4×4矩阵式键盘,矩阵式键盘由行线和列线组成,按 13 键位于行、列线的交叉点上。一个4×4的行、列结构可以构成一个含有16个按键的键盘,显然,在按键数量较多时,矩阵式键盘较之独立式按键键盘要节省很多I/O口。 矩阵式键盘中,行、列线分别连接到按键开关的两端,在进行键盘扫描时,首先把矩阵键盘列线的第一根线置高,然后分别再检测矩阵键盘行线是否有高电平的信号,如果有信号,那么就证明这根行线与第一根列线相交处的按键被按下了,单片机就读入这个键值。如果所有的四根行线都没有信号,那么就把第一根列线置低,把第二根列线置高,再一次检测行线有没有信号,然后依次类推。 由于键盘扫描的速度很快,而人按键总会持续一定的时间,因此只要单片机处在等待输入的状态,这个键盘扫描程序基本上不会错过任何一个按键信号。由于一般人按键会有抖动,抖动信号造成键盘扫描时会出现一些错误的信号,要不就是扫描不进数据,要不就是重复输入很多次数据,因此需要有一个消除抖动的程序。让单片机不响应一些相关的抖动信号,而只响应一次确实存在的按键信号。消抖动程序是这样实现的,当检测到一个脉冲信号时,并不立即认为是一次按键,而是延时一段时间以后再进行检测,如果三次检测都有信号,那么就认为有一次按键动作发生了。延时的选择非常重要,太快了,起不到消除抖动的效果,太慢了又让键盘太不灵活,错过较多的按键信号。键盘扫描程序的流程图如图5.3所示。 14 开 始 将上一根列线置低 将下一根列线置高初始化 依次扫描行线 将第一根列线置高 NN有信号吗是第四根列线吗依次扫描行线 YY 延时一次N有信号吗将第四根列线置低 NY有信号吗 延时一次返回一个值Y 再延时一次N有信号吗 NY有信号吗 再延时一次 Y 返回对应键值N有信号吗 Y 返回对应键值 图5.3键盘扫描程序流程 5.4 抢答数码显示软件程序设计 采用静态显示,显示器由9个共阳极数码管组成。输入只有两个信号,它们是串行数据线DIN和移位信号CLK。9个串/并移位寄存器芯片74LS164首尾相连,了九位共阳极七段数码管,共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起,通常,公共阳极接高电平(一般接电源),七它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻,这里的限流电阻选100Ω。数码显示程序流程如图5.4: 15 子程序入口 初始化 查表取段码 段码送驱动显示 位码送译码器选通 低位数码管显示缓冲区左移 数字是否显示完 关显示 图5.4数码显示程序流程 返回 16 5..5 音乐音频输出程序流程图 音乐音频输出由P3.7输出,如图5.5 开始 输出音频脉冲低电平 延时 输出音频脉冲高电平 延时 图5.5音频输出程序流程图 5 单片机干扰防护 单片机应用系统在实际工作过程中,难免会受到各种外部或内部的干扰,使系统发生异常情况。比如,因干扰使程序指针发生错误时,可能会将非操作码执行,造成程序执行的混乱(跑飞)或进入死循环,甚至可能会损坏元器件。 干扰窜入应用系统的主要渠道有三条:通过电磁波辐射窜入系统的空间干扰;通过输入/输出通道窜入的通道干扰;电源的干扰。 6.1 采用隔离技术 对于供电系统的干扰,可以采用交流稳压器、不间断电源(UPS)、隔离变压器、底通虑波器等,以防止电源电压的波动和干扰噪声;在直流电源的抗干扰措施中,对应用系统中的不同等级的直流电源采取集成稳压块单独供电,以避免模块间的互相影响,使直流开关电源、DC-DC变换器以加强隔离提高电源稳定性等。 在单片机应用系统的输入/输出通道中,普遍采用通道隔离技术来防止通道干扰。其中应用较多的是光电耦合器。光电耦合器的输入/输出之间没有接触,能有效地防止输入端的电磁干扰以电耦合的方式进入应用系统,而且光电耦合器的输入阻抗很小,干扰源的内阻很大,所以能输入到光电偶合器的干扰电压很小。 17 6.2 正确的接地措施 在低频电路中,因寄生电抗的影响不大,常采用一点接地,以减少地线造成的地环路。 在单片机系统中,数字地和模拟地应分别接地,即使一个芯片上有两种地也要分别接地,然后再在一点处把两种分别连接起来。 在研制印刷电路板时,对地线的分布、形状、长度和宽度等也有一定的要求,比如地线要呈辐射状,避免环行,地线要宽,连接旁路电容的地线不要太长等。 单片机应用系统中的数字地、模拟地(低电平电路地)、大功率电气设备等强电设备的地(噪声地)、机壳或其他金属构件的屏蔽地应分开布置并在一点上和电源地相连。每个单元宜采用一个接地点,地线应尽量加粗以减少地线的阻抗。 在采用屏蔽双绞线传递信号时,应将地与工作地连在一起。要注意只能在一个点接地,以免形成回路,在屏蔽体上产生较大的噪声。 结论 通过这次课程设计。我们小组设计电子智能抢答计分器,采用了单片机技术、数字电子、模拟电子、制作电路板等相关技术。把在学校这一段时间所学知识连成一串。理论联系实践,体现出大学生动手能力。通过查资料和搜集有关的文献,培养了自学能力和动手能力。并且由原先的被动的接受知识转换为主动的寻求知识,这可以说是学习方法上的一个很大的突破。在以往的传统的学习模式下,我们可能会记住很多的书本知识,但是通过毕业论文,我们学会了如何将学到的知识转化为自己的东西,学会了怎么更好的处理知识和实践相结合的问题。把握重点、攻克难关,学到用到、活学活用。在设计过程中由于时间仓促有很多地方难免存在不足之处,硬件设计已经完成,在软件设计中有些功能还尚未开发出来。但在以后的工作中,我们会严格要求自己,追求完美。 18 参考文献 [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年 19 附:单片机程序 计分器显示程序(附1) //抢答器加减记分显示程序2 DBUF EQU 30H ;三位显示缓冲区首址 ORG 0000H AJMP MAIN ORG 0030H MAIN: MOV SP,#60H ACALL KEYSCAN ;调用键盘扫描子程序判断是加分或减分 CJNE A,#0EH,NEXT2 ;不是加分键,则转移判断是减分键? NEXT1: ACALL KEYSZ ;是加分键,调用键盘设置子程序 ACALL DISPLAY ;调用串口静态显示子程序 SJMP MAIN NEXT2: CJNE A,#0FH,MAIN ;都不是,则转MAIN AJMP NEXT1 ;是减分键,调用键盘设置子程序 ORG 0100H KEYSZ: 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 RET KEYSCAN: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.7 20 L4: 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值 XRL 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 0200H DISPLAY: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,7 DB 0FEH,0F6H,0EEH,3EH ;8,9,A,B DB 9CH,7AH,9EH,8EH ;C,D,+,- END DBUF EQU 30H ;三位显示缓冲区首址 21 ORG 0000H AJMP MAIN ORG 0030H MAIN: MOV SP,#60H ACALL KEYSCAN ;调用键盘扫描子程序判断是加分或减分 CJNE A,#0EH,NEXT2 ;不是加分键,则转移判断是减分键? NEXT1: ACALL KEYSZ ;是加分键,调用键盘设置子程序 ACALL DISPLAY ;调用串口静态显示子程序 SJMP MAIN NEXT2: CJNE A,#0FH,MAIN ;都不是,则转MAIN AJMP NEXT1 ;是减分键,调用键盘设置子程序 ORG 0100H KEYSZ: 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 RET KEYSCAN: MOV R3, #0F7H ;扫描初值(P0.3=0) 22 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.7 L4: 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值 XRL 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 23 DB 08H,09H,0AH,0BH DB 0CH,0DH,0EH,0FH ORG 0200H DISPLAY: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,7 DB 0FEH,0F6H,0EEH,3EH ;8,9,A,B DB 9CH,7AH,9EH,8EH ;C,D,+,- END 24 抢答器软件程序(附2) #include #define uchar unsigned char //共阴码 //uchar code table[]={0x00,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe }; /*代 码存储区(64KB)*/ //共阳码 uchar code table[]={0x03,0x9f,0x25,0x0d,0x99,0xc2,0x41,0x1f,0x01,0xff }; void delay (void) { /* delay 函数*/ uchar i,j; /*这个函数执行时间的延迟 */ for (i=0;i<20;i++) for(j=0;j<250;j++) ; } void main (void) { uchar temp,key,j,time; /* 声明变量temp */ while (1) { /* 无穷循环 */ temp=P0; /* 将P2输入的数据直接放入变量temp当中 */ delay(); temp=P0; switch(temp) { case 0xfe: key = 1;break; case 0xfd: key = 2;break; case 0xfb: key = 3;break; case 0xf7: key = 4;break; case 0xef: key = 5;break; case 0xdf: key = 6;break; case 0xbf: key = 7;break; case 0x7f: key = 8;break; 25 default : break; } if(temp==0xff) { for(time=1;time>0;time--) /*无键按下,则关显示*/ { j=table[0]; SCON=0x00; SBUF=j; while(TI!=1); TI=0; } } else { j=table[key]; /*取键值并显示*/ SCON=0x00; SBUF=j; while(TI!=1); TI=0; for(;;) /*指示显示,并实现锁键功能*/ { P1=temp; delay(); } } } } 26
/
本文档为【单片机八路抢答器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索