电子日历和世博会倒计时课程设计..doc

上传人:文库蛋蛋多 文档编号:4150016 上传时间:2023-04-07 格式:DOC 页数:44 大小:1.18MB
返回 下载 相关 举报
电子日历和世博会倒计时课程设计..doc_第1页
第1页 / 共44页
电子日历和世博会倒计时课程设计..doc_第2页
第2页 / 共44页
电子日历和世博会倒计时课程设计..doc_第3页
第3页 / 共44页
电子日历和世博会倒计时课程设计..doc_第4页
第4页 / 共44页
电子日历和世博会倒计时课程设计..doc_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《电子日历和世博会倒计时课程设计..doc》由会员分享,可在线阅读,更多相关《电子日历和世博会倒计时课程设计..doc(44页珍藏版)》请在三一办公上搜索。

1、微机原理课程设计微机原理课程设计任务书课题名称 电子日历与世园会倒时牌设计 学院(部) 专 业 班 级 学生姓名 学 号 12 月 27 日至 1 月 9 日共 两 周指导教师(签字) 2011 年 1月 10 日 目录前言2一、设计目的与任务31.1设计目的:31.2设计任务:4二、电子日历和世园会倒计时牌的总体设计思路42.1设计思想42.2设计原理4三、硬件设计53.1各个系统模块的设计53.1.1系统总体设计53.1.2 主控模块63.1.3 CPU模块63.1.4定时模块73.1.5中断处理模块83.1.6显示模块和小键盘模块83.2硬件设计所用芯片介绍93.2.1 8088微处理器

2、93.2.2 8253芯片的内部结构及引脚113.2.3 8255芯片的内部结构及引脚133.2.4 8259A芯片的内部结构及引脚14四、软件设计164.1电子日历与世园会倒时牌设计部分程序流程图164.1.1主程序流程图164.1.2 定时中断程序图174.1.3 键扫描子程序流程图184.2电子日历与世园会倒时牌设计总体程序18五、设计总结与体会19附录120附录221前言课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识解决实际工程设计和应用问题的能力的重要教学环节,它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实

3、践中遇到的各种问题能力的一种较好方法。 微机接口技术是一门应用性、综合性、实践性较强的课程,脱离实际的、有针对性的设计环节,学生就不能很好的理解和掌握所学的技术知识,更缺乏解决实际问题的能力。所以通过有针对性的课程设计,使学生学会系统地综合运用所学的理论知识,提高学生在微机应用方面的开发与设计本领,系统的掌握微机硬软件设计方法。现代的社会是信息的社会,很多与人们生活紧密相关的产品都是电子产品。要熟练地掌握的基本软硬件的基本知识,这样才能对试验中出现的问题进行分析解决。通过这次对电子日历和世园会倒计时牌系统的设计,我们要掌握设计一个实用装置电路的基本方法和基本步骤,掌握了实用装置工作的基本原理,

4、实际去解决设计中出现的问题,增强了寻找问题,解决问题的能力。做好一个课程设计不仅要具备扎实的书本知识并会善于应用,还要学会查阅资料,对以前学过的知识不清楚的地方还要进行复习,实在搞不明白的地方要向老师或同学请教,这样才可能做出一个比较不错的课程设计。一、设计目的与任务1.1设计目的: 掌握8255、8259、8253芯片使用方法和编程方法,通过本次课程设计,学以致用,进一步理解所学的相关芯片的原理、内部结构、使用方法等,学会相关芯片实际应用及编程,系统中采用8086微处理器完成了电子日历的小系统的独立设计。同时并了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程,

5、使我们以后搞设计时逻辑更加清晰。1.2设计任务:利用8086为主CPU设计一个电子日历及世园会的倒时牌,且具有日历参数的手动设置,显示倒计时天数(3位),并要求年月日、倒计时天数交替显示(三秒一次)。利用小键盘进行手动设置。具有轮回显示功能。二、电子日历和世园会倒计时牌的总体设计思路2.1设计思想本系统设计的电子日历以8086微处理器作为CPU,用8253做定时计数器产生时钟频率,8255做可编程并行接口显示时钟和键盘电路,8259做中断控制器产生中断。在此系统中,8253的功能是定时,接入8253的CLK信号为周期性时钟信号。8253采用计数器0,工作于方式2,使8253的OUT0端输出周期

