基于微机原理电子时钟课程设计_第1页
基于微机原理电子时钟课程设计_第2页
基于微机原理电子时钟课程设计_第3页
基于微机原理电子时钟课程设计_第4页
基于微机原理电子时钟课程设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、电子时钟设计目 录一、课程设计要求及目的2二、开发环境及设备21、设计环境22、设计所用设备2三、设计思想与原理21、设计思想22、设计原理31、内容32、要求33、设计环境44、设计所用设备4三、设计所用芯片结构41、8259a芯片的内部结构及引脚42、8255芯片的内部结构及引脚53、8255端口地址64、8254芯片的内部结构及引脚65、8254引脚图如图3示,各引脚功能如下。7四、具体模块设计81、概述82、主程序模块83、小键盘模块94、显示模块105、定时模块106、中断处理模块107、芯片引脚11五、程序流程图121、主程序流程图如图6所示122、键盘扫描程序流程图:(key)如

2、图7所示133、中断处理程序流程图如图8所示:14六、心得体会15附录一:参考书目15附录二 相关程序16一、课程设计要求及目的1、用8255的a口驱动六个七段数码管(led)的字段,c口驱动六位七段数码管(led)的为控制端,右侧两位显示分值,左侧两位显示秒值,2、数码管采用动态扫描方式,用8253做定时器(采用查询方式),每位显示的时间50hz。3以5ms为基本时间单位,计数产生秒时间值,秒计数到60时对分计数,分计数到60时对时计数。二、开发环境及设备1、设计环境pc机一台、windows xp系统、实验箱、导线若干。2、设计所用设备8254定时器:用于产生秒脉冲,其输出信号可作为中断请

3、示信号送irq2。8255并口:用做接口芯片,和小键盘相连。8259中断控制器:用于产生中断。led:七个led用于显示时:分:秒值。小键盘:用于控制设置。三、设计思想与原理1、设计思想本系统设计的电子时钟以8088微处理器作为cpu,用8254做定时计数器产生时钟频率,8255做可编程并行接口显示时钟和键盘电路,8259做中断控制器产生中断。在此系统中,8254的功能是定时,接入8254的clk信号为周期性时钟信号。8254采用计数器0,工作于方式2,使8254的out0端输出周期性的负脉冲信号。即每隔20ms,8254的out0端就会输出一个负脉冲的信号,此信号接8259的ir2,当中断到

4、50次数后,cpu即处理,使液晶显示器上的时间发生变化。其中8259只需初始化icw1,其功能是向8259表明irx输入是电瓶触发方式还是上升沿触发方式,是单片8259还是多片8259。8259接收到信号后,产生中断信号送cpu处理。2、设计原理利用实验台上提供的定时器8254和扩展板上提供的8259以及键盘和数码显示电路,设计一个电子时钟,由8254中断定时,小键盘控制电子时钟的启停及初始值的预置。电子时钟的显示格式hh:mm:ss由左到右分别为时、分、秒,最大记时59:59:59超过这个时间时分秒位都清零从00:00:00重新开始。基本工作原理:每百分之一秒对百分之一秒寄存器的内容加一,并

5、依次对秒、分、小时寄存器的内容加一,六个数码管动态显示时、分、秒的当前值。1、内容利用实验台上提供的定时器8254和扩展板上提供的8259以及键盘和数码显示电路,设计一个电子时钟,由8254中断定时,小键盘控制电子时钟的启停及初始值的预置。电子时钟的显示格式hh:mm:ss由左到右分别为时、分、秒,最大记时59:59:59超过这个时间时分秒位都清零从00:00:00重新开始。2、要求本实验要求设计一个定时显示装置,用六个数码管显示时间,用小键盘控制计时,设置和显示时间。系统一运行就从00点00分00秒开始计时,并在数码管上显示时、分、秒当前值,而且,可以用键盘设置当前时间。基本工作原理:每百分

