收藏 分享(赏)

微机原理数字钟的设计.doc

上传人:精品资料 文档编号:10740638 上传时间:2020-01-03 格式:DOC 页数:19 大小:136KB
下载 相关 举报
微机原理数字钟的设计.doc_第1页
第1页 / 共19页
微机原理数字钟的设计.doc_第2页
第2页 / 共19页
微机原理数字钟的设计.doc_第3页
第3页 / 共19页
微机原理数字钟的设计.doc_第4页
第4页 / 共19页
微机原理数字钟的设计.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、目 录一、设计要求 .1二、设计目的 .1三、设计的具体实现 .11、系统概述 .12、单元电路设计 .22.1、8255 初始化: 32.2、8253 初始化: 32.3、8259 初始化: 43、软件程序设计和调试 .53.1、主程序流程图: .53.2、电子时钟中断处理程序流程图: .63.3、显示模块流程图: .73.4、程序代码: .7四、结论与展望 .14五、心得体会及建议 .14六、附录 .15七、参考文献 .151电子时钟的设计报告一、设计要求利用 8259A 中断控制器、8253 定时/计数器、8255A 接口芯片以及键盘和数码显示电路,设计一个电子时钟,由 8253 中断定

2、时,小键盘控制电子时钟的启停及初始值的预置。电子时钟的显示格式 HH:MM:SS 由左到右分别为时、分、秒,最大记时 59:59:59 超过这个时间时分秒位都清零从 00:00:00 重新开始。1. 电子时钟具有二十四小时循环记时功能,走时要准。2. 显示格式,时:分:秒。3. 利用 8253 作为定时器。二、设计目的通过本次课程设计学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使设计者的设计水平和对所学知识的应用能力以及分析问题解决问题的能

3、力得到全面提高。1. 熟练掌握 8086/88 教学系统的基本操作和调试程序的各种指令。2. 掌握 8259 中断控制器的工作原理和应用编程方法,练习编写中断程序的方法。3. 掌握 8255 的各种工作方式及其应用编程。4. 掌握 8253 定时/计数器的工作原理、工作方式及其应用编程。5. 熟悉编程及调试程序的方法。6. 练习 LED-KEYBOARD UNIT 的使用方法和数码管的显示编程方法。三、设计的具体实现1、系统概述基本工作原理:系统设计的电子时钟主要由显示模块、时钟控制模块和时钟运算模块三大部分组成。以 8086 微处理器作 CPU,用 8253 做定时器产生时钟频率提供一个频率

4、为10kHz 的时钟信号,要求每隔 10ms 完成一次扫描键盘的工作。在写入控制字与计数初值后,每到 10ms 定时器就启动工作,即当计数器减到 1 时,输出端 OUT0 输出一个 CLK 周期的低电平,向 CPU 申请中断,当达到 100 次时,则输出端 OUT1 输出 1s,向 CPU 申请中断,由 82552控制一个数码管显示,当计数到 60s 时,则输出端 OUT2 向 CPU 申请中断,由另一数码管显示1min,同理由数码管显示 1h.CPU 处理,使数码管的显示发生变化。本设计由 8259A 中断控制器、8253 定时/计数器、8255A 接口芯片、LED 数码显示管和两个按键组成

5、。主要用 8259A 的 IRQ7 的中断服务程序完成秒、分、时的运算即计时功能,IRQ6 的中断服务程序完成调时、调分功能。8253 用来产生 50ms 的脉冲信号作为 IRQ7 的中断请求信号。按键 KK1+和 KK2+分别作为 IRQ2 和 IRQ6 的中断请求信号。按键 KK1+启动/关闭对时功能。它决定是否屏蔽 IRQ7 和 IRQ6 中断源。8255A 负责将内存里的时位和分位值输出到数码管。电子时钟的显示格式 HH:MM:SS 由左到右分别为时、分、秒,每百分之一秒对百分之一秒寄存器的内容加一,并依次对秒、分、小时寄存器的内容加一,六个数码管动态显示时、分、秒的当前值。最大记时

6、59:59:59 超过这个时间时分秒位都清零从 00:00:00 重新开始。2、单元电路设计8259A 的主要功能:(1)每片 8259A 可管理 8 级优先级中断源,通过开关,最多可管理 64 级优先权的中断源。(2)对任何一个级别的中断源都可单独进行屏蔽,使该级中断请求暂时被挂起,直到取消屏蔽时为止。(3)能向 CPU 提供可编程的标识码。(4)具有多种中断优先权管理方式。有完全嵌套方式、自动循环方式、特殊循环方式、特殊屏蔽方式和查询方式五种。这些管理方式均可通过程序动态地进行变化。在本设计中用到了这四种功能,电子时钟的灵活调时功能就是通过对级别的屏蔽或开启来实现的。8255A 的主要功能

7、:可编程外设接口芯片可由程序改变其功能,通用性强、使用灵活。通过 8255A,CPU 可直接同外设相连接,其负责 CPU 和外设之间的数据传送。8253 的主要功能:可编程定时器/计数器,其定时与计数功能可由程序灵活地设定,设定后与 CPU 并行工作,不占用 CPU 的时间。通道 2 工作在 3 方式下,提供计算一秒的中断请求信号。该系统是一个简单的利用 8253 定时器、8255 可并行通信接口和中断控制器 8259 设计的电子时钟系统,在该系统中设有一个启动键,启动键未按下时,显示初始化界面“HELLO” ;3当按下启动键时,8253 定时器开始计时(8253 的初值为 10000,接 1

8、MHz 的脉冲,即当 8253计满 100 时正好是 1S) ,当计时计满 100 时,8259 便产生一次中断,在 LED 显示器便显示系统预先设计好的初始值“02.59.55”便开始从秒位开始加 1,当加到 10S 时,10s 位加 1,加到 60S 时分位加 1,同时秒位清零。该系统主要接口部件有:可并行通信接口 8255 一片,计数器/定时器 8253 一片,中断控制器 8259 一片,七段 LED 数码管显示器 6 个以及译码电路等。其中各个部件的初始化如下:2.1、8255 初始化:可并行通信接口 8255 的控制字是方式选择控制字,A 口工作在方式 0(即基本输入输出方式)下,并

9、且为输出状态,B 口工作在方式 0 下,为输出口,C 口为输出口,其初始化为:8255 控制口地址为 20bhA 端口地址为 208hB 端口地址为 209hC 端口地址为 20ahmov dx,20bhmov al,10000001bout dx,al 2.2、8253 初始化:做为计数器的计数器/定时器 8253,在设置好计数初值(即定时常数)后,便开始减 1计数,为 0 时,输出一个信号;控制字设置:BCD 为设置为计数值为二进制格式,模式选择为模式 2(即为分频器,当控制字写入后,输出段 OUT 变为高电平作为初始状态,当计数初值写入初值寄存器后,下一个时钟脉冲时,计数初值被写到计数执

10、行部件,然后计数执行部件做减 1 计数,减到 1 时,输出端 OUT 变为低电平;完成一次计数过程后,输出端 OUT 又变为高电平,开始一个新的计数过程,由此可以周而复始的进行下去) ,读写指示位为先写低8 位字节,在读写高 8 位字节,计数器选择计数器 0。其中 8253 的计数初值为 10000d,当接 1MHZ 的脉冲时,分频后的输出值为 0.01S。8253 的初始化为:8253 控制端口地址为 203h计数器 0 端口地址为 200hmov al , 34h4mov dx , 203hout dx , almov dx , 200hmov ax , 10000dout dx , al

11、mov al , ahout dx , al2.3、8259 初始化:中断控制器 8259 的初始化为:ICW1,用来指示 ICW1 的标志的 D4=1,LTIM 为 0(即中断请求为边沿触发方式) ,系统只用一片 8259,所以 SNGL 为 1,因为初始化程序将用到 ICW4,所以,IC4 为为 1;ICW2 设置中断类型码的初始化命令字,必须写到 8259 的奇地址端口中,ICW2 是任选的,而 ICW2 一旦确定下来,8259 的 8 个中断请求信号输入引脚 IR0IR7 所对应的 8 个中断类型码也确定了;ICW4 方式控制初始化命令字,它也要求写入奇地址端口,不过 ICW4 并不总

12、是需要写入的,只有在 ICW1 的第 0 位为 1 时,才有必要设置 ICW4,其中,D7D5 三为总是为 0,作为ICW4 的标识码,SFNM 位为 0,BUF 位为 0,M/S 位为 0,AEOL 位为 0,D0 为为 1 表示 8259 当前所在的系统为 16 位或 32 位系统;OCW1 中断屏蔽操作命令字,要求写入 8259 的奇地址端口;mov al,13hmov dx,210hout dx,al ;ICW1 初始化mov al,08hmov dx,211hout dx,al ;ICW2 初始化mov al,01h out dx,al ;ICW4 初始化in al,dxand al

13、,0fehout dx,al 5该系统的主要工作原理为:在主程序中,要对各个用到的芯片进行初始化,在对 8253进行初始化时,使它用方式 2,每 10ms 产生一次脉冲。在系统总 8253 的输入时钟频率为1MHZ,定时常数设为 10000,则定时周期正好为 10ms,由于 8253 的定时输出与 8259 的 IR0相连,所以,系统中每隔 10ms 便由 8253 对 8259 产生一次中断请求,即每隔 10ms 执行一次中断处理程序。本系统将与时间密切相关的两个模块即显示模块和计时模块放在中断处理程序中,这样,就保证了 LED 的数字每隔 10ms 得到一次刷新,从而保证了数字显示的稳定。

14、中断处理程序完成计时功能要依靠两个方面,因为中断处理程序是每 10ms 执行一次,但计时并不是一10ms 为单位进行的,而是以秒为单位进行的,所以,计时功能的事项一方面要利用 10ms 这个基准时间单位,另一方面要借助于一个计数单元。计数单元的初始值为 100,每进行一次中断,便使计数单元的内容减 1,也就是说,每 10ms 作一次计数。每当计数单元从 100 减为 0 时,说明已经经过了 10ms*100=1s 时间,于是使秒位加 1。秒位加 1 之后,又须判断由此而可能引起的进位,如有进位,则应实现正确的修改。修改完以后,再将 LED 显示一遍。3、软件程序设计和调试3.1、主程序流程图:

15、8255、8253、8259 初始化显示提示信息开始判断启动键的状态是“1”?开中断并调用中断处理程序开始计时调用显示程序显示系统计时结果YN63.2、电子时钟中断处理程序流程图:保护寄存器秒位加 110 秒位加 1计数单元减 1分位加 1计满 1 秒了吗?计满 10 秒了吗?计满 60 秒了吗?计满 10 分了吗?计满 60 分了吗?10 分位加 1将字符转换为段码时位加 1计满 10 小时了吗?输出段码输出位码恢复寄存器位码右移 1 位中断返回10 时位加 1NYNNNNNYYYYY73.3、显示模块流程图:3.4、程序代码:code segmentassume cs:code,ds:co

16、destart:mov ax,csmov ds,axmov bp,0064h ;设置计数初值jmp start1portbit equ 208hportseg equ 209hstart1: mov dx,20bhmov al,10000001bout dx,al ;8255 初始化*时、分转化为十进制,存到内存单元中计算时、分的各位数值在 TABLE 中对应编码结束开始依次在 61H 段输出到 LED 显示8mov al,34hmov dx,203hout dx,al ;8253 写控制字mov dx,200hmov ax,10000dout dx,almov al,ahout dx,al

17、;8253 初始化*mov al,13h ;8259 初始化 mov dx,210hout dx,al ;ICW1 初始化mov al,08hmov dx,211hout dx,al ;ICW2 初始化mov al,01h out dx,al ;ICW4 初始化in al,dxand al,0fehout dx,al ;OCW1 打开非屏蔽位* push dsmov ax,0mov ds,axmov ax,offset intrmov ds:word ptr4*8,axmov ax,csmov ds:word ptr4*8+2,ax ;设置中断向量pop ds* 9;主程序开始 ab: mov

