汇编语言数字时钟设计_第1页
汇编语言数字时钟设计_第2页
汇编语言数字时钟设计_第3页
汇编语言数字时钟设计_第4页
汇编语言数字时钟设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、福 建 工 程 学 院课程设计课 程: 微机原理及接口课程设计 题 目: 数字时钟 专 业: 软件工程 班 级: 1101 座 号: 3110305110 姓 名: 程康 2013 年 9 月 18 日 1、 设计任务 数字时钟:实时显示时间于LED数码管,并可以修改时间,包括上调,下调,复位等。2、 总体方案设计与方案论证 1、时钟,前提需要脉冲的产生,根据8253能产生稳定的方波,故时钟脉冲的产生将由8253芯片实现。 2、此实验只需要精确到秒,所以,产生的方波,将是频率为1HZ。 3、时间显示采用实验箱上的6个LED数码管分别显示时、分、秒,采用动态扫描方式实现。 3、因为涉及到时钟显示

2、和控制两大功能,还有对到来的时钟脉冲接收和处理,在这里,将选用8255芯片,作为中间介质,对用户要求和接收到的脉冲信号进行处理,设置时间通过开关产生单脉冲8255的PC0PC2输入 ,通过PC0控制时间的暂停与继续,通过PC1控制时加1,通过PC2控制分加1,通过PC4控制秒加1,通过PC5控制复位。最终产生达到用户要求的数字时钟,在微机接口实验台上模拟调试实现24小时走时的时钟,并将时间以HH.MM.SS显示在6位数码管上。 系统硬件设计主要利用微机实验箱上的电路模块,硬件电路主要有按键电路,单脉冲产生单元、8253定时计数、8255并行接口单元、LED显示电路。3、 总框图及总体软件设计说

3、明 4、 接口电路逻辑图及硬件设计说明,或系统资源使用说明1、 硬件整体电路图5、 局部程序框图及其设计说明1、主入口 2、时钟运行正常流程图 6、 源程序清单CODE SEGMENT ASSUME CS:CODE,DS:CODESTART: MOV AX,CS MOV DS,AX MOV DX,20BH ;8253MOV AL,36h ;0号定时器,方式3,二进制OUT DX,ALMOV DX,208HMOV AX,1000 ;1000 分频OUT DX,AL ;0号数据口 MOV AL,AHOUT DX,ALMOV DX,20BH ;8253MOV AL,76h ;1号定时器,方式3,二进

4、制OUT DX,ALMOV DX,209HMOV AX,1000 ;1000 分频OUT DX,AL ;1号数据口.3 MOV AL,AHOUT DX,ALMOV AL,89H ;A.B口方式0输出,PC0-3输入,PC4-7输入 MOV DX,203H OUT DX,AL ;写8255工作方式控制字 go:CALL BEGIN ;时间走动CALL SET ;修改时间JMP go;对时间拆字split PROCLEA DI,RES MOV DX,00H;时间的小时位MOV DL,H MOV CL,4SHR DL,CL ;通过移位获取时的高位MOV BX,DX MOV DL,BUFBX ;查定义

5、好的数据段获取对应数字数码管的值MOV DI,DL ;保存到RES对应单元 INC DI MOV DL,HAND DL,0FH ;获取时的低位ADD DL,0AH ;小时和分钟低位都是加点数MOV BX,DXMOV DL,BUFBX ; 查定义好的数据段获取对应数字数码管的值MOV DI,DL;时间的分钟高位,无点存储 INC DIMOV DL,MSHR DL,CLMOV BX,DXMOV DL,BUFBXMOV DI,DL; 时间的分钟低位,有点存储 INC DIMOV DL,MAND DL,0FHADD DL,0AHMOV BX,DXMOV DL,BUFBX MOV DI,DL;时间的秒位

6、,高低位都按无点存储 INC DIMOV DL,SSHR DL,CLMOV BX,DXMOV DL,BUFBXMOV DI,DL INC DIMOV DL,SAND DL,0FHMOV BX,DXMOV DL,BUFBXMOV DI,DLRETsplit ENDP;判断k0是否按下并弹起,暂停ISK0 PROC MOV DX,202H;判断K0按下,且放开 IN AL,DX ;把c口数据写入AL AND AL,01H ;判断K0是被按下 CMP AL,01H JNZ DOWN JMP RETURN;被按下DOWN:MOV DX,202H IN AL,DX AND AL,01H ;被按下是否弹起