6、之一秒对百分之一秒寄存器的内容加一,并依次对秒、分、小时寄存器的内容加一;六个数码管动态显示时、分、秒的当前值。c键:置初值,显示00:00:00g键:显示动态变化(启动表);d键:显示静态不变(表停止);e键:终止程序,返回dos;p键:设置时:分:秒的值3、设计环境pc机一台、windows xp系统、实验箱,导线若干。4、设计所用设备8254定时器:用于产生秒脉冲,其输出信号可作为中断请示信号送irq2。8255并口:用做接口芯片,和小键盘相连。8259中断控制器:用于产生中断。led:七个led用于显示时:分:秒值。小键盘:用于控制设置。三、设计所用芯片结构1、8259a芯片的内部结构

7、及引脚中断控制器8259a是intel公司专为控制优先级中断而设计开发的芯片。它将中断源优先排队、辨别中断源以及提供中断矢量的电路集中于一片中。因此无需附加任何电路,只需对8259a编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。在md微机系统中,8259芯片工作于单片方式。8259引脚图如图1,各引脚功能如下。d7d0八条双向数据线;wr(低电平有效)写输入信号;rd(低电平有效)读输入信号;cs(低电平有效)片选输入信号;图1 8259a引脚图a0地址信号;int中断请求信号;inta(低电平有效)中断响应信号;cas0cas2级联信号,形成一条专用

8、8259a总线,以便多片8259a的级联;sp/en从编程/允许级联。在缓冲方式中,可用做输出信号以控制总线缓冲器的接收和发送。在非缓冲方式中,作为输入信号用于表示主片还是从片;ir0ir7外部中断请求输入线。要求输入的中断请求信号是由低电平到高电平的上升沿(并保持高电平到cpu响应时为止)或者是高电平。8259中断矢量地址与中断信号之间的关系如表3.1所示:表3.1 8259a中断矢量表中断序号01234567功能调用08h09h0ah0bh0ch0dh0eh0fh矢量地址20h23h24h27h28h2bh2ch2fh30h33h34h37h38h3bh3ch3fh说明时钟键盘可用可用串行

9、口可用可用可用2、8255芯片的内部结构及引脚8255可编程外围接口芯片是intel公司生产的通用并行i/o接口芯片,它具有a、b、c三个并行接口,用+5v单电源供电,能在以下三种工作方式下工作:方式0基本输入/输出方式方式1选通输入/输出方式方式2双向选通输入/输出方式8255引脚图如图2示,各引脚功能如下。d7d0与cpu侧连接的八条双向数据线;wr(低电平有效)写输入信号; rd(低电平有效)读输入信号; 图2 8255引脚图cs(低电平有效)片选输入信号;a0、a1片内寄存器选择输入信号;pa7pa0a口外设双向数据线;pb7pb0b口外设双向数据线;pc7pc0c口外设双向数据线;r

10、eset复位输入信号3、8255端口地址表3.2 8255端口地址表信号线寄存器编址ioy3a口60hb口61hc口62h控制寄存器63h4、8254芯片的内部结构及引脚8254可编程定时/计数器是intel公司生产的通用外围芯片之一,有3个独立的十六位计数器,技术频率范围为02mhz,它所有的技术方式和操作方式都通过编程控制。8254的功能用途是:(1) 延时中断 (2) 可编程频率发生器 (3) 事件计数器 (4) 二进倍频器 (5) 实时时钟(6) 数字单稳(7) 复杂的电机控制器8254有六种工作方式:(1) 方式0:计数结束中断(2) 方式1:可编程频率发生器(3) 方式2:频率发生

11、器 (4) 方式3:方波频率发生器 (5) 方式4:软件触发的选通信号(6) 方式5:硬件触发的选通信号5、8254引脚图如图3示,各引脚功能如下。d7d0八条双向数据线;wr(低电平有效)写输入信号;rd(低电平有效)读输入信号;cs(低电平有效)片选输入信号;a0、a1片内寄存器地址输入信号;clk计数输入,用于输入定时基准脉冲或计数脉冲;out输出信号,以相应的电平指示计数的完成,或输出脉冲波形;图3 8254引脚图gate选通输入(门控输入),用于启动或禁止计数器的操作,以使计数器和计测对象同步。2、8254端口地址 表3.3 8254端口地址表信号线寄存器编址ioy20#计数器40h

