当前位置:文档之家› 微机原理课程设计——可调电子时钟

微机原理课程设计——可调电子时钟

《微机原理课程设计》设计报告姓名:***学号: **********班级: 13 电气 1 班专业:电气工程及其自动化学院:电气与工程信息学院2016年3月目录一、设计任务描述 (3)1.1设计题目 (3)1.2设计目的 (3)1.3设计要求 (3)二、设计方案描述 (3)2.1设计原理 (3)2.2设计芯片结构 (4)三、具体模块设计 (5)3.1概述 (5)3.2小键盘模块 (5)3.3显示模块 (5)3.4定时模块 (6)3.5中断处理模块 (6)3.6硬件接线图 (6)3.7主程序流程图 (6)四、可控电子时钟源程序 (9)五、心得体会 (14)可调电子时钟一、设计任务描述1.1设计题目可调电子钟设计1.2设计目的《微型计算机原理及应用》是一门实践性较强的课程,课堂上的理论学习不足以让学生熟练掌握这门课程。

所以让学生在学完该课程之后,进行一次课程设计,使学生将课堂所学的知识和实践有机结合起来,初步掌握计算机应用系统设计的步骤和接口设计的方法,提高分析和解决实际问题的能力。

具体如下:1、熟悉中断工作原理,定时计数原理,并行通信原理工作原理。

2、掌握8259芯片,8254芯片,8255芯片功能,结构,编程。

3、掌握七段数码管以及小键盘的使用。

4、能运用所提到的芯片,设计系统并进行程序开发,满足用户需求。

1.3设计要求1、设计一电子时钟,能计时、在数码管上显示时间并用键盘调节时间。

2、根据所用的接口电路芯片设计出完整的接口电路,并在实验系统上完成电路的连接和调试通过.3、程序设计:要求画出程序框图,设计出全部程序并给出程序设计说明和程序注释。

4、前期完成的实验有:8259A中断控制器实验,8254定时计数器实验,8255并行接口实验。

二、设计方案描述2.1设计原理首先利用程序硬性规定分、秒的起始时间为零。

利用实验台上提供的定时器8254和扩展板上提供的8259以及键盘和数码显示电路,设计一个电子时钟,由8254中断定时,小键盘控制电子时钟的初始值的预置。

电子时钟的显示格式HH:MM:SS由左到右分别为时、分、秒,最大记时24:00:00超过这个时间时分秒都清零从00:00:01重新开始。

基本工作原理:每毫秒对毫秒寄存器的内容加一,满1000毫秒对秒位进一,每秒对秒位寄存器的内容加一,满60秒对分位进一,以此类推。

依次完成对秒、分、小时寄存器的递增,六个数码管动态显示时、分、秒的当前值。

2.2设计芯片结构1、8255 可编程外围接口芯片是 Intel 公司生产的通用并行I/O 接口芯片,它具有A、B、C 三个并行接口,并行接口是以数据的字节为单位与I/O 设备或被控制对象之间传递信息。

CPU 和接口之间的数据传送总是并行的,即可以同时传递8 位、16 位、32 位等。

用+5V 单电源供电,能在以下三种方式下工作:方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。

2、中断控制器8259是Intel 公司专为控制优先级中断而设计开发的芯片。

它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259A 进行编程,就可以管理8 级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。

同时,在不需增加其他电路的情况下,通过多片8259A 的级连,能构成多达64 级的矢量中断系统。

它的管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,向CPU 传送中断类型号。

3、8254 是Intel 公司生产的可编程间隔定时器。

是8253 的改进型,比8253 具有更优良的性能。

8254 具有以下基本功能:●有3 个独立的16 位计数器;●每个计数器可按二进制或十进制(BCD)计数;每个计数器可编程工作于6 种不同工作方式;每个计数器允许的最高计数频率为10MHz;●8254 有读回命令,除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容。

●计数脉冲可以是有规律的时钟信号,也可以是随机信号。

三、具体模块设计3.1概述本系统设计的电子钟以8086微处理器作为CPU,用8254做定时计数器产生时钟频率,8255做可编程并行接口显示时钟和键盘电路,8259做中断控制器产生中断。

在此系统中,8254的功能是定时,接入8254的CLK信号为周期性时钟信号。

8254采用计数器0,工作于方式2。