6、性的负脉冲信号。即每隔1s,8253的OUT0端就会输出一个负脉冲的信号,此信号接8259的IR0,当中断到60次数后,CPU即处理,使液晶显示器上的时间发生变化。其中8259只需初始化ICW1,其功能是向8259表明IRx输入是电平触发方式还是上升沿触发方式,是单片8259还是多片8259。8259接收到信号后,产生中断信号送CPU处理。2.2设计原理利用定时器8253和8259以及键盘和数码显示电路,设计一个电子日历,由8253中断定时,小键盘控制电子日历的启停及初始值的预置。电子日历的显示格式年:月:日 ,设计一个定时显示装置,用8个数码管显示时间,用小键盘控制计时,设置和显示日期。系统

7、一运行就从20110101开始运行,并在数码管上显示年,月,日当前值,而且,可以用键盘设置当前日期。而且倒时天数,星期,日期以三秒为周期循环显示。基本工作原理:每60秒对寄存器的内容加一,并依次对日,月,年 星期寄存器的内容加一而到时器的天数减一;八个数码管动态显示年月日的当前值。设计所用芯片的主要功能:8255并行接口芯片:连接LED显示器与小键盘8253计数器:计60秒唯为一天的中断送往IR08259中断器:用于产生中断LED:用来显示年月日,倒计时天数,星期三、硬件设计3.1各个系统模块的设计3.1.1系统总体设计本系统设计的电子日历以8086微处理器作为CPU,用8253做定时计数器产

8、生时钟频率,8255做可编程并行接口显示时钟和键盘电路,8259做中断控制器产生中断。在此系统中,8253的功能是定时,接入8253的CLK信号为周期性时钟信号。8253采用计数器0,工作于方式2,使8253的OUT0端输出周期性的负脉冲信号。即每隔1s,8253的OUT0端就会输出一个负脉冲的信号,此信号接8259的IR0,当中断到60次数后,CPU即处理,使液晶显示器上的时间发生变化。程序由以下模块组成:系统共有5个功能模块,分别为,主控模块,显示模块,定时模块,中断模块,小键盘模块。系统总体框图如下:键盘读入的数显示缓冲的值秒脉冲显示模块主控模块中断模块定时模块小键盘模块八个LED小键盘

9、825582538259图1系统总体框图3.1.2 主控模块主控模块是系的核心模块,对8253、8255进行初始化,设置中断向量,扫描键盘根据按键值作相应的处理。主要由软件实现。它的主要功能是调用其它模块对系统工作进行协调,它的主要功能是读小键盘输入键值并执行要做的工作。3.1.3 CPU模块 8086最小工作模式,作为整个电子日历与倒时牌的核心控制部分。在8088最小模式中,硬件连接上有如下特点:MN/MX 端接+5V,决定了8086工作在最小模式。 图2 8086最小工作模式图3.1.4定时模块定时模块是为8259提供中断请求信号的。由一片8253实现,选用定时器0#,工作在方式3,由于日

10、历日子应该1天走动一次,但是由于仿真问题所以输出值定为60S,其输出信号可作为8259的中断请求信号。 图3 定时模块图3.1.5中断处理模块中断模块实现动态显示的,硬件为一片8259,由于中断请求信号为每60秒一次,中断程序该为时间按天增加,并显示,只要开中断,便可实现每60秒显示日子增加一天,从而达到动态显示的效果。 中断模块原理图 图4 中断处理模块3.1.6显示模块和小键盘模块显示模块是将显示缓冲区的数值送到LED显示的功能模块,显示缓冲区是由十个字节构成,分别保存年的高位和低位,月的高位和低位,日的高位和低位,倒时天数的高位和低位,星期的高位和低位。硬件上由八个LED构成,软件上由扫