12、1#计数器41h2#计数器42h控制寄存器43h四、具体模块设计1、概述本系统设计的电子钟以8088微处理器作为cpu,用8254做定时计数器产生时钟频率,8255做可编程并行接口显示时钟和键盘电路,8259做中断控制器产生中断。在此系统中,8254的功能是定时,接入8254的clk信号为周期性时钟信号。8254采用计数器0,工作于方式2,使8254的out0端输出周期性的负脉冲信号。即每隔5ms,8254的out0端就会输出一个负脉冲的信号,此信号接8259的ir2,当中断到50次数后,cpu即处理,使液晶显示器上的时间发生变化。程序由以下模块组成:系统共有5个功能模块,分别为,主控模块,显

13、示模块,定时模块,中断模块,小键盘模块。系统框图如下:键盘读入的数显示缓冲的值秒脉冲显示模块主控模块中断模块定时模块小键盘模块六个led小键盘8255a82548259图4 系统框图2、主程序模块主控模块是系的核心模块,对8254、8255a进行初始化,设置中断向量,扫描键盘根据按键值作相应的处理。主要由软件实现。它的主要功能是调用其它模块对系统工作进行协调,它的主要功能是读小键盘输入键值并执行要做的工作,如果键值为c则将显示初始值00:00:00置入显示缓冲,并调用显示模块显示。如果键值为g则开中断,(中断程序为秒最低位加一)。如果键值为d则关中断,停止动态显示。如健值为p则连续六次调用小键

14、盘模块,将键值依次存入显示缓冲。并调用显示模块显示。如果健值为e,则终止程序,返回dos。3、小键盘模块小键盘模块送入主控模块的子功能模块。由软件和硬件实现,硬件上由小键盘和8255互连,将小键值由8255送入主控模块。软件上使用行扫描法获得键值并送回主控模块。本课题只考虑去抖动。执行一个约10ms的延时程序后再扫描键盘,若f0=1表示真正有键按下,从而消除了抖动影响。实现代码如下:23key roc near push cxkst: mov al,82h mov dx,p55ctl out dx,al mov al,00h mov dx,pa55 out dx,al mov dx,pb55

15、in al,dx or al,0f8h cmp al,0ffh jz delay mov cx,0300hdly: loop dly mov cl,08h mov ah,0fehscan1: mov dx,pa55 mov al,ah out dx,al mov dx,pb55 in al,dx or al,0f8h cmp al,0ffh jnz keyn rol ah,1 dec cl jnz scan1 jmp kstkeyn: push ax mov dx,pb55relea: in al,dx or al,0f8h cmp al,0ffh jnz relea pop ax not a

16、x mov si,offset table mov di,offset char mov cx,24tt: cmp ax,si jz nn dec cx jz kst add si,02 inc di jmp ttnn: mov dl,di mov char1,dl mov ah,02h int 21h pop cx jmp yangdelay: call disply jmp kstyang: retkey endp4、显示模块显示模块是将显示缓冲区的数值送到led显示的功能模块,显示缓冲区是由六个字节构成,分别保存小时的高位和低位,分钟的高位和低位,秒钟的高位和低位。硬件上由六个led构成

17、,软件上由扫描显示的方法实现。实现代码如下:display proc near mov cx,77ffhled52: call disup loop led52disup: push cx mov di,offset min1 mov cl,01disup1: mov al,0 mov dx,portbit out dx,al mov al,di mov bx,offset led xlat mov dx,portseg out dx,al mov al,cl mov dx,portbit out dx,al mov bx,35hdelay1: dec bx jnz delay1 cmp cl

18、,20h jz disup2 inc di shl cl,1 jmp disup1disup2: pop cx retdisplay endp5、定时模块定时模块是为8259提供中断请求信号的。由一片8254实现,选用定时器0#,工作在方式3,由4时钟应该1秒走动一次,所以输出值应为1s,其输出信号可作为8259的中断请求信号。6、中断处理模块中断模块实现动态显示的,硬件为一片8259,由于中断请求信号为每秒一次,中断程序该为时间按秒增加,并显示,只要开中断,便可实现每秒显示时间增加一秒,从而达到动态显示的效果。7、芯片引脚按如下图4接线图连接好试验箱上的芯片引脚, 主要用到器件有8255,8

