智能抢答器数字密码锁八路花样灯控制器的设计说明_第1页
智能抢答器数字密码锁八路花样灯控制器的设计说明_第2页
智能抢答器数字密码锁八路花样灯控制器的设计说明_第3页
智能抢答器数字密码锁八路花样灯控制器的设计说明_第4页
智能抢答器数字密码锁八路花样灯控制器的设计说明_第5页
已阅读5页,还剩88页未读 继续免费阅读

下载本文档

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

文档简介

1、 . . . 八路花样灯控制器的设计一任务要求设计一个八路花样灯,控制器,其具体要求如下:基本功能: (1)有一个时钟电路。 (2)有八个LED发光二极管输出电路。 (3)至少16种花样灯变化的控制。 增加功能: (1)64种以上变化花样灯控制。二实验目的1. 巩固和加深对电子电路的基本知识的理解,提高综合运用本课程所学的知识的能力。2. 培养根据设计需要选学参考书籍,查阅相关手册,图表和文献资料的自学能力。3. 通过电路的方案分析,论证和比较,设计计算选取元件,电路组装,调试等环节初步掌握简单实用电路的分析方法和工程设计方法。4. 学会简单电路的实验调试和性能指标的测试方法,提高学生动手能力

2、和进行数字电路实验的基本技能 三总体方案分析题目,通过分析问题和初步的整体思考,设计出如下方案:整体功能的实现需要以下三个模块来实现:花型的演示与控制模块,节拍控制模块,时钟信号的产生。时钟信号的产生由一个555多频振荡器来实现,花型的演示由两个74ls194(双向移位寄存器)来实现,花型的控制功能由第一个74ls161(四位二进制同步计数器)产生分频信号控制置数与左右移,所置入数有另外两片74ls161控制。设计总框图如图所示:四元器件与其数量与其简介元件名称数量74SL161374LS1942块74LS322块74LS041块555-VIRTUAL1块发光二极管8个4.1 74ls1614

3、.2 74ls194 4.3 555定时器五工作原理与部分花型的实现图1 脉冲产生首先,花型控制电路利用555时钟电路(如图1所示),产生周期T=0.7(R1+2R2)C.=2.94ms脉冲,脉冲如图2波形1所示 将脉冲输入U3,即第一块74LS161,利用其分频作用从QD3产生原脉冲16分频的脉冲 (如图2波形14所示),将16分频脉冲输入由U2,U4组成的计数模块,计数模块的8个输出端依次接入74LS194的置数端;同时将QD3与RCO3产生的进位信号相加后(如图2波形41所示)输入两块74LS194的S1端,将QD3取非再与RCO3相加后(如图2波形36所示)输入两块74LS194的S0

4、端.由图1可看到,当S1和S0都取1时,移位寄存器处于置数状态,S1=0,S0=1时右移,S1=1,S0=0时左移,进入正常工作状态后的74LS194,应是先置数,右移8位再左移7位,当这一周期完成的同时计数部分恰好加一,使74LS194下一次输入的数改变,如此类推,可产生次变化。工作方式控制电路产生移存器所需的各种控制信号。由于控制信号的选择与花型变换有关,本次设计花型变换如下:花型1:置入10000000右移8次,左移7次。花型2:置入01000000右移8次,左移7次。花型3:置入11000000右移8次,左移7次。花型4:置入00100000右移8次,左移7次 . 花型:置入11111

5、111右移8次,左移7次 移存器输出状态编码表状态花形1花形1花形256置数s1=s0=1100000000100000011111111右移010000000010000011111111S1=0,S0=10010000000010000.11111111000100000000100011111111000010000000010011111111000001000000001011111111000000100000000111111111000000011000000011111111100000000100000011111111左移000000011000000011111111S

6、1=1,S0=0000000100000000111111111000001000000001011111111000010000000010011111111000100000000100011111111001000000001000011111111010000000010000011111111六. 单元电路设计 见图1,3,4,6.七总体电路图八关键波形图见图2,5九调试过程中遇到的问题与其解决的方法 在电路设计中,我们选择了很多方案,开始时主要是朝着改变74LS194的SL和SR出发,为此大费周章增加使用了74LS153进行电路组装,之后发现虽能基本达到变化花样数,而且某些花样很有

7、代表性,但是其总体变化规律性不强,重复变化时间长,接线又太多,于是舍弃,后来想到了置数进74LS194,虽然总体变化没那么漂亮,但是变化规律性比较强,对于我们来说比较好驾驭。最后干脆不用74LS153,这样既解决了线路问题,而已又达到了预期的目的。在电路组装过程中,遇到的最大问题是,起初考虑不周全,芯片分布不够合理,出现了许多“特长线”。不但影响布线速度,而且也会给后来的调试带来不必要的麻烦。当时已经布线不少,不可能重新开始,再三权衡,最后只移动了一个芯片,问题就得到了很大改善。其次就是布线,因为要求不准交叉,且横平竖直,所以在保证连通的情况下,在布线上也下了不少工夫。 调试过程中,第一轮用万