11、描显示的方法实现。小键盘模块送入主控模块的子功能模块。由软件和硬件实现,硬件上由小键盘和8255互连,将小键值由8255送入主控模块。软件上使用行扫描法获得键值并送回主控模块。本课题只考虑去抖动。执行一个约10ms的延时程序后再扫描键盘,若F0=1表示真正有键按下,从而消除了抖动影响。其中8255接口电路如下: 图5 显示模块与小键盘模块3.2硬件设计所用芯片介绍3.2.1 8088微处理器 8088微处理器是Intel公司推出的一个准16位处理器,其内部结构基本上和8086相同,其引脚信号也和8086基本相同,只是个别的引脚的功能有所不同。 8088微处理器的工作方式: (1)最小工作方式。

12、当8088CPU的MN/MX引脚接+5V电源时,8088CPU工作于最小方式,用于构成小型的单处理机系统。(2)最大工作方式。当8088CPU的MN/MX引脚接地时,8088CPU工作于最大方式,用于构成多处理机和协处理机系统。8088引脚图以及功能一说明:图6 8088引脚图 AD7 AD0八条地址/数据复用线; A15A8单一的地址线; SS0状态信号线。该引脚在最大工作方式下保持高电平,在最小方式下 等效于最大方式下S0的作用,它与IO/M、DT/R组合以确定当前的总线周期; A19/S6Al6/S3地址/状态总线: MN/MX最小/最大方式控制;RD读控制; TEST等待测试控制; R

13、EADY等待状态控制; NMI不可屏蔽中断请求; INTR可屏蔽中断请求; CLK系统时钟; Vcc+5V电源; GND接地;最小方式信号: HOLD保持请求; HLDA保持响应; WR写控制; IO/MIO/存储器控制: DT/R数据发送/接收; DEN数据允许; ALE地址锁存允许; INTA中断响应;最大方式信号: RQ/GT1,0请求/允许总线访问控制; LOCK总线优先权锁定控制 S2S1S0总线周期状态; QS1、QS0指令队列状态;3.2.2 8253芯片的内部结构及引脚 图7 8253芯片图8253可编程定时/计数器是Intel公司生产的通用外围芯片之一有3个独立的十六位计数器

14、,技术频率范围为02MHZ,它所有的技术方式和操作方式都通过编程控制。8253的功能用途是:(1)延时中断(2)可编程频率发生器(3)事件计数器(4)二进倍频器(5)实时时钟(6)数字单稳(7)复杂的电机控制器8253有六种工作方式:(1)方式0:计数结束中断(2)方式1:可编程频率发生器(3)方式2:频率发生器(4)方式3:方波频率发生器(5)方式4:软件触发的选通信号(6)方式5:硬件触发的选通信号8253引脚图如图3.3示,各引脚功能如下。D7D0八条双向数据线;WR(低电平有效)写输入信号;RD(低电平有效)读输入信号;CS(低电平有效)片选输入信号;A0、A1片内寄存器地址输入信号;

15、CLK计数输入,用于输入定时基准脉冲或计数脉冲;OUT输出信号,以相应的电平指示计数的完成,或输出脉冲波形;GATE选通输入(门控输入),用于启动或禁止计数器的操作,以使计数器和计测对象同步。2、8253端口地址 8253端口地址表信号线寄存器编址IOY20#计数器40H1#计数器41H2#计数器42H控制寄存器43H3.2.3 8255芯片的内部结构及引脚 图8 8255芯片图8255专门用来外接各种输入输出设备的芯片,具有四十个引脚。各引脚功能如下D0D7 - 双向数据信号线,用来传递数据和控制字RD-读信号线,低电平有效。WR-写信号线,低电平有效。CS-片选信号,低电平有效。A0 A1

16、-口地址选择信号线RESET-复位输入信号。PA0PA7-A口的8条输入输出信号线PB0PB7-B口的8条输入输出信号线PC0PC7-C口的8条输入输出信号线 8255端口地址:PA口60H、 PB口61H、PC口62H、控制寄存器 63H3.2.4 8259A芯片的内部结构及引脚中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。它将中断源优先排队、辨别中断源以及提供中断矢量的电路集中于一片中。因此无需附加任何电路,只需对8259A编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。在MD微机系统中,8259芯片工作于单片方式。图9 8

