ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:44.19KB ,
资源ID:5664330      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5664330.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机原理与接口技术课程方案设计书报告电子钟.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微机原理与接口技术课程方案设计书报告电子钟.docx

1、微机原理与接口技术课程方案设计书报告电子钟微机原理与接口技术课程设计报告 电子钟实验学院: 计算机学院指导教师:马学文一 实验任务及要求 任务:1、掌握综合使用基本输入输出设备、通用接口芯片、专用接口芯片的方法;2、掌握实时处理程序的编制和调试方法。要求设计一个定时显示装置,用实验仪左侧的六个LED数码管显示时间,时间显示格式为24小时制。分秒值为59分55秒时开始报时,每秒钟蜂鸣器鸣叫一声,到整点报时停止。0123456789GS 用小键盘控制时钟的启停和时钟的设置,键的定义参见上图键值具体定义如下:G键(启停键) 程序启动后,按下该键时钟启动; 再次按下该键,暂停计时,显示当前时间。S键(

2、设置键) 按下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整点报时控制

3、:由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。三、程序流程图 主程序 初始化各阶段寄存器及相关变量 初始化8254、8259、8255芯片 设置中断向量、开放8259中断屏蔽 开放处理器中断 扫描键盘 G键 S键 其他键Stop值取反Stop置0FF调用键盘扫描程序设置当前时分秒值Stop置为0 中断服务程序保护现场判断时间是否不小于5

4、9分55秒 报时扫描键盘G键?调用启停子程序S键?调用设置时间子程序COUNT加1COUNT=40?修改时间,调用ADDONE子程序COUNT清0显示时间,调用显示时间子程序结束中断(发EOI命令)恢复现场中断返回四、实验源代码.486p DATA SEGMENT AT 0 USE16 ORG 1000H HOUR DW ? MIN DW ? SEC DW ? SLL DB ? COUNT DB ?DATA ENDSCODE SEGMENT USE16 ASSUME CS:CODE,DS:DATAORG 1500H BEG:JMP START TAB DB 3FH,06H,5BH,4FH,66

5、H,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 ;所有键的键面值 PORT1 EQU 340H ;数码管段选端口 PORT2 EQU 360H ;数码管位选端口,键盘矩阵的行列端口START: MOV EAX,60000000H MOV CR0,EAX MOV AX,DATA MOV DS,AX M

6、OV HOUR,0203H ;小时分钟以及秒的初始化 MOV MIN,0509H MOV SEC,0502H LEA BX,TAB MOV SLL,0 ;开始暂停标志位置0 MOV COUNT ,0 ;中断次数计数初始值为0 ;8255初始化 ,用于产生报时的脉冲 MOV EAX,80808080H;控制字 MOV DX,20CH ;后面的是4个8255的控制端口20C-20F (这个地址由实验台决定) OUT DX,EAX ;初始化8255,A、B、C口均为方式0输出 MOV DX,20BH MOV AL,0FFH OUT DX,AL ;8254初始化,用于产生周期为25ms的中断 MOV

7、AL,00110110B ;计数器0,先低后高,方式三,二进制 MOV DX,32cH ;写往控制口 OUT DX,AL MOV DX,320H ;计数器0写初值:47KHz*25ms MOV AX,1175 OUT DX,AL MOV AL,AH OUT DX,AL ;8259初始化 CLI :关中断 MOV DX,300H ;ICW1 MOV AL,00010011B OUT DX,AL MOV DX,308H ;ICW2 MOV AL,08H ;IR0中断类型号为08H OUT DX,AL MOV AL,00000001B ;ICW4 OUT DX,AL MOV AL,0FEH ;IR0

8、开屏蔽 OUT DX,AL XOR AX,AX ;装载中断向量 MOV ES,AX MOV 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 N

9、EXT3 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:CMP SLL,0 JZ LOB CALL TSTARTLOB: CALL KEYCHECK ;检测有无键按下 CMP AL,0AH ;启停键按下,调用启停程序 JNZ NEXT5 CALL

10、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 SLL,0 JNZ R1 DEC SLLR

11、1: CALL KEYCHECK CMP AL,0AH JZ R2 CALL SHOW JMP R1R2 : INC SLL RETTSTART ENDP ADDONE 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

12、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

13、 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

14、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,ALL7: 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

15、: 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,AX L13: CALL SHOW CALL KEYCHECK ;再次按键,启动计时 CALL DELAY CMP AL,0CH JZ

16、 L13 RETSETTIME ENDPKEYCHECK PROC ;判断有无键按下子程序 PUSH BX CALL CLEAR MOV DX,PORT2 IN AL,DX AND AL,0FH CMP AL,0FH JZ EXIT ;有按键按下,延时消抖 NOP NOP ;再次确认是否有键按下 IN AL,DX AND AL,0FH CMP AL,0FH JZ EXIT ;开始对每一列进行逐行扫描 MOV CX,3 MOV BL,0FEHNEXT: MOV AL,BL MOV DX,PORT2 OUT DX,AL NOP NOP IN AL,DX AND AL,0FH CMP AL,0FH

17、JNZ KEY ROL BL,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 PO

18、P 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 CA

19、LL 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 ;位选

20、输出秒的个位 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 OUT DX,ALCALL DELAY CALL CLEAR RETSHOW ENDPDELAY PROC ;延时子程序 PUSH CX MOV CX,1000 LOOP $ POP CX RETDELAY ENDPCLEAR PROC ;使七段译码管全灭子程序 MOV AL,00H MOV DX,PORT1 OUT DX,AL MOV DX,PORT2 OUT DX,AL NOP NOP RETCLEAR ENDPCODE ENDS END BEG五、总结一周的课程设计到了尾声,在这几天中,通过电子钟实验,知道了很多自己的不足,例如,知识不会运用,经常翻书,以及查看相似的例子往实验上套,不过总算完成了实验,实验中遇到很多问题,例如,我的代码可以在一台实验箱上运行,结果良好,不过第二天换了台机子就不行了,数码管不能显示,有的时候蜂鸣器一直响,诸如此类。实验结尾,老师检查时,问了我一个问题:如果p-0和p-2得连线对调,会怎么样,我的答案是第一列和第三列的值对调。最后我的课程设计顺利完成。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1