8、用表欧姆档测试,就遇了实验板上有插孔不通的情况,导致芯片不能正常工作。相对于别的办法,我选择了导线显式连通,因为其更明晰,更易实现。对于高阻导线则只能换掉。第二轮接电后,用万用表的电压档测试单元电路的状态。如:时钟信号电路的信号是否正常产生,控制信号电路中的计数器能否正常计数,最后在整体上测试一遍。在整个调试完成后,却遇到的新问题:彩灯演示时有时正常有时混乱。在排除其它可能的情况下,我仔细检查各端子的连接情况,发现清“0”端在清“0”后悬空了。将其插到电源正极后,发现问题解决了。十心得体会 课程设计刚开始,拿着选定的题目不知如何入手。毕竟课程设计不同于实验课,电路图都要自己设计。静下心来,仔细

9、分析题目,再加上指导老师的说明与提示,心中才有了谱。将整个系统根据不同的功能化分成模块,再分别进行设计,逐个攻破,最后再将其整合即可。 由于第一个面包板的接触极为不好,使我检查的过程进行得极为缓慢。当然也使我积累了不少检查错误的经验。当新芯片拿到的时候,一定要检查芯片本身的好坏。这是很关键的一步,不要以为新的就一定是好的。如果最后板子都连好了,还没有发现芯片是坏的话,你的错误是无论如何也查不出来的。接下来要用万用表检查所有要用的线路是否连接正常,这也是一个必不可少的过程,虽然表面看起来比较麻烦,但是一旦某些线有问题,在联接好电路之后是很难检查出来的。其次在连线过程中做到认真,细心。这也是决定设

10、计成败的关键 这次试验是我明白了很多问题,做任何事情都不能马马虎虎,仔细认真,这是做好事情的关键,同时明白了和同学团结合作,这样才能达到共同提高,也是决定成败的重要因素。也明白了一个我以前一直轻视的问题,那就是:书本并不能到表一切,即使你了解书本知识再精确,也不能代表你在制作时表现良好。最重要的是,锻炼了自己的动手能力,独立思考的能力,锻炼了自己思考问题,发现问题,并解决问题的能力,在这次数字电子技术基础课程设计中让我学到了很的,为自己以后的实践工作打下了一定的基础,在此衷心的感指导老师,感在设计中帮助过我的同学。十一参考文献(1)数字电子技术基础第四版(清华大学电子学教研组编)1.1 电子密

11、码锁概述 随着社会物质财富的日益增长和人们生活水平的提高,安全成为现代居民最关心的问题之一。而锁自古以来就是把守门的铁将军,人们对它要求甚高,即要求可靠地防盗,又要使用方便,这也是制锁者长期以来研制的主题。传统的门锁既要备有大量的钥匙,又要担心钥匙丢失后的麻烦。另外,如:宾馆、办公大楼、仓库、保险柜等,由于装修施工等人住时也要把原有的锁胆更换,况且钥匙随身携带也诸多便。随着单片机的问世,出现了带微处理器的密码锁,它除具有电子密码锁的功能外,还引入了智能化、科技化等功能。从而使密码锁具有很高的安全性、可靠性。目前西方发达国家已经大量应用智能门禁系统,可以通过多种的更加安全更加方便可靠的方法来实现

12、大门的管理。但电子密码锁在我国的应用还不广泛,成本还很高,希望通过不断地努力使电子密码锁能够在我国与居民日常生活中得到广泛应用,这也是一个国家生活水平的体现。很多行业的许多地方都要用到密码锁,随着人们生活水平的提高,如何实现家庭或公司的防盗这一问题也变的尤其突出,传统的机械锁由于其构造简单,被撬的事件屡见不鲜,再者,普通密码锁的密码容易被多次试探而破译,所以,考虑到单片机的优越性,一种基于单片机的电子密码锁应运而生。电子密码锁由于其性高,使用灵活性好,安全系数高,受到了广大用户的亲睐。设计本课题时构思的方案:采用以AT89C2051为核心的单片机控制方案;能防止多次试探而不被破译,从而有效地克

