微机原理课设(钟表显示).doc_第1页
微机原理课设(钟表显示).doc_第2页
微机原理课设(钟表显示).doc_第3页
微机原理课设(钟表显示).doc_第4页
微机原理课设(钟表显示).doc_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

微机原理与接口技术课程设计学 号: 0121111350106课 程 设 计题 目钟表显示学 院自动化学院专 业电气工程及其自动化班 级1101班姓 名指导教师石云2014年1月11日课程设计任务书学生姓名: 赵京 专业班级: 电气1101班 指导教师: 石云 工作单位: 自动化学院 题 目: 钟表显示 初始条件:用汇编编精致的图形时钟,钟表显示的时间为本机系统的时间。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1) 设计任务及要求分析(2) 方案比较及认证说明(3) 系统原理阐述(4) 硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明(5) 软件设计课题需要说明:软件思想,流程图,源程序及程序注释(6) 调试记录及结果分析(7) 总结(8) 参考资料(9) 附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图时间安排:12月30日12月31日:收集资料,方案选择1月2日1月6日:整体流程,程序细节,调试程序1月7日1月8日: 课程设计报告撰写1月9日:交报告,程序演示,答辩指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目 录 摘要I1.任务方案的设计与分析1 1.1任务目的与要求1 1.2任务的方案比较及认证12.软件程序设计2 2.1任务方案的设计与分析2 2.2任务目的与要求2 2.3任务的方案比较及认证33.程序调试记录及结果分析74.设计总结85.参考文献8附录9 1.总程序清单92.软件程序演示图.39摘 要 汇编语言是一门涉及硬件的程序设计语言。汇编语言一般与某一种CPU提供的机器指令相对应,人们可以用它直接控制硬件系统进行工作,由汇编执行指令和汇编伪指令组成。采用汇编语言编写程序虽不如高级程序设计语言简便、直观,但是汇编出的目标程序占用内存较少、运行效率较高,且能直接引用计算机的各种设备资源。本次任务设计通过汇编来实现时钟图形及时间的相应显示。关键字:汇编语言 指令 程序 时钟 391.任务方案的设计与分析1.1 任务目的与要求目的:培养学生运用所学知识解决计算机应用领域内实际问题能力,进一步提高学生汇编语言综合编程能力,程序调试技能。要求:用汇编编精致的图形时钟,钟表显示的时间为本机系统的时间。完成主要任务:1) 设计任务及要求分析2) 方案比较及认证说明3) 系统原理阐述4) 硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明5) 软件设计课题需要说明:软件思想,流程图,源程序及程序注释6) 调试记录及结果分析7) 总结8) 参考资料9) 附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图1.2任务的方案比较及认证本次设计要实现图形时钟和系统时间的显示。设计实现的方案有:一.采用DOS系统功能调用语句INT 21h直接调用系统时间,在这基础上加上推出的功能;二.采用延时的方法,设计一个延时器,每隔一秒,计数器加一,采用六十进制。在这基础上加上附加功能。 在本次设计中,采用第一种直接调用系统时间的方案,方式简单明了,功能的实现较好,因此选用此方法。 2.软件程序设计2.1设计思路由方案设计,先绘制一个圆,运用显示器输出中断的调用,设置显示方式和光标位置后,用写像素的方法按一定的算法打点来画出,再用同样的方法在已画的圆上标60根分钟线,设置数字,在圆心处绘制秒钟、分钟、时钟指针,调用系统时钟,实现钟表的动态显示。2.2程序流程图 图12.3主要程序设计及程序注释1.调用系统时间确定指针位置。 push ax mov ah, 2ch int 21h mov dl, dh mov dh, 0pop axret2.计算时间小时,分钟的格数,用以绘制时钟刻度盘。 push ax mov al, ch ;计算小时的格数 mov ah, 0 mov ch, 12 div ch mov al, ah ;小时,12小时制 mov ah, 0 mov ch, 5 mul ch mov ch, al ;小时的格数 ;cmp dl, 60 ;jnz pp21 ;inc cl ;mov dl, 0pp21: mov al, cl mov ah, 0 mov dh, 12 div dh add ch, al ;cmp cl, 60 ;jnz pp22 ;inc ch ;mov cl, 0pp22: ;cmp ch, 60 ;jnz pp23 ;mov ch, 0pp23: pop ax ret3.画圆,绘制钟表的轮廓。 circle proc near;on entry:; cx - x coordinate pixel of origin; dx - y coordinate pixel of origin; di - offset address of pixel; bl - radius;on exit:; (x,y) in data area; di - end of coord push ax push si push bx push di ;起始偏移地址 push cx push dx mov dx, 0 mov bh, 0 sub dx, bx ;起始点纵坐标 mov cx, 0 ;起始点横坐标 call symmetrypixel push dx mov ax, 1 sub ax, bx ;bx = 半径 mov dx, 2 imul dx ;ax = 2*(1-r) 初值 pop dx ;恢复横纵坐标(0,-r) next_pixel: cmp ax, 0 jl choose_1 ;小于 jg choose_2 ;大于 jmp direction_2 ;等于choose_1: push ax push dx sub ax, dx ;dx为负,所以减负等于加正 mov dx, 2 imul dx sub ax, 1 mov bx, ax ;delta1=2*(ax+dx)-1存入bx pop dx pop ax cmp bx, 0 jle direction_1 ;delta1小于等于0 jmp direction_2 ;delta1大于0choose_2: push ax push dx sub ax, cx mov si, 2 imul si sub ax, 1 mov si, ax ;delta2=2*(ax-cx)-1存如si pop dx pop ax cmp si, 0 jle direction_2 ;delta20direction_1: inc cx push dx push ax mov ax, 2 mul cx ;假定cx不会大于127(半径到不了) inc ax mov dx, ax pop ax add ax, dx ;ax += 2*cx+1 pop dx jmp other_pixeldirection_2: inc cx inc dx ;因为dx是负的 push dx push cx push ax add cx, dx ;减负等于加负数 add cx, 1 mov ax, 2 imul cx mov dx, ax pop ax add ax, dx ;ax+=2*(cx+dx+1) pop cx pop dx jmp other_pixeldirection_3: inc dx ;dx为负 push dx push ax mov ax, 2 imul dx add ax, 1 mov dx, ax pop ax add ax, dx ;ax+=(2*dx+1) pop dx jmp other_pixelother_pixel: cmp dx, 0 je exit ;等于则退出 call symmetrypixel ;其他对称点 jmp next_pixelexit: pop dx pop cx pop si ;起始偏移地址next_addpixel: add si, cx add si+2, dx add si, 4 cmp si, di jl next_addpixel pop bx pop si pop ax retcircle endp3.程序调试记录及结果分析图2 程序运行结果图时钟成功显示,且与系统时间一致,设计完成。调试问题记录:图3 调试过程中的问题该问题由于指针颜色设置不一致所导致,经过处理得到解决。4.设计总结通过本次课程设计,加深了我对微机原理与接口技术课程理论知识的理解和认识,同时初步掌握了课程设计的方法和步骤。学会如何把微机课程中学到的理论知识运用到实际中去,在实践中进行体会,增加了我对汇编语言一些新的认识。在设计过程中,通过和同学的交流,增加了合作的技巧;通过查阅资料也学到了许多课外的东西,拓宽了自己的知识面,加强了对汇编语言的兴趣;学会了独立思考和锻炼了自己的实践动手能力。受益匪浅。5.参考文献1 彭虎等编著微机原理与接口技术(第二版)北京:电子工业出版社,20082 钱晓捷著.汇编语言程序设计学习与解题指南.武汉:华中科技大学出版社,20023 黄明,粱旭,常征著.汇编语言程序设计习题详解.北京:机械工业出版社,20044 程学先,徐东平著.汇编语言程序设计.武汉:武汉理工大学出版社,20035 沈美明,温冬婵著.IBM-PC汇编语言程序设计.北京:清华大学出版社,2001附录:1.总程序清单: DATA SEGMENT CIRCLE_COORD DW 3000 DUP(0) ;圆坐标 LINE_COORD DW 3000 DUP(0) ;直线坐标 CONFIRM_CIRCLE1 DW 3000 DUP(0) ;画时针分针秒针时确定的圆 CONFIRM_CIRCLE2 DW 3000 DUP(0) ;尾 TWO_END DW 4 DUP(0) ;直线两个端点 MID_STORE DW 2 DUP(0) ;直线端点界限 SCALE1 DW 240 DUP(0) ;刻度 SCALE2 DW 240 DUP(0) SECOND_END1 DW 120 DUP(0) MINUTE_END1 DW 120 DUP(0) HOUR_END1 DW 120 DUP(0) BIT12 DW 4 ;宽度,4字节 DW 31 ;高度,31行 DB 0FEH,0FH,0FFH,0FFH ;位屏蔽字节 DB 0FEH,0FH,0FFH,0FFH DB 7CH,07H,0FH,1EH DB 7CH,07H,0FH,1EH DB 1EH,0EH,0FH,1EH DB 1EH,0EH,0FH,1EH DB 0FH,1CH,0FH,1EH DB 0FH,1CH,0FH,1EH DB 07H,0B8H,0FH,1EH DB 07H,0B8H,0FH,1EH DB 03H,0F0H,0FH,1EH DB 03H,0F0H,0FH,1EH DB 01H,0E0H,0FH,1EH DB 01H,0E0H,0FH,1EH DB 01H,0F0H,0FH,1EH DB 01H,0F0H,0FH,1EH DB 03H,0F8H,0FH,1EH DB 03H,0F8H,0FH,1EH DB 07H,3CH,0FH,1EH DB 07H,3CH,0FH,1EH DB 0EH,1EH,0FH,1EH DB 0EH,1EH,0FH,1EH DB 1CH,0FH,0FH,1EH DB 1CH,0FH,0FH,1EH DB 38H,07H,8FH,1EH DB 38H,07H,8FH,1EH DB 70H,03H,0CFH,1EH DB 70H,03H,0CFH,1EH DB 70H,03H,0CFH,1EH DB 0FEH,0FH,0FFH,0FFH DB 0FEH,0FH,0FFH,0FFH BIT12_END DB 0 BIT3 DW 4 ;宽度,4字节 DW 31 ;高度,31行 DB 0FFH,0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH DB 1FH,03H,0E0H,7CH DB 1FH,03H,0E0H,7CH DB 1FH,03H,0E0H,7CH DB 1FH,03H,0E0H,7CH DB 1FH,03H,0E0H,7CH DB 8 DUP(1FH,03H,0E0H,7CH) DB 8 DUP(1FH,03H,0E0H,7CH) DB 1FH,03H,0E0H,7CH DB 1FH,03H,0E0H,7CH DB 1FH,03H,0E0H,7CH DB 1FH,03H,0E0H,7CH DB 0FFH,0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH BIT3_END DB 0 BIT6 DW 4 DW 31 DB 0FEH,00H,7FH,3FH DB 0FEH,00H,7FH,3FH DB 0FEH,00H,7FH,3FH DB 78H,00H,1EH,1EH DB 78H,00H,1EH,1EH DB 78H,00H,1EH,1EH DB 3CH,00H,3CH,1EH DB 3CH,00H,3CH,1EH DB 3CH,00H,3CH,1EH DB 1EH,00H,78H,1EH DB 1EH,00H,78H,1EH DB 1EH,00H,78H,1EH DB 0FH,00H,0F0H,1EH DB 0FH,00H,0F0H,1EH DB 0FH,00H,0F0H,1EH DB 07H,81H,0E0H,1EH DB 07H,81H,0E0H,1EH DB 07H,81H,0E0H,1EH DB 03H,0C3H,0C0H,1EH DB 03H,0C3H,0C0H,1EH DB 03H,0C3H,0C0H,1EH DB 01H,0E7H,80H,1EH DB 01H,0E7H,80H,1EH DB 01H,0E7H,80H,1EH DB 00H,0FFH,00H,1EH DB 00H,0FFH,00H,1EH DB 00H,0FFH,00H,1EH DB 00H,7EH,00H,1EH DB 00H,7EH,00H,3FH DB 00H,3CH,00H,3FH DB 00H,3CH,00H,3FH BIT6_END DB 0 BIT9 DW 4 DW 31 DB 0FFH,0FFH,07H,0F8H DB 0FFH,0FFH,07H,0F8H DB 3CH,3EH,03H,80H DB 3CH,3EH,03H,80H DB 3CH,0FH,07H,00H DB 3CH,0FH,07H,00H DB 3CH,07H,8EH,00H DB 3CH,07H,8EH,00H DB 3CH,03H,0DCH,00H DB 3CH,03H,0DCH,00H DB 3CH,01H,0F8H,00H DB 3CH,01H,0F8H,00H DB 3CH,00H,0F0H,00H DB 3CH,00H,0F0H,00H DB 3CH,00H,0F8H,00H DB 3CH,00H,0F8H,00H DB 3CH,01H,0FCH,00H DB 3CH,01H,0FCH,00H DB 3CH,03H,9EH,00H DB 3CH,03H,9EH,00H DB 3CH,07H,0FH,00H DB 3CH,07H,0FH,00H DB 3CH,0EH,07H,80H DB 3CH,0EH,07H,80H DB 3CH,1CH,03H,0C0H DB 3CH,1CH,03H,0C0H DB 3CH,38H,01H,0E0H DB 3CH,38H,01H,0E0H DB 3CH,38H,01H,0E0H DB 0FFH,0FFH,87H,0F8H DB 0FFH,0FFH,87H,0F8H DB 0 DATA ENDS STACK SEGMENT PARA STACK DB 1600 DUP(0) STACK_END DB 0 STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX, 0A000H MOV ES, AX MOV AX, STACK MOV DS, AX MOV SS, AX MOV SP, OFFSET STACK_END - 2 MOV AX, DATA MOV DS, AX MOV BL, 150 ;半径 MOV CX, 200 ;像素横坐标 MOV DX, 200 ;像素纵坐标 MOV DI, OFFSET CIRCLE_COORD ;存圆的像素点 CALL CIRCLE ;di是最后字节 PUSH DI CALL CONFIRM_SCALE ;确定刻度盘 CALL CONFIRM_HMS MOV AH, 00H MOV AL, 12H INT 10H ;图形方式 CALL SETMODE MOV AL, 01110110B ;颜色 MOV SI, OFFSET CIRCLE_COORD POP DI PP11: MOV CX, SI ;x坐标 MOV DX, SI+2 ;y坐标 CALL WRITE_PIXEL ADD SI, 4 CMP SI, DI JL PP11 CALL COARSE_FILL ;画表盘 CALL DRAW_SCALE ;画刻度盘 MOV SI, OFFSET BIT12 ;数字12的位屏蔽地址 MOV CX, 58 ;行数(0-480) MOV DX, 184 ;列数,需是8的倍数(0-640) CALL DRAW_NUM MOV SI, OFFSET BIT3 ;数字3的位屏蔽地址 MOV CX, 185 ;行数(0-480) MOV DX, 312 ;列数,需是8的倍数(0-640) CALL DRAW_NUM MOV SI, OFFSET BIT6 ;数字6的位屏蔽地址 MOV CX, 312 ;行数(0-480) MOV DX, 184 ;列数,需是8的倍数(0-640) CALL DRAW_NUM MOV SI, OFFSET BIT9 ;数字9的位屏蔽地址 MOV CX, 185 ;行数(0-480) MOV DX, 56 ;列数,需是8的倍数(0-640) CALL DRAW_NUM PP25: CALL GETCURRENTTIME ;得到当前时间 CALL CALCULATE_TIME CALL SHOW_TIME CALL SECOND_DELAY CALL CHANGEMODE MOV AL, CH ;还原时针 MOV AH, 0 MOV CH, 5 DIV CH MOV CH, AL CALL CALCULATE_TIME ;计算显示位置 CALL SHOW_TIME1 ;mov al, ch ;还原时针 ;mov ah, 0 ;mov ch, 5 ;div ch ;mov ch, al CALL RESETMODE ;inc dl JMP PP25 MOV AH, 00H MOV AL, 03H INT 10H MOV AX, 4C00H INT 21H CHANGEMODE PROC NEAR;改异或模式 PUSH AX PUSH DX MOV DX, 3CEH MOV AL, 3 OUT DX, AL ;数据循环选择功能 JMP $+2 MOV DX, 3CFH MOV AL, 00011000B ;异或 OUT DX, AL POP DX POP AX RET CHANGEMODE ENDP RESETMODE PROC NEAR;恢复为替换模式 PUSH AX PUSH DX MOV DX, 3CEH MOV AL, 3 OUT DX, AL ;数据循环选择功能 JMP $+2 MOV DX, 3CFH MOV AL, 00000000B ;替换 OUT DX, AL POP DX POP AX RET RESETMODE ENDP GETCURRENTTIME PROC NEAR;得到当前时间;dl-秒;ch-时;cl-分 PUSH AX MOV AH, 2CH INT 21H MOV DL, DH MOV DH, 0 POP AX RET GETCURRENTTIME ENDP SECOND_DELAY PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI PUSH SI MOV AH, 2CH INT 21H INC DH MOV AL, DH MOV AH, 0 MOV DH, 60 DIV DH MOV BL, AH PP24: MOV AH, 2CH INT 21H CMP DH, BL JNZ PP24 POP SI POP DI POP DX POP CX POP BX POP AX RET SECOND_DELAY ENDP CALCULATE_TIME PROC NEAR;送入;dl-秒;ch-时;cl-分 PUSH AX MOV AL, CH ;计算小时的格数 MOV AH, 0 MOV CH, 12 DIV CH MOV AL, AH ;小时,12小时制 MOV AH, 0 MOV CH,

温馨提示

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

评论

0/150

提交评论