还剩17页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
微机课程设计一电子秒表第1章总体设计方案
1.1课程设计的内容和要求
一、课程设计内容设计一个带时间显示的电子秒表,具体内容如下.电子秒表的初始状态为零,分别显示分、秒、毫秒;.设计一个按钮,按第一次开始计时,按第二次计时暂停,显示当前记录的时间,按第三次计时停止,回到初始态;.有时间显示的功能,当不用电子秒表的功能时,显示当先的时间,分别为时、分、秒形式
二、课程设计要求.独立完成课程设计任务;.通过老师当场验收;.交出完整的课程设计报告
1.2设计原理根据课程设计任务书的内容与要求,要设计一个带时间显示的电子秒表,设计一个按钮带有计时开始、计时暂停、计时清零功能,还要可以进行时钟显示在本次设计中主要使用了8253定时/计数器芯片、8259A中断控制芯片以及8279键盘/显示芯片来完成电子秒表的计时过程和时钟显示过程的模拟程序开始时扫描键盘判断是否按键,如有则读出相应的控制键,来决定做什么操作,例如开始计时、暂停计时、停止计时、时钟显示等等利用8253定时/计数器芯片实现分频功能,使其产生100HZ(10毫秒)的方波使计时周期为10ms;利用8259A中断控制芯片产生中断响应,通过8253控制8259每10毫秒产生一次中断,使秒表加1实现计时功能;利用8279键盘/显示芯片在数码管上进行显示,将秒表的计时过程、时钟的当前时间显示在数码管上
1.3设计思路采用汇编语言程序结合硬件电路设计方法,利用AEDK实验箱上已有芯片来实现一个带时间显示的电子秒表(包括开始计时、暂停计时、停止计时、时钟显示等等)movbyteptr[di+3]0movbyteptr[di+4]0movbyteptr[di+6]0movbyteptr[di+7]0movbyteptr[di+8]0movbyteptr[di+9]0retsi:;中断向量的装入pushdspushbxxoraxaxmovdsaxmovbx30h*4movaxoffsetintrmov[bx]axmovax8100hmov[bx+2]axpopbxpopdsretintr:;中断pushaxpushdipushdxmovsioffsetdisbufmmovdioffsetdisbufhcmpflag0jnzr;秒表计时cmpbyteptr[si+7]9jzclincbyteptr[si+7]jmprcl:movbyteptr[si+7]0cmpbyteptr[si+6]9jzc2incbyteptr[si+6]jmprc2:movbyteptr[si+6]0cmpbyteptr[si+4]9jzc3incbyteptr[si+4]jmprc3:movbyteptr[si+4]0cmpbyteptr[si+3]5jzc4incbyteptr[si+3]jmprcmpbyteptr[si+1]9jzc5incbyteptr[si+1]jmprc5:movbyteptr[si+1]0incbyteptr[si];时钟计时r:cmpbyteptr[di+9]9jzrlincbyteptr[di+9]jmpisendrl:movbyteptr[di+9]0cmpbyteptr[di+8]9jzr2incbyteptr[di+8]jmpisendr2:movbyteptr[di+8]0cmpbyteptr[di+7]9jzr3incbyteptr[di+7]jmpisendr3:movbyteptr[di+7]0jzr4incbyteptr[di+6]jmpisendr4:movbyteptr[di+6]0cmpbyteptr[di+4]9jzr5incbyteptr[di+4]jmpisendr5:movbyteptr[di+4]0cmpbyteptr[di+3]5jzr6incbyteptr[di+3]jmpisendr6:movbyteptr[di+3]0cmpbyteptr[di+1]9jzr7incbyteptr[di+1]jmpisendr7:movbyteptr[di+1]0incbyteptr[di]isend:cmpflag0jnzisendl;秒表是否到最大值jnzdisplaycmpbyteptr[si+1]9jnzdisplaycmpbyteptr[si+3]5jnzdisplaycmpbyteptr[si+4]9jnzdisplaycmpbyteptr[si+6]9jnzdisplaycmpbyteptr[si+7]9jnzdisplaymovflagl1;时钟是否到最大值isendl:cmpbyteptr[di]2jnzdisplaycmpbyteptr[di+1]3jnzdisplaycmpbyteptr[di+3]5jnzdisplaycmpbyteptr[di+4]9jnzdisplaycmpbyteptr[di+6]5jnzdisplayjnzdisplaycmpbyteptr[di+8]9jnzdisplaycmpbyteptr[di+9]9jnzdisplaymovflag21display:;显示movbxoffsettabcmpn0jnzhmovsioffsetdisbufmjmphlh:movsioffsetdisbufhhl:addsi7moval90hmovdx222houtdxalmovex8dis:moval[si]xlatmovdx220houtdxaldecsiloopdiscmpflagl0jzh2pushdimovdioffsetdisbufmcallbeginlmovflagl0popdih2:cmpflag20jzh3pushdimovdioffsetdisbufhcallbegin2movflag20popdih3:popdxpopdipopaxirettabdb3fh65bh4fh66h6dh7dh77fh6fh40hcodeendsendmain课程设计总结:通过此次的课程设计,我学会了许多在课堂上学不到的知识有一些知识只有你自己亲身去实践,去发现问题,然后依靠自己解决了问题,你才能真正掌握通过本次实验,我对827982538259芯片都有了进一步的了解,尤其是8279的各种控制字及8279的各种功能,还对程序的调试有了进一步的掌握在课设过程中,通过翻阅书籍,咨询同学,上网找资料,不但提高了我的查找能力,而且还提高了自己快速融合各种信息,并将其转变为自己的知识的能力而且,从这次课程设计活动中我认识到了一定要认真对待每一个问题,因为,很有可能就在一个你不注意的地方导致你失败总之,这次课设是自己用心去完成的一项工作,但,由于本人水平有限能力有限此次课程设计还有很多不足,敬请老师谅解!在此次课设中,得到了老师及同学不少帮助,所以,我在这里要衷心地感谢老师的耐心指导以及同学们的热心帮助!指导教师评语:指导教师(签字)年月日课程设计成绩1提出方案首先,实现电子秒表的计时功能;其次通过一个按钮实现电子秒表的开始计时、暂停计时、停止计时的功能;再次,通过一个按钮实现秒表显示和时钟显示切换的功能;最后,要实现秒表的运行和停止与时钟运行的互不影响2方案论证为了完成电子秒表的计时功能,可以应用8253定时/计数器芯片,设定计数器0工作在模式3由于本实验要求计时周期为10毫秒,故可以利用8253实现分频功能,使其产生100HZ的方波并且利用8259产生中断响应每10毫秒产生一次中断,使计数器加1实现秒表计数并当秒表达到最大值时,即59分59秒990毫秒,将秒表重新初始化;当时钟达到最大值时,即23时59分59秒,将时钟重新初始化为通过一个按钮实现电子秒表的开始计时、暂停计时、停止计时的功能,可以利用8279键盘/显示芯片来读入键值,再设置num来计数,以便来区分开始计时、暂停计时、停止计时为通过一个按钮实现秒表显示和时钟显示切换的功能,可以利用8279键盘/显示芯片来读入键值,再设置n来区分是秒表显示、还是时钟显示为实现秒表的运行和停止与时钟运行的互不影响,设置flag来区分是秒表运行、还是秒表停止,在中断中判断秒表是否运行4实验环境•硬件环境AEDK实验箱,PC机•软件环境LCA88ET应用软件第2章详细设计方案主程序设计主程序流程图如图
2.1所示图
2.1主程序流程图2功能模块的设计与实现对
8253、
8259、8279各个芯片进行初始化,并将中断服务程序装入中断向量表利用8253定时/计数器芯片产生100HZ的方波,使8259每10毫秒产生一次中断,使秒表加1实现计时功能利用8279的键盘输入功能输入控制键,利用显示功能,秒表或时钟显示在七段数码管上1芯片初始化模块的设计与实现对
8253、
8259、8279等芯片进行初始化,并将中断服务程序装入中断向量表流程图如下所示图
2.2芯片初始化流程图2功能实现模块的设计与实现利用8253定时/计数器芯片产生100HZ的方波,使8259每10毫秒产生一次中断,使秒表加1实现计时功能利用8279的键盘输入功能输入控制键,利用显示功能,秒表或时钟显示在七段数码管上程序中所需定义的内存单元含义如下disbufm秒表的时间值;disbufh时钟的时间值;tab存放能在数码管上显示0-9的十六进制码;flag标志是计时运行0还是计时停止⑴;flagl标志是秒表未达最大值0还是秒表达最大值1;flag2标志是时钟未达最大值0还是时钟达最大值1;n标志是秒表显示0还是时钟显示1;num标志是第几次按下A键程序中所需的秒表的各个功能键定义如下A按第一次时秒表开始计时,按第二次时秒表计时暂停按第三次时秒表计时停止,回到初始态;B切换键,进行秒表显不和时钟显小的切换⑴清屏子程序的实现在清屏用所显示的状态与秒表在初始状态一样,即00-00-00数码管显示如图3所示图
2.3清屏图在清屏子程序中,修改disbufm或disbufh中的值,使分、秒、十毫秒或时、分、秒每位都为零秒表清屏子程序beginl:;秒表初始化movbyteptr[di]0movbyteptr[di+1]0movbyteptr[di+3]0movbyteptr[di+4]0movbyteptr[di+6]0movbyteptr[di+7]0ret2中断服务子程序在中断服务子程序中实现了秒表的计时和显示与时钟的计时和显示功能,每当8259进入中断后,都要修改disbufh或disbufm和disbufh中所存的时间信息,再对disbufh或disbufm中每一位的值与最大值进行比较,若达到最大值秒表达到最大值59-59-99时钟达到最大值23-59-59将disbufh或disbufm进行初始化,最后要通过8279将disbufm或disbufh中所存的时间信息显示一遍
2.3程序连线图程序连线图如图
2.4所示307200HZ200-207vcc210-217注8279键盘/显示芯片自带220-227有小键盘及8位数码管图
2.4程序连线图第3章结果测试及分析
3.1结果测试测试结果如下1时钟以时、分、秒形式显示时间显示时间如XX-XX-XX;2电子秒表的初始状态为零,分别显示分、秒、10毫秒,显示00-00-00;3按A键开始秒表计时显示时间如XX-XX-XX;4再按一次A键秒表暂停计时,显示秒表暂停时的时间;5第三次按A键时秒表计时器清零,显示00-00-00;6按B键时实现秒表显不和时钟显示的切换2结果分析对于上述的运行结果和操作过程,已经达到了课程设计任务书中的要求秒表的初始状态为零,分别显示分、秒、10毫秒;按钮A按第一次开始计时,按第二次计时暂停,显示当前记录的时间,按第三次计时停止,回到初始态;按钮B实现秒表显示和时钟显示的切换,当不用电子秒表的功能时,可以显示当先的时间,分别为时、分、秒形式参考文献[1]龚尚福.微机原理与接口技术国]西安西安电子科技大学出版社,2003[2]沈美明,温冬婵.^^^:汇编语言程序设计国]北京清华大学出版社,2001[3]张雪兰.汇编语言程序设计[M]北京清华大学出版社,2006[4]王爱英.计算机组成与设计[M]北京教育出版社,2003[5]王忠民.微型计算机原理[M]西安西安电子科技大学出版社附录codesegmentassumecs:codemain:jmpstartdisbufmdb00Oah00Oah00;秒表初值disbufhdb23Oah59Oah5800;时钟初值flagdb1flagldb0flag2db0numdb0ndb1start:movax8100hmovdsaxcli;关中断calli8279calli8259calli8253callsisti;开中断key:a:movdx222h;是否有键读入inaldxandalOfhjzamoval40houtdxalmovdx220hinaldxcmpalOahjzstajmpchangesta:;startcmpnum0jnzpaumovflag0movnum1jmpkeypau:;pausecmpnum1jnzclemovflag1movnum2jmpkeycle:;clearmovdioffsetdisbufmcallbeginlmovnum0jmpkeychange:;changecmpalObhjnzkeycmpn0jzchangelmovn0jmpkeychangel:movn1jmpkeyi8279:moval0d2h;8279A初始化220-227movdx222houtdxalmoval0outdxalreti8253:moval36h;8253A初始化200-207movdx203houtdxalmovaxOcOOhmovdx200houtdxaloutdxalreti8259:moval13h;8259A初始化210-217movdx210houtdxalmoval30hmovdx211houtdxalmoval03houtdxalmovalOfeh;中断IROoutdxalretbeginl:;秒表初始化movbyteptr[di]0movbyteptr[di+1]0movbyteptr[di+3]0movbyteptr[di+4]0movbyteptr[di+6]0movbyteptr[di+7]0retbegin2:;时钟初始化movbyteptr[di]0movbyteptr[di+1]0。