13、服了现实生活中存在的许多缺点。1.2 本设计主要任务(1)共8位密码,每位的取值围为18。(2)用户可以自行设定和修改密码。(3)按每个密码键时都有声、光提示。(4)若键入的8位开锁密码不完全正确,则报警5秒钟,以提醒他人注意。(5)开锁密码错3次要报警10分钟,报警期间输入密码无效,以防窃贼多次试探密码。(6)键入的8位开锁密码完全正确才能开锁,开锁时要有1秒的提示音。(7)密码键盘上只允许有8个密码按键和1个发光管。锁有备用电池,只有部上电复位时才能设置或修改密码,因此,仅在门外按键是不能修改或设置密码的。(8)密码设定完毕后要有2秒的提示音。 以上是初步设定的电子密码锁的主要功能。1.3

14、 系统主要功能 本系统主要由单片机系统、键盘、报警系统组成。系统能完成开锁、超时报警、超次锁定、管理员解密、修改用户密码基本的密码锁的功能。除上述基本的密码锁功能外,还具有调电存储、声光提示等功能,依据实际的情况还可以添加遥控功能。本系统成本低廉,功能实用。第1节 电子密码锁硬件设计2.1 系统的硬件构成与功能根据总体要求分析,该密码锁电路所需要的I/O口线少于15个,所以可选择质优价廉的AT89C2051,而且不需要外接程序存储器和数据存储器与其它扩展部件。电子密码锁由电路和机械两部分组成,此次设计的电子密码锁可以完成密码的修改、设定与非法入侵报警、驱动外围电路等功能。从硬件上看,它由六部分

15、组成,分别是:LED显示器,显示亮度均匀,显示管各段不随显示数据的变化而变化,且价格低廉,它用于显示键盘输入的相应信息;无须再加外部EPROM存储器,且外围扩展器件较少的AT89C52单片机是整个电路的核心部分;振荡电路为CPU产生赖以工作的时序;显示灯是通过CPU输出的一个高电平,通过三极管放大,驱动继电器吸合,使外加电压与发光二极管导通,从而使发光二极管发光,电机工作。现在来进行修改密码操作。修改密码实质就是输入的新密码去取代原来的旧密码。密码的存储用来存储一位地址加1,密码位数减1,当八个地址均存入一位密码,即密码位数减为零时,密码输入完毕,此时按下确认键,新密码产生,跳出子程序。为防止

16、非管理员任意的进行密码修改,必须输入正确密码后,按修改密码键,才能重新设置密码。密码输入值的比较主要有两部分,密码位数与容任何一个条件不满足,都将会产生出错信息。当连续三次输入密码出错时,就会出现报警信息,LED显示出错信息,蜂鸣器鸣叫,提醒人注意。在电路中,P1口连接8个密码按键AN1AN8,开锁脉冲由P3.5输出,报警和提示音由P3.7输出。BL是用于报警与声音提示的喇叭,发光管D1用于报警和提示,L是电磁锁的电磁线圈。 图1 电子密码锁硬件电路图2.2.1AT89C2051单片机与其引脚说明AT89C2051单片机是51系列单片机的一个成员,是8051单片机的简化版与Intel MCS-

17、51系列单片机的指令和输出管脚相兼容。由于将多功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89C2051构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器件,减少了硬件开销,节省了成本,提高了系统的性价比。部自带2K字节可编程FLASH存储器的低电压、高性能COMS八位微处理器, AT89C2051是一个有20个引脚的芯片,引脚配置如图2所示。与8051相比,AT89C2051减少了两个对外端口(即P0、P2口),使它最大可能地减少了对外引脚下,因而芯片尺寸有所减小。图2 AT89C2051引脚配置AT89C2051芯片的20个引脚

18、功能为:VCC 电源电压。GND 接地。RST 复位输入。当RST变为高电平并保持2个机器周期时,所有I/O引脚复至“1”。XTAL1 反向振荡放大器的输入与部时钟工作电路的输入。XTAL2 来自反向振荡放大器的输出。P1口 8位双向I/O口。引脚P1.2P1.7提供部上拉,当作为输入并被外部下拉为低电平时,它们将输出电流,这是因部上拉的缘故。P1.0和P1.1需要外部上拉,可用作片精确模拟比较器的正向输入(AIN0)和反向输入(AIN1),P1口输出缓冲器能接收20mA电流,并能直接驱动LED显示器;P1口引脚写入“1” 后,可用作输入。在闪速编程与编程校验期间,P1口也可接收编码数据。P3

19、口 引脚P3.0P3.5与P3.7为7个带部上拉的双向I/0引脚。P3.6在部已与片比较器输出相连,不能作为通用I/O引脚访问。P3口的输出缓冲器能接收20mA的灌电流;P3口写入“1”后,部上拉,可用输入。P3口也可用作特殊功能口,功P3口同时也可为闪速存储器编程和编程校验接收控制信号。P3口特殊功能P3口引脚 特殊功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 INT0(外部中断0)P3.3 INT1(外部中断1)P3.4 T0(定时器0外部输入)P3.5 T1(定时器1外部输入)第3节 系统的软件设计图3给出了该单片码锁电路的软件流程图。图中AA1AA8以与ST