17、259A引脚图8259引脚图如图3.3,各引脚功能如下。D7D0八条双向数据线;WR(低电平有效)写输入信号;RD(低电平有效)读输入信号;CS(低电平有效)片选输入信号;A0地址信号;INT中断请求信号;INTA(低电平有效)中断响应信号;CAS0CAS2级联信号,形成一条专用8259A总线,以便多片8259A的级联;SP/EN从编程/允许级联。在缓冲方式中,可用做输出信号以控制总线缓冲器的接收和发送。在非缓冲方式中,作为输入信号用于表示主片还是从片;IR0IR7外部中断请求输入线。要求输入的中断请求信号是由低电平到高电平的上升沿(并保持高电平到CPU响应时为止)或者是高电平。8259中断矢

18、量地址与中断信号之间的关系如表3.1所示: 8259A中断矢量表中断序号01234567功能调用08H09H0AH0BH0CH0DH0EH0FH矢量地址20H23H24H27H28H2BH2CH2FH30H33H34H37H38H3BH3CH3FH说明时钟键盘可用可用串行口可用可用可用四、软件设计4.1电子日历与世园会倒时牌设计部分程序流程图4.1.1主程序流程图 开始初始化8259填中断向量表 检测到确认键按下进入日期设置状态 功能键是否按下 显示 初始化8255初始化8253NY NY 4.1.2 定时中断程序图判断是否为八选择月份判断天数星期加一日期加一 到时减一 中断开启 开始 N月份

19、加一,天置一满月份最大天数星期置一YN发中断结束命令年加一,月置一判断月份是否13YNY4.1.3 键扫描子程序流程图4.2电子日历与世园会倒时牌设计总体程序总程序见附录2。五、设计总结与体会 这次的课程设计对我来说,是一次非常重要的锻炼,通过这次设计,我对所学的知识有了更深刻的了解和掌握,使我懂得了理论一与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独一思考的能力。有了这次的设计经验,相信在以后的学习设计实践过程中,我可以做到更好。 回顾此次课程设计的过程,可以用“累并收获着”来概括。

20、通过木次设计,不但使我的专业知识得到巩固和开拓,而且能使我将所学与实践联系起来,认识到自身知识的缺漏,明确自己的努力的力向。在课程设计过程中,我先是收集、调查有关资料,然后进入草案阶段,其间与指导教师进行几次方案的讨论、修改,再讨论、再修改,最后定案,得出了总体方案设计。设计方案确定后,又在老师指导下进行扩初详细设计,并分别设计了相应的模块;将这些模块组合起来,便形成了一个完整的电子表的设计。经过这次成功的设计,通过这周紧张而充实的课程设计,我学到了很多东西,让我重新认识自己,收益匪浅。在这里我要感谢我们的指导老师,非常感谢老师和同学的指导和帮助。希望以后还能参加这样的课程设计。我想我会做的更

21、好的。附录1电子日历与世园会倒时牌设计总电路图附录222 电子日历与世园会倒时牌设计总体程序P8255A EQU 60H ;定义各芯片的端口地址P8255B EQU 61HP8255C EQU 62HP8255CN EQU 63Hp82530 EQU 40Hp82531 EQU 41Hp82532 EQU 42Hp8253CN EQU 43Hp8259O EQU 21Hp8259E EQU 20HDATA SEGMENT ;定义数据段 DAYS DW 115YEAR DW 2011MONTH DW 01DAY DW 01WEEK DB 6LED DB 3FH,06H,5BH,4FH,66H,6

22、DH,7DH,07H,7FH,6FHSMG1_YEAR DB 2SMG2_YEAR DB 0SMG3_YEAR DB 1SMG4_YEAR DB 1SMG5_MONTH DB 0SMG6_MONTH DB 1SMG7_DAY DB 0SMG8_DAY DB 1SMG8_WEEK DB 6SMG1_DAYS DB 1SMG2_DAYS DB 1SMG3_DAYS DB 5KEY DB 255 ;反转法键盘编码表KEY1 EQU 01110111BKEY2 EQU 01111011BKEY3 EQU 01111101BKEY4 EQU 01111110BKEY5 EQU 10110111BKEY6

