微机原理多功能电子钟课程设计_第1页
微机原理多功能电子钟课程设计_第2页
微机原理多功能电子钟课程设计_第3页
微机原理多功能电子钟课程设计_第4页
微机原理多功能电子钟课程设计_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录一、设计背景1二、设计要求和目的12.1、设计要求12.2、设计目的2三、设计的具体实现33.1、系统设计33.2、单元电路的设计4 3.2.1 8255的介绍及初始化4 3.2.2 8259的介绍及初始化5 3.2.3 8253的介绍及初始化7四、程序设计流程图及代码94.1、主程序流程图:94.2、电子时钟中断处理程序流程图:104.3、显示模块流程图:114.4、程序代码:11五、心得体会及建议20六、附录22七、参考文献22电子钟课程设计报告一、设计背景电子数字钟的应用十分广泛,通过计时精度很高的石英晶振(也可采用卫星传递的时钟标准信号),采用相应进制的计数器,转化为二进制数,经过

2、译码和显示电路准确地将时间“时”“分”“秒”用数字的方式显示出来。与传统的机械钟相比,它具有走时准确,显示直观,无机械传动,无需人的经常调整等优点。它广泛用于电子表、车站、码头、广场等公共场所的大型远距离时间显示电子钟。二、设计要求和目的2.1、设计要求利用8259a中断控制器、8253定时/计数器、8255a接口芯片以及键盘和数码显示电路,设计一个电子时钟,由8253中断定时,小键盘控制电子时钟的启停及初始值的预置。电子时钟的显示格式hh:mm:ss由左到右分别为时、分、秒,最大记时59:59:59超过这个时间时分秒位都清零从00:00:00重新开始。1. 电子时钟具有二十四小时循环记时功能

3、,走时要准。2. 显示格式,时:分:秒。 3. 利用8253作为定时器。2.2、设计目的通过本次课程设计,学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与实践应用相结合的能力。进一步加深对专业知识和理论知识的认识和理解,使设计者的设计水平和对所学知识的应用能力以及分析问题、解决问题的能力得到全面提高。通过设计实践,培养学生查阅专业资料,工具书或参考书,了解有关工业标准,掌握现代设计手段和软件工具,并能以图纸和说明书表达设计思想和结果的能力。1. 熟练掌握8086/88教学系统的基本操作和调试程序的各种指令。2. 掌握8259中断控制器

4、的工作原理和应用编程方法,练习编写中断程序的方法。3. 掌握8255的各种工作方式及其应用编程。4. 掌握8253定时/计数器的工作原理、工作方式及其应用编程。5. 熟悉编程及调试程序的方法。6. 练习led-keyboard unit的使用方法和数码管的显示编程方法。三、设计的具体实现3.1、系统设计该系统是一个简单的利用8253定时器、8255可并行通信接口和中断控制器8259设计的电子时钟系统,在该系统中设有一个启动键,启动键未按下时,显示初始化界面“hello”;当按下启动键时,8253定时器开始计时(8253的初值为10000,接1mhz的脉冲,即当8253计满100时正好是1s),

5、当计时计满100时,8259便产生一次中断,在led显示器便显示系统预先设计好的初始值便开始从秒位开始加1,当加到10s时,10s位加1,加到60s时分位加1,同时秒位清零。本系统将与时间密切相关的两个模块即显示模块和计时模块放在中断处理程序中,这样,就保证了led的数字每隔10ms得到一次刷新,从而保证了数字显示的稳定。中断处理程序完成计时功能要依靠两个方面,因为中断处理程序是每10ms执行一次,但计时并不是一10ms 为单位进行的,而是以秒为单位进行的,所以,计时功能的事项一方面要利用10ms这个基准时间单位,另一方面要借助于一个计数单元。计数单元的初始值为100,每进行一次中断,便使计数

6、单元的内容减1,也就是说,每10ms作一次计数。每当计数单元从100减为0时,说明已经经过了10ms*100=1s时间,于是使秒位加1。秒位加1之后,又须判断由此而可能引起的进位,如有进位,则应实现正确的修改。修改完以后,再将led显示一遍。3.2、单元电路的设计3.2.1 8255的介绍及初始化intel 8255a是一种通用的可编程并行接口芯片,它具有24条i/o引脚和a、b、c 三个并行接口,并行接口是以数据的字节为单位与i/o 设备或被控制对象之间传递信息。cpu 和接口之间 的数据传送总是并行的。 图1 引脚图 8255的内部结构及引脚如图: 图2 内部结构图 8255初始化: 可并

7、行通信接口8255的控制字是方式选择控制字,a口工作在方式1下,用来读键值,b口工作在方式0下,为输出做扫描,c口为输出口,其初始化为: 8255控制口地址为20bh a端口地址为208h b端口地址为209h c端口地址为20ah mov dx,20bh mov al,10000001b out dx,al 3.2.2 8259的介绍及初始化中断控制器8259是一种可编程中断控制器。可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。同时,在不需增加其他电路的情况下,通过多片8259a 的级连,能构成多达64 级的矢量中断系统。8259a 的内部结构和引脚如图2.