20、ART、SET、SAVE是程序中的标号,是为了理解程序而专门标在流程图的对应位置的,分析程序时可以仔细对照参考。31 系统主程序设计流程图(见附页)32 软件设计思想 软件任务分析环节是为软件设计做一个总体规划。从软件的功能来看可分为两大类:一类是执行软件,它能完成各种实质性的功能(如计算、显示、输出控制和通信等);另一类是监控软件,它是专门用来协调各执行模块和操作者的关系,在系统软件中充当组织调度角色的软件。这两类软件的设计方法各有特色;执行软件的设计偏重算法效率,与硬件关系密切,千变万化;监控软件着眼全局,主要处理人机关系,特点是逻辑严密、千头万绪。本设计要完成的软件任务主要有:一是键盘输

21、入的识别;二是8位LED的显示;三是密码的比较、修改、存储;四是报警和开锁控制电平的输出。 根据以上任务,结合硬件结构,可以将键盘输入的识别用来作为系统的监控程序(主程序),用显示程序来延时,不断查询键盘。如果有键按下,就得到相应的键值。结合当前系统所处的状态,调用不同的操作模块,实现相应的功能。而执行模块主要有数字输入模块、确定键模块、修改键模块、显示模块与报警模块。33 存储单元的分配该密码锁中RAM存储单元的分配方案如下:31H38H:依次存放8位设定的密码,首位密码存放在31H单元;R0:指向密码地址;R2:已经键入密码的位数;R3:存放允许的错码次数3与实际错码次数的差值;R4至R7

22、:延时用;00H:错码标志位。对于ROM存储单元的分配,由于程序比较短,而且占用的存储空间比较少,因此,在无特殊要求时,可以从0030H单元(其它地址也可以)开始存放主程序。34 系统源程序ORG 0000HAJMP START ORG 0030HSTART:ACALL BP MOV:R0,#31HMOV:R2,#8SET:MOV:P1,#0FFHMOV:A,P1 CJNE:A,#0FFH,L8AJMP SET L8: ACALL DELAYCJNE A,#0FFH,SAVEAJMP SET SAVE:ACALL BPMOV R0,A INC R0 DJNZ R2,SET MOV R5,#16

23、 D2S:ACALL BPDJNZ R5,D2SMOV R0,#31HMOV R3,#3 AA1:MOV R2,#8AA2:MOV P1,#0FFH MOV A,P1CJNE A,#0FFH,L9AJMP AA2L9:ACALL DELAYCJNE A,#0FFH,AA3 AJMP AA2AA3 ACALL BPCLR CSUBB A,R0INC R0 CJNE A,#00H,AA4 AJMP AA5 AA4:SETB 00H AA5:DJNZ R2,AA2 00H,AA6CLR P3.5L3:MOV R5,#8 ACALL BP DJNZ R4,L3 MOV R3,#3 SETB P3.5

24、AJMP AA1 AA6:DJNZ R3,AA7 MOV R5,#24 L5:MOV R4,#200L4:ACALL BP DJNZ R4,L4 DJNZ R5,L5 MOV R3,#3AA7:MOV R5,#40 ACALL BP DJNZ R5,AA7 AA8:CLR 00H AJMP AA1 BP:CLR P3.7 MOV R7,#250 L2:MOV R6,#124 L1:DJNZ R6,L1 CPL P3.7 DJNZ R7,L2SETB RET DELAY MOV R7,#20 L7:MOV R6,#125 L6:DJNZ R6,L6DJNZ R7,L7RETEND35 应用说明若

25、按键AN1AN7分别代表数码17,按键AN0代表数码8。在没有键按下时,P1.0P1.7全是高电平1,若某个键被按下,相应的口线就变为低电平0。假如设定的密码是61234578,当按键AN6被按下时,P1.6变为低电平,P1端口其余口线为高电平,此时从P1端口读入的数值为10111111,存到31H单元的密码值就是10111111,也就是BFH。依此类推,存到32H至38H单元的密码值分别是FDH、FBH、F7H、EFH、DFH、7FH、FEH。开锁时必须先按AN6,使从P1口读入的第一个密码值与31H单元存储的设定值一样,再顺序按AN1、AN2、AN3、AN4、AN5、AN7、AN0才能开锁

