1、微机原理课程设计 可控电子时钟作者:张经纬 时间: 2016.31微机原理课程设计设计报告姓名: 张经纬学号: 1345533124班级: 13 电气 1 班专业: 电气工程及其自动化学院: 电气与工程信息学院2016 年 3 月微机原理课程设计 可控电子时钟作者:张经纬 时间: 2016.32目录一、 设计任务描述 31.1 设计题目 .31.2 设计目的 .31.3 设计要求 .3二、设计方案描述 .32.1 设计原理 .32.2 设计芯片结构 .4三、具体模块设计 .53.1 概述 .53.2 小键盘模块 .53.3 显示模块 .53.4 定时模块 .63.5 中断处理模块 .63.6
2、硬件接线图 .63.7 主程序流程图 .6四、可控电子时钟源程序 .9五、心得体会 14微机原理课程设计 可控电子时钟作者:张经纬 时间: 2016.33可调电子时钟一、 设计任务描述1.1 设计题目可调电子钟设计1.2 设计目的微型计算机原理及应用是一门实践性较强的课程,课堂上的理论学习不足以让学生熟练掌握这门课程。所以让学生在学完该课程之后,进行一次课程设计,使学生将课堂所学的知识和实践有机结合起来,初步掌握计算机应用系统设计的步骤和接口设计的方法,提高分析和解决实际问题的能力。具体如下:1、熟悉中断工作原理,定时计数原理,并行通信原理工作原理。2、掌握 8259 芯片,8254 芯片,8
3、255 芯片功能,结构,编程。3、掌握七段数码管以及小键盘的使用。4、能运用所提到的芯片,设计系统并进行程序开发,满足用户需求。1.3 设计要求1、设计一电子时钟,能计时、在数码管上显示时间并用键盘调节时间。2、根据所用的接口电路芯片设计出完整的接口电路,并在实验系统上完成电路的连接和调试通过.3、程序设计:要求画出程序框图,设计出全部程序并给出程序设计说明和程序注释。4、前期完成的实验有:8259A 中断控制器实验,8254 定时计数器实验,8255 并行接口实验。二、设计方案描述2.1 设计原理首先利用程序硬性规定分、秒的起始时间为零。利用实验台上提供的定时器 8254 和扩展板上提供的
4、8259 以及键盘和数码显示电路,设计一个电子时钟,微机原理课程设计 可控电子时钟作者:张经纬 时间: 2016.34由 8254 中断定时,小键盘控制电子时钟的初始值的预置。电子时钟的显示格式HH:MM:SS 由左到右分别为时、分、秒,最大记时 24:00:00 超过这个时间时分秒都清零从 00:00:01 重新开始。基本工作原理:每毫秒对毫秒寄存器的内容加一,满 1000 毫秒对秒位进一,每秒对秒位寄存器的内容加一,满 60 秒对分位进一,以此类推。依次完成对秒、分、小时寄存器的递增,六个数码管动态显示时、分、秒的当前值。2.2 设计芯片结构1、8255 可编程外围接口芯片是 Intel
5、公司生产的通用并行 I/O 接口芯片,它具有 A、B、C 三个并行接口,并行接口是以数据的字节为单位与 I/O 设备或被控制对象之间传递信息。CPU 和接口之间 的数据传送总是并行的,即可以同时传递 8 位、16 位、32 位等。用+5V 单电源供电,能在以下三种方式下工作:方式 0-基本输入/出方式、方式 1-选通输入/出方式、方式 2-双向选通工作方式。2、中断控制器 8259 是 Intel 公司专为控制优先级中断而设计开发的芯片。它将中断源优先级 排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对 8259A 进行编程,就可以管理 8 级中断,并选择优先模式
6、和中断请求方式,即中断结构可以由用户编 程来设定。同时,在不需增加其他电路的情况下,通过多片 8259A 的级连,能构成多达 64 级的矢量中断系统。它的管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否响应 和响应哪一级中断,3)响应中断时,向 CPU 传送中断类型号。3、8254 是 Intel 公司生产的可编程间隔定时器。是 8253 的改进型,比8253 具有更优良的性能。8254 具有以下基本功能: 有 3 个独立的 16 位计数器; 每个计数器可按二进制或十进制(BCD)计数; 每个计数器可编程工作于 6 种不同工作方式;每个计数器允许的最高计数频率为 10MHz; 8
7、254 有读回命令,除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容。 计数脉冲可以是有规律的时钟信号,也可以是随机信号。微机原理课程设计 可控电子时钟作者:张经纬 时间: 2016.35三、具体模块设计3.1 概述本系统设计的电子钟以 8086 微处理器作为 CPU,用 8254 做定时计数器产生时钟频率,8255 做可编程并行接口显示时钟和键盘电路,8259 做中断控制器产生中断。在此系统中,8254 的功能是定时,接入 8254 的 CLK 信号为周期性时钟信号。8254 采用计数器 0,工作于方式 2。程序由以下模块组成:系统共有 5 个功能模块,分别为,主控模块,显示模块
8、,定时模块,中断模块,小键盘模块。系统框图如下:图一 系统框图3.2 小键盘模块小键盘模块送入主控模块的子功能模块。由软件和硬件实现,硬件上由小键盘和 8255 互连,将小键值由 8255 送入主控模块。软件上使用行扫描法获得键值并送回主控模块。在本次设计中考虑抖动的影响因素,执行一个约 10ms 的延时程序后再扫描键盘,若两次都有键按下,从而消除了抖动影响。3.3 显示模块显示模块是将显示缓冲区的数值送到 LED 显示的功能模块,显示缓冲区是由六个字节构成,分别保存小时的高位和低位,分钟的高位和低位,秒钟的高系统总线模块8255小键盘模块显 示模 块8259 中断模块 8254 计时模块微机
9、原理课程设计 可控电子时钟作者:张经纬 时间: 2016.36位和低位。硬件上由六个 LED 构成,软件上由扫描显示的方法实现。3.4 定时模块定时模块是为 8259 提供中断请求信号的。由一片 8254 实现,选用定时器0#,工作在方式 3,由 4 时钟应该 1 秒走动一次,所以输出值应为 1S,其输出信号可作为 8259 的中断请求信号。3.5 中断处理模块中断模块实现动态显示的,硬件为一片 8259,由于中断请求信号为每秒一次,中断程序该为时间按秒增加,并显示,只要开中断,便可实现每秒显示时间增加一秒,从而达到动态显示的效果。3.6 硬件接线图芯片 8254 系统总线 芯片 8255 L
10、ED 数码管及键盘D0 PB0D1 PB1D2 PB2D3 PB3D4 PB4D5 PB5D6 PB6D7 PB7WR PA0RD PA1CS PA2A0 PA3A1 PC0PC1PC2PC3XD0XD1XD2XD3XD4XD5XD6XD7IOW#IOR#IOY3 IOY0XA1XA2ClkMir7+5VABCDEFGHX1X2X3X4Y1Y2Y3Y4D0D1D2D3D4D5D6D7WRRDCSA0A1CLK0OUT0GATE0微机原理课程设计 可控电子时钟作者:张经纬 时间: 2016.37图二实验接线图3.7 主程序流程图主程序的流程图是对整个程序的逻辑的图象表示。首先是设置8254、82
11、55、8259 的各个端口地址。接着初始化各个芯片,开始计时,并通过8259 中断控制时间的正确显示。在整个过程中都在检测是否有铵键响应。有则停止,没有则返回继续执行。计数单元清零芯片初始化开中断,允许可屏蔽中断开始保存数据,刷新显示保存数据,刷新显示YN 是否为第三列?保存数据,刷新显示显示时钟YN 是否有键按下?YN 再次确认?读取键盘输入数据YN 是否为第一列?YN 是否为第二列?YN 是否为第四列?保存数据,刷新显示微机原理课程设计 可控电子时钟作者:张经纬 时间: 2016.38更改时间寄存器值中断入口YN 毫秒是否满 1000?毫秒清零,秒加一YN 秒是否满 60?秒清零,分加一Y
12、N 分是否满 60?分清零,时加一YN 时是否满 24?全部清零时间写入寄存器刷新显示中断结束并返回微机原理课程设计 可控电子时钟作者:张经纬 时间: 2016.39四、可控电子时钟源程序MY8255_A EQU 0600H MY8255_B EQU 0602H MY8255_C EQU 0604H MY8255_MODE EQU 0606H A8254 EQU 06C0H B8254 EQU 06C2HC8254 EQU 06C4HCON8254 EQU 06C6HSSTACK SEGMENT STACK DW 32 DUP(?)SSTACK ENDSDATA SEGMENT DTABLE
13、DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH, 6FHMSEC DW 0 SEC DB 0MIN DB 0HOUR DB 0DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:SSTACKSTART: PUSH DSMOV AX, 0000HMOV DS, AXMOV AX, OFFSET MIR7 ;取中断入口地址MOV SI, 003CH ;中断矢量地址MOV SI, AX ;填 IRQ7 的偏移矢量,确定地址MOV AX, CS MOV SI, 003EHMOV SI, AX ;填 IRQ7 的段地址矢量CLI
14、POP DS MOV DX,MY8255_MODE ;初始化主片 8255MOV AL,81HOUT DX,ALMOV DX,CON8254 ;初始化主片 8254MOV AL,36H OUT DX,ALMOV DX,A8254 MOV AL,0E8H ;写入计数器初值OUT DX,ALMOV AL,03HOUT DX,AL 微机原理课程设计 可控电子时钟作者:张经纬 时间: 2016.310MOV AL, 11H ;初始化主片 8259OUT 20H, AL ;ICW1MOV AL, 08HOUT 21H, AL ;ICW2MOV AL, 04HOUT 21H, AL ;ICW3MOV AL
15、, 01HOUT 21H, AL ;ICW4MOV AL, 6FH ;OCW1OUT 21H, ALSTI MOV AX,DATA MOV DS,AX MOV SI,3000H ;时间寄存空间首地址MOV AL,00H ;时间寄存空间清零MOV SI,AL MOV SI+1,AL MOV 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 ;转有键按下CA
16、LL CLEAR ;8255B 口输出清零JMP BEGIN ;主程序重复CCSCAN:MOV AL,00H ;按键扫描程序MOV DX,MY8255_AOUT DX,ALMOV DX,MY8255_CIN AL,DXAND AL,0FHXOR AL,0FHRET GETKEY1:CALL DIS ;键盘防抖动程序CALL DALLYCALL CCSCAN 微机原理课程设计 可控电子时钟作者:张经纬 时间: 2016.311JNZ GETKEY2 RET GETKEY2:MOV AX,0000HMOV DX,MY8255_AOUT DX,AL ;将 A 口置 0MOV DX,MY8255_C
17、IN AL,DX ;读 C 口,用于判断哪列按键闭合L1: TEST AL,01H ;是否为第 1 列JNZ L2 ;不是则继续判断MOV DI,3002H JMP KCODEL2: TEST AL,02H ;是否为第 2 列JNZ L3 ;不是则继续判断MOV DI,3003H JMP KCODEL3: TEST AL,04H ;是否为第 3 列JNZ L4 ;不是则继续判断MOV DI,3004H JMP KCODEL4: TEST AL,08H ;是否为第 4 列JNZ BEGIN ;不是则重新开始MOV DI,3005H JMP KCODE RET KCODE: CALL PUTBUF
18、 ;按时间寄存空间地址保存按键值PUSH AX MOV SI,3000HMOV BL,SI+3AND BL,0FHROL BL,4MOV AL,SI+2AND AL,0FHOR AL,BLMOV MIN,AL ;根据按键修改分钟变量值MOV BL,SI+5AND BL,0FHROL BL,4MOV AL,SI+4AND AL,0FHOR AL,BLMOV HOUR,AL ;根据按键修改小时变量值KON: CALL DIS ;数码管显示刷新微机原理课程设计 可控电子时钟作者:张经纬 时间: 2016.312CALL CLEAR ;8255B 口输出清零CALL CCSCAN ;扫描按键,判断按键
19、是否弹起JNZ KON ;未弹起则继续循环等待弹起POP AXJMP BEGINPUTBUF:MOV SI,DI ;按键对应时间寄存空间的值加一程序MOV AL,SI INC ALMOV SI,ALMOV DI,3005HRETMIR7: STI ;中断程序PUSH AXPUSH SIMOV AX,MSEC INC AX ;毫秒加一MOV MSEC,AXCMP AX,1000 JB MRET ;若毫秒小于 1000 则中断结束MOV AX,0 ;否则毫秒清零,秒加一MOV MSEC,AX MOV AL,SECADD AL,1DAA ;数据压缩成 BCD 码MOV SEC,ALCMP AL,60
20、HJB 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,AL微机原理课程设计 可控电子时钟作者:张经纬 时间: 2016.313MOV SI,
21、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,00H OUT DX,A
22、X RET DIS: PUSH AX ;时间显示程序MOV SI,3000HMOV DL,0DFHMOV AL,DLAGAIN: PUSH DXMOV DX,MY8255_AOUT DX,ALMOV AL,SIMOV BX,OFFSET DTABLEAND AX,00FFH ADD BX,AXMOV AL,BXMOV DX,MY8255_B 微机原理课程设计 可控电子时钟作者:张经纬 时间: 2016.314OUT DX,AL CALL DALLYINC SIPOP DXMOV AL,DLTEST AL,01H ;判断显示刷新到最后一位JZ OUT1 ;若是则结束ROR AL,1 ;否则显示下一位MOV DL,ALJMP AGAINOUT1: POP AX ;时间显示结束RET DALLY:PUSH CX ;延时程序MOV CX,000FH T1:MOV AX,002FHT2:DEC AXJNZ T2LOOP T1POP CXRET CODE ENDSEND START五、心得体会在这次课程设计中,是对微型计算机原理及应用的复习。同时在设计中使我的编程水平提高了一大步。这次设计涉及到很多芯片的应用,最大特点是软,硬件的结合,对动手能里的要求很大。也使我更加的体会到,在一定程度和科技水平上,硬件和软件是可以实现对等转化的。电子时钟的发展史就很好的诠释了这个过程。