19、254,led,8259,小键盘。8254的片选接地址208-20f,out1,out0接灯(测试用),gate0,gate1接+5v,clk1接8259的irq2,clk0接12(12分频)。8255的片选接地址218-21f,实验箱已将其和小键盘相连。led的片选接地址210-217。208-20f210-217218-21fcsout1out0gate1gate0clk1clk0 8254ab晶振8259ir2+5v16mhzcspb2pa0 小键盘个cs。q4图5 试验接线图五、程序流程图1、主程序流程图如图6所示2、键盘扫描程序流程图:(key)如图7所示开始置8255a控制字,a口

20、为输出,b口为输入a口全输出低电平,从b口读入数据kkkkk保存列值,延时取抖动列线全为高电平吗置8255控制字,a口为输入,b口为输出往b口输出保存的列值从口读入行值和键表比较是否找到匹配键显示输入的字符置8255a控制字,a口为输出,b口为输入a口全输出低电平,从b口读入返回键释放了吗?图7 键盘扫描程序流程图3、中断处理程序流程图如图8所示:开始开中断秒个位小于秒个位清零,秒十位加一秒十位小于秒十位清零,分个位加一分个位小于分个位清零,分十位加一分十位小于分十位清零,时个位加一时十位小于时个位小于时个位小于时个位清零,时十位加一时个位清零,时十位清零秒个位加一发中断结束命令,中断返回图8

21、 中断处理程序流程图六、心得体会经过以上步骤,课程设计所要求设计的电子钟显示设计软件便成功完成了,它能显示数字式的时钟,并且能设置初值和时钟进制。整个页面简洁清晰,方便用户读取,且操作简捷,符合课程设计中的各项要求。通过这次课程设计,我们对日常生活中司空见惯的时钟的工作原理有了一个比较深入的了解,将书本中的知识更好地与实际生活中的应用结合在了一起。通过这次微机原理课程设计学到了很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。而且我第一次感受到在写一个程序的时候,一定要事先把程序原理方框图画出来的重要性。在课程设计中碰到的那些需要很多代码才能完成的

22、任务,画程序方框图是很有必要的。因为通过程序方框图,在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序测试的过程中也有利于查错。本次课程设计的过程中遇到了很多问题,比如时间走得太快、光标的位置无法定位等等。对每个问题的解决都是一种对知识的重新整理和考察。我更加感到愉悦的,此次的课程设计锻炼了我的编程能力。到此为止,我们接近两周的课程设计也告一段落。通过这次课程设计,使我认识到理论与实际相结合的重要性,对课本上的只是在实际生活中的运用也有了进一步的了解,同时基本上能够掌握汇编语言编程中编程的步骤,可以说是从中受益匪浅。通过本次课设我也学到很多课堂上学不到的

23、调试知识。很感谢学校给我们提供了这么好的学习机会,感谢老师的指导,从老师的身上学到了对知识真正严谨细致的态度,让我受益匪浅。附录一:参考书目1、戴梅萼,史嘉权编著.微型计算机技术及应用(第三版).北京:清华大学出版社,20032、周明德编著.微型计算机系统原理及应用(第四版).北京:清华大学出版社,20023、李顺增,吴国东,赵河明等.微机原理及接口技术.北京:机械工业出版社,20064、杨立新.微型计算机原理和应用m.北京:科学技术文献出版社,1986.11 5、李大友.微型计算机原理m.北京:清华大学出版社,1998.76、眭碧霞.微型计算机原理与组成m.人民邮电出版社,2003.8附录二