8、3所示:图3 内部结构和引脚图8259a的主要功能:(1)具有8级优先权控制,通过级连可扩展至64级。(2)毎一级均可通过编程实现屏蔽或开放。(3)能向cpu提供相应的中断类型号。(4)可通过编程选择不同的工作方式。8259初始化:8259的命令共有7 个,一类是初始化命令字,另一类是操作命令。8259a 的编程就是根据应用需要将初始化命令字icw1-icw4 和操作命令字ocw1- ocw3 分别写入初始化命令寄存器 组和操作命令寄存器组。ocw1中断屏蔽操作命令字,要求写入8259的奇地址端口; mov al,13h mov dx,210h out dx,al ;icw1初始化 mov a

9、l,08h mov dx,211h out dx,al ;icw2初始化 mov al,01h out dx,al ;icw4初始化 in al,dx and al,0feh out dx,al 3.2.3 8253的介绍及初始化图4 8253芯片引脚图8253是nmos工艺制成的可编程计数器/定时器,内部有三个计数器,分别为计数器0、计数器1和计数器2。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。每个计数 器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器cr、一个计数执行部件ce和一个输出锁存器ol。8253的主要功能:(1) 毎片有三个独立的

10、16位计数通道。(2) 每个计数器可按二进制或十进制来计数。(3) 每个计数器最高计数速率可达2.6mhz。(4) 每个计数器具有6种可编程工作方式。(5) 所有输入、输出均与ttl电平兼容,便于与外围接口电路相连。8254 的工作方式如下: (1) 方式0:计数结束产生中断。 (2) 方式1:可重触发单稳态方式。 (3) 方式2 :频率发生器。 (4) 方式3 :方波发生器。 (5) 方式4 :软件触发的选通信号发生器。 (6) 方式5 :硬件触发的选通信号发生器。8253初始化:做为计数器的计数器/定时器8253,在设置好计数初值后,便开始减1计数,为0时,输出一个信号;控制字设置:bcd

11、为设置为计数值为二进制格式,模式选择为模式2(即为分频器,当控制字写入后,输出段out变为高电平作为初始状态,当计数初值写入初值寄存器后,下一个时钟脉冲时,计数初值被写到计数执行部件,然后计数执行部件做减1计数,减到1时,输出端out变为低电平;完成一次计数过程后,输出端out又变为高电平,开始一个新的计数过程,由此可以周而复始的进行下去),读写指示位为先写低8位字节,再读写高8位字节,计数器选择计数器0。其中8253的计数初值为10000d,当接1mhz的脉冲时,分频后的输出值为0.01s。8253的初始化为: 8253控制端口地址为203h 计数器0 端口地址为200hmov al , 3

12、4hmov dx , 203hout dx , almov dx , 200hmov ax , 10000dout dx , almov al , ahout dx , al四、程序设计流程图及代码4.1、主程序流程图:8255、8253、8259初始化显示提示信息开始判断启动键的状态是“1”?开中断并调用中断处理程序开始计时调用显示程序显示系统计时结果yn4.2、电子时钟中断处理程序流程图:保护寄存器秒位加110秒位加1计数单元减1分位加1计满1秒了吗?计满10秒了吗?计满60秒了吗?计满10分了吗?计满60分了吗?10分位加1将字符转换为段码时位加1计满10小时了吗?输出段码输出位码恢复寄

13、存器位码右移1位中断返回10时位加1nynnnnnyyyyy 4.3、显示模块流程图:时、分转化为十进制,存到内存单元中计算时、分的各位数值在table中对应编码结束开始依次在61h段输出到led显示4.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

14、al,34h mov 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 m

15、ov ax,offset 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 showhello ;没启动,则转显示 cli ;关中断 jmp ab intr1: sti ;开中断 jmp ab ;检测时钟状态* ;初始界面显示程序showhello: lea bx,table lea di,bufda mov cl,110

16、11111b ;位码next: mov dx,208h 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 ;计

17、数单元减1 jnz display ;如未计到100,则直接转显示 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+0

18、3 inc al ;是则本位清零,而分位加1 mov 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 ;否,则转

19、显示 mov al,00 mov di+01,al 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

20、,0006 ;显示位数 mov bx,offset 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

21、,1 inc si loop displ1 pop si 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 00hdb 76h ;“h”的段码db 79h ;“e”的段码db 38h ;“l”的段码db 38h ;“l”的段码db 5ch ;“o”的段码bufda:db0,2,

22、5,9,5,5,11,12,13,14,15,16code ends end start五、心得体会及建议为期两周的数字电路课程设计结束了,在我们组成员的共同努力下,终于完成了老师布置的主要任务。虽然有些时候不尽人意,不能很顺利或者完美的实现,但是通过我们共同的努力,也学会了很多东西。首先,通过这次课程设计使使我在课堂中学到的东西充分的融入到实践当中。我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。其次,通过本次设计,我系统的了解了时钟的设计流程,尤其是硬、软件的设计方法,掌握了显示电路的基本功能及编程方法,掌握了显示电路的一般原理。开拓了思路,锻炼了实践动手能力,提高了分工协作能力和分析问题,解决问题的能力,达到了本次课程设计的目的。最后,通过该课程设计,我进一步的熟悉了可并行通信接口8255、计数器/定时器8253及中断控制器8259处理器程序的编程方法的编程原理和7段led数码管显示器的工作原理,为以后独立的设计系统提供了丰富的实践经验。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论