《微机原理课程设计电子时钟的设计gqzj.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计电子时钟的设计gqzj.docx(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、微机原原理课课程设计计电子子时钟的的设计(20005-6-24)山东科技技大学机机电学院院js002-22 200号一课程程设计题题目:电电子钟1. 设计目的的:了解解定时/计数器器和中断断的使用用。2. 设计所需需设备:PC机机。3. 设计任务务:编写写程序,在在PC机机上显示示时间。二程序序内容:第一部分分:定义义显示界界面。第二部分分:调用用系统时时间,并并将调用用的用二二进制表表示的时时间数转转换成AASCIII码,并并将时间间数存入入内存区区。第三部分分:将存存在系统统内存区区的时间间数用显显示字符符串的形形式显示示出来。第四部分分:获取取键盘的的按键值值,判断断键值并并退出系系统。
2、三程序序设计原原理:首先在数数据段开开辟一显显示缓冲冲区,用用来存储储系统时时间。调调用DOOS中断断,返回回系统时时间,并并将来返返回的二二进制时时间转换换成ASSCIII码,方方便时间间显示时时的调用用。分别别将来小小时数、分分钟数、秒秒数存入入显示缓缓冲区,并并最终存存入一结结束字符符号$。调用用DOSS字符串串显示功功能将时时间显示示出来。并并调用屏屏幕I/O中断断,定位位光标的的开始位位置,结结合着将将时间显显示在我我们预先先定义好好的位置置上。由由于获取取了的系系统时间间不会自自动刷新新,所以以我们要要设计成成刷新的的方式来来不断获获取系统统的时间间,这样样就形成成了会跳跳动的电电
3、子钟了了。时间间显示的的刷新要要配合延延时程序序进行,为为了得到到良好的的显示效效果,延延时程序序要尽量量接近11秒,但但又不能能超过一一秒,所所以本程程序调用用了一段段较精确确的时间间延迟程程序,屏屏幕显示示延迟一一段时间间后再跳跳回到初初始位置置,再显显示,由由此循环环下去。程程序的最最后还设设计一了了个按“ESCC”键就退退出的功功能,采采取了判判断键值值的方法法。为了了显示的的美观,还还设计一一个字符符图界面面,通过过显示字字符串的的方法显显示出来来。本程程序具有有很强的的扩展功功能,我我们可以以在此基基础上进进行一些些输入、输输出扩展展,显示示的扩展展,比如如可以做做成计时时器,并并
4、设计一一个精美美的运动动的图形形界面,时时间到了了会自动动调用PPC喇叭叭发出报报警声等等等。但但是由于于时间的的原因,所所以只做做了核心心的部分分,这不不得不说说是一个个遗憾。本本程序使使用了未未来汇编编,与VVISUUAL ASMM开发平平台。四程序序设计心心得:本程序虽虽然只花花了一天天的时间间,但是是也收获获颇多。其其实本程程序的设设计思路路并不难难想,核核心代码码的设计计所花的的时间也也不长。但但是调试试的时间间却占了了差不多多70%的时间间,在本本程序设设计的初初期曾经经走了不不少弯路路碰见过过不少难难题,所所幸的是是在我们们的坚持持下最终终把难题题一一击击破。下下面就列列举下我我
5、们遇见见过的比比较繁琐琐的难题题:1 进制转换换问题。开开始我们们的思路路是想将将AL的的内容除除于100,然后后分别讲讲除数跟跟商分别别加上330H转转换成AASCIII码并并保存在在AH跟跟AL里里面。但但是写完完调试的的时候系系统自动动弹出一一个对话话框,要要求关闭闭,可是是用自带带的编译译器却可可以通过过,百思思不得其其解,最最后上网网找了资资料才发发现是编编译系统统跟操作作系统不不兼容的的问题,本本人的操操作系统统是最新新的WIIN20003,纯纯32位位的系统统,跟116位的的软件有有不兼容容也是有有可能的的。但我我本人又又不想重重装个WWIN998来调调试程序序,于是是就放弃弃这
6、种方方法,改改用逻辑辑移位,调调整的方方式来实实现了。2 屏幕显示示问题。开开始做完完程序的的时候由由于采用用了光标标定位的的方法,发发现运行行了程序序后显示示光标不不停地跳跳动,而而且在不不同的位位置上跳跳动,严严重影响响了程序序的可观观赏性。检检查发现现原来光光标的跳跳动跟程程序的刷刷新频率率跟人眼眼的视觉觉残象成成影原理理有关,只只要系统统的刷新新频率大大于1/25秒秒,那么么人眼就就会认为为图象在在改变,这这跟电影影为什么么要设成成25帧帧/秒的的播放速速率的原原理是一一样的。这这样一来来,就必必须设计计一较为为精确的的延时程程序来改改善画面面的显示示了,只只要不让让屏幕刷刷新得太太快
7、就可可以打到到要求了了,具体体的显示示时间是是通过延延时程序序里的DDX值决决定的,通通过调整整DX的的值,我我们发现现当DXX等于004FFF的时候候显示效效果是最最好的。3 系统退出出问题。开开始本程程序是使使用了DDOS中中断的键键盘功能能调用,可可是当我我们加了了比较跳跳转指令令后整个个程序就就停了在在那里,具具体原因因不是很很清楚。最最后换成成了键盘盘I/OO功能调调用,问问题迎刃刃而解了了。希望望能跟老师师一起探探讨这个个问题。我的心得得体会我们所设设计的程程序原理理是:程程序先调调用系统统时间,然后将将返回的的二进制制数转化化成ASSCIII码,再再通过ddos显显示功能能显示出
8、出来,并并通过循循环不断断刷新显显示的时时间.我从这次次程序设设计过程程中学会会,理解解了几点点我以前前不熟悉悉的知识识:首先在二二进制转转化成AASCIII码的的过程中中,我进进一步地地了解到到,在转转化过程程中,二二进制数数首先转转化为双双四位的的BCDD码,再再将高四四位低四四位分别别相加330H,从而转转化为AASCIII码,此时要要对照书书本P4416的的附录11了解电电脑cuup如何何将ASSCIII码的信信息转换换成显示示字符。其次,了了解了如如何对其其他经典典程序的的灵活应应用。我我们的程程序是不不断对显显示屏进进行刷新新的,所所以我们们调用了了bcttd程序序,这是是一个精精
9、确的计计时程序序,计数数时间约约为1秒秒,然后后我们用用了jmmp diispllay指指令,刷刷新显示示屏,从从而达到到时间的的每秒显显示。通过了这这次程序序设计,使我更更深刻地地理解了了微机的的原理与与应用技技术,特特别是在在对中断断技术的的理解与与应用方方面,更更好地理理解了微微机的工工作情况况与运行行方式。可以这样样说,如如果没有有此课程程设计,我我对微机机的原理理与应用用技术,仍仍旧停滞滞于表面面了解、一一知半解解甚至不不知其解解的状态态,这样样就谈不不上学知知识、长长见闻、提提高自身身学术素素质与理理论水平平的方方方面面。但但也让作作者感到到自身的的知识和和理论水水平要作作更高层层
10、次的课课程设计计,远远远不足,还还需要不不懈地学学习与提提高,更更需要指指导老师师与在此此方面的的高手不不吝赐教教!参考资料料:微型计计算机原原理及应应用第第四版 周明德德 清清华大学学出版社社微机原原理及接接口技术术实验指指导书岳岳克宁 主编编全国计计算机等等级考试试辅导教教程与同同步试题题训练(33级PCC技术) 冶金金工业出出版社五.流程程图:Y清屏调用DOS中断取系统时间2进制转ACSII码将转换好的系统时间存入时间显示缓冲区显示时间与界面ESC键按下?调用延时子程序返回DOS程序结束YN六程序序源码:;namme: ELEECTRRONIIC CCLOCCK ;deesiggn bb
11、y zzenggqinngyuu cllasss1 aand moxxiaooleii cllasss3dataa ssegmmenttmesss1 dbb |/ ,0ahh,0ddh dbb .-.-/ ,0aah,00dh dbb (.) ,0aah,00dh dbb +-oOOOo-(_)-oOOOo-+ ,0ahh,0ddh dbb + AASM AASSIIGNMMENTT + ,0ahh,0ddh dbb + EELECCTROONICC CLLOCKK + ,0ahh,0ddh dbb + Dessignn byy Keevinn & Rayy + ,0ahh,0ddh dbb
12、+ vverssionn:1.0 + ,0ahh,0ddh dbb + + ,0ahh,0ddh dbb + + ,0ahh,0ddh dbb + Prresss ESSC bbuttton to quiit + ,0ahh,0ddh dbb +-Ooooo-+ ,$messs2 dbb Thee tiime is noww:,0ahh,0ddh,$t_buuff dbb 200 ;在数数据段开开辟一时时间显示示缓冲区区dataa eendssstacck ssegmmentt ddb 1100 dupp(?)stacck eendsscodee ssegmmentt aassuume cs:
13、codde,sss:sstacck,dds:ddataamainn: ccalll cllearr ;调用用清屏子子程序dispplayy: ;-时间间显示部部分- movv axx,seeg ddataa mmov ds,ax mmov bx,offfsett t_bufff ;送送t_bbufff的偏移移地址到到BX mmov ah,2chh ;调用DDOS时时间调用用功能,功能号号:2ccH,小小时,分分钟,秒秒数分别别保存在在CH,CL,DH中中 iint 21hh mmov al,ch ;小时时数设定定 mmov ah,0 ccalll bcctd ;调调用进制制转换子子程序 ppu
14、shh axx aand al,0f0hh ;选选取all高四位位 mmov cl,4 ;设置右右循环的的次数 rrol al,cl ;右循循环 oor aal,330h ;加加30hh得到AACSIII码 mmov bxx,aal ;将得得到的结结果送到到t_bbufff缓冲区区 iinc bx ;BBX自加加1,指指针指向向下一个个缓冲区区的下一一个地址址 ppop ax aand al,0fhh ;选取低低四位,道理同同上 oor aal,330h mmov bxx,aal ;将转转换后的的低四位位值送入入缓冲区区的第二二个地址址 iinc bx ;- mmov al,: ;显显示分号号
15、 mmov bxx,aal iinc bx ;- mmov ah,2chh iint 21hh mmov al,cl ;分钟钟数设定定 mmov ah,0 ccalll bcctd ppushh axx aand al,0f0hh mmov cl,4 rrol al,cl oor aal,330h mmov bxx,aal iinc bx ppop ax aand al,0fhh oor aal,330h mmov bxx,aal iinc bx ;- mmov al,: ;显示;号 mmov bxx,aal iinc bx ;- mmov ah,2chh ;秒设定定 iint 21hh mm
16、ov al,dh mmov ah,0 ccalll bcctd ppushh axx aand al,0f0hh mmov cl,4 rrol al,cl oor aal,330h mmov bxx,aal iinc bx ppop ax aand al,0fhh oor aal,330h mmov bxx,aal iinc bx ;- mmov al,$ ;将字字符串的的结束位位送至显显示缓冲冲区的最最后一位位 mmov bxx,aal ;- ppushh bbx ;置置光标位位置 ,AH=2,BBH=00,DHH跟DLL分别为为行号与与列号,并入栈栈保护BBX mmov ah,2 mmov
17、 bh,0 mmov dh,17 mmov dl,41 iint 10hh ppop bx llea dx,t_bbufff ;送t_bufff偏移移地址到到DX,并调用用DOSS显示功功能,功功能号为为9 mmov ah,9 iint 21hh ppushh bbx ;置置光标位位置 mmov ah,2 mmov bh,0 mmov dh,0 mmov dl,0 iint 10hh ppop bx llea dx,messs1 mmov ah,9 iint 21hh ppushh bbx ;置置光标位位置 mmov ah,2 mmov bh,0 mmov dh,17 mmov dl,21 i
18、int 10hh ppop bx llea dx,messs2 mmov ah,9 iint 21hh ;- ccalll deelayy1 mmov ah,1 ;按任任意键结结束,调调用键盘盘I/OO中断功功能号11,获取取键值到到AL iint 16hh ccmp al,1bhh jjz quuit ;是EESC键键的话就就跳转 jjmp ddispplayyquitt: moov aah,44ch innt 221h reet;-bctdd prroc neaar;二二进制转转BCDD码子程程序;AX输输入参数数;AX输输出参数数,存放放调整过过的BCCD码; mmov ddx,aax
19、mmov aax,00 mmov ccx,116 ;设循循环次数数bctdd1: cclc ;清进位位标志CC rrcl ddx,11 ;通过进进位的循循环右移移 aadc aal,aal ;带进位位加法 ddaa ;加法的的十进制制调整 xxchgg aal,aah ;交换高高,低八八位 aadc aal,aal ddaa xxchgg aal,aah lloopp bbctdd1 ;循环环,次数数保存在在CX里里 rretbctdd enddp;-cleaar pprocc neear ppushh aax ;入栈栈保护现现场 ppushh bbx ppushh ccx ppushh dd
20、x mmov ax,06000h;ah=06(滚动)al=00(全屏空空白) mmov bh,3fhh ;背景颜颜色(33),白白色前景景(f) ssub cx,cx mmov dx,5f5ffh iint 10hh ppop dx ;出出栈恢复复现场 ppop cx ppop bx ppop ax rretcleaar eendpp;-delaay1 PROOC ;精确延延迟时间间子程序序MOVV DXX,044ffhh ;循循环次数数up:XORR CXX,CXXa:NNOPLOOOP aaDECC DXXJNZZ uppRETTdelaay1 ENDDP;-codee eendss eend maiin程序运行行截图: