ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:167.50KB ,
资源ID:6543255      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6543255.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机原理数字钟的设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、微机原理数字钟的设计 微型计算机原理及应用课程设计课题电子时钟姓名院系信息学院班级学号电话时间2012.12.26-2012.12.29课程设计组员名单: 目 录一、设计要求 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七、参考文献 15电子时钟的设计报告一、设计要求利用8259A中

2、断控制器、8253定时/计数器、8255A接口芯片以及键盘和数码显示电路,设计一个电子时钟,由8253中断定时,小键盘控制电子时钟的启停及初始值的预置。电子时钟的显示格式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、系统概述基本工作原理:系统设计的电子时钟主要由显示模块、时钟控制模块和时钟运算模块三大部分组成。以808

4、6微处理器作CPU,用8253做定时器产生时钟频率提供一个频率为10kHz的时钟信号,要求每隔10ms完成一次扫描键盘的工作。在写入控制字与计数初值后,每到10ms定时器就启动工作,即当计数器减到1时,输出端OUT0输出一个CLK周期的低电平,向CPU申请中断,当达到100次时,则输出端OUT1输出1s,向CPU申请中断,由8255控制一个数码管显示,当计数到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由左到右分别为时、分、秒,每百分之一秒对百分之一秒寄存器的内容加一,并依次对秒、分、小时寄存器的内容加一,六个数码管动态显示时、分、秒的当前值。最大记时59:59:59超过这个时间时分秒位都清零从00:00:0

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

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

8、初始值“02.59.55”便开始从秒位开始加1,当加到10S时,10s位加1,加到60S时分位加1,同时秒位清零。该系统主要接口部件有:可并行通信接口8255一片,计数器/定时器8253一片,中断控制器8259一片,七段LED数码管显示器6个以及译码电路等。其中各个部件的初始化如下:2.1、8255初始化:可并行通信接口8255的控制字是方式选择控制字,A口工作在方式0(即基本输入输出方式)下,并且为输出状态,B口工作在方式0下,为输出口,C口为输出口,其初始化为:8255控制口地址为20bh A端口地址为208h B端口地址为209h C端口地址为20ahmov dx,20bh mov al

9、,10000001b out dx,al 2.2、8253初始化:做为计数器的计数器/定时器8253,在设置好计数初值(即定时常数)后,便开始减1计数,为0时,输出一个信号;控制字设置:BCD为设置为计数值为二进制格式,模式选择为模式2(即为分频器,当控制字写入后,输出段OUT变为高电平作为初始状态,当计数初值写入初值寄存器后,下一个时钟脉冲时,计数初值被写到计数执行部件,然后计数执行部件做减1计数,减到1时,输出端OUT变为低电平;完成一次计数过程后,输出端OUT又变为高电平,开始一个新的计数过程,由此可以周而复始的进行下去),读写指示位为先写低8位字节,在读写高8位字节,计数器选择计数器0

10、。其中8253的计数初值为10000d,当接1MHZ的脉冲时,分频后的输出值为0.01S。8253的初始化为: 8253控制端口地址为203h 计数器0 端口地址为200hmov al , 34hmov dx , 203hout dx , almov dx , 200hmov ax , 10000dout dx , almov al , ahout dx , al2.3、8259初始化:中断控制器8259的初始化为:ICW1,用来指示ICW1的标志的D4=1,LTIM为0(即中断请求为边沿触发方式),系统只用一片8259,所以SNGL为1,因为初始化程序将用到ICW4,所以,IC4为为1;IC

11、W2设置中断类型码的初始化命令字,必须写到8259的奇地址端口中,ICW2是任选的,而ICW2一旦确定下来,8259的8个中断请求信号输入引脚IR0IR7所对应的8个中断类型码也确定了;ICW4方式控制初始化命令字,它也要求写入奇地址端口,不过ICW4并不总是需要写入的,只有在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,13h mov dx,210h o

12、ut dx,al ;ICW1初始化 mov al,08h mov dx,211h out dx,al ;ICW2初始化 mov al,01h out dx,al ;ICW4初始化 in al,dx and al,0feh out dx,al 该系统的主要工作原理为:在主程序中,要对各个用到的芯片进行初始化,在对8253进行初始化时,使它用方式2,每10ms 产生一次脉冲。在系统总8253的输入时钟频率为1MHZ,定时常数设为10000,则定时周期正好为10ms,由于8253的定时输出与8259的IR0相连,所以,系统中每隔10ms便由8253对8259产生一次中断请求,即每隔10ms执行一次中

13、断处理程序。本系统将与时间密切相关的两个模块即显示模块和计时模块放在中断处理程序中,这样,就保证了LED的数字每隔10ms得到一次刷新,从而保证了数字显示的稳定。中断处理程序完成计时功能要依靠两个方面,因为中断处理程序是每10ms执行一次,但计时并不是一10ms 为单位进行的,而是以秒为单位进行的,所以,计时功能的事项一方面要利用10ms这个基准时间单位,另一方面要借助于一个计数单元。计数单元的初始值为100,每进行一次中断,便使计数单元的内容减1,也就是说,每10ms作一次计数。每当计数单元从100减为0时,说明已经经过了10ms*100=1s时间,于是使秒位加1。秒位加1之后,又须判断由此

14、而可能引起的进位,如有进位,则应实现正确的修改。修改完以后,再将LED显示一遍。3、软件程序设计和调试3.1、主程序流程图:3.2、电子时钟中断处理程序流程图:3.3、显示模块流程图:3.4、程序代码:code segment assume cs:code,ds:code start: mov ax,cs mov ds,ax mov bp,0064h ;设置计数初值 jmp start1 portbit equ 208h portseg equ 209h start1: mov dx,20bh mov al,10000001b out dx,al ;8255初始化 mov al,34h mov

15、 dx,203h out dx,al ;8253写控制字 mov dx,200h mov ax,10000d out dx,al mov al,ah out dx,al ;8253初始化 mov al,13h ;8259初始化 mov dx,210h out dx,al ;ICW1初始化 mov al,08h mov dx,211h out dx,al ;ICW2初始化 mov al,01h out dx,al ;ICW4初始化 in al,dx and al,0feh out dx,al ;OCW1打开非屏蔽位 push ds mov ax,0 mov ds,ax mov ax,offset

16、 intr mov ds:word ptr4*8,ax mov ax,cs mov ds:word ptr4*8+2,ax ;设置中断向量 pop ds ;主程序开始 ab: mov dx,20ah in al,dx and al,1 cmp al,01h ;判断时钟是否启动 jz intr1 ;若启动,则开中断 call aab ;没启动,则转显示 cli ;关中断 jmp ab intr1: sti ;开中断 jmp ab ;检测时钟状态 ;初始界面显示程序aab: lea bx,TABLE lea di,BUFDA mov cl,11011111b ;位码next: mov dx,208

17、h mov al,cl out dx,al ;输出位码 mov al,di+06 ;取段码 xlat mov dx,209h ;输出段码 out dx,al push cx mov cx,30hdelay1: loop delay1 ;软件延迟 pop cx cmp cl,11111110b ;判断是否扫完一遍 jz aaaa ;显示完一遍则返回 inc di ror cl,1 ;循环右移一位 jmp nextaaaa: ret ;中断处理程序intr proc near push si push ax ;保存寄存器的内容 dec bp ;计数单元减1 jnz display ;如未计到100

18、,则直接转显示 mov di,offset BUFDA mov bp,0064h ;计数单元设置初值 mov al,di+05 inc al ;秒位加1 mov di+05,al cmp al,0ah ;是否引起进位 jnz display ;无进位则转显示 mov al,00 mov di+05,al mov al,di+04 inc al ;有进位则本位清零,前一位加1 mov di+04,al cmp al,06 ;是否满60秒 jnz display ;否,则转显示 mov al,00 mov di+04,al mov al,di+03 inc al ;是则本位清零,而分位加1 mov

19、 di+03,al cmp al,0ah ;是否引起分位有进位 jnz display ;否,则转显示 mov al,00 mov di+03,al mov al,di+02 inc al mov di+02,al ;有进位,则本位清零,前一位加1 cmp al,06 ;是否满60分 jnz display ;否,则转显示 mov al,00 mov di+02,al mov al,di+01 inc al ;有进位,则本位清零,前一位加1 mov di+01,al cmp al,04 ;是否引起时位有进位 jnz display ;否,则转显示 mov al,00 mov di+01,al

20、mov al,di inc al ;是则本位清零,前一位加1 mov si,al cmp al,02 ;是否满24小时 jnz display ;否,则转显示 mov al,00 mov di,al ;是则本位清零display: call displ ;调用显示程序 mov dx,210h mov al,20h out dx,al ;手动结束中断 pop ax pop si iret intr endp ;被中断处理程序调用的显示程序displ proc near push dx push cx push bx push si mov cx,0006 ;显示位数 mov bx,offset