18、 dx,20ahin al,dxand al,1cmp al,01h ;判断时钟是否启动jz intr1 ;若启动,则开中断call aab ;没启动,则转显示cli ;关中断jmp ab intr1:sti ;开中断jmp ab ;检测时钟状态*;初始界面显示程序aab:lea bx,TABLElea di,BUFDAmov cl,11011111b ;位码next:mov dx,208hmov al,clout dx,al ;输出位码mov al,di+06 ;取段码xlatmov dx,209h ;输出段码out dx,al push cxmov cx,30hdelay1:loop de

19、lay1 ;软件延迟10pop cxcmp cl,11111110b ;判断是否扫完一遍jz aaaa ;显示完一遍则返回inc diror cl,1 ;循环右移一位jmp nextaaaa: ret* ;中断处理程序intr proc nearpush sipush ax ;保存寄存器的内容dec bp ;计数单元减 1jnz display ;如未计到 100,则直接转显示mov di,offset BUFDAmov bp,0064h ;计数单元设置初值mov al,di+05inc al ;秒位加 1mov di+05,alcmp al,0ah ;是否引起进位jnz display ;无

20、进位则转显示mov al,00mov di+05,almov al,di+04inc al ;有进位则本位清零,前一位加 1mov di+04,alcmp al,06 ;是否满 60 秒jnz display ;否,则转显示mov al,00mov di+04,al11mov al,di+03inc al ;是则本位清零,而分位加 1mov di+03,alcmp al,0ah ;是否引起分位有进位jnz display ;否,则转显示mov al,00mov di+03,almov al,di+02inc almov di+02,al ;有进位,则本位清零,前一位加 1cmp al,06 ;

21、是否满 60 分jnz display ;否,则转显示mov al,00mov di+02,almov al,di+01inc al ;有进位,则本位清零,前一位加 1mov di+01,alcmp al,04 ;是否引起时位有进位jnz display ;否,则转显示mov al,00mov di+01,almov al,diinc al ;是则本位清零,前一位加 1mov si,alcmp al,02 ;是否满 24 小时jnz display ;否,则转显示mov al,00mov di,al ;是则本位清零display:call displ ;调用显示程序12mov dx,210hm

22、ov al,20hout dx,al ;手动结束中断pop axpop siiretintr endp ;被中断处理程序调用的显示程序displ proc nearpush dxpush cxpush bxpush simov cx,0006 ;显示位数mov bx,offset TABLEmov si,offset BUFDAmov ah,11011111bdispl1:mov dx,portbitmov al,0ffhout dx,al ;关显示push cxmov cx,0100hwait1: loop wait1 ;软件延时mov dx,portsegmov al,sixlat ;转换

23、out dx,al ;输出段码mov dx,portbit mov al,ahout dx,al ;输出位码mov cx,0100h13wait2: loop wait2 ;延时pop cxror ah,1inc siloop displ1pop sipop bxpop cxpop dxretdispl endp *TABLE:db 3fh ;“0”的段码db 06h ;“1”的段码db 5bh ;“2”的段码db 4fh ;“3”的段码db 66h ;“4”的段码db 6dh ;“5”的段码db 7dh ;“6”的段码db 07h ;“7”的段码db 7fh ;“8”的段码db 6fh ;“

24、9”的段码db 00h;db 76h ;“H”的段码db 79h ;“E”的段码14db 38h ;“L”的段码db 38h ;“L”的段码db 5ch ;“o”的段码BUFDA:db 0,2,5,9,5,5,11,12,13,14,15,16code endsend start四、结论与展望将编写好的源程序输入,编译后出现很多错误,经过反复修改直到程序运行通过。将生成的可执行程序装入 TND86/88 的内存里,在监控状态下运行程序,可是数码管显示的数字并不与理论计算值相符合,并且显示的数字不停地闪动,经过反复分析源程序发现问题出现在内存单元里时位和分位在转化为十进制时,存储转化的结果的地址

