微型计算机大作业设计_第1页
微型计算机大作业设计_第2页
微型计算机大作业设计_第3页
微型计算机大作业设计_第4页
微型计算机大作业设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课题名称 电子钟表和显示星期的设计 学院(部) 电子与控制工程学院 专 业 建筑设施智能技术 班 级 学生姓名 学 号 12 月 27 日至 01 月 09 日共 两 周指导教师(签字) 11 年 01 月 09 日 目录前言.1一、 设计题目与要求.21、 设计题目22、设计目的23、设计任务.24、 设计要求25、实验设备2二、设计思路.31、 系统框图32、 工作原理3三、系统框图.41、 中断处理程序流程框图.42、 主程序流程框图.63、键扫子程序流程框图.7四、调试结果.7五、总结与体会.8参考文献.8附录1 电路图.9附录2 程序.12 前言 课程设计是培养和锻炼学生在学习完本门

2、课后综合运用所学理论知识解决实际工程设计和应用问题的能力的重要教学环节。 微机与借口技术应用性、综合性、实践性较强的课程,没有实际的有针对性的设计环节,学生就不能很好的理解和掌握所学的技术知识,更缺乏解决实际问题的能力。所以通过有针对性的课程设计,使学生系统的综合应用所学的理论知识,提高学生在微机应用方面的开发与设计本领,系统的掌握微机硬软件设计方法。 在日常生活中时钟随处可见,它是一种对时间进行累计的工具,即计时。计时的本质就是计数。使用计数器对时钟脉冲进行计数是时钟实现的基本原理。再用LED数码管显示出来,并设计出几个按键对时钟进行调整,这样,一个完整的时钟就设计完成。一、 设计题目与要求

3、1、 设计题目电子钟表和显示星期的设计2、设计目的(1)、培养学生综合运用所学知识的能力,提高学生解决实际问题的能力(2)、培养学生查阅资料,使用工程设计标准、手册及编写设计技术的能力(3)、培养学生初步掌握设计开发产品的能力,了解微机控制系统的一般设计方法。(4)、提高学生的计算机绘图能力。3、设计任务: (1)时间显示:时、分、秒(2)钟表时分秒参数的手动调整设置(3)选择传感器,并设计相应的信号处理电路;(4)实现星期显示功能;(5)时分秒、星期交替显示(2秒交替一次)。4、设计要求(1)、选择合适的设计方案,并进行理论阐述。(2)、编制相应的控制程序,要求有程序流程图,程序加注释。(3

4、)、绘制实现电路原理图,所有图纸均用计算机绘制。5、实验设备8253定时器:用于产生秒脉冲,其输出信号可作为中断请示信号送IRQ0。8259中断控制器:用于产生中断。8255并口:用做接口芯片,和按键和LED相连。LED:六个LED用于显示时:分:秒值和星期。按键:用于控制设置。二、 设计思路1、 系统框图 按键读入外接调整按键模块 图1 系统框图2、 工作原理系统分五大模块,为主控模块(8086),显示模块(LED),按键模块,中断模块(8259)和定时模块(8253)分别实现不同的功能。主控模块(8086)是系统的核心模块,主要由软件实现。它的主要功能是调用其它模块对系统工作进行协调。当按

5、下A键时,将只显示时数,按C键可调时数。再按B键将显示分数, 按C键可调时数。再按B键将显示秒数, 按C键可调时数。调数结束后再按A键可回到正常计时显示。按键模块是产生按键信息并送入主控模块的子功能模块。由软件和硬件实现,硬件上由按键和8255互连,将按键信息由8255送入主控模块。软件上使用行扫描法获得按键信息并送回主控模块。显示模块是将显示缓冲区的数值送到LED显示的功能模块,显示缓冲区是由六个字节构成,分别保存小时的高位和低位,分钟的高位和低位,秒钟的高位和低位。硬件上由六个LED构成,软件上由扫描显示的方法实现。定时模块为8259提供中断请求信号,由一片8253实现,选用定时器0,工作

6、在方式3,使8253的OUT0端输出周期性的负脉冲信号,此信号接8259的IR6端,后CPU就会处理,使液晶显示器的时间发生变化。中断模块实现动态显示的,硬件为一片8259,由于中断请求信号为每秒一次,中断程序该为时间按秒增加,并显示,只要开中断,便可实现每秒显示时间增加一秒,从而达到动态显示的效果。三、系统框图 1、中断处理程序流程框图 开始时个位清零,时十位加一时个位小于时十位小于2分十位清零,时个位加一分十位小于6分个位清零,分十位加一分个位小于9秒十位清零,分个位加一秒十位小于6秒个位清零,秒十位加一 开中断秒个位加1秒个位小于9 时个位小于9时个位清零,时十位清零,星期位加1 星期位

7、小7于77 发中断结束命令,中断返回星期位加1 图2 中断处理程序流程框图2、 主程序流程框图A键是否按下显示:自动计时系统初始化开始 N Y进入时间设置状态A键是否按下Y N 图3 主程序流程框图3、键扫子程序流程框图调显示子程序延时去抖动A键闭合开始 NY调用C键处理子程序是C键吗调用键扫描子程序Y调用B键处理子程序是B键吗NA键放否Y Y结束 图4 键扫子程序流程框图四、调试结果五、总结与体会微机与借口技术应用性、综合性、实践性较强的课程,通过本次课程设计过程,我基本熟悉和掌握了微机系统的软件、硬件的设计方法、设计步骤,是一次微机开发应用方面的初步训练,通过本次课程设计我较好掌握了微机系

8、统与接口扩展电路的设计方法,学习了用8086汇编语言编写程序。通过这次课程设计,我对所学的理论知识有了更加深刻的了解和掌握,懂得了理论联系实践的重要性,增进了信息收集能力。让我懂得了要更加注重知识了理解与应用,这样才能不断的提高自己。最后感谢胡欣老师的指导与帮助! 参考文献1、 冯博琴,吴宁主编.微型计算机原理与借口技术(第二版) .清华大学出版社2、 孙德文.微型计算机技术.高等教育出版社3、 侯伯亨,李博成.微机原理与借口技术.西安电子科技大学出版社附录1 电路图附录2 程序=数据段=DATA SEGMENTTIME_STO DB 00H,01H,02H,03H,04H,05H,06H ;

9、时分秒及星期显示缓冲区LED_NUM DB 3FH,06H,5BH,4FH,66H,6DH DB 7DH,07H,7FH,6FHPCL_IN DB 11H ;存放8255 PC口读入值FLAG DB 00H ;2秒计时标志TEMP0 DB 00H ;启动/暂停标志TEMP1 DB 00H ;用来标志正在修改的是哪一位DATA ENDS =堆栈段=STACK SEGMENT DW 72 DUP(?)STACK ENDS =代码段=CODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA ;初始化逻辑段 MOV DS,AX MOV AX,STACK

10、 MOV SS,AX PUSH DS;当前用户DS段入栈保存 MOV AX,0000H MOV DS,AX;修改DS=0000H,指向中断矢量表所在段 MOV AX,OFFSET IRQ6 ;取出中断处理子程序的入口偏移地址(以0为基准) MOV SI,0038H;IR6中断矢量号为0EH,处于矢量表的38H3BH MOV SI,AX;将偏移地址装入矢量表 MOV AX,0000H MOV SI,003AH MOV SI,AX;将段地址(0000H)装入矢量表 POP DS;恢复用户数据段DS=初始化8253= MOV AL,34H ;计数器0,先写低8位,方式二,二进制计数 MOV DX,4

11、3H OUT DX,AL MOV AX,59499 ;计数初值59499,输出20HZ,定时0.05秒 MOV DX,40H OUT DX,AL MOV AL,AH OUT DX,AL MOV AL,01010100B ;计数器0,只读写低8位,方式二,二进制计数 MOV DX,43H OUT DX,AL MOV AX,19 ;计数初值19,与计数器0级联后定时1秒 MOV DX,41H OUT DX,AL STI ;开中断=初始化8255= MOV AL,10000001B ;A组方式0:A口输出,C口高位输出 ;B组方式0:B口输出,C口低位输入 OUT 36H,AL STI ;开中断 C

12、ALL DISPLAY ;显示初始值 CALL KEY_BUTTON ;调用按键检测程序 CLI ;关中断 PUSH DX MOV DX,IP_BAK MOV AX,CS_BAK MOV DS,AX MOV AX,250EH INT 21H POP DS STI MOV AX,4C00H ;返回DOS INT 21H=初始化8259= MOV AL,00010011B MOV DX,21H OUT DX,AL MOV AL,08H MOV DX,21H OUT DX,AL MOV AL,00000011B MOV DX,21H OUT DX,AL MOV AL,0BFH MOV DX,21H

13、OUT DX,AL =显示程序=DISPLAY PROC NEARDISUP1: MOV AL,0 ;FLAG清零 MOV DX,A_8255 OUT DX,AL MOV AL,DI MOV BX,OFFSET LED XLAT MOV DX,B_8255 OUT DX,AL MOV AL,CL MOV DX,A_8255 OUT DX,AL MOV BX,35HMAIN_DIST:MOV BL,11011111B LEA SI,TIME_STO MOV CX,06H ;六位数码管循环显示DELAY1: DEC BX JNZ DELAY1 CMP CL,20H JZ DISUP2 INC DI

14、 SHL CL,1 JMP DISUP1KEY_PED: MOV DX,C_8255 ;检测是否有按键按下 IN AX,DX AND AX,000FH CMP AL,01H JZ KEY_BUTTONDISUP2: JMP DISUP RET NEXT_WEEK:MOV AL,FLAG ;判断2S计时是否到 CMP AL,02H JZ TIME_DIS ;2s到则跳转到显示时间值 JMP MAIN_DISW ;否则循环输出星期值DISPLAY ENDP =中断服务程序=INT_PROC PROC FAR PUSH DS MOV AX,DATA MOV BX,OFFSET TIME_STO ;将

15、显示缓冲区首地址读入BX CMP BYTE PTR BX+5,09H ;判断秒低位是不是9 JNZ ADD INC BYTE PTR BX+4 ;向秒高位进位 MOV BYTE PTR BX+5,0 ;秒个位清零 CMP BYTE PTR BX+4,06H ;判断秒高位是不是6 JNZ ADD1 INC BYTE PTR BX+3 ;向分低位进位 MOV BYTE PTR BX+4,0 ;秒高位清零 CMP BYTE PTR BX+3,0AH ;判断分低位是不是10 JNZ ADD1 INC BYTE PTR BX+2 ;向分高位进位 MOV BYTE PTR BX+3,0 ;分低位清零 CM

16、P BYTE PTR BX+2,06H ;判断分高位是不是6 JNZ ADD1 INC BYTE PTR BX+1 ;向时低位进位 MOV BYTE PTR BX+2,0 ;分高位清零 CMP BYTE PTR BX,02H ;判断时高位是不是2 JNZ ADD2 CMP BYTE PTR BX+1,04H ;判断时低位是不是4 JNZ ADD1 MOV BYTE PTR BX+1,0 ;分低位清零 MOV BYTE PTR BX,0 ;分高低清零 INC BYTE PTR BX+6 ;星期位加一 CMP BYTE PTR BX+6,08H JNZ ADD1 MOV BYTE PTR BX+6

17、,01H ;星期位置一 JMP ADD1ADD2: CMP BYTE PTR BX+1,0AH ;判断时低位是不是10 JNZ ADD1 INC BYTE PTR BX ;向时高位进位 MOV BYTE PTR BX+1,0 ;时低位清零 JMP ADD1ADD: ADD BYTE PTR BX+5,1 ;秒低位加一ADD1: CALL DISPLAY ;显示跳变后的数 POP DS IRETINT_PROC ENDP =按键检测设置程序=KEY_SET PROC NEAR CLI ;关中断 CALL DELAY_10MS ;延时按键消抖 MOV DX,PC_8255 ;再次读入按键位置 IN

18、 AL,DX AND AL,000FH ;取低四位 MOV PCL_IN,AL CMP PCL_IN,00001110B ;判断按下的是不是暂停/启动键 JZ P/S_UP0 ;不是则跳转 JMP EXIT_KEYSP/S_UP0: MOV DX,PC_8255 ;否则等待按键松开 IN AL,DX MOV PCL_IN,AL AND PCL_IN,0FH CMP PCL_IN,00001111B JNZ P/S_UP0 ;没有按键松开则等待重新检测 CALL DELAY_10MS ;延时去抖动 MOV DX,PC_8255 ;再次读入PC口数据 IN AL,DX MOV PCL_IN,AL

19、AND PCL_IN,0FH CMP PCL_IN,00001111B JZ KEY_DIS JMP P/S_UP0 KEY_DIS: PUSH CX PUSH BX PUSH SI MOV BL,01111111B CMP TEMP1,6 ;使弟五个数码管显示星期值 JNZ NEXT DEC TEMP1NEXT: MOV CL,TEMP1 ROR BL,CL MOV AL,BL ;数码管位选通 MOV DX,PA_8255 OUT DX,AL LEA SI,TIME_STO ;数据查表转换输出到段选PB口显示 XOR CH,CH ADD SI,CX MOV BX,OFFSET LED_NUM

20、 MOV AL,SI XLAT MOV DX,PB_8255 OUT DX,AL CALL DELAY_10MS P/S: CMP PCL_IN,00001110B ;按下的是暂停/启动键吗 JZ P/S_MODE ;是则跳转 CMP PCL_IN,00001101B ;否则继续判断按下的是选择键吗 JZ CHOS_MODE ;是则跳转 CMP PCL_IN,00001011B ;否则继续判断按下的是计数加1键吗 JZ ADD_MODE ;是则跳转P/S_MODE: CMP TEMP0,00H ;TEMP0为0则跳转 JZ TEMP0_0 MOV AL,0 ;不为0,即为一则置零 MOV TE

21、MP0,AL JMP EXIT_KEYSTEMP0_0: MOV AL,1 ;为0则置1 MOV TEMP0,AL JMP EXIT_KEYSCHOS_MODE: CMP TEMP0,00H ;检测是否处于设置状态 JNZ GOON0 ;是则继续 JMP EXIT_KEYS ;否则跳转 GOON0: INC TEMP1 CMP TEMP1,7 JNZ EXIT_CH MOV AL,0 MOV TEMP1,ALEXIT_CH: JMP KEY_DIS ;转到显示ADD_MODE: CMP TEMP0,00H ;检测是否处于设置状态 JNZ GOON1 ;是则继续 JMP EXIT_KEYS GO

22、ON1: MOV BX,OFFSET TIME_STO NEXT0: CMP TEMP1,0 ;修改的是时高位不 JNZ NEXT1 INC BYTE PTR BX+TEMP1 CMP BYTE PTR BX+TEMP1,3 JNZ EXIT_ADD MOV BYTE PTR BX+TEMP1,0NEXT1: CMP TEMP1,1 ;修改的是时低位不 JNZ NEXT2 INC BYTE PTR BX+TEMP1 CMP BYTE PTR BX+TEMP1,10 JNZ EXIT_ADD MOV BYTE PTR BX+TEMP1,0NEXT2: CMP TEMP1,2 ;修改的是分高位不 JNZ NEXT3 INC BYTE PTR B

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论