26、。否则不能开锁,同时开始报警。36 小结 该电子密码锁能充分利用了51系统单片机软、硬件资源,引入了智能化分析功能,提高了系统的可靠性和安全性,另外,电子密码锁若与串行通信结合在一起将会成为宾馆、工厂、学校等需要进行统一管理的建筑群不可缺的商品。 机电一体化的电子密码锁,其功能大大超过弹子锁,且性能更稳定、更安全。其特点,首先性好,其次编码可变;其三误码输入保护;其四停电不掉码;其五多种密码开锁方式,使用方便,没有单人开锁、二三人多种开锁方式。由于自身的优势,电子密码锁会受到越来越多人们的欢迎,使用会越来越广泛,同时,也将会被社会所接受认可,并与弹子锁平分秋色。1目录第一章论证方案11.1 方

27、案一11.1.1 硬件选择与说明11.1.2 原理框图与原理11.1.3 经济与应用论证21.2 方案二21.2.1 硬件选择与说明21.2.2 原理框图与原理21.2.3 经济与应用论证3第二章总体设计32.1 总体设计32.2 系统工作原理4第三章硬件设计43.1 键盘显示模块电路图43.2 键盘扫描模块功能43.3键盘扫描模块的工作原理53.4 数码管显示原理5第四章软件设计64.1软件设计思想64.2程序流程图6第五章编码与调试125.1源程序代码125.2硬件调试195.3软件测试19第六章总结20微机课程设计报告+八路抢答器第一章 论证方案本设计以微机原理与接口技术为基础,以实验箱

28、为工具,完成PC机键盘控制的智能抢答器设计。该智能抢答器包括8088最小应用系统整体设计模块、键盘处理模块(DOS调用)、答题计时与声光报警模块、LED数码管显示模块。选用8086作为微处理器、扩展可编程并行I/O接口8255A芯片、可编程定时计数芯片8254、可编程中断控制器8259A(或不用)、LED数码管与键盘和发光二极管等元件,制定方案如下:1.1 方案一1.1.1 硬件选择与说明选用8255A,8254,8259,试验箱键盘显示区。(1)8254作为定时器使用。(2)8259利用IR0端作为定时到的中断引入端,IR2端作为开始键按下的中断引入端IR3端作为清零键按下的中断引入端IR4

29、端作为暂停键按下的中断引入端IR5端作为退出键按下的中断引入端。(3)8255A作为并行输入输出,A口接键盘显示区,C口接灯光报警系统,B口输出位码。(4)键盘显示区由四个LED数码管和12个按键组成。1.1.2 原理框图与原理利用8255A,8259,8254,键盘显示区共同实现,其中8255A作为并行输出输入,8259作为定时到的中断采集,8254作为定时。其中键盘显示区中KL1-KL4作为行,KH1-KH4作为列,当KL1-KL4为高电平时四个数码管选通,当给数据线送数据时将显示所要显示的数据。当KL1-KL4与KH1-KH4共同配合使用时可作为键盘扫描读入使用并在LED数码管上显示按下

30、的键对应的数值。如图1-1所示:60s倒计时模块8086CPULED数码显示模块键盘输入模块声光报警模块图1-1 硬件原理框图1.1.3 经济与应用论证对于这种方案,8259中断的引入使程序更易读,更简单一些,操作相对简单一些,但硬件相应增多,费用也相应增多。1.2 方案二1.2.1 硬件选择与说明选用8255A,8254,8259,实验箱键盘显示区。1.2.2 原理框图与原理利用8255A的A口,C口作为并行输入输出,其中C口定义为高四位输出,低四位输入,A口定义为输出,B口定义为输出。利用8254的通道0和1作为红灯亮3秒定时器,绿灯亮定时器,而8254的通道2用来接黄灯和蜂鸣器具体的功能

31、实现:通过8255端口C来扫描键盘输入,并有一定的削抖功能。信号传输至CPU进行处理。通过软件进行倒记时,进行加减分,送LED显示。信号灯,蜂鸣器作相应的反应。硬件原理框图如下图所示:答题计时显示模块CPU 82558284LED显示模块 8254 声光报警模块 键盘扫描模块图1-2 原理框图1.2.3 经济与应用论证对于这种方案可以看出,硬件设备较少设计,避免了8259的使用,节约了设计成本,软件编程也并不是很复杂,相对于方案一有一定优势。但在调试中由于软件相对复杂会使运行过程稍微复杂,但可以采用整块运行调试,但须对程序非常熟悉。方案比较:方案二采用扫描,没有用到8259,程序编制简单,但是