7、 CMP AL,01H JZ UP JMP DOWN ;按下之后又弹起,K0不等于0UP:INC K0 MOV AH,00H MOV AL,K0 MOV BL,03H DIV BL MOV K0,AHRETURN:RETISK0 ENDPDELAY PROC NEAR PUSH CX MOV CX,65535 LOOP $ POP CX DELAY ENDP;以按下为准,进行时间的递增ISK1 PROC MOV DX,202H;判断K1按下,且放开 IN AL,DX AND AL,02H CMP AL,02H JNZ UP1 JMP RETURN1UP1:;CALL SHOWMOV DX,20

8、2H IN AL,DX AND AL,02H CMP AL,02H JZ DOWN1 JMP UP1DOWN1:CALL DELAY ;加入延时子程序,消除在一定时间内的按钮波动MOV AL,K1 ADD AL,01H DAA MOV K1,AL MOV AH,00H MOV BL,24H DIV BL MOV K1,AHRETURN1:RETISK1 ENDP;分钟调节 上升ISK2 PROC MOV DX,202H;判断K2按下,且放开 IN AL,DX AND AL,04H CMP AL,04H JNZ UP2 JMP RETURN2 UP2:MOV DX,202H IN AL,DX A

9、ND AL,04H CMP AL,04H JZ DOWN2 JMP UP2 DOWN2: CALL DELAY ;加入延时子程序,消除在一定时间内的按钮波动 MOV AL,K2 ADD AL,01H DAA MOV AH,00H MOV BL,60H DIV BL MOV AL,AH ADD AL,00H DAA MOV K2,AL RETURN2:RETISK2 ENDP;秒调节 上升ISK5 PROC MOV DX,202H;判断K4按下,且放开 IN AL,DX AND AL,10H CMP AL,10H JNZ UP5 JMP RETURN5 UP5:MOV DX,202H IN AL

10、,DX AND AL,10H CMP AL,10H JZ DOWN5 JMP UP5 DOWN5: CALL DELAY ;加入延时子程序,消除在一定时间内的按钮波动 MOV AL,K4 ADD AL,01H DAA MOV AH,00H MOV BL,60H DIV BL MOV AL,AH ADD AL,00H DAA MOV K4,AL RETURN5:RETISK5 ENDP;以按下为准,进行时间的递减 小时ISK3 PROC MOV DX,202H;判断K1按下,且放开 IN AL,DX AND AL,02H CMP AL,02H JNZ UP3 JMP RETURN3UP3:MOV

11、 DX,202H IN AL,DX AND AL,02H CMP AL,02H JZ DOWN3 JMP UP3DOWN3: CALL DELAY ;加入延时子程序,消除在一定时间内的按钮波动 MOV AL,K1 CMP AL,00H JA JIAN3 JMP BIAN3JIAN3: SUB AL,01H ;ADD AL,00H DAS MOV K1,AL RETBIAN3: MOV AL,23H MOV K1,ALRETURN3: RETISK3 ENDP;分钟调节下降ISK4 PROC MOV DX,202H;判断K2按下,且放开 IN AL,DX AND AL,04H CMP AL,04

12、H JNZ UP4 JMP RETURN4UP4:MOV DX,202H IN AL,DX AND AL,04H CMP AL,04H JZ DOWN4 JMP UP4 DOWN4:CALL DELAY ;加入延时子程序,消除在一定时间内的按钮波动 MOV AL,K2 CMP AL,00H JA JIAN4 JMP BIAN4JIAN4: SUB AL,01H DAS MOV K2,AL RETBIAN4: MOV AL,59H MOV K2,ALRETURN4: RET ISK4 ENDP;秒调节下降ISK6 PROC MOV DX,202H;判断K2按下,且放开 IN AL,DX AND

13、AL,10H CMP AL,10H JNZ UP6 JMP RETURN6UP6:MOV DX,202H IN AL,DX AND AL,10H CMP AL,10H JZ DOWN6 JMP UP6 DOWN6:CALL DELAY ;加入延时子程序,消除在一定时间内的按钮波动 MOV AL,K4 CMP AL,00H JA JIAN6 JMP BIAN6JIAN6: SUB AL,01H DAS MOV K4,AL RETBIAN6: MOV AL,59H MOV K4,ALRETURN6: RET ISK6 ENDP;以按下为准,对时分秒进行初始化的操作ISK7 PROC MOV DX,

14、202H;判断K5按下,且放开 IN AL,DX AND AL,20H CMP AL,20H JNZ UP7 JMP RETURN7UP7:MOV DX,202H IN AL,DX AND AL,20H CMP AL,20H JZ DOWN7 JMP UP7DOWN7:CALL DELAY ;加入延时子程序,消除在一定时间内的按钮波动 MOV AL,00H MOV H,AL MOV K1,AL MOV M,AL MOV K2,AL MOV S,AL MOV K4,ALRETURN7:RETISK7 ENDPSHOW PROC;8255显示时间子程序 LOP2:CALL split LEA DI

15、,RES MOV CX,6 MOV AL,K ;AL=DFH 1101 1111 控制 Y1Y5 循环点亮 MOV X1,AL LOP: MOV DX,201H MOV AL,0FFH OUT DX,AL MOV DX,200H ;A口输出段码 MOV AL,DI OUT DX,AL INC DI MOV AL,X1 MOV DX,201H ;B口输出 OUT DX,AL ROR X1,1;循环右一位 LOOP LOP RETSHOW ENDP;修改时间的子程序SET PROC MOV AL,HMOV K1,ALMOV AL,MMOV K2,ALMOV AL,SMOV K4,ALDU5:CAL

16、L SHOWMOV DX,201H MOV AL,7FHOUT DX,ALCALL ISK0MOV AL,K0CMP AL,0 JA ZHIZONGJMP JIE1ZHIZONG: CMP AL,1 JA ZHI1 JMP ZHIZHI1:CALL ISK3CALL ISK4CALL ISK6CALL ISK7MOV AL,K1MOV H,ALMOV AL,K2MOV M,ALMOV AL,K4MOV S,ALCALL SHOWMOV DX,201H MOV AL,7FHOUT DX,AL;CALL ISK7JMP DU5ZHI:CALL ISK2CALL ISK1CALL ISK5CALL

17、ISK7MOV AL,K1MOV H,ALMOV AL,K2MOV M,ALMOV AL,K4MOV S,ALCALL SHOWMOV DX,201H MOV AL,7FHOUT DX,AL;CALL ISK7JMP DU5JIE1:RETSET ENDP;时间开始走动的子程序BEGIN PROC DU: CALL SHOW MOV DX,201H MOV AL,0FFH OUT DX,ALCALL ISK7 CALL ISK0 MOV AL,K0 CMP AL,0 JZ XIAN JMP JIE ;没有按k0XIAN:MOV DX,202H IN AL,DXAND AL,08HCMP AL,

18、00HJZ DUADD S,01HMOV AL,S DAA MOV S,ALCMP S,60H JNZ DU1 MOV S,00H ADD M,01H MOV AL,M DAA MOV M,AL CMP M,60H JNZ DU1 MOV M,00H ADD H,01H MOV AL,H DAA MOV H,AL CMP H,24H JNZ DU1 JMP LOP1 ;时等于24时DU1:CALL SHOW MOV DX,201H MOV AL,0FFHOUT DX,AL MOV DX,202H IN AL,DXAND AL,08HCMP AL,00HJNZ DU1JMP DULOP1:MOV

19、 H,00H JMP DUJIE:RETBEGIN ENDPCLOCK PROC RETCLOCK ENDPBUF DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;不加点的数 DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH ;加点的数 RES DB 6 DUP(?) ;定义时分秒的存储单元,用于显示 ;存放时钟的时分秒, H DB 00H ;时M DB 00H ;分S DB 00H ;秒 K DB 0DFH ;循环移位的控制X1 DB 00HK0 DB 0 ;暂停开关,标志位K1 DB 0 ;调整时的

20、开关,标志位K2 DB 0 ;调整分钟的开关,标志位K4 DB 0 ;调整秒的开关,标志位 CODE ENDS END START7、 系统功能及操作说明 功能:实现24小时制的时钟的显示,暂停和调整 操作说明:当接通电源,编译运行后,会从默认时间00:00:00开始,以秒为单位计时。在计时当中,拨动开关K0一次,进入调整时间块,为上调。拨动两次,进入调整时间块,为下调。此时,通过拨动K1(小时),K2(分钟),K4(秒)实现在不同状态下的时间的调整。K5为复位键,在任何时间,按下复位键,可以将时间置0,在这个基础上继续实现时间的显示或者调整。 8、 调试记录及调试结果 1、在时钟正常走动时,因为满60S,分要进1, 秒置0,所以涉及到除法操作,因为,在整个编码中,用来保存时,分,秒的控制LED显示数字都是以BCD码保存,所以开始,忘记相除后,对其进行二进制到BCD码的转换,导致显示错误,后将要得到的结果进行一次加0法操作,再进行DAA转换,以BCD码保存,便消除了这个问题。 2、输出时,时间逐位显示,没有在LED上给人以连续的效果,后来通过8255的B口(PB0-PB5 )加上了循环移

温馨提示

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

评论

0/150

提交评论