电子时钟课程设计报告.doc_第1页
电子时钟课程设计报告.doc_第2页
电子时钟课程设计报告.doc_第3页
电子时钟课程设计报告.doc_第4页
电子时钟课程设计报告.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

一、 前言1.设计目的:培养和锻炼在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力。通过课程设计,要求熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,得到微机开发应用方面的初步训练。掌握8255、8259、8253等芯片使用方法和编程方法,通过本次课程设计,学以致用,进一步理解所学的相关芯片的原理、内部结构、使用方法等,学会相关芯片实际应用及编程,系统中采用8086微处理器完成了电子秒表系统的独立设计。同时并了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰。2.设计背景:用实验仪器上的并行接口控制七段数码管显示,设计一个定时显示装置,用六个数码管显示时间(左边两位显示小时值,中间两位显示分值,右边两位显示秒值)。用开关(模块A5)控制计时和显示:K1键(清除):显示00-00-00;K2键(启动):显示XX-XX-XX变化的时间值;K3键(停止):显示XX-XX-XX不变;K4键(设置):设置XX-XX-XX时间值,时间值由模块B2开关输入。3.设计依据:本系统设计的电子时钟以8088微处理器作为CPU,用8254做定时计数器产生时钟频率,8255做可编程并行接口显示时钟和键盘电路,8259做中断控制器产生中断。在此系统中,8254的功能是定时,接入8254的CLK信号为周期性时钟信号。8254采用计数器0,工作于方式2,使8254的OUT0端输出周期性的负脉冲信号。即每隔20ms,8254的OUT0端就会输出一个负脉冲的信号,此信号接8259的IR2,当中断到50次数后,CPU即处理,使液晶显示器上的时间发生变化。其中8259只需初始化ICW1,其功能是向8259表明IRx输入是电瓶触发方式还是上升沿触发方式,是单片8259还是多片8259。8259接收到信号后,产生中断信号送CPU处理。利用实验台上提供的定时器8254和扩展板上提供的8259以及键盘和数码显示电路,设计一个电子时钟,由8254中断定时,小键盘控制电子时钟的启停及初始值的预置。电子时钟的显示格式HH:MM:SS由左到右分别为时、分、秒,最大记时59:59:59超过这个时间时分秒位都清零从00:00:00重新开始。 基本工作原理:每百分之一秒对百分之一秒寄存器的内容加一,并依次对秒、分、小时寄存器的内容加一,六个数码管动态显示时、分、秒的当前值。二、 系统硬件设计所用到接口芯片工作原理介绍:1、8259芯片的内部结构及引脚中断控制器8259是Intel公司专为控制优先级中断而设计开发的芯片。它将中断源优先排队、辨别中断源以及提供中断矢量的电路集中于一片中。因此无需附加任何电路,只需对8259编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。在MD微机系统中,8259芯片工作于单片方式。8259引脚图如图3.3,各引脚功能如下。D7D0八条双向数据线;WR(低电平有效)写输入信号;RD(低电平有效)读输入信号;CS(低电平有效)片选输入信号;A0地址信号;INT中断请求信号;INTA(低电平有效)中断响应信号;CAS0CAS2级联信号,形成一条专用8259A总线,以便多片8259A的级联;图3.1 8259A引脚图SP/EN从编程/允许级联。在缓冲方式中,可用做输出信号以控制总线缓冲器的接收和发送。在非缓冲方式中,作为输入信号用于表示主片还是从片;IR0IR7外部中断请求输入线。要求输入的中断请求信号是由低电平到高电平的上升沿(并保持高电平到CPU响应时为止)或者是高电平。8259中断矢量地址与中断信号之间的关系如表3.1所示:表3.1 8259A中断矢量表中断序号01234567功能调用08H09H0AH0BH0CH0DH0EH0FH矢量地址20H23H24H27H28H2BH2CH2FH30H33H34H37H38H3BH3CH3FH说明时钟键盘可用可用串行口可用可用可用2、8255芯片的内部结构及引脚图3.2 8255引脚图8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种工作方式下工作:方式0基本输入/输出方式方式1选通输入/输出方式方式2双向选通输入/输出方式8255引脚图如图3.2示,各引脚功能如下。D7D0与CPU侧连接的八条双向数据线;WR(低电平有效)写输入信号;RD(低电平有效)读输入信号;CS(低电平有效)片选输入信号;A0、A1片内寄存器选择输入信号;PA7PA0A口外设双向数据线;PB7PB0B口外设双向数据线;PC7PC0C口外设双向数据线;RESET复位输入信号2、8255端口地址表3.2 8255端口地址表信号线寄存器编址IOY3A口60HB口61HC口62H控制寄存器63H3、8254芯片的内部结构及引脚8254可编程定时/计数器是Intel公司生产的通用外围芯片之一,有3个独立的十六位计数器,技术频率范围为02MHZ,它所有的技术方式和操作方式都通过编程控制。8254的功能用途是:(1) 延时中断 (2) 可编程频率发生器 (3) 事件计数器 (4) 二进倍频器 (5) 实时时钟(6) 数字单稳(7) 复杂的电机控制器8254有六种工作方式:(1) 方式0:计数结束中断(2) 方式1:可编程频率发生器(3) 方式2:频率发生器(4) 方式3:方波频率发生器(5) 方式4:软件触发的选通信号(6)方式5:硬件触发的选通信号8254引脚图如图3.3示,各引脚功能如下。D7D0八条双向数据线;WR(低电平有效)写输入信号;RD(低电平有效)读输入信号;CS(低电平有效)片选输入信号;A0、A1片内寄存器地址输入信号;CLK计数输入,用于输入定时基准脉冲或计数脉冲;OUT输出信号,以相应的电平指示计数的完成,或输出脉冲波形;GATE选通输入(门控输入),用于启动或禁止计数器的操作,以使计数器和计测对象同步。2、8254端口地址信号线寄存器编址IOY20#计数器40H1#计数器41H2#计数器42H控制寄存器43H表3.3 8254端口地址表硬件设计原理图以及必要的文字说明k1k16K1 K2K3 K4图4 硬件连接的整体思想图首先利用程序硬性规定分、秒的起始时间为零。然后通过8254计时器分频,并将以分得的频率接通8259中断控制器,进而通过CPU响应可屏蔽中断达到按秒计时的效果。 具体做法是将四个七段管显示器接到两片可并行接口8255芯片上,以此来控制七段管显示器的位操作以及段操作。并为之在数据段开辟一处空间,专门存放将要显示的数位代码。8254计时器将由PC机给定的频率加以分频,得到的新频率加到8259中断控制器的中断请求输入端。主程序为此可屏蔽中断设置专门的中断向量码。CPU获取此中断向量码后转向待需解决的程序进行操作。而这个程序便是整个主程序的心脏。通过它将使电子钟的显示时间以秒为进位,达到秒、分的增加。系统的连线图主要由五个部分构成。8259中断控制器、8255并口控制器、8254定时 计数器、键盘及数码管显示单元、开关及LED显示单元构成。如下图所示: 1/64 1/32分频电路 4McsD0D78253GATE0 CLK0 OUT0csGATE1 CLK1 OUT1+5V8259IR0IR1IR2IR3IR48255两个 csPA0PA7PB0PB7PC0PC78255两个cs7cs5cs3cs1cs6cs4cs2cs0cs PA0PA7PB0PB7PC0PC76个八段译码管图5 具体硬件连接图K1K2K3K4k1.k16三、 系统软件设计软件工作流程图图6主程序流程图图7 中断服务程序流程图 必要的程序清单(加注释)电子钟的程序:control equ 0c003h ;8253控制口 count0 equ 0c000h count1 equ 0c001h count2 equ 0c002h md8255 equ 82h ;8255控制字 pa8255 equ 8000h ctl8255 equ 8003h outbit equ 08002h ;位控制口 outseg equ 08004h ;段控制口 icw1 equ 00010011b ;8259,上升沿中断,要写icw4 icw2 equ 00100000b ;中断号为20h icw4 equ 00000001b ;工作在8086/88方式 ocw1 equ 11111110b ;只响应int0中断 cs8259a equ 0d000h ;8259地址 cs8259b equ 0d001h data segment cnt db 0 ledbuf db 6 dup(?) ;显示缓冲 num db 1 dup(?) ;显示的数据 delayt db 1 dup(?) hour db 0 minute db 0 second db 0 ledmap: ;八段管显示码 db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h db 7fh,6fh,77h,7ch,39h,5eh,79h,71h data ends code segment assume cs:code,ds:data delay proc near ;延时子程序 push ax push cx mov al,0 mov cx,ax loop $ pop cx pop ax ret delay endp displayled proc near ;数码管显示控制子程序 mov bx,offset ledbuf mov cl,6 ;共6个八段管 mov ah,00100000b ;从左边开始显示 dloop: mov dx, outbit mov al, 0 out dx, al ;关所有八段管 mov al, bx mov dx, outseg out dx, al mov dx, outbit mov al, ah out dx, al ;显示一位八段管 push ax mov ah,1 call delay pop ax shr ah,1 inc bx dec cl jnz dloop mov dx,outbit mov al,0 out dx,al ;关所有八段管 ret displayled endp ienter proc near ;8253中断服务程序 push ax push dx inc second ;秒加1 mov al,second cmp al,60 ;秒数与60比较 jne exit mov second,0 ;秒清零 inc minute ;分加1 mov al,minute cmp al,60 ;分数与60比较 jne exit mov minute,0 ;分清零 inc hour ;时加1 mov al,hour cmp al,24 ;时数与24比较 jne exit mov hour,0 ;时清零 exit: mov dx,cs8259a mov al,20h out dx,al ;结束本次中断 pop dx pop ax iret ienter endp iinit proc ;初始化8259的命令字和操作命令字 mov dx,cs8259a mov al,icw1 out dx,al mov dx,cs8259b mov al,icw2 out dx,al mov al,icw4 out dx,al mov al,ocw1 out dx,al ret iinit endp start: mov ax,data mov ds,ax mov hour,0 ;时、分、秒清零 mov minute,0 mov second,0 cli ;清除中断标志位 mov ax,0 mov ds,ax mov al,76h ;8253控制字 mov dx,control out dx,al mov ax,62500 ;利用8253计数器1分频 mov dx,count1 out dx,al mov al,ah out dx,al mov al,md8255 mov dx,ctl8255 out dx,al mov bx,4*icw2 ;中断号 mov ax,code shl ax,4 ;*16 add ax,offset ienter ;中断入口地址(段地址为0) mov bx,ax mov ax,0 inc bx inc bx mov bx,ax ;代码段地址为0 call iinit mov ax,data mov ds,ax mov cnt,0 ;计数值初始为0 mov al,cnt mov dx,pa8255 out dx,al sti ;开中断 lp: mov al,hour mov ah,0 mov cl,10 div cl mov ch,ah mov ah,0 mov bx,offset ledmap add bx,ax mov al,bx ;时的十位转换成显示码 mov ledbuf,al ;显示码存入显示缓冲区 mov bx,offset ledmap mov al,ch mov ah,0 add bx,ax mov al,bx ;时的个位转换成显示码 or al,80h mov ledbuf+1,al ;显示码存入后一位显示缓冲区 mov al,minute mov ah,0 mov cl,10 div cl mov ch,ah mov ah,0 mov bx,offset ledmap add bx,ax mov al,bx ;分的十位转换成显示码 mov ledbuf+2,al mov bx,offset ledmap mov al,ch mov ah,0 add bx,ax mov al,bx ;分的个位转换成显示码 or al,80h mov ledbuf+3,al mov al,second mov ah,0 mov cl,10 div cl mov ch,ah mov ah,0 mov bx,offset ledmap add bx,ax mov al,bx ;秒的十位转换成显示码 mov ledbuf+4,al mov bx,offset ledmap mov al,ch mov ah,0 add bx,ax mov al,bx ;分的个位转换成显示码 or al,80h mov ledbuf+5,al call displayled jmp lp code ends end start四、 系统调试及结果将编写好的源程序输入,编译后出现很多错误,经过反复修改直到程序运行通过。将生成的可执行程序装入TND86/88的内存里,在监控状态下运行程序,可是数码管显示的数字并不与理论计算值相符合,并且显示的数字不停地闪动,经过反复分析源程序发现问题出现在内存单元里时位和分位在转化为十进制时,存储转化的结果的地址空间的顺序弄混了。数字闪动的原因应该出在显示子程序里,经过分析问题出在显示子程序里缺少延时程序。编写延时子程序,并在显示子程序调用它;编译源程序,装入生成的可执行文件,并运行。数码管显示的数字与理时、分转化为十进制,存到内存单元计算时、分的各位数值在TABLE中对应编码结束开始依次在61H段输出到LED显10论值相符合,并能正常计时,但当按动KK1+键时,却不能启动对时功能,按动KK2+时,也不能调时、调分。问题很可能出在两键控制的中断源上,检查源程序也找不出错误,当把IRQ5换成IRQ2后,在进行调试,结果成功。五、 心得体会通过近一周的课程设计时间,课程设计的基本目的达到了。另外还有很多其它有益的地方。本系统完成了电子时钟的基本功能。利用8254定时器从0开始进行计时,将计时的结果显示在数码管上。每隔1秒,秒钟个位计时一次;到10秒,秒钟十位计时一次;到60秒,分钟个位计时一次;到10分,分钟十位计时一次。数字变动信息通过8255送数码管显示。期间通过8259中断控制器实现秒到分的转变,准确实现了计时。随着科技的进步电子时钟的实现方法已经很多,

温馨提示

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

评论

0/150

提交评论