程序由以下模块组成:系统共有5个功能模块,分别为,主控模块,显示模块,定时模块,中断模块,小键盘模块。

系统框图如下:图一系统框图3.2小键盘模块小键盘模块送入主控模块的子功能模块。

由软件和硬件实现,硬件上由小键盘和8255互连,将小键值由8255送入主控模块。

软件上使用行扫描法获得键值并送回主控模块。

在本次设计中考虑抖动的影响因素,执行一个约10ms的延时程序后再扫描键盘,若两次都有键按下,从而消除了抖动影响。

3.3显示模块显示模块是将显示缓冲区的数值送到LED显示的功能模块,显示缓冲区是由六个字节构成,分别保存小时的高位和低位,分钟的高位和低位,秒钟的高位和低位。

硬件上由六个LED构成,软件上由扫描显示的方法实现。

3.4定时模块定时模块是为8259提供中断请求信号的。

由一片8254实现,选用定时器0#,工作在方式3,由4时钟应该1秒走动一次,所以输出值应为1S,其输出信号可作为8259的中断请求信号。

3.5中断处理模块中断模块实现动态显示的,硬件为一片8259,由于中断请求信号为每秒一次,中断程序该为时间按秒增加,并显示,只要开中断,便可实现每秒显示时间增加一秒,从而达到动态显示的效果。

3.6硬件接线图芯片8254 系统总线芯片8255 LED数码管及键盘图二实验接线图3.7主程序流程图主程序的流程图是对整个程序的逻辑的图象表示。

首先是设置8254、8255、8259的各个端口地址。

接着初始化各个芯片,开始计时,并通过8259中断控制时间的正确显示。

在整个过程中都在检测是否有铵键响应。

有则停止,没有则返回继续执行。