32、cpu耗费了更多的时间在扫描,效率相对来说较低。方案一采用中断,程序结构化更为清晰,且cpu少了循环扫描的时间,效率较高。但是多用了一个8259中断控制芯片,程序编制上涉与到中断服务子程序的编写,稍显复杂。可见两种方案各有优劣。方案选择:经过对比,先采用更实用、经济的方案二,完成基本和扩展功能。若有时间,再采用方案一完成实验。第二章 总体设计2.1 总体设计总体设计框图如图1-2。2.2 系统工作原理本设计主要是以8088为核心,通过加上必要的支持芯片,比如时钟电路、地址锁存器、译码器、总线驱动器以与存储器和I/O接口电路与基本外围设备,构成一台完整微机系统。通过8255A与外部键盘相连,工作

33、方式为定时扫描,利用定时器产生中断、CPU响应中断后对键盘进行扫描,或软件定时扫描,并在有键按下时转入键功能处理程序。将8255A端口C的上(输入方式)、下(输出方式)半部分分别用作键盘的行线和列线,程序使某行为低电平,然后读入并查询列值;如果列值中有某位为低电平,则说明行列交叉点处的键被按下;否则扫描下一行,直到扫描全部行线。8255A的端口A用来输出显示字符;设置TAB为LED段选码表的首地址,要显示的数字的地址正好为起始地址加数字值,其地址存放着对应于该数字值的显示代码。8255A的端口B用来控制LED的显示位,即位控端口,在软件的设计上通过逐个接通8位LED,把A口输出的代码送到相应的

34、位上显示,以减少硬件开支。利用8254产生定时,通道0用于60S倒计时定,定时时间到蜂明器发出声响,黄灯闪烁,由裁判控制答案正确与否,这两个通道分别用来定时3S,答案正确绿灯亮3秒,LED显示的数据加10分,否则红灯亮3秒,数据减10分。第三章 硬件设计3.1 键盘显示模块电路图图3-1 键盘显示电路图3.2 键盘扫描模块功能键盘扫描模块的功能是通过8255扩展口实现对选手抢答信号的确定。1-8号选手中先按下按键者,LED数码管显示其选手(后按下无效)。 选手按下答题结束键,停止倒记时。 若该选手回答正确,裁判按加分键;错误按减分键。3.3键盘扫描模块的工作原理为减少引线,键盘采用矩阵式。键盘

35、的识别采用行扫描法,程序使某行为低电平,则说明行列交叉点处的键被按下,然后,再具体确定按下的是哪个键。为此先使所在行输出为0,再检查列线是否有0。如果有零的话,此时由于不能确定闭合键所在的行,于是再用行扫描法来具体定位。如果读得数据全部为1,则说明无键闭合。硬件上将8255端口C的上、下半部分分别用作键盘的行线和列线。用电平逻辑开关输出高低电平来代替键盘按键。3.4 数码管显示原理数码管的段位顺序如右图所示:一般来说在一个字节中按照abcdefg dp的顺序放置字型码,比如在一个“共阴极”数码管上要显示“1”,则b、c段需被点亮,因此在段选线中写入60H。对应规则:a-D7 b-D6c-D5d

36、-D4e-D3f-D2g-D1 图3-2数码管显示dp-D0图3-3 4位8段LED动态显示器电原理图LED显示器的显示方法有两种静态显示法和动态扫描显示法。静态显示就是每一个显示器各笔画段都要独占具有所存功能的输出口线,CPU把要显示的字符代码送到输出口上,就可以是显示器显示所需的数字后符号。但由于它站用的I/O口线较多,硬件成本高。所以我们选用了动态扫描显示法。第四章 软件设计4.1软件设计思想本次实验的软件设计思想如下:利用8255A的A口,C口作为并行输入输出,其中C口定义为高四位输出,低四位输入,A口定义为输出,B口定义为输出。利用8254的通道0和1作为红灯亮3秒定时器,绿灯亮定时

37、器,而8254的通道2用来接黄灯和蜂鸣器具体的功能实现:通过8255端口C来扫描键盘输入,并有一定的削抖功能。信号传输至CPU进行处理。通过软件进行倒记时,进行加减分,送LED显示。信号灯,蜂鸣器作相应的反应。至此整体思路已如上所描述。整个编程思想如下所述:首先,为了使主程序易读,本次设计采用了将多个功能的模块编成为子程序的方法,所用程序为:键盘显示子程序,键盘扫描子程序,60秒倒记时子程序,声光报警子程序。第一,初始化8255A,8254,给8254送初值。这一部分主要完成8255A、8254的初始化。第二,查询是否有键盘按键按下,若没有按下则继续查询,8254仍未开始定时,直到检测出有按键

