微机原理数字钟.doc_第1页
微机原理数字钟.doc_第2页
微机原理数字钟.doc_第3页
微机原理数字钟.doc_第4页
微机原理数字钟.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

微机原理数字钟的设计【论文摘要】:微机控制即微型计算机原理控制,是集CPU、RAN、ROM,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。微型计算机原理控制应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程中的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡,电子宠物等,这些都离不开微型计算机原理控制。本次设计的题目是简单电子时钟程序设计,用到了定时芯片8354,中断控制器8259和可编程并行芯片8255.在编辑1毫秒定时程序时,用到了中断装置8259.【关键字】:可编译并行芯片8255 定时芯片8254 中断控制器8259 电子钟目 录一、绪论 21.1、设计指导思想21.2、课程设计目的2二、总体设计22.3、开发环境及设备22.3.1、设计环境22.3.2、设计所用设备2三、课程设计任务 23.1、内容23.1、要求33.3、设计环境33.4、设计所用设备3四、设计所用芯片结构 34.1、8259A芯片的内部结构及引脚34.2、8255芯片的内部结构及引脚 44.3、8254芯片的内部结构及引脚 5五、具体模块设计 65.1、概述65.2、主程序模块75.3、小键盘模块85.4、显示模块 105.5、定时模块 115.6、中断处理模块 11六、程序流程图126.1、主程序流程图 126.2、键盘扫描程序流程图 146.3、中断处理程序流程图 15七、心得体会16八、致谢16 附录一:参考书目16附录二:部分源代码16一、 绪论1.1、设计指导思想本系统设计的电子时钟以8088微处理器作为CPU,用8254做定时计数器产生时钟频率,8255做可编程并行接口显示时钟和键盘电路,8259做中断控制器产生中断。在此系统中,8254的功能是定时,接入8254的CLK信号为周期性时钟信号。8254定时器0产生50ms方波,输入给定时器1,利用定时器1产生1s中断,然后显示,使液晶显示器上的时间发生变化。其中8259只需初始化ICW1,其功能是向8259表明IRx输入是电瓶触发方式还是上升沿触发方式,是单片8259还是多片8259。8259接收到信号后,产生中断信号送CPU处理。1.2、课程设计目的课程设计是本科教学中重要的环节,目的是培养计算机专业学生运用所学知识解决计算机应用领域内实际问题能力,进一步提高学生汇编语言综合编程能力,程序调试技能。本次课程设计,要掌握8254,8255,8259此三种芯片使用,灵活运用课本知识,加深所学的知识,对所学的相关芯片的原理、内部结构、使用方法等有更加深刻的了解,学会利用课本知识联系实际应用及编程。同时并了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰。二、总体设计2.1、开发环境及设备2.1.1、设计环境PC机一台、windows XP系统、实验箱、导线若干。2.1.2、设计所用设备8254定时器:用于产生秒脉冲,其输出信号可作为中断请示信号送IRQ2。8255并口:用做接口芯片,和小键盘相连。8259中断控制器:用于产生中断。LED:六个LED用于显示时:分:秒值。小键盘:用于控制设置。三、课程设计任务3.1、内容利用实验台上提供的定时器8254和扩展板上提供的8259以及键盘和数码显示电路,设计一个电子时钟,由8254中断定时,小键盘控制电子时钟的启停及初始值的预置。电子时钟的显示格式HH:MM:SS由左到右分别为时、分、秒,最大记时59:59:59超过这个时间时分秒位都清零从00:00:00重新开始。3.2、要求本实验要求设计一个定时显示装置,用六个数码管显示时间,用小键盘控制计时,设置和显示时间。系统一运行就从00点00分00秒开始计时,并在数码管上显示时、分、秒当前值,而且,可以用键盘设置当前时间。基本工作原理:每百分之一秒对百分之一秒寄存器的内容加一,并依次对秒、分、小时寄存器的内容加一;六个数码管动态显示时、分、秒的当前值。C键:置初值,显示00:00:00G键:显示动态变化(启动表);D键:显示静态不变(表停止);E键:终止程序,返回DOS;P键:设置时:分:秒的值3.3、设计环境PC机一台、windows XP系统、实验箱,导线若干。3.4、设计所用设备 8254定时器:用于产生秒脉冲,其输出信号可作为中断请示信号送IRQ2。8255并口:用做接口芯片,和小键盘相连。8259中断控制器:用于产生中断。LED:六个LED用于显示时:分:秒值。小键盘:用于控制设置。四、设计所用芯片结构4.1、8259A芯片的内部结构及引脚中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。它将中断源优先排队、辨别中断源以及提供中断矢量的电路集中于一片中。因此无需附加任何电路,只需对8259A编程,就可以管理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说明时钟键盘可用可用串行口可用可用可用4.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控制寄存器63H4.3、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选通输入(门控输入),用于启动或禁止计数器的操作,以使计数器和计测对象同步。表3.3 8254端口地址表2、8254端口地址信号线寄存器编址IOY20#计数器40H1#计数器41H2#计数器42H控制寄存器43H五、具体模块设计5.1、概述本系统设计的电子钟以8088微处理器作为CPU,用8254做定时计数器产生时钟频率,8255做可编程并行接口显示时钟和键盘电路,8259做中断控制器产生中断。在此系统中,8254的功能是定时,接入8254的CLK信号为周期性时钟信号。8254采用计数器0,工作于方式2,使8254的OUT0端输出周期性的负脉冲信号。即每隔20ms,8254的OUT0端就会输出一个负脉冲的信号,此信号接8259的IR2,当中断到50次数后,CPU即处理,使液晶显示器上的时间发生变化。程序由以下模块组成:系统共有5个功能模块,分别为,主控模块,显示模块,定时模块,中断模块,小键盘模块。系统框图如下:键盘读入的数显示缓冲的值秒脉冲显示模块主控模块中断模块定时模块小键盘模块六个LED小键盘8255A82548259图一 系统框图5.2、主程序模块主控模块是系的核心模块,对8254、8255A进行初始化,设置中断向量,扫描键盘根据按键值作相应的处理。主要由软件实现。它的主要功能是调用其它模块对系统工作进行协调,它的主要功能是读小键盘输入键值并执行要做的工作,如果键值为C则将显示初始值00:00:00置入显示缓冲,并调用显示模块显示。如果键值为G则开中断,(中断程序为秒最低位加一)。如果键值为D则关中断,停止动态显示。如健值为P则连续六次调用小键盘模块,将键值依次存入显示缓冲。并调用显示模块显示。如果健值为E,则终止程序,返回DOS。5.3、小键盘模块小键盘模块送入主控模块的子功能模块。由软件和硬件实现,硬件上由小键盘和8255互连,将小键值由8255送入主控模块。软件上使用行扫描法获得键值并送回主控模块。本课题只考虑去抖动。执行一个约10ms的延时程序后再扫描键盘,若F0=1表示真正有键按下,从而消除了抖动影响。实现代码如下:KEY 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 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 AX 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 ENDP5.4、显示模块显示模块是将显示缓冲区的数值送到LED显示的功能模块,显示缓冲区是由六个字节构成,分别保存小时的高位和低位,分钟的高位和低位,秒钟的高位和低位。硬件上由六个LED构成,软件上由扫描显示的方法实现。实现代码如下: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,20H JZ DISUP2 INC DI SHL CL,1 JMP DISUP1DISUP2: POP CX RETDISPLAY ENDP5.5、定时模块定时模块是为8259提供中断请求信号的。由一片8254实现,选用定时器0#,工作在方式3,由4时钟应该1秒走动一次,所以输出值应为1S,其输出信号可作为8259的中断请求信号。5.6、中断处理模块中断模块实现动态显示的,硬件为一片8259,由于中断请求信号为每秒一次,中断程序该为时间按秒增加,并显示,只要开中断,便可实现每秒显示时间增加一秒,从而达到动态显示的效果。按如下接线图连接好试验箱上的芯片引脚, 主要用到器件有8255,8254,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 8254ABLS3938259IR2+5V8MHzCSPB2PA0 小键盘个CS。Q4图二 试验接线图六、程序流程图6.1、主程序流程图NYYNYYYNN8254A作为中断源产生20MS脉冲设置堆栈显示提示信息用INT21H35H号功能保存系统中8259A原中断向量 用INT21H35H号功能设置0A中断新的中断向量,指向年,月,日加1的中断处理程序置8259A的IMR第2位为0,允许IRQ2中断调用键扫描子程序(KEY),键号的ASCII码在CHAR1单元中用INT21H35H号功能恢复原中断向量开中断 图一 主程序流程图返回DOS是C键码?调用C键处理子程序是G键码?调用G键处理子程序是D键码?调用D键处理子程序是P键码?调用P键处理子程序是E键码?N开始6.2、键盘扫描程序流程图:(KEY)开始置8255A控制字,A口为输出,B口为输入A口全输出低电平,从B口读入数据KKKKK保存列值,延时取抖动列线全为高电平吗置8255控制字,A口为输入,B口为输出往B口输出保存的列值从口读入行值和键表比较是否找到匹配键显示输入的字符置8255A控制字,A口为输出,B口为输入A口全输出低电平,从B口读入返回键释放了吗?6.3、中断处理程序流程图:开始开中断秒个位小于秒个位清零,秒十位加一秒十位小于秒十位清零,分个位加一分个位小于分个位清零,分十位加一分十位小于分十位清零,时个位加一时十位小于时个位小于时个位小于时个位清零,时十位加一时个位清零,时十位清零秒个位加一发中断结束命令,中断返回七、心得体会在这周的汇编电子时钟设计过程中,我对电子技术有了一些初步了解。平时在课堂上也有学过,但那都是一些理论的东西,通过这次电子时钟的设计,我才把学到的东西和时间相结合,从中对我所学到的知识有了更进一步的了解。在此次的数字时钟的设计过程中,更进一步的熟悉了芯片的结构及掌握了各个芯片的工作原理和具体的使用方法,也锻炼了自己思考问题的能力和通过查阅相关资料来解决问题的习惯。虽然这次实训时间很短,设计也很简单,但是通过这次课程设计我们了解了课程设计的一般步骤和设计中应该注意的问题。在此次课程设计过程中,我简单的了解了设计思想,设计电路中的每一个环节,电路中各个部分的功能是如何实现的,各个芯片能够完成什么样的功能等。宗旨,在此次实践过程中,我学到了很多。在以后的工作中,将会对我起到很大的作用。八、致谢这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于游逆而解。同时,在老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!附录一:参考书目1、戴梅萼,史嘉权编著.微型计算机技术及应用(第三版).北京:清华大学出版社,20032、周明德编著.微型计算机系统原理及应用(第四版).北京:清华大学出版社,20023、李顺增,吴国东,赵河明等.微机原理及接口技术.北京:机械工业出版社,20064、杨立新.微型计算机原理和应用M.北京:科学技术文献出版社,1986.11 5、李大友.微型计算机原理M.北京:清华大学出版社,1998.7附录二:部分源代码A8254 EQU 06C0HB8254 EQU 06C2HC8254 EQU 06C4HCON8254 EQU 06C6HDATA SEGMENTDTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,6FH,77H,7CH,39H,5EH,79H,71HDATA ENDSSSTACK SEGMENT STACKDW 200 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODE, SS:SSTACK,DS:DATASTART: PUSH DSMOV AX, 0000HMOV DS, AXMOV AX, OFFSET IRQ7 ;取中断入口地址MOV SI, 003CH ;中断矢量地址MOV SI, AX ;填IRQ7的偏移矢量MOV AX, CS ;段地址MOV SI, 003EHMOV SI, AX ;填IRQ7的段地址矢量CLIPOP DSMOV AX,DATA ;remember thisMOV DS,AX ;not lose,it is very importantMOV CX,03HMOV DI,3000HMOV AL,00HLP: MOV DI,AL ;clear 3000h3006h,save second ,minute, hourINC DILOOP LP;MOV DI,3003H ;save counterMOV SI,4000HMOV AL,00HMOV SI,AL ;清显示缓冲MOV SI+1,AL ;display secondMOV SI+2,ALMOV SI+3,AL ;display minuteMOV SI+4,ALMOV SI+5,AL ;display hourMOV SI,4000H;MOV AX,COUNT ;SAVE COUNT=1000;MOV DI,AL;MOV DI+1,AH;初始化主片8259MOV AL, 11HOUT 20H, AL ;ICW1MOV AL, 08HOUT 21H, AL ;ICW2MOV AL, 04HOUT 21H, AL ;ICW3MOV AL, 01HOUT 21H, AL ;ICW4MOV AL, 6FH ;OCW1OUT 21H, AL;8254MOV DX, CON8254;MOV AL, 30H ;计数器0,方式0MOV AL, 36H ;计数器0,方式3,产生50ms方波OUT DX, ALMOV DX, A8254 ;计数初值为3E8H=1000,产生1ms中断MOV AL, 50H ;c350H=50000,产生50msOUT DX, ALMOV AL, 0c3HOUT DX, ALMOV DX, CON8254MOV AL, 50H ;计数器1,方式0OUT DX, ALMOV DX, B8254 ;计数初值为3E8H=1000,产生1ms中断MOV AL, 20H ;c350H=50000,产生50ms中断OUT DX, ALMOV DX,MY8255_CON ;写8255控制字MOV AL,81HOUT DX,ALSTIAA1: CALL DIS ;调用显示子程序JMP AA1;=显示子程序=DIS: PUSH AXMOV SI,4000HMOV DL,0DFHMOV AL,DLAGAIN: PUSH DXMOV DX,MY8255_AOUT DX,AL ;select first segMOV AL,SIMOV BX,OFFSET DTABLEXLATMOV DX,MY8255_BOUT DX,ALCALL DALLYINC SIPOP DXMOV AL,DLTEST AL,01HJZ OUT1ROR AL,1MOV DL,ALJMP AGAINOUT1: POP AXRET;= 延时子程序 =DALLY: PUSH CXMOV CX,0005HT1: MOV AX,0010HT2: DEC AXJNZ T2LOOP T1POP CXRET;save secondIRQ7:PUSH AXMOV DX, B8254 ;重装计数初值MOV AL, 20HOUT DX, AL;MOV AX, 0173H;INT 10H ;显示字符s;SECONDMOV DI,3000HMOV DL,DIMOV AH,00HMOV AL,DLMOV BL,10DIV BLMOV BH,AH ;AH 保存余数,al保存商MOV BL,AL ;MOV SI,4001H ;4000H内存单元保存秒的十位MOV SI,ALOR AL,30H ;ADD 30HMOV AH,01HINT 10HMOV AL,BHMOV SI,4000H ;4001H内存单元保存秒的个位MOV SI,ALOR AL,30H ;ADD 30HMOV AH,01HINT 10HMO

温馨提示

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

评论

0/150

提交评论