四、可控电子时钟源程序MY8255_A EQU 0600HMY8255_B EQU 0602HMY8255_C EQU 0604HMY8255_MODE EQU 0606HA8254 EQU 06C0HB8254 EQU 06C2HC8254 EQU 06C4HCON8254 EQU 06C6HSSTACK SEGMENT STACKDW 32 DUP(?)SSTACK ENDSDATA SEGMENTDTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH, 6FHMSEC DW 0SEC DB 0MIN DB 0HOUR DB 0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:SSTACKSTART: PUSH DSMOV AX, 0000HMOV DS, AXMOV AX, OFFSET MIR7 ;取中断入口地址MOV SI, 003CH ;中断矢量地址MOV [SI], AX ;填IRQ7的偏移矢量,确定地址MOV AX, CSMOV SI, 003EHMOV [SI], AX ;填IRQ7的段地址矢量CLIPOP DSMOV DX,MY8255_MODE ;初始化主片8255MOV AL,81HOUT DX,ALMOV DX,CON8254 ;初始化主片8254MOV AL,36HOUT DX,ALMOV DX,A8254MOV AL,0E8H ;写入计数器初值OUT DX,ALMOV AL,03HOUT DX,ALMOV AL, 11H ;初始化主片8259OUT 20H, AL ;ICW1MOV AL, 08HOUT 21H, AL ;ICW2MOV AL, 04HOUT 21H, AL ;ICW3MOV AL, 01HOUT 21H, AL ;ICW4MOV AL, 6FH ;OCW1OUT 21H, ALSTIMOV AX,DATAMOV DS,AXMOV SI,3000H ;时间寄存空间首地址MOV AL,00H ;时间寄存空间清零MOV [SI],ALMOV [SI+1],ALMOV [SI+2],ALMOV [SI+3],ALMOV [SI+4],ALMOV [SI+5],ALMOV DI,3005HBEGIN: CALL DIS ;数码管显示刷新CMP HOUR,24HJB T0 ;满24h清零MOV HOUR,00HT0:CALL CCSCAN ;按键扫描JNZ GETKEY1 ;转有键按下CALL CLEAR ;8255B口输出清零JMP BEGIN ;主程序重复CCSCAN:MOV AL,00H ;按键扫描程序MOV DX,MY8255_AOUT DX,ALMOV DX,MY8255_CIN AL,DXAND AL,0FHXOR AL,0FHRETGETKEY1:CALL DIS ;键盘防抖动程序CALL DALLYCALL CCSCANJNZ GETKEY2RETGETKEY2:MOV AX,0000HMOV DX,MY8255_AOUT DX,AL ;将A口置 0MOV DX,MY8255_CIN AL,DX ;读 C口,用于判断哪列按键闭合L1: TEST AL,01H ;是否为第 1 列JNZ L2 ;不是则继续判断MOV DI,3002HJMP KCODEL2: TEST AL,02H ;是否为第 2 列JNZ L3 ;不是则继续判断MOV DI,3003HJMP KCODEL3: TEST AL,04H ;是否为第 3 列JNZ L4 ;不是则继续判断MOV DI,3004HJMP KCODEL4: TEST AL,08H ;是否为第 4 列JNZ BEGIN ;不是则重新开始MOV DI,3005HJMP KCODERETKCODE: CALL PUTBUF ;按时间寄存空间地址保存按键值PUSH AXMOV SI,3000HMOV BL,[SI+3]AND BL,0FHROL BL,4MOV AL,[SI+2]AND AL,0FHOR AL,BLMOV MIN,AL ;根据按键修改分钟变量值MOV BL,[SI+5]AND BL,0FHROL BL,4MOV AL,[SI+4]AND AL,0FHOR AL,BLMOV HOUR,AL ;根据按键修改小时变量值KON: CALL DIS ;数码管显示刷新CALL CLEAR ;8255B口输出清零CALL CCSCAN ;扫描按键,判断按键是否弹起JNZ KON ;未弹起则继续循环等待弹起POP AXJMP BEGINPUTBUF:MOV SI,DI ;按键对应时间寄存空间的值加一程序 MOV AL,[SI]INC ALMOV [SI],ALMOV DI,3005HRETMIR7: STI ;中断程序PUSH AXPUSH SIMOV AX,MSECINC AX ;毫秒加一MOV MSEC,AXCMP AX,1000JB MRET ;若毫秒小于1000则中断结束MOV AX,0 ;否则毫秒清零,秒加一MOV MSEC,AXMOV AL,SECADD AL,1DAA ;数据压缩成BCD码MOV SEC,ALCMP AL,60HJB MTODIS ;若秒小于60则更改时间寄存器的值MOV AL,0 ;否则秒清零,分加一MOV SEC,ALMOV AL,MINADD AL,1DAA ;数据压缩成BCD码MOV MIN,ALCMP AL,60HJB MTODIS ;若分小于60则更改时间寄存空间的值MOV AL,0 ;否则分清零,时加一MOV MIN,ALMOV AL,HOURADD AL,1DAA ;数据压缩成BCD码MOV HOUR,ALMTODIS: MOV AL,SEC ;更改时间寄存空间的值程序MOV AH,ALMOV SI,3000HAND AL,0FHMOV [SI],ALROR AH,4AND AH,0FHMOV [SI+1],AHMOV AL,MINMOV AH,ALAND AL,0FHMOV [SI+2],ALROR AH,4AND AH,0FHMOV [SI+3],AHMOV AL,HOURMOV AH,ALAND AL,0FHMOV [SI+4],ALROR AH,4AND AH,0FHMOV [SI+5],AHMRET: MOV AL, 20H ;中断结束命令OUT 20H, ALPOP SIPOP AXIRETCLEAR: MOV DX,MY8255_B ;8255B口输出清零程序 MOV AX,00HOUT DX,AXRETDIS: PUSH AX ;时间显示程序MOV SI,3000HMOV DL,0DFHMOV AL,DLAGAIN: PUSH DXMOV DX,MY8255_AOUT DX,ALMOV AL,[SI]MOV BX,OFFSET DTABLEAND AX,00FFHADD BX,AXMOV AL,[BX]MOV DX,MY8255_BOUT DX,ALCALL DALLYINC SIPOP DXMOV AL,DLTEST AL,01H ;判断显示刷新到最后一位JZ OUT1 ;若是则结束ROR AL,1 ;否则显示下一位MOV DL,ALJMP AGAINOUT1: POP AX ;时间显示结束RETDALLY:PUSH CX ;延时程序MOV CX,000FH T1:MOV AX,002FHT2:DEC AXJNZ T2LOOP T1POP CXRETCODE ENDSEND START五、心得体会在这次课程设计中,是对《微型计算机原理及应用》的复习。

相关主题