《微机原理课程设计——可调电子时钟(共14页).docx》由会员分享,可在线阅读,更多相关《微机原理课程设计——可调电子时钟(共14页).docx(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上微机原理课程设计设计报告姓名: 张经纬学号: 班级: 13 电气 1 班专业: 电气工程及其自动化学院: 电气与工程信息学院 2016年3月目录可调电子时钟一、 设计任务描述1.1设计题目可调电子钟设计1.2设计目的微型计算机原理及应用是一门实践性较强的课程,课堂上的理论学习不足以让学生熟练掌握这门课程。所以让学生在学完该课程之后,进行一次课程设计,使学生将课堂所学的知识和实践有机结合起来,初步掌握计算机应用系统设计的步骤和接口设计的方法,提高分析和解决实际问题的能力。具体如下:1、熟悉中断工作原理,定时计数原理,并行通信原理工作原理。2、掌握8259芯片,8254芯
2、片,8255芯片功能,结构,编程。3、掌握七段数码管以及小键盘的使用。4、能运用所提到的芯片,设计系统并进行程序开发,满足用户需求。1.3设计要求1、设计一电子时钟,能计时、在数码管上显示时间并用键盘调节时间。2、根据所用的接口电路芯片设计出完整的接口电路,并在实验系统上完成电路的连接和调试通过.3、程序设计:要求画出程序框图,设计出全部程序并给出程序设计说明和程序注释。4、前期完成的实验有:8259A中断控制器实验,8254定时计数器实验,8255并行接口实验。二、设计方案描述2.1设计原理首先利用程序硬性规定分、秒的起始时间为零。利用实验台上提供的定时器8254和扩展板上提供的8259以及
3、键盘和数码显示电路,设计一个电子时钟,由8254中断定时,小键盘控制电子时钟的初始值的预置。电子时钟的显示格式HH:MM:SS由左到右分别为时、分、秒,最大记时24:00:00超过这个时间时分秒都清零从00:00:01重新开始。基本工作原理:每毫秒对毫秒寄存器的内容加一,满1000毫秒对秒位进一,每秒对秒位寄存器的内容加一,满60秒对分位进一,以此类推。依次完成对秒、分、小时寄存器的递增,六个数码管动态显示时、分、秒的当前值。2.2设计芯片结构1、8255 可编程外围接口芯片是 Intel 公司生产的通用并行I/O 接口芯片,它具有A、B、C 三个并行接口,并行接口是以数据的字节为单位与I/O
4、 设备或被控制对象之间传递信息。CPU 和接口之间 的数据传送总是并行的,即可以同时传递8 位、16 位、32 位等。用+5V 单电源供电,能在以下三种方式下工作:方式0-基本输入/出方式、方式1-选通输入/出方式、方式2-双向选通工作方式。2、中断控制器8259是Intel 公司专为控制优先级中断而设计开发的芯片。它将中断源优先级 排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259A 进行编程,就可以管理8 级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编 程来设定。同时,在不需增加其他电路的情况下,通过多片8259A 的级连,能构成多达64
5、级的矢量中断系统。它的管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否响应 和响应哪一级中断,3)响应中断时,向CPU 传送中断类型号。3、8254 是Intel 公司生产的可编程间隔定时器。是8253 的改进型,比8253 具有更优良的性能。8254 具有以下基本功能: 有3 个独立的16 位计数器; 每个计数器可按二进制或十进制(BCD)计数; 每个计数器可编程工作于6 种不同工作方式;每个计数器允许的最高计数频率为10MHz; 8254 有读回命令,除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容。 计数脉冲可以是有规律的时钟信号,也可以是随机信号。三、具体模块
6、设计3.1概述本系统设计的电子钟以8086微处理器作为CPU,用8254做定时计数器产生时钟频率,8255做可编程并行接口显示时钟和键盘电路,8259做中断控制器产生中断。在此系统中,8254的功能是定时,接入8254的CLK信号为周期性时钟信号。8254采用计数器0,工作于方式2。程序由以下模块组成:系统共有5个功能模块,分别为,主控模块,显示模块,定时模块,中断模块,小键盘模块。系统框图如下:系统总线模块8255小键盘模块显 示模 块8259中断模块8254计时模块图一 系统框图3.2小键盘模块小键盘模块送入主控模块的子功能模块。由软件和硬件实现,硬件上由小键盘和8255互连,将小键值由8
7、255送入主控模块。软件上使用行扫描法获得键值并送回主控模块。在本次设计中考虑抖动的影响因素,执行一个约10ms的延时程序后再扫描键盘,若两次都有键按下,从而消除了抖动影响。专心-专注-专业3.3显示模块显示模块是将显示缓冲区的数值送到LED显示的功能模块,显示缓冲区是由六个字节构成,分别保存小时的高位和低位,分钟的高位和低位,秒钟的高位和低位。硬件上由六个LED构成,软件上由扫描显示的方法实现。3.4定时模块定时模块是为8259提供中断请求信号的。由一片8254实现,选用定时器0#,工作在方式3,由4时钟应该1秒走动一次,所以输出值应为1S,其输出信号可作为8259的中断请求信号。3.5中断
8、处理模块中断模块实现动态显示的,硬件为一片8259,由于中断请求信号为每秒一次,中断程序该为时间按秒增加,并显示,只要开中断,便可实现每秒显示时间增加一秒,从而达到动态显示的效果。3.6硬件接线图芯片8254 系统总线 芯片8255 LED数码管及键盘 D0 PB0D1 PB1D2 PB2D3 PB3D4 PB4D5 PB5D6 PB6D7 PB7WR PA0RD PA1CS PA2A0 PA3A1 PC0 PC1 PC2 PC3XD0XD1XD2XD3XD4XD5XD6XD7IOW#IOR#IOY3 IOY0XA1XA2ClkMir7+5VABCDEFGHX1X2X3X4Y1Y2Y3Y4D0
9、D1D2D3D4D5D6D7WRRDCSA0A1CLK0OUT0GATE0 图二实验接线图3.7主程序流程图主程序的流程图是对整个程序的逻辑的图象表示。首先是设置8254、8255、8259的各个端口地址。接着初始化各个芯片,开始计时,并通过8259中断控制时间的正确显示。在整个过程中都在检测是否有铵键响应。有则停止,没有则返回继续执行。开始显示时钟YN是否有键按下?YN再次确认?读取键盘输入数据YN是否为第一列?YN是否为第二列?YN是否为第四列?保存数据,刷新显示保存数据,刷新显示YN是否为第三列?保存数据,刷新显示保存数据,刷新显示开中断,允许可屏蔽中断芯片初始化计数单元清零更改时间寄存
10、器值中断入口YN毫秒是否满1000?毫秒清零,秒加一YN秒是否满60?秒清零,分加一YN分是否满60?分清零,时加一YN时是否满24?全部清零时间写入寄存器刷新显示中断结束并返回四、可控电子时钟源程序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 D
11、TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH, 6FHMSECDW 0 SEC DB 0MINDB 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的段地址矢量CLIPO
12、P DS MOV DX,MY8255_MODE ;初始化主片8255 MOV AL,81H OUT DX,ALMOV DX,CON8254 ;初始化主片8254 MOV AL,36H OUT DX,AL MOV DX,A8254 MOV AL,0E8H;写入计数器初值 OUT DX,AL MOV AL,03H OUT DX,AL MOV AL, 11H ;初始化主片8259OUT 20H, AL ;ICW1MOV AL, 08HOUT 21H, AL ;ICW2MOV AL, 04HOUT 21H, AL;ICW3MOV AL, 01HOUT 21H, AL;ICW4MOV AL, 6FH;O
13、CW1OUT 21H, ALSTI MOV AX,DATA MOV DS,AX MOV SI,3000H;时间寄存空间首地址 MOV AL,00H;时间寄存空间清零 MOV SI,AL MOV SI+1,AL MOV SI+2,AL MOV SI+3,AL MOV SI+4,AL MOV SI+5,AL MOV DI,3005HBEGIN: CALL DIS ;数码管显示刷新 CMP HOUR,24H JB T0 ;满24h清零 MOV HOUR,00H T0:CALL CCSCAN ;按键扫描 JNZ GETKEY1 ;转有键按下 CALL CLEAR ;8255B口输出清零 JMP BEG
14、IN ;主程序重复CCSCAN:MOV AL,00H;按键扫描程序 MOV DX,MY8255_A OUT DX,AL MOV DX,MY8255_C IN AL,DX AND AL,0FH XOR AL,0FH RET GETKEY1:CALL DIS ;键盘防抖动程序 CALL DALLY CALL CCSCAN JNZ GETKEY2 RET GETKEY2:MOV AX,0000H MOV DX,MY8255_A OUT DX,AL ;将A口置 0 MOV DX,MY8255_C IN AL,DX;读 C口,用于判断哪列按键闭合L1: TEST AL,01H;是否为第 1 列 JNZ
15、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 ;按时间寄存空间地址保存按键值 PUSH AX MOV SI,3000H MOV BL,SI+3 A
16、ND BL,0FH ROL BL,4 MOV AL,SI+2 AND AL,0FH OR AL,BL MOV MIN,AL;根据按键修改分钟变量值 MOV BL,SI+5 AND BL,0FH ROL BL,4 MOV AL,SI+4 AND AL,0FH OR AL,BL MOV HOUR,AL ;根据按键修改小时变量值 KON: CALL DIS ;数码管显示刷新 CALL CLEAR ;8255B口输出清零 CALL CCSCAN ;扫描按键,判断按键是否弹起 JNZ KON ;未弹起则继续循环等待弹起 POP AX JMP BEGINPUTBUF:MOV SI,DI;按键对应时间寄存空
17、间的值加一程序 MOV AL,SI INC AL MOV SI,AL MOV DI,3005H RETMIR7:STI ;中断程序PUSH AXPUSH SIMOV AX,MSEC INC AX ;毫秒加一MOV MSEC,AX CMP AX,1000 JB MRET ;若毫秒小于1000则中断结束 MOV AX,0;否则毫秒清零,秒加一MOV MSEC,AX MOV AL,SECADD AL,1DAA ;数据压缩成BCD码MOV SEC,ALCMP AL,60HJB MTODIS;若秒小于60则更改时间寄存器的值MOV AL,0;否则秒清零,分加一MOV SEC,ALMOV AL,MINAD
18、D 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,MIN MOV AH,ALAND AL,0FHMOV SI+2,ALROR AH,4AND AH,0FHMOV
19、SI+3,AHMOV AL,HOUR MOV 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,AX RET DIS: PUSH AX ;时间显示程序MOV SI,3000HMOV DL,0DFH MOV AL,DLAGAIN: PUSH DX MOV DX,MY8255_A OUT DX,AL MOV AL,SI MOV BX,
20、OFFSET DTABLE AND AX,00FFH ADD BX,AX MOV AL,BX MOV DX,MY8255_B OUT DX,AL CALL DALLY INC SI POP DX MOV AL,DL TEST AL,01H;判断显示刷新到最后一位 JZ OUT1;若是则结束 ROR AL,1 ;否则显示下一位 MOV DL,AL JMP AGAINOUT1: POP AX;时间显示结束 RET DALLY:PUSH CX;延时程序MOV CX,000FH T1:MOV AX,002FHT2:DEC AX JNZ T2 LOOP T1 POP CX RET CODE ENDS END START五、心得体会在这次课程设计中,是对微型计算机原理及应用的复习。同时在设计中使我的编程水平提高了一大步。这次设计涉及到很多芯片的应用,最大特点是软,硬件的结合,对动手能里的要求很大。也使我更加的体会到,在一定程度和科技水平上,硬件和软件是可以实现对等转化的。电子时钟的发展史就很好的诠释了这个过程。