1、沈阳航空航天大学课 程 设 计 报 告课程设计名称:微机系统综合课程设计课程设计题目:电子秒表院(系):计算机学院专 业:计算机科学与技术班 级:04010101学 号:2010040101024姓 名:指导教师:訾学博完成日期:2013年7月5日沈阳航空航天大学课程设计报告 -I-目 录第 1 章 总体设计方案 .11.1 课程设计的内容和要求 .11.2 设计原理 .11.3 设计思路 .21.4 实验环境 .2第 2 章 详细设计方案 .32.1 主程序设计 .32.2 功能模块的设计与实现 .42.3 程序连线图 .6第 3 章 结果测试及分析 .73.1 结果测试 .73.2 结果分
2、析 .7参考文献 .8附 录 .9沈阳航空航天大学课程设计报告 第 1 章 总体设计方案-1-第 1 章 总体设计方案1.1 课程设计的内容和要求一、课程设计内容:设计一个带时间显示的电子秒表,具体内容如下:1.电子秒表的初始状态为零,分别显示分、秒、毫秒;2.设计一个按钮,按第一次开始计时,按第二次计时暂停,显示当前记录的时间,按第三次计时停止,回到初始态;3.有时间显示的功能,当不用电子秒表的功能时,显示当先的时间,分别为时、分、秒形式。二、课程设计要求:1. 独立完成课程设计任务;2. 通过老师当场验收;3. 交出完整的课程设计报告。1.2 设计原理根据课程设计任务书的内容与要求,要设计
3、一个带时间显示的电子秒表,设计一个按钮带有计时开始、计时暂停、计时清零功能,还要可以进行时钟显示。在本次设计中主要使用了 8253 定时/计数器芯片、8259A 中断控制芯片以及 8279 键盘/显示芯片来完成电子秒表的计时过程和时钟显示过程的模拟。程序开始时扫描键盘判断是否按键,如有则读出相应的控制键,来决定做什么操作,例如开始计时、暂停计时、停止计时、时钟显示等等。利用 8253 定时/计数器芯片实现分频功能,使其产生 100HZ(10 毫秒)的方波,使计时周期为 10ms;利用 8259A 中断控制芯片产生中断响应,通过8253 控制 8259 每 10 毫秒产生一次中断,使秒表加 1,
4、实现计时功能;利用8279 键盘/显示芯片在数码管上进行显示,将秒表的计时过程、时钟的当前时间显示在数码管上。沈阳航空航天大学课程设计报告 第 1 章 总体设计方案-2-1.3 设计思路采用汇编语言程序结合硬件电路设计方法,利用 AEDK 实验箱上已有芯片来实现一个带时间显示的电子秒表(包括开始计时、暂停计时、停止计时、时钟显示等等) 。(1) 提出方案首先,实现电子秒表的计时功能;其次,通过一个按钮实现电子秒表的开始计时、暂停计时、停止计时的功能;再次,通过一个按钮实现秒表显示和时钟显示切换的功能;最后,要实现秒表的运行和停止与时钟运行的互不影响。(2) 方案论证为了完成电子秒表的计时功能,
5、可以应用 8253 定时/计数器芯片,设定计数器 0 工作在模式 3,由于本实验要求计时周期为 10 毫秒,故可以利用8253 实现分频功能,使其产生 100HZ 的方波。并且利用 8259 产生中断响应每10 毫秒产生一次中断,使计数器加 1,实现秒表计数。并当秒表达到最大值时,即 59 分 59 秒 990 毫秒,将秒表重新初始化;当时钟达到最大值时,即 23 时59 分 59 秒,将时钟重新初始化为通过一个按钮实现电子秒表的开始计时、暂停计时、停止计时的功能,可以利用 8279 键盘/显示芯片来读入键值,再设置 num 来计数,以便来区分开始计时、暂停计时、停止计时。为通过一个按钮实现秒
6、表显示和时钟显示切换的功能,可以利用 8279 键盘/显示芯片来读入键值,再设置 n 来区分是秒表显示、还是时钟显示。为实现秒表的运行和停止与时钟运行的互不影响,设置 flag 来区分是秒表运行、还是秒表停止,在中断中判断秒表是否运行。1.4 实验环境硬件环境:AEDK 实验箱,PC 机。软件环境:LCA88ET 应用软件。沈阳航空航天大学课程设计报告 第 2 章 详细设计方案-3-第 2 章 详细设计方案2.1 主程序设计主程序流程图如图 2.1 所示。NYNNYYYNNY开始初始化芯片输入按键,读取按键值键值为 A第一次输入A第二次输入A第三次输入A计时开始计时暂停计时结束,清零键值为 B
7、时钟秒表切换图 2.1 主程序流程图沈阳航空航天大学课程设计报告 第 2 章 详细设计方案-4-2.2 功能模块的设计与实现对 8253、8259、8279 各个芯片进行初始化,并将中断服务程序装入中断向量表。利用 8253 定时/计数器芯片产生 100HZ 的方波,使 8259 每 10 毫秒产生一次中断,使秒表加 1,实现计时功能利用 8279 的键盘输入功能输入控制键,利用显示功能,秒表或时钟显示在七段数码管上。(1)芯片初始化模块的设计与实现对 8253、8259、8279 等芯片进行初始化,并将中断服务程序装入中断向量表。流程图如下所示:开始关中断初始化 8253、8259、8279
8、将中断服务程序装入中断向量表中开中断结束图 2.2 芯片初始化流程图(2)功能实现模块的设计与实现利用 8253 定时/计数器芯片产生 100HZ 的方波,使 8259 每 10 毫秒产生一次中断,使秒表加 1,实现计时功能利用 8279 的键盘输入功能输入控制键,利用显示功能,秒表或时钟显示在七段数码管上。沈阳航空航天大学课程设计报告 第 2 章 详细设计方案-5-程序中所需定义的内存单元含义如下:disbufm:秒表的时间值;disbufh:时钟的时间值;tab: 存放能在数码管上显示 0-9 的十六进制码;flag: 标志是计时运行(0)还是计时停止(1);flag1: 标志是秒表未达最
9、大值(0)还是秒表达最大值(1);flag2: 标志是时钟未达最大值(0)还是时钟达最大值(1); n:标志是秒表显示(0)还是时钟显示(1);num:标志是第几次按下 A 键。程序中所需的秒表的各个功能键定义如下:A:,按第一次时秒表开始计时,按第二次时秒表计时暂停按第三次时秒表计时停止,回到初始态;B:切换键,进行秒表显示和时钟显示的切换。(1)清屏子程序的实现在清屏时所显示的状态与秒表在初始状态一样,即 00-00-00,数码管显示如图 2.3 所示。图 2.3 清屏图在清屏子程序中,修改 disbufm 或 disbufh 中的值,使分、秒、十毫秒或时、分、秒每位都为零。秒表清屏子程序
10、:begin1: ;秒表初始化mov byte ptrdi,0mov byte ptrdi+1,0mov byte ptrdi+3,0mov byte ptrdi+4,0沈阳航空航天大学课程设计报告 第 2 章 详细设计方案-6-mov byte ptrdi+6,0mov byte ptrdi+7,0ret (2)中断服务子程序在中断服务子程序中实现了秒表的计时和显示与时钟的计时和显示功能,每当 8259 进入中断后,都要修改 disbufh 或 disbufm 和 disbufh 中所存的时间信息,再对 disbufh 或 disbufm 中每一位的值与最大值进行比较,若达到最大值(秒表达到
11、最大值 59-59-99,时钟达到最大值 23-59-59)将 disbufh 或disbufm 进行初始化,最后要通过 8279 将 disbufm 或 disbufh 中所存的时间信息显示一遍。2.3 程序连线图程序连线图如图 2.4 所示。307200HZ200-207VCC210-217注: 8279 键盘/显示芯片自带220-227 有小键盘及 8 位数码管8279CS8259CSIR08253CSclk()Gate()out()沈阳航空航天大学课程设计报告 第 2 章 详细设计方案-7-图 2.4 程序连线图 沈阳航空航天大学课程设计报告 第 3 章 结果测试及分析-8-第 3 章
12、 结果测试及分析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,按第一次开始计时,按第二次计时暂停,
13、显示当前记录的时间,按第三次计时停止,回到初始态;按钮B,实现秒表显示和时钟显示的切换,当不用电子秒表的功能时,可以显示当先的时间,分别为时、分、秒形式。沈阳航空航天大学课程设计报告 参考文献-9-参考文献1龚尚福.微机原理与接口技术 M 西安: 西安电子科技大学出版社, 20032沈美明,温冬婵.IBM-PC 汇编语言程序设计M 北京: 清华大学出版社, 20013张雪兰.汇编语言程序设计 M 北京: 清华大学出版社, 20064王爱英.计算机组成与设计 M 北京:教育出版社, 20035王忠民.微型计算机原理 M 西安: 西安电子科技大学出版社, 2003沈阳航空航天大学课程设计报告 参考
14、文献-10-附 录code segmentassume cs:codemain: jmp startdisbufm db 0,0,0ah,0,0,0ah,0,0 ;秒表初值disbufh db 2,3,0ah,5,9,0ah,5,8 ,0,0 ;时钟初值flag db 1flag1 db 0flag2 db 0num db 0n db 1start: mov ax,8100hmov ds,axcli ;关中断call i8279call i8259call i8253call s1sti ;开中断key: a: mov dx,222h ;是否有键读入in al,dxand al,0fhjz a
15、mov al,40hout dx,al沈阳航空航天大学课程设计报告 附录-11-mov dx,220hin al,dxcmp al,0ahjz stajmp changesta: ;startcmp num,0jnz paumov flag,0mov num,1jmp key pau: ;pausecmp num,1jnz clemov flag,1mov num,2jmp keycle: ;clearmov di,offset disbufmcall begin1mov num,0jmp key change: ;changecmp al,0bh jnz keycmp n,0jz chang
16、e1mov n,0沈阳航空航天大学课程设计报告 附录-12-jmp keychange1: mov n,1jmp key i8279: mov al,0d2h ;8279A 初始化 220-227 mov dx,222hout dx,al mov al,0out dx,alret i8253: mov al,36h ;8253A 初始化 200-207mov dx,203h out dx,almov ax,0c00hmov dx,200hout dx,almov al,ahout dx,alreti8259: mov al,13h ;8259A 初始化 210-217mov dx,210hou
17、t dx,almov al,30hmov dx,211hout dx,almov al,03hout dx,almov al,0feh ;中断 IR0out dx,alret沈阳航空航天大学课程设计报告 附录-13-begin1: ;秒表初始化mov byte ptrdi,0mov byte ptrdi+1,0mov byte ptrdi+3,0mov byte ptrdi+4,0mov byte ptrdi+6,0mov byte ptrdi+7,0retbegin2: ;时钟初始化mov byte ptrdi,0mov byte ptrdi+1,0mov byte ptrdi+3,0mov
18、 byte ptrdi+4,0mov byte ptrdi+6,0mov byte ptrdi+7,0mov byte ptrdi+8,0mov byte ptrdi+9,0ret s1: ;中断向量的装入push ds push bxxor ax,axmov ds,axmov bx,30h*4mov ax,offset intrmov bx,axmov ax,8100hmov bx+2,axpop bx沈阳航空航天大学课程设计报告 附录-14-pop dsret intr: ;中断push axpush dipush dxmov si,offset disbufmmov di,offset
19、disbufhcmp flag,0jnz r;秒表计时cmp byte ptrsi+7,9jz c1inc byte ptrsi+7jmp rc1: mov byte ptrsi+7,0cmp byte ptrsi+6,9jz c2inc byte ptrsi+6jmp rc2: mov byte ptrsi+6,0cmp byte ptrsi+4,9jz c3inc byte ptrsi+4jmp rc3: mov byte ptrsi+4,0cmp byte ptrsi+3,5jz c4inc byte ptrsi+3沈阳航空航天大学课程设计报告 附录-15-jmp rc4: mov by
20、te ptrsi+3,0cmp byte ptrsi+1,9jz c5inc byte ptrsi+1jmp rc5: mov byte ptrsi+1,0inc byte ptrsi;时钟计时r: cmp byte ptrdi+9,9jz r1inc byte ptrdi+9jmp isendr1: mov byte ptrdi+9,0cmp byte ptrdi+8,9jz r2inc byte ptrdi+8jmp isendr2: mov byte ptrdi+8,0cmp byte ptrdi+7,9jz r3inc byte ptrdi+7jmp isendr3: mov byte
21、 ptrdi+7,0cmp byte ptrdi+6,5jz r4inc byte ptrdi+6jmp isendr4: mov byte ptrdi+6,0沈阳航空航天大学课程设计报告 附录-16-cmp byte ptrdi+4,9jz r5inc byte ptrdi+4jmp isendr5: mov byte ptrdi+4,0cmp byte ptrdi+3,5jz r6inc byte ptrdi+3jmp isendr6: mov byte ptrdi+3,0cmp byte ptrdi+1,9jz r7inc byte ptrdi+1jmp isendr7: mov byt
22、e ptrdi+1,0inc byte ptrdiisend: cmp flag,0jnz isend1;秒表是否到最大值cmp byte ptrsi,5jnz displaycmp byte ptrsi+1,9jnz displaycmp byte ptrsi+3,5jnz displaycmp byte ptrsi+4,9jnz displaycmp byte ptrsi+6,9jnz display沈阳航空航天大学课程设计报告 附录-17-cmp byte ptrsi+7,9jnz displaymov flag1,1;时钟是否到最大值isend1: cmp byte ptrdi,2jn
23、z displaycmp byte ptrdi+1,3jnz displaycmp byte ptrdi+3,5jnz displaycmp byte ptrdi+4,9jnz displaycmp byte ptrdi+6,5jnz displaycmp byte ptrdi+7,9jnz displaycmp byte ptrdi+8,9jnz displaycmp byte ptrdi+9,9jnz displaymov flag2,1display: ;显示mov bx,offset tabcmp n,0jnz hmov si,offset disbufmjmp h1h: mov si
24、,offset disbufhh1: add si,7沈阳航空航天大学课程设计报告 附录-18-mov al,90hmov dx,222hout dx,almov cx,8dis: mov al,sixlatmov dx,220hout dx,aldec siloop discmp flag1,0jz h2push dimov di,offset disbufmcall begin1mov flag1,0pop dih2: cmp flag2,0jz h3push dimov di,offset disbufhcall begin2mov flag2,0pop dih3: pop dxpop
25、dipop axiret沈阳航空航天大学课程设计报告 附录-19-tab db 3fh,6,5bh,4fh,66h,6dh,7dh,7,7fh,6fh,40hcode endsend main沈阳航空航天大学课程设计报告-20-课程设计总结:通过此次的课程设计,我学会了许多在课堂上学不到的知识。有一些知识只有你自己亲身去实践,去发现问题,然后依靠自己解决了问题,你才能真正掌握。通过本次实验,我对 8279,8253,8259 芯片都有了进一步的了解,尤其是8279 的各种控制字及 8279 的各种功能,还对程序的调试有了进一步的掌握。在课设过程中,通过翻阅书籍,咨询同学,上网找资料,不但提高了我的查找能力,而且还提高了自己快速融合各种信息,并将其转变为自己的知识的能力。而且,从这次课程设计活动中我认识到了一定要认真对待每一个问题,因为,很有可能就在一个你不注意的地方导致你失败。总之,这次课设是自己用心去完成的一项工作,但,由于本人水平有限能力有限,此次课程设计还有很多不足,敬请老师谅解!在此次课设中,得到了老师及同学不少帮助,所以,我在这里要衷心地感谢老师的耐心指导以及同学们的热心帮助!指导教师评语:指导教师(签字): 年 月 日沈阳航空航天大学课程设计报告-21-课程设计成绩