硬件课程设计电子表的设计.doc

上传人:laozhun 文档编号:2883625 上传时间:2023-03-01 格式:DOC 页数:17 大小:549KB
返回 下载 相关 举报
硬件课程设计电子表的设计.doc_第1页
第1页 / 共17页
硬件课程设计电子表的设计.doc_第2页
第2页 / 共17页
硬件课程设计电子表的设计.doc_第3页
第3页 / 共17页
硬件课程设计电子表的设计.doc_第4页
第4页 / 共17页
硬件课程设计电子表的设计.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《硬件课程设计电子表的设计.doc》由会员分享,可在线阅读,更多相关《硬件课程设计电子表的设计.doc(17页珍藏版)》请在三一办公上搜索。

1、课程设计电子表的设计 摘 要 用汇编语言设计数字时钟,要求能显示系统时间、修改时间。较高要求:能进行定时、显示环境温度。首先在数据段开辟一显示缓冲区,用来存储说明文字。本程序有三个选择功能,即输入时间,日期和退出。对输入信息进行比较,通过调用子程序实现相应功能。调用10号中断,定位光标的开始位置,在光标处显示字符。调用延时中断服务程序,累加到存放秒值的寄存器中,并进行十进制调整。在累加的过程中,不断地对时、分、秒值进行比较,秒不能等于60,分不能等于60,时不能等于24。秒等于限制值时,则使秒值为0分值加1;分等于限制值时,则使分值为0时值加1;时等于限制值时,则使时值为0;时、分、秒值都不超

2、过限制值时,就转显示屏输出。时间显示的刷新要配合延时程序进行,为了得到良好的显示效果,延时程序要尽量接近1秒,但又不能超过一秒。可以通过数值转换和调用相应子程序来获取时间数据,再调用显示子程序将时间显示在屏幕上,以实现时间的修改。关键词 电子表;缓冲区;DOS目 录1、绪论21.1 课题的背景21.2 课题任务和意义21.3主要问题及技术要求21.4 设计的主要工作内容22、设计简介及设计方案论述32.1 设计简介32.2设计思路32.3操作说明43、详细设计53.1详细技术分析53.2 设计流程图63.3 程序模块化分析及注释74、设计结果及分析104.1 运行调试结果10总 结11致 谢1

3、2参考文献13附 录141、绪论1.1 课题的背景随着电子技术的发展,特别是随着大规模集成电路的产生而出现的微型计算机得到了日益广泛的应用,掌握微处理器及其接口的工作原理和应用技术,已成为当代开发微型计算机必不可少的基本技能。在学习了数字逻辑,微机原理,计算机接口技术等有关硬件知识后。要求我们应将机器语言与系统联系起来,这就要用到汇编语言。汇编语言是接近于计算机语言的一种语言,这种语言是面向机器的,能够直接被计算机识别和执行。汇编语言与机器语言相比编程简单,便于交流,并且保留了机器语言与机器联系密切的优点;与高级语言相比,虽然表面上汇编语言显得复杂,凌乱和可读性差,但就速度而言,汇编语言最快。

4、因此我们必须掌握汇编语言程序设的计的基本技能。1.2 课题任务和意义任务:用汇编语言设计数字时钟,要求能显示、修改系统时间。(较高要求:能进行定时、显示环境温度。)意义:增强对系统硬件知识的掌握。通过用汇编语言编写应用程序,使自己对所学的理论知识有更深的理解,同时提高分析问题和解决问题的能力。1.3主要问题及技术要求主要问题:如何调用中断,中断返回;怎样显示系统时间,怎样修改时间。技术要求:动态地显示系统时间;获取输入信息,将输入信息转换以在屏幕上显示,温度的显示方式。1.4 设计的主要工作内容1、定义显示界面。2、调用系统时间,并将调用的用二进制表示的时间数转换成ASCII码,并将时间数存入

5、内存区。3、将存在系统内存区的时间数用显示字符串的形式显示出来。2、设计简介及设计方案论述2.1 设计简介用汇编语言设计数字时钟,显示系统的当前日期和时间。2.2设计思路利用DOS系统功能调用2AH和2CH功能调用,读取系统日期和时间。将日期和时间值转换为相应的ASCII码字符,并显示在屏幕上。流程图如下:2.3操作说明用89C51及LCD显示屏将时间显示出来,可以同过按键设置时间和日期,设置4个按键用来控制,在焊好的电路上就能进行操作。3、详细设计3.1详细技术分析在系统时钟信号(每秒钟18.006481次)出现时,都执行中断指令INT 1CH,在ROM BIOS例程中,1CH的处理程序只有