23、 EQU 10111011BKEY7 EQU 10111101BKEY8 EQU 10111110BKEY9 EQU 11010111BKEY10 EQU 11011011BKEY11 EQU 11011101BKEY12 EQU 11011110BSET_MODE DB 0LEAP_FLAG DB 0DATA ENDSSTACK SEGMENT STACK ;定义堆栈段DB 100 DUP(?)STACK ENDSCODE SEGMENT ;定义代码段ASSUME CS:CODE,DS:DATA1,ES:DATA2,SS:STACKCODE ENDSSTART:;.段寄存器初始化(开始).

24、MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX XOR AX,AX;.8253计数器初始化. INIT8253: MOV AL, 32H ;选择计数器0,写双字节计数值,方式1,二进制计数 OUT p8253CN,AL ;控制字写入控制寄存器 MOV AX,3600 OUT p82530,AX ;写低八位计数值 OUT p82530,AX ;写高八位计数值 ;.8255初始化. INIT8255:MOV DX,P8255CN MOV AL,10000001B ;A组方式0:A口输出,c口高四位输出 ;B组方式0:B口输出,C口低四位输入 OUT P82

25、55CN,AL ;方式控制字送往控制寄存器 MOV AL,0 OUT P8255C,AL ;各行线(pc7pc4)为0 ;主程序的设计 ;中断程序的设计INIT8259: ;.8259初始化. MOV AL, 13H ;ICW1,设置ICW4,单片结构,边沿触发 OUT p8259E,AL MOV AL,21H ;ICW2,设置中断类型号,起始的中断号为21H OUT P82590,AL MOV AL,0DH ;ICW4,数据总线缓冲模式,非自动结束中断方式,主片 OUT P82590,AL ;=主程序(开始)=MAIN:MOV CX,100DISPLAY1: CALL DISPLAY_YMD

26、 CALL KEYSCAN LEA SI,KEY CMP BYTE PTRSI,12 JZ SET_PARAMETERLOOP DISPLAY1 MOV CX,400DISPLAY2: CALL DISPLAY_WEEK CALL KEYSCAN LEA SI,KEY CMP BYTE PTRSI,12 JZ SET_PARAMETERLOOP DISPLAY2 MOV CX,200DISPLAY3: CALL DISPLAY_DAYS CALL KEYSCAN LEA SI,KEY CMP BYTE PTRSI,12 JZ SET_PARAMETERLOOP DISPLAY3JMP MAIN

27、SET_PARAMETER: CALL SETJMP MAIN;=主程序(结束)= INT PROC ;日历的设计 CLI PUSH AX PUSH BX PUSH DX STI WE: MOV AL,WEEK ADD AL,1 DAA MOV WEEK,AL CMP WEEK,8 JNZ DISPLAY2 MOV WEEK,1 JMP EXIT MOV AL,MONTH ;月份选择 CMP AL,1 JZ MBIG CMP AL,3 JZ MBIG CMP AL,5 JZ MBIG CMP AL,7 JZ MBIG CMP AL,8 JZ MBIG CMP AL,10 JZ MBIG CMP

28、 AL,2 JZ M2A CMP AL,4 JZ MSMA CMP AL,6 JZ MSMA CMP AL,9 JZ MSMA CMP AL,11 JZ MSMA CMP AL,12 JZ M12 MBIG: MOV AL,DAY ADD AL,1 DAA MOV DAY,AL CMP DAY,32 JNZ DISPLAY ;转到显示 MOV DAY,1 MOV AL,MONTH ADD AL,1 DAA MOV MONTH,AL JMP EXIT M2A: MOV AL,DAY ADD AL,1 DAA MOV DAY,AL MOV AX,YEAR CMP AX,2012 JZ M2B CM