25、空间的顺序弄混了。数字闪动的原因应该出在显示子程序里,经过分析问题出在显示子程序里缺少延时程序。编写延时子程序,并在显示子程序调用它;编译源程序,装入生成的可执行文件,并运行。数码管显示的数字与理论值相符合,并能正常计时,但当按动 KK1+键时,却不能启动对时功能,按动 KK2+时,也不能调时、调分。问题很可能出在两键控制的中断源上,检查源程序也找不出错误,当把 IRQ5 换成 IRQ2 后,在进行调试,结果成功。五、心得体会及建议经过两周努力,在指导老师和同学的帮助下,终于如期完成了该电子时钟的课程设计。当然在课程设计的过程中遇到了许多问题,但是经过查阅有关资料和向老师、同学请教后,还是一一

26、解决了。首先,通过这次课程设计使使我在课堂中学到的东西充分的融入到实践当中。我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。其次,通过本次设计,我系统的了解了时钟的设计流程,尤其是硬、软件的设计方法,掌握了显示电路的基本功能及编程方法,掌握了显示电路的一般原理。开拓了思路,锻炼了实践动手能力,提高了分工协作能力和分析问题,解决问题的能力,达到了本次课程设计的15目的。最后,通过该课程设计,我进一步的熟悉了可并行通信接口8255、计数器/定时器8253及中断控制器

27、8259处理器程序的编程方法的编程原理和7段 LED 数码管显示器的工作原理,为以后独立的设计系统提供了丰富的实践经验。以前对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个寄存器的内容以确保程序的正确性上都有了很大程度的提高。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。本次课程设计完成了实时时钟的设计到实现的全部过程,结果满足设计要求,设计主要用到了 8255,8253,8259

28、和三个芯片,程序也比较长比较麻烦,同时也遇到了不少困难。系统设计的开始几天的时间,没有什么大的进展,仅仅是初始界面就调试了很长时间才成功,当 8253 定时/计数器来做其中的秒定时模块时,因为 8253 所能提供的信号的周期是毫秒级的,因此必须通过软件的方法在运算模块中设置一个统计中断次数的变量,并且这一变量必须事先在内存里开辟存储单元,所以就要求在写程序时就要有明确的思路。关于显示模块和对时模块,在了解 LED、8259、8253 的功能和用法后,问题很容易解决。以后的几天的时间开始调中断程序,程序中一旦有了中断,调试就困难了,调中断调了好几天,难度挺大的,任何一个初始化的失误都可能使你的程

29、序不正常,在多次调试之后,终于完成了该部分的调试工作。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在巫老师的辛勤指导下,终于游逆而解。同时,在老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!六、附录PC 机一台Windows 操作系统一套8259 一片8253 两片8255 一片 CPU 一片16LED 数码管 8 只电阻三极管七、参考文献1、戴梅萼,史嘉权编著.微型计算机技术及应用(第三版).北京:清华大学出版社,20032、周明德编著.微型计算机系统原理及应用(第四版).北京:清华大学出版社,20023、李顺增

30、,吴国东,赵河明等.微机原理及接口技术.北京:机械工业出版社,20064、杨立新.微型计算机原理和应用M.北京:科学技术文献出版社,1986.11 5、李大友.微型计算机原理M.北京:清华大学出版社,1998.76、眭碧霞.微型计算机原理与组成M.人民邮电出版社,2003.87、杨振江、冯军.单片机原理与实践指导.中国电力出版社.2008.88、徐晨、陈继红、王春明、徐慧.微机原理及应用.高等教育出版社.2004.88253D7 CLK0. OUT0. GATE0D0 CLK1OUT1GATE1CLK2OUT2GATE2CS8259CS A0WR INTARD IR7D7 IR6D6 IR5. . .D0 IR0CAS0 INTCAS1 SP/ENGND CAS2D7 8255 PA7D6 PA6. PA5. PA4D0 PA3WR PA2RD PA1CS PA0A1 PB7A0 PB6RESET PB5PC7 PB4PC6 PB3. PB2. PB1PC0 PB0CPUD7D6D5.D0。 。 。200 208 210I I I207 20F 217译码器6 位七段 LED 数码管显示器启动键1M高电平INTAINTR1718

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报