6、一条IRET指令,实际上它并没有做任何工作,只是为用户提供了一个中断类型号。如果用户有某种定时周期性的工作需要完成,就可以利用系统定时器的中断间隔,用自己设计的处理程序来代替原有的1CH中断程序。在本课题中,要连续不断地显示系统的时间,用此中断实现很合适。 要连续不断地显示系统的时间,还必须让程序驻留内存。因为通常的程序结束用以下两条指令: MOV AH,4CH INT 21H 但是用DOS系统功能调用的4CH功能结束程序后,系统不仅结束该进程,而且将该程序所占有的内存都还给DOS并可重新分配给其它程序使用。如果本课题还用此种方式结束程序,那么系统时间只能显示一下就没有了,因为程序运行一结束,

7、内存中该程序的可执行代码立刻被“销毁”,所以INT 1CH对应的中断服务程序又只有一条IRET指令了。因此,要持续显示时间必须在进程终止后,程序还要驻留内存,以备INT 1CH调用它的中断服务程序,也就是说,包含1CH号中断服务程序的程序在程序运行结束后必须驻留内存,这样就要用:MOV AH,31H INT 21H 指令结束程序,其入口参数是: AH31H 指出功能调用号 AL 可由程序放置的结束代码,为其它程序指出此程序的结束条件,此处无标准值,各程序必须自己定义该值。本课题可不用。 DX 该寄存器必须指出DOS为该程序保留的内存段数(16个字节为一段,从PSP结尾处开始)。DOS置内存的初

8、始分配块数为该值,并释放赋予该程序的其余内存空间。在编写中断服务程序时,首先需要保存原来的中断向量,然后设置新的中断向量,分别调用INT 21H的第35H号功能和第25H号功能来实现。 在编程过程中,要注意如何定位光标、移动光标、如何在光标处显示字符。读取系统时钟用以下BIOS功能调用: MOV AH,2 ;读取电池供电系统时钟CH:CL时:分,DH:DL秒:1/100 INT 1 AH ;读出的是BCD码3.2 设计流程图3.3 程序模块化分析及注释日期子程序模块:DATE PROC NEAR DISPLAY:MOV AH,2AH ;取日期INT 21HMOV SI,0MOV AX,CX ;

9、cx=120,01111000=78hMOV BX,100 ;bl=2;01100100=64h DIV BL ;78h/64h,al=01h,ah=14hMOV BL,AH ;bl=14hCALL BCDASC1 ;日期数值转换成相应的ASCII码字符MOV AL,BL ;al=14hCALL BCDASC1INC SIMOV AL,DHCALL BCDASC1INC SIMOV AL,DLCALL BCDASC1MOV BP,OFFSET DBUFFER1 ;显示矩形条 MOV DX,0C0DH ;起始行:0ch,列:0dh MOV CX,20 ;串长度为20MOV BX,004EH ;b

10、h=页号,bl=4eh(矩形区域颜色)MOV AX,1301H ;int 10h,ah=13h,显示字符串;al=01h ,bl=40h,光标跟随移动INT 10HMOV AH,02H ;设置光标位置MOV DX,0300HMOV BH,0INT 10HMOV BX,0018HREPEA: MOV CX,0FFFFH ;延时REPEAT:LOOP REPEATDEC BX ;BX 自减一 JNZ REPEA ;不为0则返回到 REPEATMOV AH,01H ;读键盘缓冲区字符到AL寄存器INT 16HJE DISPLAYJMP STARTMOV AX,4C00H ;等于(mov ah,4ch

11、)INT 21HRETDATE ENDP时间子程序模块:TIME PROC NEAR DISPLAY1:MOV SI,0MOV BX,100DIV BLMOV AH,2CH ;取时间INT 21HMOV AL,CHCALL BCDASC ;将时间数值转换成ASCII码字符INC SIMOV AL,CLCALL BCDASCINC SIMOV AL,DHCALL BCDASCMOV BP,OFFSET DBUFFERDEC BXJNZ RE ;判断上一句所调用的寄存器的值是否为0MOV AH,01H ;读键盘输入的字符存到寄存器AL中INT 16HMOV DX,0C0DH ;起始行:0ch,列:

12、0dhMOV CX,20 ;日期串长度为20MOV BX,004EH ;bh=页号,bl=4eh 时间区域颜色MOV AX,1301H ;int 10h,ah=13h,显示字符串;al=01h ,bl=40h,光标跟随移动INT 10HMOV AH,02H MOV DX,0300HMOV BH,0INT 10HMOV BX,0018H ;输入最小间隔时间 RE: MOV CX,0FFFFH ;延时REA: LOOP REAJE DISPLAY1 ;判断键盘输入的是否是TJMP STARTMOV AX,4C00HINT 21HRET ;ret,返回指令TIME ENDP时间数值转换成ASCII码

13、字符子程序模块:BCDASC PROC NEAR PUSH BX ;暂时保存BX的值,方便以后调用 CBW ;(AL符号扩展到AH (8位扩展到16位)MOV BL,10DIV BL ;(AL)-(AX)/(BL)商ADD AL,0MOV DBUFFERSI,ALINC SIADD AH,0MOV DBUFFERSI,AHINC SIPOP BXRETBCDASC ENDP日期数值转换成ASCII码字符子程序模块:BCDASC1 PROC NEAR PUSH BXCBWMOV BL,10DIV BLADD AL,0MOV DBUFFER1SI,ALINC SIADD AH,0MOV DBUFF

14、ER1SI,AHINC SIPOP BXRETBCDASC1 ENDP4、设计结果及分析4.1 运行调试结果图4-2通过keil和proteus7.1sp2连调后,即显示当前系统日期 总 结两周的硬件课程设计结束了,我的收获很多知识。特别是对调试程序有了一个新的认识。记得在调试过程中,我发现只有通过不断的调试,才能最终保证程序达到正确的执行效果。系统设计是为了满足特定功能上的需求,而不断的调试,不断的修改才能发现和改正系统中的一些潜在的问题。正是这种发现的问题的过程,才能真正的保证程序的正确性,可靠性。所以,调试设计的目的是尽可能多的发现问题。故在设计调试用例的时候,要全盘的考虑程序运行的每一

15、个细节,每一种可能会出现的结果,尤其是特殊情况的用例。设计用例的时候还要考虑用例在执行的过程中应该出现哪些结果,不应该出现哪些结果,可能出现的其他结果。而且,还要有经得起挫折的心理准备。因为,很可能自己设计的用例是没有意义的,或者是出现了以前从没遇到过的新情况。怎样才能做得更好。另外,通过对本次课程设计的编程和对编程过程中遇到的问题的思考,有效的提高了我对汇编的认识和理解,切实的提高了我的编程能力,补全了我的不足。通过这次课程设计,我巩固了所学过的知识,能用汇编语言熟练地运用顺序、选择、循环三大结构,进一步掌握了各个指令的功能,特别是转向指令,掌握了子程序的定义及调用,以及正确地运用DEBUG

16、指令。在整个程序的编写中,调试占了很大部分的时间。要想写好汇编语言的程序,必须认真对待代码的每一个细节,还必须熟练的掌握debug命令,这对程序的调试是非常重要的。通过这次实际动手能力的培养,我进一步熟悉了汇编语言的结构和使用方法,基本达到了能独立阅读、编制和调试一定规模的汇编语言程序的水平。致 谢本次课程设计最终能顺利完成,最主要的还是要感谢老师的指导和同学们的帮助。这次课程设计对计算机系统硬件从整体上有了一个全面的接触,经过亲手来设计直致完成,让我对硬件知识从理论上到实践上有了一个大的转变。为此特感谢学校为我提供了这次实践机会,而且还为我们提供了一个舒适的上机环境。参考文献1 徐建民汇编语

17、言程序设计,电子工业出版社,20022 许曰滨汇编语言程序设计,人民邮电出版社,20053 黄道君微型计算机原理及应用,高等教育出版社,20014 宋杰微机原理与接口技术课程设计,机械工业出版社5 王成端汇编语言程序设计,高等教育出版社,20036 钱晓捷汇编语言程序设计,电子工业出版社,20037 邹逢兴计算机硬件技术基础实验教程,高等教育出版社8 姚君遗汇编语言程序设计,南京大学出版社,1995附 录源程序代码:STACK SEGMENT STACKDW 200 DUP (?)STACK ENDSDATA SEGMENTSPACE DB 1000 DUP ( )PATTERN DB 6 D

18、UP ( ),40H,26 DUP (40H),40H,6 DUP ( ) DB 6 DUP ( ),40H,26 DUP ( ),40H,6 DUP ( ) DB 6 DUP ( ),40H,26 DUP (40H),40H,6 DUP ( )DBUFFER DB 8 DUP (:),12 DUP ( )DBUFFER1 DB 20 DUP ( )STR DB 0DH,0AH, PLEASE INPUT DATE(D) OR TIME(T) OR QUIT(Q): $DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTA

19、RT: MOV AX,0001H ;设置显示方式为40*25彩色文本方式INT 10HMOV AX,DATAMOV DS,AXMOV ES,AXMOV BP,OFFSET SPACEMOV DX,0B00HMOV CX,1000MOV BX,0060HMOV AX,1300HINT 10HMOV BP,OFFSET PATTERN ;显示矩形条MOV DX,0B00HMOV CX,120MOV BX,004EHMOV AX,1301HINT 10HLEA DX,STR ;显示提示信息MOV AH,9INT 21HMOV AH,1 ;从键盘输入单个字符INT 21HCMP AL,44H ;AL=

20、D?JNE ACALL DATE ;显示系统日期A: CMP AL,54H ;AL=T?JNE BCALL TIME ;显示系统时间B: CMP AL,51H ;AL=Q?JNE STARTMOV AH,4CH ;返回dos状态INT 21HDATE PROC NEAR ;显示日期子程序DISPLAY:MOV AH,2AH ;取日期INT 21HMOV SI,0MOV AX,CXMOV BX,100DIV BLMOV BL,AHCALL BCDASC1 ;日期数值转换成相应的ASCII码字符MOV AL,BLCALL BCDASC1INC SIMOV AL,DHCALL BCDASC1INC

21、SIMOV AL,DLCALL BCDASC1MOV BP,OFFSET DBUFFER1MOV DX,0C0DHMOV CX,20MOV BX,004EHMOV AX,1301HINT 10HMOV AH,02H ;设置光标位置MOV DX,0300HMOV BH,0INT 10HMOV BX,0018HREPEA: MOV CX,0FFFFH ;延时REPEAT:LOOP REPEATDEC BXJNZ REPEAMOV AH,01H ;读键盘缓冲区字符到AL寄存器INT 16HJE DISPLAYJMP STARTMOV AX,4C00HINT 21HRETDATE ENDPTIME P

22、ROC NEAR ;显示时间子程序DISPLAY1:MOV SI,0MOV BX,100DIV BLMOV AH,2CH ;取时间INT 21HMOV AL,CHCALL BCDASC ;将时间数值转换成ASCII码字符INC SIMOV AL,CLCALL BCDASCINC SIMOV AL,DHCALL BCDASCMOV BP,OFFSET DBUFFERMOV DX,0C0DHMOV CX,20MOV BX,004EHMOV AX,1301HINT 10HMOV AH,02HMOV DX,0300HMOV BH,0INT 10HMOV BX,0018HRE: MOV CX,0FFFF

23、HREA: LOOP READEC BXJNZ REMOV AH,01HINT 16HJE DISPLAY1JMP STARTMOV AX,4C00HINT 21HRETTIME ENDPBCDASC PROC NEAR ;时间数值转换成ASCII码字符子程序PUSH BXCBWMOV BL,10DIV BLADD AL,0MOV DBUFFERSI,ALINC SIADD AH,0MOV DBUFFERSI,AHINC SIPOP BXRETBCDASC ENDPBCDASC1 PROC NEAR ;日期数值转换成ASCII码字符子程序PUSH BXCBWMOV BL,10DIV BLADD AL,0MOV DBUFFER1SI,ALINC SIADD AH,0MOV DBUFFER1SI,AHINC SIPOP BXRETBCDASC1 ENDPCODE ENDSEND START

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号