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

上传人:无*** 文档编号:99920343 上传时间:2022-06-01 格式:DOC 页数:13 大小:88.50KB
返回 下载 相关 举报
微机原理课程设计报告可调电子时钟_第1页
第1页 / 共13页
微机原理课程设计报告可调电子时钟_第2页
第2页 / 共13页
微机原理课程设计报告可调电子时钟_第3页
第3页 / 共13页
点击查看更多>>
资源描述
-微机原理课程设计设计报告*:*经纬*: 1345533124班级: 13 电气 1 班专业:电气工程及其自动化学院:电气与工程信息学院 2021年3月目录一、设计任务描述31.1设计题目31.2设计目的31.3设计要求3二、设计方案描述32.1设计原理32.2设计芯片构造3三、具体模块设计33.1概述33.2小键盘模块33.3显示模块33.4定时模块33.5中断处理模块33.6硬件接线图33.7主程序流程图3四、可控电子时钟源程序3五、心得体会3可调电子时钟一、设计任务描述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个功能模块,分别为,主控模块,显示模块,定时模块,中断模块,小键盘模块。系统框图如下:系统总线模块8255小键盘模块显 示模 块8259中断模块8254计时模块图一系统框图3.2小键盘模块小键盘模块送入主控模块的子功能模块。由软件和硬件实现,硬件上由小键盘和8255互连,将小键值由8255送入主控模块。软件上使用行扫描法获得键值并送回主控模块。在本次设计中考虑抖动的影响因素,执行一个约10ms的延时程序后再扫描键盘,假设两次都有键按下,从而消除了抖动影响。. z.-3.3显示模块显示模块是将显示缓冲区的数值送到LED显示的功能模块,显示缓冲区是由六个字节构成,分别保存小时的高位和低位,分钟的高位和低位,秒钟的高位和低位。硬件上由六个LED构成,软件上由扫描显示的方法实现。3.4定时模块定时模块是为8259提供中断请求信号的。由一片8254实现,选用定时器0*,工作在方式3,由4时钟应该1秒走动一次,所以输出值应为1S,其输出信号可作为8259的中断请求信号。3.5中断处理模块中断模块实现动态显示的,硬件为一片8259,由于中断请求信号为每秒一次,中断程序该为时间按秒增加,并显示,只要开中断,便可实现每秒显示时间增加一秒,从而到达动态显示的效果。3.6硬件接线图芯片8254 系统总线芯片8255 LED数码管及键盘D0 PB0D1 PB1D2 PB2D3 PB3D4 PB4D5 PB5D6 PB6D7 PB7WR PA0RD PA1CS PA2A0 PA3A1 PC0 PC1 PC2 PC3*D0*D1*D2*D3*D4*D5*D6*D7IOW*IOR*IOY3 IOY0*A1*A2ClkMir7+5VABCDEFGH*1*2*3*4Y1Y2Y3Y4D0D1D2D3D4D5D6D7WRRDCSA0A1CLK0OUT0GATE0图二实验接线图3.7主程序流程图主程序的流程图是对整个程序的逻辑的图象表示。首先是设置8254、8255、8259的各个端口地址。接着初始化各个芯片,开场计时,并通过8259中断控制时间的正确显示。在整个过程中都在检测是否有铵键响应。有则停顿,没有则返回继续执行。开场显示时钟YN是否有键按下.YN再次确认.读取键盘输入数据YN是否为第一列.YN是否为第二列.YN是否为第四列.保存数据,刷新显示保存数据,刷新显示YN是否为第三列.保存数据,刷新显示保存数据,刷新显示开中断,允许可屏蔽中断芯片初始化计数单元清零. z.-更改时间存放器值中断入口YN毫秒是否满1000.毫秒清零,秒加一YN秒是否满60.秒清零,分加一YN分是否满60.分清零,时加一YN时是否满24.全部清零时间写入存放器刷新显示中断完毕并返回. z.-四、可控电子时钟源程序. z.-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 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 A*, 0000HMOV DS, A*MOV A*, OFFSET MIR7 ;取中断入口地址MOV SI, 003CH;中断矢量地址MOV SI, A*;填IRQ7的偏移矢量,确定地址 MOV A*, CS MOV SI, 003EHMOV SI, A*;填IRQ7的段地址矢量CLIPOP DS MOV D*,MY8255_MODE ;初始化主片8255 MOV AL,81H OUT D*,ALMOV D*,CON8254 ;初始化主片8254 MOV AL,36H OUT D*,AL MOV D*,A8254 MOV AL,0E8H;写入计数器初值 OUT D*,AL MOV AL,03H OUT D*,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;OCW1OUT 21H, ALSTI MOV A*,DATA MOV DS,A* 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 T0 ;满24h清零 MOV HOUR,00H T0:CALL CCSCAN ;按键扫描 JNZ GETKEY1 ;转有键按下 CALL CLEAR ;8255B口输出清零 JMP BEGIN ;主程序重复CCSCAN:MOV AL,00H;按键扫描程序 MOV D*,MY8255_A OUT D*,AL MOV D*,MY8255_C IN AL,D* AND AL,0FH *OR AL,0FH RET GETKEY1:CALL DIS ;键盘防抖动程序 CALL DALLY CALL CCSCAN JNZ GETKEY2 RET GETKEY2:MOV A*,0000H MOV D*,MY8255_A OUT D*,AL ;将A口置 0 MOV D*,MY8255_C IN AL,D*;读 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 ;按时间存放空间地址保存按键值 PUSH A* MOV SI,3000H MOV BL,SI+3 AND 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 A* JMP BEGINPUTBUF:MOV SI,DI;按键对应时间存放空间的值加一程序 MOV AL,SI INC AL MOV SI,AL MOV DI,3005H RETMIR7:STI ;中断程序PUSH A*PUSH SIMOV A*,MSEC INC A* ;毫秒加一MOV MSEC,A* CMP A*,1000 MRET ;假设毫秒小于1000则中断完毕 MOV A*,0;否则毫秒清零,秒加一MOV MSEC,A* MOV AL,SECADD AL,1DAA ;数据压缩成BCD码MOV SEC,ALCMP AL,60H MTODIS;假设秒小于60则更改时间存放器的值MOV AL,0;否则秒清零,分加一MOV SEC,ALMOV AL,MINADD AL,1DAA;数据压缩成BCD码MOV MIN,ALCMP AL,60H 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 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 A*IRETCLEAR: MOV D*,MY8255_B;8255B口输出清零程序 MOV A*,00H OUT D*,A* RET DIS: PUSH A* ;时间显示程序MOV SI,3000HMOV DL,0DFH MOV AL,DLAGAIN: PUSH D* MOV D*,MY8255_A OUT D*,AL MOV AL,SI MOV B*,OFFSET DTABLE AND A*,00FFH ADD B*,A* MOV AL,B* MOV D*,MY8255_B OUT D*,AL CALL DALLY INC SI POP D* MOV AL,DL TEST AL,01H;判断显示刷新到最后一位 JZ OUT1;假设是则完毕 ROR AL,1 ;否则显示下一位 MOV DL,AL JMP AGAINOUT1: POP A*;时间显示完毕 RET . z.-DALLY:PUSH C*;延时程序MOV C*,000FH T1:MOV A*,002FHT2:DEC A* JNZ T2 LOOP T1 POP C* RET CODE ENDS END START五、心得体会在这次课程设计中,是对微型计算机原理及应用的复习。同时在设计中使我的编程水平提高了一大步。这次设计涉及到很多芯片的应用,最大特点是软,硬件的结合,对动手能里的要求很大。也使我更加的体会到,在一定程度和科技水平上,硬件和软件是可以实现对等转化的。电子时钟的开展史就很好的诠释了这个过程。. z.
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!