21、TABLE mov si,offset BUFDA mov ah,11011111bdispl1:mov dx,portbit mov al,0ffh out dx,al ;关显示 push cx mov cx,0100hwait1: loop wait1 ;软件延时 mov dx,portseg mov al,si xlat ;转换 out dx,al ;输出段码 mov dx,portbit mov al,ah out dx,al ;输出位码 mov cx,0100hwait2: loop wait2 ;延时 pop cx ror ah,1 inc si loop displ1 pop s

22、i pop bx pop cx pop dx ret displ 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 ;“9”的段码 db 00h; db 76h ;“H”的段码 db 79h ;“E”的段码 db 38h ;“L”的段码 db 38h ;“L”的段码 db 5ch ;“o”的段码BUFDA: db 0,2,5,9,5,5,1

23、1,12,13,14,15,16code ends end start四、结论与展望将编写好的源程序输入,编译后出现很多错误,经过反复修改直到程序运行通过。将生成的可执行程序装入TND86/88的内存里,在监控状态下运行程序,可是数码管显示的数字并不与理论计算值相符合,并且显示的数字不停地闪动,经过反复分析源程序发现问题出现在内存单元里时位和分位在转化为十进制时,存储转化的结果的地址空间的顺序弄混了。数字闪动的原因应该出在显示子程序里,经过分析问题出在显示子程序里缺少延时程序。编写延时子程序,并在显示子程序调用它;编译源程序,装入生成的可执行文件,并运行。数码管显示的数字与理论值相符合,并能正

24、常计时,但当按动KK1+键时,却不能启动对时功能,按动KK2+时,也不能调时、调分。问题很可能出在两键控制的中断源上,检查源程序也找不出错误,当把IRQ5换成IRQ2后,在进行调试,结果成功。五、心得体会及建议经过两周努力,在指导老师和同学的帮助下,终于如期完成了该电子时钟的课程设计。当然在课程设计的过程中遇到了许多问题,但是经过查阅有关资料和向老师、同学请教后,还是一一解决了。首先,通过这次课程设计使使我在课堂中学到的东西充分的融入到实践当中。我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己

25、的实际动手能力和独立思考的能力。其次,通过本次设计,我系统的了解了时钟的设计流程,尤其是硬、软件的设计方法,掌握了显示电路的基本功能及编程方法,掌握了显示电路的一般原理。开拓了思路,锻炼了实践动手能力,提高了分工协作能力和分析问题,解决问题的能力,达到了本次课程设计的目的。最后,通过该课程设计,我进一步的熟悉了可并行通信接口8255、计数器/定时器8253及中断控制器8259处理器程序的编程方法的编程原理和7段LED数码管显示器的工作原理,为以后独立的设计系统提供了丰富的实践经验。以前对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结

26、果,怎么去了解每个寄存器的内容以确保程序的正确性上都有了很大程度的提高。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。本次课程设计完成了实时时钟的设计到实现的全部过程,结果满足设计要求,设计主要用到了8255,8253,8259和三个芯片,程序也比较长比较麻烦,同时也遇到了不少困难。系统设计的开始几天的时间,没有什么大的进展,仅仅是初始界面就调试了很长时间才成功,当8253定时/计数器来做其中的秒定时模块时,因为8253所能提供的信号的周期是毫秒级的,因此必须通

27、过软件的方法在运算模块中设置一个统计中断次数的变量,并且这一变量必须事先在内存里开辟存储单元,所以就要求在写程序时就要有明确的思路。关于显示模块和对时模块,在了解LED、8259、8253的功能和用法后,问题很容易解决。以后的几天的时间开始调中断程序,程序中一旦有了中断,调试就困难了,调中断调了好几天,难度挺大的,任何一个初始化的失误都可能使你的程序不正常,在多次调试之后,终于完成了该部分的调试工作。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在李老师的辛勤指导下,终于游逆而解。同时,在老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!六、附录PC机一台Windows操作系统一套8259一片8253两片8255一片 CPU一片LED数码管8只电阻三极管七、参考文献1、戴梅萼,史嘉权编著.微型计算机技术及应用(第三版).北京:清华大学出版社,20032、周明德编著.微型计算机系统原理及应用(第四版).北京:清华大学出版社,20023、李顺增,吴国东,赵河明等.微机原理及接口技术.北京:机械工业出版社,20064、杨立新.微型计算机原理和应用M.北京:科学技术文献出版社,1986.11 5、李大友.微型计算机原理M.北京:清华大学出版社,1998.7

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1