ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:372.48KB ,
资源ID:22863633      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22863633.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(哈工大 计算机组成课程设设计文档格式.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

哈工大 计算机组成课程设设计文档格式.docx

1、则初值X满足(216-X)1/12MHz12s =50000sX=1553600111100101100003CB0H(2) 采用中断方式进行溢出次数累计,计满20次为秒计时(1秒);(3) 从秒到分和从分到时的计时是通过累加和数值比较实现。2.1.1 LED显示6个LED数码显示可以采用P0、P2口实现。此次设计是基于MCS-51对LED的接口,选用八段共阳LED。八段LED显示管由八只发光二极管组成,编号是a,b,c,d,e,f,g和SP,分别与同名管脚相连。八段LED数码显示管原理很简单,是通过同名管脚上所加电平的高低来控制发光二极管是否点亮从而现实不同的字形的。如图2.1为共阳八段LE

2、D数码显示管原理图。图2.2中,所有发光二极管阳极共连后接到G脚。正常显示时G脚接+5V,各发光二极管是否点亮取决于aSP各引脚上是否是低电平0伏。 2.1 LED显示结构 2.2 LED显示原理 2.1.2硬件电路2.1.3 电路原理设计2.3 电路原理图2.2 软件设计思想及流程图2.2.1软件设计思想程序的设计主要有T0中断服务程序,动态显示程序,数字分离程序,键盘扫描程序,键处理程序,设置时间,设置年月日初值,判闰年程序,清除显示缓冲区程序这几个功能模块。运用汇编语言,设计一个简单的电子日历,在6位LED七段显示器动态的显示出来 年、月、日、和时、分、秒,实现计时,秒到60,分加1分到

3、60,时加1 在通过键盘按键的切换小时到24时天加1,由于公历是比较有规律的,1、3、5、7、8、10、12月为大月,每月31天;4、6、9、11月为小月,每月只有30天;而2月份,则要根据当前的年份来决定,平年,2月份有28天,闰年,2月份有29天。所以处理2月份天数前要先判断是平年还是闰年。因为每个月份的天数不同,则需要设置一个月值表,通过查表找到相应月的天数,先判断到哪个月份,再从月份表中查出此月份的天数值。实现月加1,月到12时候年再加1.,还需请注意:平年与闰年的二月份的天数不同,平年二月28天,闰年的二月29天。2.2.2 程序设计模块1.本程序采用模块化设计的方法,主要由主函数,

4、显示模块,判断是否闰年模块,提取系统日期模块组成以下是对各个模块的说明:(1) 主函数。主函数体现着本程序设计的基本思路。从程序流程图上可以看到主函数执行的过程,这里不再赘述。需要注意的是主程序中有一段循环结构,其作用是为了等待停止中断服务的申请,即键盘按键,一旦检测到有键盘按键,则跳出循环,根据按键的内容来判断下一步应要做什么。(2) 显示模块。程序中INITJM子程序,作为显示界面的初始化程序,主要实现显示输入字符提示语和显示当前日期的提示语,根据光标定位的不同分别将其显示在不同的位置2.主要模块流程图 主程序流程图 中断子程序2-2-1 主程序流程图3.数字分离程序R0为计时单元地址,R

5、1为显示缓冲区地址。因为时分秒,都需分离,则设置R2的循环次数为3。先将41H单元内的时传送给累加器A,再与0F与,保留低四位,这样就使得时的低位被分离出来了。分离后送与显示缓冲区R1的50H单元。再将41H单元内的时传送给累加器A ,使高低位交换。交换之后,再与0F进行与运算。使时的高位也分离出来 ,并送给显示缓冲区的51H单元内。分和秒的分离方法与时一样,最终的分离结果为:时分秒在50H55H内显示。同理,年月日,其分离方法也是同时分秒的分离原理一样。其分离程序的流程图如下所示: 2-2 数字分离流程图4.设置年月日初值程序先清除显示区的内容,因为年是四位,而月日是一起显示也是4位,所以将

6、R0指向显示区53H单元并设置循环次数为4,再调用键盘扫描程序,判断是否有键按下设置年,然后将R0指向30H单元,键值区。等到输入四个数,即年份。这是年份在数码管上的显示,再将其低、高两位分别存放在46H,47H存储区内。其设置月日的的方法与设置年的方法也是一样的,但将日月分别存放在44H、45H存储区里。2-3 设置年月日初值程序流程图5.动态显示程序动态显示程序实现的功能是将年月日,时分秒在LED管中显示出来。使用第一组工作寄存器组,再调用数字分离程序,数字分离程序能将键如的数值在LED数码管正确显示出来。然后设置循环次数为6再将其存入R2中,再将R3,R0分别指向地址为01H和50H。将

7、显示管字型表首址放如DPTR中再将50H单元的内容送到A中,接着R0加1,查字型码表。循环6次查字型码表即可在LED上显示出时分秒,年月日。 2-4动态显示程序流程图6.判断闰年因为年是四位,而月日是一起显示也是4位。让A指向46H单元,判断里面的内容是不是世纪年,若是世纪年,则要判断能不能被400整除。能就是闰年,不能就不是;若不是世纪年,要判断能不能被4整除,不能被100整除。满足这两个条件就是闰年,不满足就不是。在判断过程中,使用A中的高低位互换,再让A中的内容与03H相与,若结果为0,则是闰年,若不为0,则不是闰年。 2-5判断闰年流程图2.2.3程序INTCSR_BYTE0 EQU

8、9438H INTCSR_BYTE1 EQU 9439HINTCSR_BYTE2 EQU 943AHINTCSR_BYTE3 EQU 943BHIMB4_BYTE3 EQU 941FHMY8254_COUNT0 EQU 9C40HMY8254_COUNT1 EQU 9C41HMY8254_COUNT2 EQU 9C42HMY8254_MODE EQU 9C43H MY8255_A EQU 9C60H MY8255_B EQU 9C61HMY8255_C EQU 9C62HMY8255_MODE EQU 9C63H IRQ EQU 01C8H DATA SEGMENT CSBAK DW ?IPB

9、AK DW ?MKBAK DB ?ADJUST DB 00H ;调整位标志FLASH DB 00H ;闪烁标志位PAUSE DB 0B ;暂停标志位KEYMARK DB 0B ;按键标志位 INKEY DB 00H ;按键SECONDA DB 00H ;秒个位 SECONDB DB 00H ;秒十位MINUTEA DB 00H ;分个位MINUTEB DB 00H ;分十位HOUR DB 00H ;时个位时分十位LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;数码管0-9的编码 DATA ENDSCODE SEGMENT ASSUME CS:CO

10、DE,DS:DATASTART: CLI MOV AX,DATA MOV DS,AX MOV DX,INTCSR_BYTE0 MOV AL,00H OUT DX,AL MOV DX,INTCSR_BYTE1 MOV AL,1FH MOV DX,INTCSR_BYTE2 MOV AL,3FH MOV DX,INTCSR_BYTE3 MOV AX,0000H MOV ES,AX MOV DI,01ccH ;保存系统中断矢量 MOV AX,ES:DI MOV IPBAK,AX MOV AX,OFFSET MYINT CLD STOSW DI MOV CSBAK,AX MOV AX,SEG MYINT

11、 ;设置中断矢量 IN AL,0A1H MOV MKBAK,AL AND AL,0F7H OUT 0A1H,AL STI ;开中断 MOV DX,MY8254_MODE ;8254初始化 MOV AL,15H ; 00010101:计数器0,只读低八位,方式2分频器,十进制 OUT DX,AL MOV DX,MY8254_COUNT0 MOV AL,0 MOV DX,MY8255_MODE ;8255初始化 MOV AL,81H ;10000001:A口:方式0,输出,B口:方式 0 ,;输出,C口:低四位输入,高四位输出 A1: NOP ;等待 MOV CX,32H A2: MOV DX,

12、MY8255_B MOV AX,DATA MOV DS,AX MOV BX,OFFSET LED MOV AL,SECONDA XLAT LED CMP ADJUST,01H ;是否调整秒的个位 JNE DIS_SECONDA CMP FLASH,0FFH ;是否闪烁 AND AL,00H ;熄灭数码管(若FLASH=1) DIS_SECONDA: ;显示秒的个位 OUT DX, AL MOV DX,MY8255_A MOV AL,0111B CALL KEYCTR ;调用按键处理程序 CALL DELAY ;调用延迟程序 MOV DX,MY8255_B MOV BX,OFFSET LED M

13、OV AL,SECONDB CMP ADJUST,02H ;是否调整秒的十位 JNE DIS_SECONDB CMP FLASH,0FFH AND AL,00HDIS_SECONDB:显示秒的十位 MOV AL,1011B CALL KEYCTR CALL DELAY MOV AL,MINUTEA XLAT LED CMP ADJUST,03H ;是否调整分的个位 JNE DIS_MINUTEADIS_MINUTEA:显示分的个位 ADD AL,80H ;显示XX.XX中的点“.” MOV AL,1101B MOV BX , OFFSET LED MOV AL, MINUTEB CMP ADJ

14、UST,04H ;是否调整分的十位 JNE DIS_MINUTEBDIS_MINUTEB:显示分的十位 MOV AL , 1110B CALL DELAY LOOP SK1 JMP SK2SK1: JMP A2 SK2: JMP A1MYINT: PUSH DS PUSH AX PUSH DX MOV DX,IMB4_BYTE3 IN AL,DX清8259中断标志 MOV AL,63H ;根据中断号修改 OUT 0A0H,AL MOV AL,62H OUT 20H,AL NOT FLASH ;中断处理程序 MOV KEYMARK,0B CMP PAUSE,0B JNE L1 INC SECON

15、DA CMP SECONDA,0AH JC L1 MOV SECONDA,00H INC SECONDB CMP SECONDB,06H MOV SECONDB,00H INC MINUTEA CMP MINUTEA,0AH INC MINUTEB MOV MINUTEA,00H CMP MINUTEB,06H MOV MINUTEB,00HL1: POP DS POP AX POP DX IRETKEYCTR PROC NEAR MOV INKEY,AL MOV DX,MY8255_C IN AL,DX AND AL,03H ;高六位清零 CMP AL,10B ;是否按下Y1行 JNE IN

16、Y2 ADD INKEY,00H JMP JUDGKEY INY2: CMP AL,01B ;是否按下Y2行 JNE SKIP ADD INKEY,10000B JUDGKEY: CMP INKEY,01110B ;是否按下C键 JNE KEY2 AND SECONDA,00H ;时间位清零 AND SECONDB,00H AND MINUTEA,00H AND MINUTEB,00HSKIP: JMP BACK KEY2: CMP INKEY,01101B ;是否按下G键 JNE KEY3 AND PAUSE,0B ;启动计时 KEY3: CMP INKEY,01011B ;是否按下P键 J

17、NE KEY4 MOV PAUSE,1B ;暂停计时 JMP BACKKEY4: CMP INKEY,00111B ;是否按下M键 JNE KEY5 MOV AL,0FFH ;熄灭数码管,程序退出 MOV AX,4C00H INT 21H KEY5: CMP INKEY,11110B ;是否按下F键 JNE KEY6 CMP KEYMARK,0B JNE KEY6 MOV KEYMARK,1B MOV PAUSE,1B 是否已调整完分的十位 JE TL INC ADJUSTTL: AND ADJUST,00H KEY6: CMP INKEY,11101B ;是否按下6键 JNE BACK CM

18、P KEYMARK,0B是否调整秒的个位 JNE AD1 INC SECONDA ;秒的个位加1 CALL OUTCLEAR ;判断溢出AD1: JNE AD2 CALL OUTCLEARAD2: JNE AD3AD3: CALL OUTCLEAR BACK: RETKEYCTR ENDPOUTCLEAR PROC NEAR ;溢出清零程序 JC Q1 AND SECONDA,00HQ1: JC Q2Q2: JC Q3Q3: JC Q4Q4:OUTCLEAR ENDP DELAY: PUSH CX ;延迟程序 MOV CX,1111HDXMS: LOOP DXMS POP CXCODE END

19、SEND START3 测试 利用proteus仿真软件进行仿真测试,测试结果如下:总结 作为本学期计算机组成技术最后的课程设计,其综合性使我将本学期所学的内容融会贯通,将所学习的知识综合运用,将各芯片的使用方法和具体使用时的细节。将课堂上的知识应用到实际的生活中并且遇到了之前从未想到的问题并自己和同学讨论设法解决。在课程设计中,我们对实验原理有了更加深刻的认识,熟悉了protues仿真系统的使用,对8255、8253、8259芯片在实际中的应用有了更加深刻的理解。在调试程序过程中,也使自己的编程与调试程序的能力得到了锻炼,同时理解了汇编、计算机所组成原理以及接口技术这三门课程之间的联系与融合

20、渗透,也使我们体会到学习计算机接口技术的乐趣。这次硬件部件设计与调试实践,使我学习了很多的东西。通过两个礼拜的学习和实践,使我对所学的知识进行了系统的复习和巩固,同时,通过课设,培养和锻炼了我 的动手能力,这一点非常重要,不仅对我以后的学习有帮助,还可以为以后的工作打下一定的基础。这一次的课设对我的帮助很大,使我真正的认识到了理论与实际的区别,这将成为我的学习目标和动力,更进一步的挖掘自己的能力,使自己获得进一步的提高。这段时间的学习,使我了解到了理论和实际之间的差别,第一次真正接触到了实际中的问题,并通过和老师、同学交流,加强了自身的分析问题、解决问题的能力。同时,我也发现了自己在某些方面的

21、不足,这是我以后要加以改进的方面。 在组织电路图的过程中使我也学会了如何搭建硬件电路,如何根据硬件电路图来编制相误码的程序,使我对硬件课程的学习有了更浓的兴趣,使我对我所学的这个方向服了更浓的兴趣。虽然在做课设的过程中遇到过许多困难,犹其是思路一开始不正确的时候也产生过放弃的念头,但最终还是坚持了下来,终于把这个课设完整圆满的做完了。参考文献1李建忠编著.单片机原理及应用.西安:西安电子科技大学出版社,20022李群芳,肖看编著.单片机原理、接口及应用.北京:清华大学出版社,20053于海生编著.微型计算机控制技术.北京:清华大学出版社,20084戴梅萼,史嘉权编著.微型计算机技术及应用(第3版).北京:5江晓安,董秀峰编著.数字电子技术(第二版).西安:西安电子科技大学出版社,2005

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1