38、按下为止才可以开始定时。第三,当开始键按下,给8254送初值开始定时,然后用TEST指令来进行查询。第四,当定时60S开始时每进行一次循环要判断是否有答题结束键按下。如果有,结束60S倒记时,若没有,倒记时至0并打开声光报警系统;第五,通过8255检测键盘是否有“正确”键按下。如果有,则调用加法指令,并绿灯闪烁。否则调用减法指令,红灯闪烁。因此,在设计该软件时考虑到程序设计的基本要求中要求:程序应简单、易读、便于读者理解,更重要的是设计者自身的设计思想应清晰,编制的程序应易于理解。所以本次设计采用的软件思想如上所述。4.2程序流程图该设计的程序流程图可以分为五个:主程序流程图、键盘显示子程序流

39、程图、键盘扫描子程序流程图、60秒倒记时声光报警模块程序流程图、计分模块程序流程图。注:程序流程图如下所示:图4-1 主程序流程图60秒倒记时声光报警模块程序流程图:图4-2 声光警报模块流程图键盘扫描子程序流程图:图4-3 键盘扫描流程图计时分部分程序流程图:图4-4 设计部分流程图键盘显示子程序流程图:图4-5 键盘显示流程图第五章 编码与调试5.1源程序代码:DATASEGMENTKEYV DB ?P8255A EQU 0E180HP8255B EQU 0E184HP8255C EQU 0E182HP8255_CTRLEQU 0E186HP82540 EQU 0E190HP82541EQ

40、U 0E192HP82542 EQU 0E194HP8254_CTRLEQU 0E196HDIS_TABLEDB0C0H,0F9H,0A4H,0B0H,099H,92H,82HDB0F8H,080H,90H,88H,83H,0C6H,0A1HDB86H,8EH,0FFH,8CH,89H,8EH,0BFH,0F7H DIS_BIT0DB?DIS_BIT1 DB?DIS_BIT2 DB?DIS_BIT3DB ?NUM DB ?BAIDB ?TENSDB ?SECONDDB ?FENDW ?CHUNDB?SHIEQU000AHCHUSHUDB ?SHANG DB ?YUSHU DB ?DATAEND

41、SCODESEGMENTASSUMECS:CODE,DS:DATASTART;MOVAX,DATAMOVDS,AXMOVBAI,0MOVTENS,6MOVSECOND,0START1:MOVAL,10001000BMOVDX,P8255_CTRLOUTDX,ALMOVAL,00010001BMOVDX,P8254_CTLOUTDX,ALNEXT:CALL KEYMOVAL,BLCMPAL,07JANEXTADDBL,1MOVMUM,BLCALL DISPLAY1MOVCX,60MOVAL,00010001BMOVDX, P8254_CTLOUTDX,ALMOVAL,32HMOVDX, P825

42、4_1OUTDX,ALPUSH AXPUSH BXPUSH CXPUSH DXLEA BX,DIS_TABLEMOVAX, 60MOVCX,60LOP:MOVDX, P8255_BOUTDX,0FBHCALLDJSXSXLATMOVDX, P8255_AOUTDX ,ALMOVAL,AHXLATMOVDX, P8255_BOUTDX,0F7H MOVDX, P8255_AOUTDX,ALCALLDELAY1SMOVDX,P8255_CINAL,DXTESTAX,0F3HJZLL DECAXLOOPLOPCALLSGBAOJINGLL:POPDX POPCX POPBX POPAXCALLKEY

43、WARNING:MOVAX,FENSDIVAX,100MOVBAI,ALMOVAL,AHMOVAH,0DIV10MOVTENS,ALMOVSECOND,AHCALLDISPLAY1CALLKEYMOV AL ,BL CMPAL,10 JLWARNING CMP AL,11 JG WARNING CMP AL,10 JE JIA CLC MOV AX,FENSSUB AX,10 MOVFENS,AX DIVAX,100MOVBAI,ALMOVAL,AHMOVAH,0DIV10MOVTENS,ALMOVSECOND,AHCALLDISPLAY1 MOV DX,8284_CTRL MOV AL,10

44、010001B OUT DX,AL MOV DX,8254_1 MOV AL,96H OUT DX, ALJIA:MOV AX,FENS(NUM-1) ADD AX,10 MOV FENS,AXDIVAX,100MOVBAI,ALMOVAL,AHMOVAH,0DIV10MOVTENS,ALMOVSECOND,AHCALLDISPLAY1MOV DX,8254_CTRL MOV AL,00010001B OUT DX,AL MOV DX,8254_2 MOV AL,96H OUT DX, ALCHAXUN:CALL DISPLAY1 MOV DX,P8255_C INAL,DX CMPAL,7B

45、H JNE CHAXUN MOV AL,00000000B MOV DX,P8255_B OUT DX,ALJMP START1KEYPROCFAR MOV DX,P8255_CTRL MOV AL,10001000B OUT DX,AL CALL KEYSCAN CMP BL,0FFH JNZ WAIT RETWAIT:MOV KEY_V,BL CALL DELAY CALL KEYSCAN CMP BL,KEY_V JZ RELEASE RETRELEASE:MOV AL,0F0H MOV DX,P8255_C OUT DX,AL IN AL,DX ANDAL,0F0H CMP AL,0F

46、0H JNZ RELEASE RETKEYENDPKEYSCANPORCFARKEYSCAN:MOV AL,0F0H MOV DX,P8255_C OUT DX,AL IN AL,DX AND AL,0F0H CMP AL,0F0H JNZ DONE MOV BL,0FFH RETDONE:MOV BL,0 MOV CL,0FEH MOV CH,3FROW:MOV AL,CL MOV DX, P8255_C OUT DX,AL RCL AL,1 MOV CL,AL IN AL,DX AND AL,0F0H CMP AL,0F0H JNZ FCOL ADD BL,4 DEC CH JNZ FRO

47、W RETFCOL:RCLAL,1 NC FCOL1 INC BL JMP FCOLFCOL1:RETKEYSCANENDP DISPLAY1PROCNEAR PUSH AXPUSHBX PUSH CX PUSH DX LEA BX,DIS_TABLEMOV AL,NUMXLATAND AL,01111111BMOV DIS_BIT0,AL MOV AL,BAIXLATMOV DIS_BIT1,ALMOV AL,TENSXLATMOV DIS_BIT2,ALMOV AL,SECONDXLATMOV DIS_BIT3,AL DIS_LOP1:MOVDX,P8255_B MOVAL,01HOUTD

48、X,ALMOVDX,P8255_AMOVAL,DIS_BIT0OUTDX,ALMOVCX,000LOOP$MOVDX,P8255_BMOVAL,02HOUTDX,ALMOVDX,P8255_AMOVAL,DIS_BIT1OUTDX,ALMOVCX,000LOOP$MOVDX,P8255_BMOVAL,03HOUTDX,ALMOVDX,P8255_AMOVAL,DIS_BIT2OUTDX,ALMOVCX,000LOOP $MOVDX,P8255_BMOVAL,04HOUTDX,ALMOVDX,P8255_AMOVAL,DIS_BIT3OUTDX,ALMOVCX,000LOOP$POP AXPOP

49、 BXPOP CXPOP DXRETDISPLAY1ENDPDJSXSPROCNEARMOV CHUSHU,10DIV CHUSHUMOV SHANG,ALMOV YUSHU,AHDJSXS ENDPDELAY1S PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXMOV BL,100DELAY:MOV CX,2801WAIT:LOOP WAITDEC BLJNZ DELAYPOP DXPOP CXPOP BXPOP AXRETDELAY1SENDPSGBAOJINGPROC FARPUSH AX PUSH BX PUSH CXPUSH DXCALL DELAY60S

50、MOV AL,00000000B MOV DX,P8254_CTRMOV AL,97HOUTDX,AL MOV DX,P8254-2 MOV AL,60OUTDX,ALJNZ DELAY2DEC DXJNZ DELAY1 MOV AL,00000000B MOV DX,P8254-2 OUT DX,AL POP DX POP CX POP BX POP AXPROCDELAY60SFAR MOV DX,60DELAY1:MOV BL,100DELAY2:MOV CX,2801WAIT1:LOOPWAIT1DECBLDELAY60SENDPSGBAOJINGENDPCODEENDSENDSTAR

51、T5.2硬件调试为了使每次实验都能准确进行,实验前先进行硬件调试。首先,检测LED数码管是否显示良好。其次,检测数码管为良好显示后。再检查8255A的三个输送端口A口B口C口是否可以正常输出输入,作为并行端口使用。再次,查8254的良好性,只能通过简单小程序单步进行检测,或用示波器来进行检测。最后确定实验时排线连接正确,与电源开关正确。尽量避免长时间将实验箱处于开电源状态以使实验箱温度过高。5.3软件测试在进行软件调试时遇到了许多问题,下面叙述如下:在刚开始编程时,各种功能大部分是由主程序来完成的。由于主程序过于复杂,可读性不高。使得在以后的程序的调试中遇到了很大的麻烦。后来把主程序的部分功能转化成子程序来实现,并在一些重要的地方增加了注释,使的程序的可读性大大加强。调试也变的比较简单了。到此基本解决了第一个问题。在编程时,子程序的调试也是相当重要,由于子程序不可避免的使用AXBXCXDX通用寄存器一个或几个。使得原主程序中的通用寄存器的容很容易被覆盖,对

温馨提示

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

评论

0/150

提交评论