29、P AX,2016 JZ M2B CMP AX,2020 JZ M2B CMP DAY,29 JNZ DISPLAY MOV DAY,1 MOV AL,MONTH ADD AL,1 DAA MOV MONGTH,AL JMP EXIT M2B: CMP DAY,30 JNZ DISPLAY MOV DAY,1 MOV AL,MONTH ADD AL,1 MOV MONTH,AL JMP EXIT MSMA: MOV AL,DAY ADD AL,1 DAA MOV DAY,AL CMP DAY,31 JNZ DISPLAY ;转到显示 MOV DAY,1 MOV AL,MONTH ADD AL,

30、1 DAA MOV MONTH,AL JMP EXIT M12: MOV AL,DAY ADD AL,1 DAA MOV DAY,AL CMP DAY,32 JNZ DISPLAY ;转到显示 MOV DAY,1 MOV MONTH,1 MOV AX,YEAR ADD AX,1 DAA MOV YEAR,AX JMP EXIT DSQ:MOV AL,DAYS ;到时器 DEC AL MOV DAYS,AL CMP DAYS,0 JNZ DISPLAY3 JMP DSQ EXIT: CLI MOV AL,20H MOV DX,P8259A OUT DX,AL POP DX POP BX POP

31、AX STI IRET START ENDS ;=数码管显示子过程(开始)=DISPLAY PROC PUSH AX PUSH CX PUSH DX PUSH SI MOV AL,01111111B MOV CX,8 LEA SI,SMG1_YEARDISP_YR_MTH_DT: MOV DX,P8255B OUT DX,AL MOV DX,P8255A PUSH AX MOV AH,SI INC SI MOV AL,NUM0 CMP AH,0 JZ FIND_NUM MOV AL,NUM1 CMP AH,1 JZ FIND_NUM MOV AL,NUM2 CMP AH,2 JZ FIND_N

32、UM MOV AL,NUM3 CMP AH,3 JZ FIND_NUM MOV AL,NUM4 CMP AH,4 JZ FIND_NUM MOV AL,NUM5 CMP AH,5 JZ FIND_NUM MOV AL,NUM6 CMP AH,6 JZ FIND_NUM MOV AL,NUM7 CMP AH,7 JZ FIND_NUM MOV AL,NUM8 CMP AH,8 JZ FIND_NUM MOV AL,NUM9FIND_NUM: OUT DX,AL POP AX ROR AL,1 CALL DELAY10MSLOOP DISP_YR_MTH_DT POP SI POP DX POP

33、CX POP AXDISPLAY ENDP;=数码管显示子过程(结束)= ;=粗略延时10ms秒子过程(开始)=DELAY10MS PROC PUSH BX PUSH CX MOV BX,OSDLPGOON10MS_BEGIN: MOV CX,ISDLPW10MS:GOON10MS_END:LOOP W10MS DEC BX JNZ GOON10MS_BEGIN POP CX POP BX RETDELAY10MS ENDP;=粗略延时10ms秒子过程(结束)=;=参数设置子过程(开始)=SET PROC PUSH SI PUSH DI PUSH DX PUSH BX LEA SI,KEY M

34、OV BYTE PTRSI,255;恢复KEY值为255 LEA BX,SMG1_YEAR;SMG1_YEAR的偏移地址作为基址 XOR DI,DI;将DI清0,作为变址SET_BEGIN: CMP DI,12;DI=12则全部参数设置完毕,退出参数设置 JZ EXIT_SET CALL KEYSCAN CMP BYTE PTRSI,1;按下【1】 JZ PRESS1 CMP BYTE PTRSI,2;按下【2】 JZ PRESS2 CMP BYTE PTRSI,3;按下【3】 JZ PRESS3 CMP BYTE PTRSI,5;按下【4】 JZ PRESS5 CMP BYTE PTRSI,6;按下【5】 JZ PRESS6 CMP BYTE PTRSI,7;按下【6】 JZ PRESS7 CMP BYTE PTRSI,9;按下【7】 JZ PRESS9 CMP BYTE PTRSI,10;按下【8】 JZ PRESS10 CMP BYTE PTRSI,11;按下【9】 JZ PRESS11 CMP BYTE PTRSI,13;按下【确定】退出 JZ EXIT_SET CMP BYTE PTRSI,14;按下【0】 JZ PRESS14 CMP BYTE PTRSI,15;按下【设置】退出 JZ PRESS15

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号