《微机课程设计电子秒表.docx》由会员分享,可在线阅读,更多相关《微机课程设计电子秒表.docx(17页珍藏版)》请在第一文库网上搜索。
1、微机课程设计一电子秒表第1章总体设计方案1.1课程设计的内容和要求一、课程设计内容:设计一个带时间显示的电子秒表,具体内容如下:1 .电子秒表的初始状态为零,分别显示分、秒、毫秒;2 .设计一个按钮,按第一次开始计时,按第二次计时暂停,显示当前记录的时问,按第三次计时停止,回到初始态;3 .有时间显示的功能,当不用电子秒表的功能时,显示当先的时间,分别为时、分、秒形式。二、课程设计要求:1 .独立完成课程设计任务;2 .通过老师当场验收;3 .交出完整的课程设计报告。1.2 设计原理根据课程设计任务书的内容与要求,要设计一个带时间显示的电子秒表,设计一个按钮带有计时开始、计时暂停、计时清零功能
2、,还要可以进行时钟显示。在本次设计中主要使用了8253定时/计数器芯片、8259中断控制芯片以及8279键盘/显示芯片来完成电子秒表的计时过程和时钟显示过程的模拟。程序开始时扫描键盘判断是否按键,如有则读出相应的控制键,来决定做什么操作,例如开始计时、暂停计时、停止计时、时钟显示等等。利用8253定时/计数器芯片实现分频功能,使其产生IOoHZ(10毫秒)的方波,使计时周期为IOms;利用8259A中断控制芯片产生中断响应,通过8253控制8259每10毫秒产生一次中断,使秒表加1,实现计时功能;利用8279键盘/显示芯片在数码管上进行显示,将秒表的计时过程、时钟的当前时间显示在数码管上。1.
3、3 设计思路采用汇编语言程序结合硬件电路设计方法,利用AEDK实验箱上已有芯片来实现一个带时间显示的电子秒表(包括开始计时、暂停计时、停止计时、时钟显示等等)。(1)提出方案首先,实现电子秒表的计时功能;其次,通过一个按钮实现电子秒表的开始计时、暂停计时、停止计时的功能;再次,通过一个按钮实现秒表显示和时钟显示切换的功能;最后,要实现秒表的运行和停止与时钟运行的互不影响。(2)方案论证为了完成电子秒表的计时功能,可以应用8253定时/计数器芯片,设定计数器O工作在模式3,由于本实验要求计时周期为10毫秒,故可以利用8253实现分频功能,使其产生IOOHZ的方波。并且利用8259产生中断响应每1
4、0毫秒产生一次中断,使计数器加1,实现秒表计数。并当秒表达到最大值时,即59分59秒990毫秒,将秒表重新初始化;当时钟达到最大值时,即23时59分59秒,将时钟重新初始化为通过一个按钮实现电子秒表的开始计时、暂停计时、停止计时的功能,可以利用8279键盘/显示芯片来读入键值,再设置num来计数,以便来区分开始计时、暂停计时、停止计时。为通过一个按钮实现秒表显示和时钟显示切换的功能,可以利用8279键盘/显示芯片来读入键值,再设置n来区分是秒表显示、还是时钟显示。为实现秒表的运行和停止与时钟运行的互不影响,设置f1ag来区分是秒表运行、还是秒表停止,在中断中判断秒表是否运行。1.4 实验环境硬
5、件环境:AEDK实验箱,PC机。软件环境:1CA88ET应用软件。第2章详细设计方案2.1 主程序设计主程序流程图如图2.1所示。图2.1主程序流程图2.2 功能模块的设计与实现对8253、8259、8279各个芯片进行初始化,并将中断服务程序装入中断向量表。利用8253定时/计数器芯片产生IOOHZ的方波,使8259每10毫秒产生一次中断,使秒表加1实现计时功能利用8279的键盘输入功能输入控制键,利用显示功能,秒表或时钟显示在七段数码管上。(1)芯片初始化模块的设计与实现对8253、8259、8279等芯片进行初始化,并将中断服务程序装入中断向量表。流程图如下所示:图2.2芯片初始化流程图
6、(2)功能实现模块的设计与实现利用8253定时/计数器芯片产生IOOHZ的方波,使8259每10毫秒产生一次中断,使秒表加1,实现计时功能利用8279的键盘输入功能输入控制键,利用显示功能,秒表或时钟显示在七段数码管上。程序中所需定义的内存单元含义如下:disbufm:秒表的时间值;disbufh:时钟的时间值;tab:存放能在数码管上显示0-9的十六进制码;f1ag:标志是计时运行(0)还是计时停止(1);f1ag1:标志是秒表未达最大值(0)还是秒表达最大值(1);f1ag2:标志是时钟未达最大值(0)还是时钟达最大值(1);n:标志是秒表显示(0)还是时钟显示(1);num:标志是第几次
7、按下A键。程序中所需的秒表的各个功能键定义如下:A:,按第一次时秒表开始计时,按第二次时秒表计时暂停按第三次时秒表计时停止,回到初始态;B:切换键,进行秒表显示和时钟显示的切换。(1)清屏子程序的实现在清屏时所显示的状态与秒表在初始状态一样,即00-00-00,数码管显示如图2. 3所示。图2.3清屏图在清屏子程序中,修改disbufm或disbufh中的值,使分、秒、十毫秒或时、分、秒每位都为零。秒表清屏子程序:begin1:;秒表初始化movbyteptrdi,0movbyteptrdi+1,0movbyteptrdi+3,0movbyteptrdi+4,0movbyteptrdi+6,0
8、movbyteptrdi+7,0ret(2)中断服务子程序在中断服务子程序中实现了秒表的计时和显示与时钟的计时和显示功能,每当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键盘/显示芯片自
9、带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键时实现秒表显示和时钟显示的切换。3.2 结果分析对于上述的运行结果和操作过程,已经达到了课程设计任务书中的要求。秒表的初始状态为零,分别显示分、秒、10毫秒;按钮A,按第一次开
10、始计时,按第二次计时暂停,显示当前记录的时间,按第三次计时停止,回到初始态;按钮B,实现秒表显示和时钟显示的切换,当不用电子秒表的功能时,可以显示当先的时间,分别为时、分、秒形式。参考文献1龚尚福.微机原理与接口技术M西安:西安电子科技大学出版社,20032沈美明,温冬婵.IBM-PC汇编语言程序设计M北京:清华大学出版社,20013张雪兰.汇编语言程序设计M北京:清华大学出版社,20064王爱英.计算机组成与设计M北京:教育出版社,20035王忠民.微型计算机原理M西安:西安电子科技大学出版社,2003附录codesegmentassumecs:codemain:jmpstartdisbuf
11、mdb0,0,Oah,0,0,Oah,0,0;秒表初值disbufhdb2,3,Oah,5,9,Oah,5,8,0,0;时钟初值f1agdb1f1ag1dbOf1ag2dbOnumdbOndb1start:movax,8100hmovds,axc1i;关中断ca11i8279ca11i8259ca11i8253ca11sisti;开中断key:a:movdx,222h;是否有键读入anda1,Ofhjzamova1,40houtdx,a1movdx,220hina1,dxcmpa1,Oahjzstajmpchangesta:;startcmpnum,0jnzpaumovf1ag,0movnum
12、,1jmpkeypau:;pausecmpnum,1jnzc1emovf1ag,1movnum,2jmpkeyc1e:;c1earmovdi,offsetdisbufmca11begin1movnum,0jmpkeychange:;changecmpa1,Obhjnzkeycmpn,0jzchange1movn,0jmpkeychange1:movn,1jmpkeyi8279:mova1,0d2h;8279A初始化220-227movdx,222houtdx,a1mova1,0outdx,a1reti8253:mova1,36h;8253A初始化200-207movdx,203houtdx,a
13、1movax,OcOOhmovdx,200houtdx,a1mova1,ahoutdx,a1reti8259:mova1,13h;8259A初始化210-217movdx,210houtdx,a1mova1,30hmovdx,211houtdx,a1mova1,03houtdx,a1mova1,Ofeh;中断IRooutdx,a1retbegin1:;秒表初始化movbyteptrdi,0movbyteptrdi+1,0movbyteptrdi+3,0movbyteptrdi+4,0movbyteptrdi+6,0movbyteptrdi+7,0retbegin2:;时钟初始化movbytep
14、trdi,0movbyteptrdi+1,0movbyteptrdi+3,0movbyteptrdi+4,0movbyteptrdi+6,0movbyteptrdi+7,0movbyteptrdi+8,0movbyteptrdi+9,0retsi:;中断向量的装入pushdspushbxxorax,axmovds,axmovbx,30h*4movax,offsetintrmovbx,axmovax,8100hmovbx+2,axpopbxpopdsretintr:;中断pushaxpushdipushdxmovsi,offsetdisbufmmovdi,offsetdisbufhcmpf1ag,0jnzr;秒表计时cmpbyteptrsi+7,9jzc1incbyteptrsi+7jmprc1:movbyteptrsi+7,0cmpbyteptrsi+6,9jzc2incbyteptrsi+6jmprc2:movbyteptrsi+6,0cmpbyteptrsi+4,9jzc3incbyteptrsi+4jmprc3:movbyteptrsi+4,0cmpbyteptrsi+3,5jzc4incbyteptrsi+3jmprc4:movbyteptrsi+3,0cmpbyteptrsi+1,9jzc5incbyteptrsi+1jmprc5:movbyteptrsi+1