




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理与接口技术 -电子钟实验 2010年1月6日 键盘实验一 实验任务及要求 任务:1、掌握综合使用基本输入输出设备、通用接口芯片、专用接口芯片的方法;2、掌握实时处理程序的编制和调试方法。要求设计一个定时显示装置,用实验仪左侧的六个LED数码管显示时间,时间显示格式为24小时制。分秒值为59分55秒时开始报时,每秒钟蜂鸣器鸣叫一声,到整点报时停止。0123456789GS 用小键盘控制时钟的启停和时钟的设置,键的定义参见左图键值具体定义如下:G键(启停键) 程序启动后,按下该键时 钟启动; 再次按下该键,暂停计时,显示当前时间。S键(设置键) 按下S键后,为时钟设置时、分、秒初始值。二 硬件连线 键盘的控制、LED显示模块:采用74系列模块控制键盘的行信号Q_0、Q_1、Q_2、Q_3分别与开放的输入信号Q0、Q1、Q2、Q3相连,键盘的列信号P_0、P_1、P_2和开放的输出信号P0、P1、P2相连。74芯片的片选信号CS1接地址译码信号340H, CS2接地址译码信号360H。时间的精确定时:用8254定时器0产生25ms的中断信号;8254的片选CS连地址输出端320H,A0,A1分别连地址总线A2,A3,GATE0连+5V,CLK0连74LS393分频输出的47K输出端,OUT0连接到8259的IRQ0整点报时控制:由8255模块控制;PC0直接与蜂鸣器相连,CS_4连接到实验仪中部的地址输出端CS_4中断处理模块:由8259控制8259的片选CS-1连地址输出300H, INT1连总线输入INTR,8259模块的INT-A连总线的INTA,8259的SP/1连+5V, 8259的IRQ0连接到8254的 OUT0。没用 键盘键盘扫描与显示实验 一、器件使用要点 本实验中使用的核心器件是由74HC245和74HC273构成简单的并行输入/输出口。74HC245是一个双向三态驱动器,它的第19脚/G是片选通信号,只有在/G为低电平时,74HC245才会工作,否则74HC245的输出为高阻态;而第1脚DIR是方向选择,当DIR=1时,74HC245的数据方向是从AB,DIR=0时,数据方向从BA。74HC273是一个锁存器,它的第1脚/CLR是清零脚,当/CLR=0时,74HC273的输出为0;第11脚CLK是时钟输入脚,当该端输入一个上升沿,74HC273就会把数据输入端D0-D7的数据锁存住并输出,直到下一个上升沿的到来才会改变。 二、实验原理 1、通用并口模块原理图: 图(1)由一片74HC245作为键盘的行扫描电路(键盘的列扫描信号由一片74HC273提供,如图2所示),74HC245的P0-P3已经分别接到4*3的小键盘的4行。另外,这片74HC245的引脚和4*3小键盘行、列都有引出相应的接插口,所以也能另作它用,例如用74HC245来驱动发光二极管,或者与适当的输入输出器件(例如8255)相配合就可以进行键盘扫描实验。该片74HC245的/G端引了出来(KEYCS0)作为它的片选信号端。 图(1) 图(2)中左边的74HC273实现数码管的段码驱动,右边的74HC273除了与图(1)中的74HC245配合,作为键盘的行列扫描信号,来确定那个键被按下,还作为6个共阴数码管的位驱动。该模块的6个共阴数码管的段引脚(分别是KEY模块的的a、 b、c、d、e、f、g、dp)和位引脚(分别是KEY模块上的DS1、DS2、DS3、DS4、DS5、DS6)都引出来,如果用其它的驱动模块也可以控制数码管的显示。因为这两片74HC273都只作为输出用,所以用一片74HC32对IOW和它们各自的片选信号进行逻辑与运算,仅当是写操作时才会选中它们,以此避免不该它们工作时它们却工作的情况发生: 在KEYCS1和IOW有效(低电平)的前提下,74HC32的输出第6脚有效,对应的就是控制位选的74HC273被选通。 在KEYCS2和IOW有效(低电平)的前提下,74HC32的输出第8脚有效,对应的就是控制段选的74HC273被选通。 图(2) 2、数码管字型编码表: 从上面的原理图可以看出,本模块显示部分由个共阴极数码管组成,并由两片74HC273分别对位选和段选进行控制,位选的选通端子为KEYCS1,段选的选通端子为KEYCS2,相应的数码管字型编码如表1所示。 三、实验示例:(可参考随机的演示程序key.asm) 该示例程序不停的扫描键盘,当扫描到有键按下时就把该键的键值(即12个按键的排列顺序)送到数码管上显示。 硬件线路连接示例: 数码管的6根位控制信号线DS1DS6分别接至位选74HC273的输出Q0Q5; 译码地址输出端CS3接至KEYCS0; 译码地址输出端CS4接至KEYCS1; 译码地址输出端CS5接至KEYCS2; GAL的输出(译码电路可看前面的地址译码电路部分): x:表示可以取任意值,这里取“0” 按照如上的硬件连线示例可得: 74HC245的地址 340H;段选锁存器的地址 360H;位选锁存器的地址 380H; 下面是一个只有显示功能没有键盘扫描的小程序,可以参考一下: .486 DATA SEGMENT AT 0 USE16 ORG 1000H COUNT DB ? DATA ENDS CODE SEGMENT USE16 ASSUME CS:CODE ORG 3000H BEG: JMP START TAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH DPORT1 EQU 380H DPORT2 EQU 360H START: MOV AX,DATA MOV DS,AX MOV CL,6 KK: MOV AL,CL MOV BX,OFFSET TAB XLAT TAB MOV DX,DPORT1 OUT DX,AL NOP MOV DX,DPORT2 MOV AL,0FFH OUT DX,AL NOP NOP JMP KK CODE ENDS END BEG 三、程序流程图主程序初始化各段寄存器及相关变量初始化8255、8254、8259芯片设置中断向量,开放8259中断屏蔽开放处理器中断中断服务程序保护现场NY判断时间是否不小于59分55秒 报时N扫描键盘YG键?调用启停子程序YS键?调用设置时间子程序COUNT加1YCOUNT=40?修改时间,调用ADDONE子程序COUNT清0显示时间,调用显示时间子程序N结束中断(发EOI命令)恢复现场中断返回四、实验源代码.486p DATA SEGMENT AT 0 USE16ORG 1000HHOUR DW ?MIN DW ?SEC DW ?ST DB ?COUNT DB ?DATA ENDSCODE SEGMENT USE16 ASSUME CS:CODE,DS:DATAORG 1500H BEG:JMPSTARTTAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,00H ;0F的共阴极七段译码表 00H表示不显示任何东西KEYCOD DB 0EEH,0DEH,0BEH,0EDH,0DDH,0BDH,0EBH,0DBH,0BBH,0E7H,0D7H,0B7H ;行列编码值KEYVAL DB 0,1,2,3,4,5,6,7,8,9,0AH,0BH ;所有键的键面值PORT1EQU340H ;数码管段选端口 PORT2EQU360H ;数码管位选端口,键盘矩阵的行列端口START: MOVEAX,60000000HMOV CR0,EAX MOV AX,DATAMOV DS,AXMOV HOUR,0203H ;小时分钟以及秒的初始化MOV MIN,0509HMOV SEC,0502H LEA BX,TABMOV ST,0 ;开始暂停标志位置0MOV COUNT ,0 ;中断次数计数初始值为0;8255初始化 ,用于产生报时的脉冲 MOV DX,20FH ;利用左四的8255,控制口为20FHMOV AL,10000000B ;C口输出OUT DX,ALMOV DX,20BHL ;C0输出1,蜂鸣器不响 MOV AL,0FFH OUT DX,AL ;8254初始化,用于产生周期为25ms的中断MOV AL,00110110B ;计数器0,先低后高,方式三,二进制MOV DX,32cH ;写往控制口OUT DX,ALMOV DX,320H ;计数器0写初值:47KHz*25msMOV AX,1175OUT DX,ALMOV AL,AHOUT DX,AL ;8259初始化 CLI :关中断MOV DX,300H ;ICW1MOV AL,00010011BOUT DX,AL MOV DX,308H ;ICW2MOV AL,08H ;IR0中断类型号为08HOUT DX,ALMOV AL,00000001B ;ICW4OUT DX,AL MOV AL,0FEH ;IR0开屏蔽 OUT DX,AL XOR AX,AX ;装载中断向量 MOV ES,AXMOV DI,08H*4 MOV AX,OFFSET INTSR MOV ES:DI,AX MOV AX,SEG INTSR MOV ES:DI+2,AX STI ;开中断 JMP $ INTSR PROC ;中断服务程序 CMP MIN,0509H ;比较当前时间是否在59分55秒00分00秒之间 JL NEXT1 CMP SEC,0505H JL NEXT1 MOV DX,20BH MOV AL,00H ;蜂鸣器低有效,报时 OUT DX,AL JMP NEXT2NEXT1: CMP MIN,0 JNE NEXT3 CMP SEC,0 JNE NEXT3 MOV DX,20BH MOV AL,00H ;蜂鸣器低有效,报时 OUT DX,AL JMP NEXT2NEXT3: MOV DX,20BH MOV AL,0FFH OUT DX,ALNEXT2: CMP COUNT,20 ;用8255产生0.5ms的蜂鸣 JLE NEXT4 MOV DX,20BH MOV AL,0FFH OUT DX,ALNEXT4: CALL KEYCHECK ;检测有无键按下 CMP AL,0AH ;启停键按下,调用启停程序 JNZ NEXT5 CALL TSTART JMP NEXT6NEXT5: CMP AL,0BH ;设置键按下,调用设置时间程序 JNZ NEXT6 CALL SETTIMENEXT6: INC COUNT ;当COUNT直为40时,加一秒,之后置0 CMP COUNT,40 ;25ms*40=1s JB NEXT7 CALL ADDONE MOV COUNT,0NEXT7: CALL SHOW ;显示时间 MOV AL,20H ;发EOI命令,结束中断 MOV DX,300H OUT DX,AL IRETINTSR ENDPTSTART PROC ;控制暂停和开始 CMP ST,00H JNE L1 DEC ST JMP L2 L1: INC ST L0: CALL KEYCHECK CMP AL,0AH JZ L2 CALL SHOW JMP L0 L2: RETTSTART ENDPADDONE PROC ;加1秒子程序 MOV AX,SEC ;当前秒个位为9,加1后变0,十位加1 CMP AL,9 JE N1 INC AL MOV SEC,AX JMP N6N1: INC AH MOV AL,0 CMP AH,6 ;十位加1后为6,则秒变为00,分钟个位加1 JE N2 MOV SEC,AX JMP N6N2: MOV AX,0 MOV SEC,AX MOV AX,MIN ; 当前分钟个位为9,加1后变0,十位加1 CMP AL,9 JE N3 INC AL MOV MIN,AX JMP N6N3: INC AH MOV AL,0 CMP AH,6 ;十位加1后为6,则分钟变为00,小时个位加1 JE N4 MOV MIN,AX JMP N6N4: MOV AX,0 MOV MIN,AX MOV AX,HOUR INC AL CMP AX,0204H ;小时加1后与24比,相等,则变为0 JE N5 MOV HOUR,AX JMP N6N5: MOV AX,0 MOV HOUR,AXN6: RETADDONE ENDP SETTIME PROC ;设置时间子程序 LEA BX,TAB MOV HOUR,0 MOV MIN,0 MOV SEC,0 NOP NOPL1: CALL KEYCHECK ;调用KEYCHECK,无键按下时,AL中值为0CH CALL DELAY CMP AL,0CH JNZ L2 JMP L1L2: CMP AL,02H JG L1 ;设置小时十位时,将其他各位数码管灭掉及对应的七段译码表0CH MOV AH,AL MOV BYTE PTRHOUR+1,AL MOV BYTE PTRHOUR,0CH MOV MIN,0C0CH MOV SEC,0C0CHL3: CALL SHOW CALL KEYCHECK ;设置小时的个位 CALL DELAY CMP AL,0CH JZ L3 MOV AH,BYTE PTRHOUR+1L4: CMP AX,0204H JGE L1 MOV HOUR,AXL5: CALL SHOW CALL KEYCHECK ;设置分钟的十位 CALL DELAY CMP AL,0CH JZ L5L6: CMP AL,06H JGE L1 MOV AH,AL MOV BYTE PTRMIN+1,AL L7: CALL SHOW CALL KEYCHECK ;设置分钟的个位 CALL DELAY CMP AL,0CH JZ L7 MOV AH,BYTE PTRMIN+1 L8: CMP AX,0509H JG L1 MOV MIN,AX L9: CALL SHOW CALL KEYCHECK ;设置秒的十位 CALL DELAY CMP AL,0CH JZ L9 L10: CMP AL,06H JGE L1 MOV AH,AL MOV BYTE PTRSEC+1,ALL11: CALL SHOW CALL KEYCHECK ;设置秒的个位 CALL DELAY CMP AL,0CH JZ L11 MOV AH,BYTE PTRSEC+1L12: CMP AX,0509H JG L1 MOV SEC,AXL13: CALL SHOW CALL KEYCHECK ;再次按键,启动计时 CALL DELAY CMP AL,0CH JZ L13 RETSETTIME ENDPKEYCHECK PROC ;判断有无键按下子程序 PUSH BX CALL CLEAR MOVDX,PORT2 INAL,DX ANDAL,0FH CMPAL,0FH JZEXIT ;有按键按下,延时消抖 NOP NOP ;再次确认是否有键按下 INAL,DX ANDAL,0FH CMP AL,0FH JZEXIT ;开始对每一列进行逐行扫描 MOVCX,3 MOVBL,0FEHNEXT:MOVAL,BL MOVDX,PORT2 OUTDX,AL NOP NOP INAL,DX AND AL,0FH CMP AL,0FH JNZ KEY ROLBL,1 LOOP NEXT JMP EXITKEY: SHL BL,4 OR AL,BL ;形成一个字节的键码信息存入AL,高4位为列信息低4位为行信息 LEA SI,KEYCOD LEA DI,KEYVAL MOV CX,12NEXT11: CMP AL,SI JZ FIND INC SI INC DI LOOP NEXT11 JMP EXITFIND: MOV AL,DI ;AL中内容为所按键的键面值 PUSH AX NOP NOPWAIT1: IN AL,DX ;判断按键是否已释放,若无则等待 AND AL,0FH CMP AL,0FH JNZ WAIT1 POP AX JMP EXIT2 EXIT:MOV AL,0CH EXIT2:NOP POP BX RETKEYCHECK ENDPSHOW PROC ;显示时间 MOV AX,HOUR XLAT MOV DX,PORT1 ;段选输出数据 OUT DX,AL MOV DX,PORT2 ;位选输出小时的个位 MOV AL,0C2H OUT DX,AL CALL DELAY CALL CLEAR MOV AL,AH XLAT MOV DX,PORT1 ;段选输出数据 OUT DX,AL MOV DX,PORT2 ;位选输出小时的十位 MOV AL,0C1H OUT DX,ALCALL DELAY CALL CLEAR MOV AX,MIN XLAT MOV DX,PORT1 ;段选输出数据 OUT DX,AL MOV DX,PORT2 ;位选输出分钟的个位 MOV AL,0C8H OUT DX,AL CALL DELAY CALL CLEAR MOV AL,AH XLAT MOV DX,PORT1 ;段选输出数据 OUT DX,AL MOV DX,PORT2 ;位选输出分钟的十位 MOV AL,0C4H OUT DX,ALCALL DELAY CALL CLEAR MOV AX,SEC XLAT MOV DX,PORT1 ;段选输出数据 OUT DX,AL MOV DX,PORT2 ;位选输出秒的个位 MOV AL,0E0h OUT DX,ALCALL DELAY CALL CLEAR MOV AL,AH XLAT MOV DX,PORT1 ;段选输出数据 OUT DX,AL MOV DX,PORT2 ;位选输出秒的十位 MOV AL,0D0H O
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 植保机转让合同范本
- 猪场转手出租合同范本
- 出兑押金合同范本
- 临时工人合同范本
- 出售泡沫机床合同范本
- 借钱合同范本模板简单
- 商铺转租合同范本简化
- 表面表面加工合同范本
- 外贸采购订单合同范本
- 小区维修合同范本简易
- 地基基础工程施工方法及基础知识课件
- 金风15兆瓦机组变流部分培训课件
- 2017年9月国家公共英语(三级)笔试真题试卷(题后含答案及解析)
- 膀胱镜检查记录
- 2021年西安陕鼓动力股份有限公司校园招聘笔试试题及答案解析
- 化工装置静设备基本知识
- 电脑节能环保证书
- 江西师范大学研究生院非事业编制聘用人员公开招聘1人(专业学位培养办公室助理)(必考题)模拟卷
- 2021社会保险法知识竞赛试题库及答案
- 罐头食品加工工艺课件
- 《排课高手》用户手册
评论
0/150
提交评论