24、 相关程序电子时钟程序;8255用作读键盘信息;8253提供时钟信号;led采用动态显示model small.stack 50,数据段databuf d6 0,0,0,0,0,0;显示缓冲区;数码管笔形码led d63fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,80hhour d6 08h;时缓冲单元min db 30h;分缓冲单元see d6 30h;秒缓冲单元mseo d6 0;毫秒缓冲单元dex db 0;笔形码索引值;键盘编码表keytab dw 57fh,5bfh,5dfh,5efh,5feh,5fdh,5fbh,5f7h dw 67fh,6bfh

25、,6dfh,6efh,6feh,6fdh,6fbh,6f7hkeyend dw 7ffhagekey db 12;键龄oldkey dw 0;键码字保存keynum d6 0;键号keyok db 0;按键响应标记state d6 0;系统状态,。一运行态;1一修改态keymd db 0;修改键标记,b一修改时;c一修改分;d-修改秒some d6 0;时间设定单元,保存键盘输入的时间二代码段code;主程序:;实现8253的设置,中断向量的设置,检测系统大键盘信号,有按键就结束程序返回系统。main proc farstart: mov ax,data;设置数据段和附加段 mov ds,ax

26、 mov es,ax cli;关中断;设置8253, 2l,方式2,输入250khz,输出200hz mov dx,233h mov a1,74h out dx,al m- dx.231h mov ax,1250 out dx,al mov al,ah out dx,al;保存原中断向量 a1,obh ah,35b21hes bxdsint nush vushpush;设置新中断向量mov dx, offset intpromov ax,seg intpromov ds,axmov a1,obhmov ah,25htm 21h;打开中断屏蔽 pop ds in a1, 21h and al,

27、of7h out 21h,a1 sti;开中断;等持按键,返回系统wat: mov ah,l int lbh jz wat;回复中断向量 pop dx pop ds mov a1,obh mov ah,25h int 21h;退出程序,返回系统 mov ax,4e00h in 21h,中断一f程序:;完成时钟处理、键盘监控和显示功能tntpro proc near push ds;保存寄存器 push ax push cx axax,data;设置数据段和代码段寄存器ds,ax;不是修改状态才走时钟nush;时钟处理模块,以5毫秒为单位调整时、分秒。elk: inc msecnu鱿、hcnnl

28、 m ml ad da mlcnnl抑miadd al,lmin,almin,60hdaacmpjne nextmov min,0mov al,houradd al,ldaamov hour,alcmp hour,24hjne nextmov hour,0,键盘监控模块next: dec agekeyjz nextljmp dspnextl: mov agekey,12mov dx,223h;设置pa输出,pb输入mov a1,82hout dx,almov a1,0 ;a口输出低电平,读b口mov dx,220hout dx,al mov dx,221hin al,dxmov bh,almo

29、v dx,223h;设置pb输出,pa输入mov a1,90hout dx,almov al,() ;bmov dx,22lhout dx,almov dx,220bin al,dxmov bl,al ;i?and bx,7ffh;去除键码中无用位数cmp bx,7ffhjne keyon;有按键则进入按键处理mov keyok,0;无按键则清除响应标志退出按键处理jmp dspkeyon: cmp. bx,oldkeyje keyonl;已经去抖动则直接处理按键movagekey,4;有新按键则设置键龄退出中断mov keyok,0mov oldkey,bximp dspkeyonl: cm

30、p keyok,ljne ii;按键已响应则退出键盘处理imp dsp11: mov keyok,l;设立按键响应标记 stdlea di,keyend;指向键码表mov ax,bx;读取键号,地址递减,cx的值为键号 mov cx,17repne scaswje keyon2imp dspkeyon2: mov keynum,cl;保存键号cmp state,0;系统在修改态否?jne keyon3;跳到修改态的处理cmp keynum,0ah;为a键否jne keybmov keymd,l;作a键修改标志movhour,0aah沙时显示为一mov state,l;进入修改态imp dspkeyb: cmp keynum,obh;为b键否jne keyemov keymd,2;作b键修改标志mov min,0aah;分钟异示为.mov state,l;进入修改态imp dspkeyc: cmp keynum,och;为c键否je keyclimp dspkeycl: mov keymd,3;作c键修改标志 mov sec,0aahmov state,l;秒显示为.imp dspk

温馨提示

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

评论

0/150

提交评论