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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

微机原理课设电子钟程序设计.docx

1、微机原理课设电子钟程序设计成绩 南京工程学院通信工程学院课程设计说明书(论文)题 目 电子钟程序设计 课 程 名 称 微机原理课程设计 专 业 班 级 学 生 姓 名 学 号 设 计 地 点 指 导 教 师 设计起止时间:2010年12月23日至2010年12月26日 目 录一系统设计的目的和意义 2二课程设计要求及内容 2三总体设计 4 1.硬件设计 42.软件设计 53.源程序清单6四调试现象10五课程设计总结10六参考文献11一、系统设计的目的和意义:1、巩固所学理论知识、使理论与实际相结合的重要实践环节。2、以汇编语言为基础,通过完成一些具有一定难度的课程设计题目的编写、调试、运行工作

2、。3、进一步掌握面汇编语言程序设计的基本方法和编程技巧,巩固所学理论知识,使理论与实际相结合。4、提高自我分析问题、解决问题的能力。二、课程设计要求及内容:1设计要求利用8253可编程定时/计数器、8259中断控制器、8255可编程并行接口芯片和七段数码管设计一个电子钟的电路,并编写一段程序使得该电子钟能正常运行。选用8253的计数器2进行100MS的定时,其输出OUT2与8259的IRQ0相连,当定时到100MS时产生一个中断信号,在中断服务程序中进行天数、时、分、秒的计数,并送入相应的存储单元;8255的A口接七段数码管的位选信号,B口接数码管的段选信号,天数、时、分、秒的数值通过对825

3、5的编程可送到七段数码管上显示。2设计原理说明(1).显示模块显示模块是将显示缓冲区的数值送到LED显示的功能模块,显示缓冲区是由八个字节构成,分别保存小时的高位和低位,分钟的高位和低位,秒钟的高位和低位,一个横杠和一位天数的显示。硬件上主要涉及到的是8255。定义8255控制字为89H,其在方式0下工作,A,B输出,C输入的工作方式。8255的A口接七段数码管的位选信号,B口接数码管的段选信号,用排线接好。软件上主要是对时、分、秒、天的扫描显示,主要是在DISPLAYLED函数里体现出来:首先将10000000B送至OUTBIT端口,即确定LED的哪一位显示,再把BX中存储在内存中的翻译好的

4、显示码送至OUTSEG短口,来确定显示什么字符。依次将加而减一,直至为跳转而字符的译码则是在STSRT函数中的LP中完成的,以小时HOUR为例,将存入中再以,按“余高商低”的规则,中存的是小时的个位中村的是小时的十位,将转换成显示码,并存入显示缓冲区。其他分、秒、天类似。(2).计数模块计数模块的主要芯片是8253,8253控制字 1010 0110H,表示选用计数器2,对高字节读写,方式3。因为选用的是计数器2,则OUT的端口即选用OUT2,连至8259的IR端口,CLK2端口接来自实验箱的62.5KHz的时钟频率。将82500HZ的频率转化为10HZ的频率,即题目要求的100MS。每隔10

5、0MS送出一个信号至8259,配合中断程序的实现。(3).中断模块控制终端模块的主要芯片是8259。IINIT函数是专为初始化8259。初始化9258的命令字ICW1为00010011B,即中断请求是边沿触发,用于8086系统,需要设置ICW4。ICW2为00001000B,ICW2是设置中断类型号的初始化命令字。ICW4为00001001B,ICW4叫中断结束方式初始化。OCW1为11111110B即表示只有M0允许中断,故接线时8253的OUT2,连至8259的IR0端口.。软件上包括初始化8259的命令字和操作命令字,中断服务程序,中断服务子程序。设一个变量CNT,每次调用中断服务程序则

6、CNT加一,在判断CNT能不能被10整除,若能,则秒加一;不能,跳出中断程序。若秒满60,则分加一,秒数清零,依次类推。3功能说明除要求的电子钟的基本功能外,添加了天数的计数功能,星期一显示“1”,星期二显示“2”,周日显示“7”即17循环。三、总体设计1硬件设计硬件设计主要是将所用的各个芯片与CPU进行有效连接,也包括芯片与芯片之间的必要的信号连接线。首先将各芯片的片选端与对应的CPU的CS端口进行连接。再将对应的A0,A1对应连上。为保证中断模块的正常运行,将8259的INT、INTA与ES8688的INTR、INTA连接,IRO与8253的OUT2连接。为保证显示模块的正常运行,将525

7、5的AB口与LED的CB口连好。为保证计数模块的正常运行,将62.5K频率接到8253的CLK2。A3区:A0、A1B3、B4、C5区:A0、A1A3区:CS3B3区:CSA3区:CS4C5区:CSA3区:CS8B4区:CSB3区:INT、INTAES8688:INTR、INTAB3区:IROC5区:OUT2频率输出:62.5kC5区:CLK2B4区:A、BLED区:C、B数据线引脚接线说明连线实物图2.软件设计1.设计思路(1)在主程序中要分别对8253、8259、8255进行初始化编程,8253的计数器2可在方式2下工作。(2)8255的A口、B口都设为方式0,为基本的输入输出的方式(3)

8、在中断服务程序中对中断次数进行统计,当满10次时就进行一次时、分、秒的处理。时、分、秒,分别对应6个存储单元,分别存放时、分、秒的十位和个位。当中断次数满10次时,将秒的个位加1,判断是否到10,如到了则十位加1,个位清零;再判断十位是否到6,如到了则十位清零,分的个位加1,同时对分、时作相应处理。(4)七段数码管显示作为子程序,将时、分、秒对应存储单元的内容分别取出并转换成相应的段码,从8255的B口输出,A口输出对应位的位选信号,延时后进行下一位的显示(a)主程序流程图 (b)中断服务程序流程图2.源程序清单CONTROL EQU 0C003H ;8253控制口 COUNT0 EQU 0C

9、000H COUNT1 EQU 0C001H COUNT2 EQU 0C002H MD8255 EQU 89H ;8255控制字 1000 1001H,A输出,B输出,C输入PA8255 EQU 8000H CTL8255 EQU 8003H OUTBIT EQU 08000H ;位控制口 OUTSEG EQU 08001H ;段控制口 CS8259A EQU 0D000H ;8259地址 CS8259B EQU 0D001H DATA SEGMENT CNT DB 0 LEDBUF DB 8 DUP(?) ;显示缓冲 NUM DB 1 DUP(?) ;显示的数据 DELAYT DB 1 DU

10、P(?)ZHOU DB 1 HOUR DB 0 MINUTE DB 0 SECOND DB 0 LEDMAP: ;八段管显示码 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H DATA ENDS SSEG SEGMENT STACK DB 1000 DUP(?)SSEG ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:SSEGIINIT PROC NEAR ;初始化8259的命令字和操作命令字 MOV DX,CS8259A MOV AL,13H OUT DX,AL

11、 MOV DX,CS8259B MOV AL,08H OUT DX,AL MOV AL,09H OUT DX,AL MOV AL,0FEH OUT DX,AL RET IINIT ENDP WRIINTVER PROC NEAR ; 中断程序子程序 PUSH ES MOV AX,0 MOV ES,AX MOV DI,20H LEA AX,IENTER STOSW MOV AX,CS STOSW POP ES RETWRIINTVER ENDP IENTER PROC ;中断服务程序 PUSH AX PUSH DX INC CNT CMP CNT,10 JNE EXIT MOV CNT,0 IN

12、C SECOND ;秒加1 MOV AL,SECOND CMP AL,60 ;秒数与60比较 JNE EXIT MOV SECOND,0 ;秒清零 INC MINUTE ;分加1 MOV AL,MINUTE CMP AL,60 ;分数与60比较 JNE EXIT MOV MINUTE,0 ;分清零 INC HOUR ;时加1 MOV AL,HOUR CMP AL,24 ;时数与24比较 JNE EXIT MOV HOUR,0 ;时清零 INC ZHOU MOV AL,ZHOU CMP AL,8 JNE EXIT MOV ZHOU,1 EXIT: MOV DX,CS8259A MOV AL,20

13、H OUT DX,AL ;结束本次中断 POP DX POP AX IRET IENTER ENDP DISPLAYLED PROC NEAR ;显示程序,从左到右显示字符 MOV BX,OFFSET LEDBUF MOV CL,8 ;共8个八段管 MOV AH,10000000B ;从左边开始显示 DLOOP: MOV DX,OUTBIT NOT AH MOV AL, AH OUT DX, AL MOV AL,BX MOV DX,OUTSEG OUT DX,AL ;显示一位八段管 PUSH AX MOV AH,1 CALL DELAY ;调用延时程序 POP AX NOT AH SHR AH

14、,1 INC BX DEC CL JNZ DLOOP MOV DX,OUTBIT MOV AL,0 OUT DX,AL ;关所有八段管 RET DISPLAYLED ENDP DELAY PROC NEAR ;延时子程序 PUSH AX PUSH CX MOV AL,0 MOV CX,AX LOOP $ ; POP CX POP AX RET DELAY ENDP START: MOV AX,DATA MOV DS,AX MOV ES,AX NOP CLI ;关中断 CALL IINIT ;调用中断程序,检查是否要进位 CALL WRIINTVER MOV AL,0B6H ;8253控制字 1

15、010 0110H MOV DX,CONTROL OUT DX,AL MOV AX,625 ;利用8253计数器 MOV DX,COUNT2 OUT DX,AL MOV AL,AH OUT DX,AL MOV AL,MD8255 ;8255控制字 MOV DX,CTL8255 OUT DX,AL MOV CNT,0 ;计数值初始为0 MOV AL,CNT MOV DX,PA8255 OUT DX,AL STI ;开中断 LP: MOV AL,HOUR MOV AH,0 MOV CL,10 DIV CL MOV CH,AH MOV AH,0 MOV BX,OFFSET LEDMAP ADD BX

16、,AX MOV AL,BX ;时的十位转换成显示码 MOV LEDBUF,AL ;显示码存入显示缓冲区 MOV BX,OFFSET LEDMAP MOV AL,CH MOV AH,0 ADD BX,AX MOV AL,BX ;时的个位转换成显示码 OR AL,80H MOV LEDBUF+1,AL ;显示码存入后一位显示缓冲区 MOV AL,MINUTE MOV AH,0 MOV CL,10 DIV CL MOV CH,AH MOV AH,0 MOV BX,OFFSET LEDMAP ADD BX,AX MOV AL,BX ;分的十位转换成显示码 MOV LEDBUF+2,AL MOV BX,

17、OFFSET LEDMAP MOV AL,CH MOV AH,0 ADD BX,AX MOV AL,BX ;分的个位转换成显示码 OR AL,80H MOV LEDBUF+3,AL MOV AL,SECOND MOV AH,0 MOV CL,10 DIV CL MOV CH,AH MOV AH,0 MOV BX,OFFSET LEDMAP ADD BX,AX MOV AL,BX ;秒的十位转换成显示码 MOV LEDBUF+4,AL MOV BX,OFFSET LEDMAP MOV AL,CH MOV AH,0 ADD BX,AX MOV AL,BX ;分的个位转换成显示码 MOV LEDBU

18、F+5,AL MOV LEDBUF+6,01000000B ;显示横杠 MOV AL,ZHOU ;周的显示 MOV BX,OFFSET LEDMAP ADD BX,AX MOV AL,BX MOV LEDBUF+7,AL CALL DISPLAYLED ;调用显示程序 JMP LP CODE ENDS END START 四.调试现象:刚开始时,找到的一段参考程序,但是又很多问题。第一个就是没有在伪代码中定义堆栈段,这个很容易解决。第二个问题是程序在LP子程序中无限循环,根本没运行中断子程序。这个问题废了我们很大的功夫。只好仔细研究中断的含义,必要的条件。之后尝试改变程序的架构,又添加了几段必

19、要的辅助程序,程序就可以运行了,并且在硬件上得到了正确的结果。五.心得体会: 这次微机原理课程设计历时一个星期,在整整一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。以前在上课的时候,老师经常强调在写一个程序的时候,一定要事先把程序原理方框图化出来,但是我开始总觉得这样做没必要,很浪费时间。但是,这次课程设计完全改变了我以前的那种错误的认识,以前我接触的那些程序都是很短、很基础的,但是在课程设计中碰到的那些需要很 多代码才能完成的任务,画程序方框图是很有必要的。因为通过程序方框图,在做设计的过程中,

20、我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序测试的过程中也有利于查错。其次,以前对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个寄存器的内容以确保程序的正确性上都有了很大程度的提高。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于游逆而解。同时,在老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!六. 参考文献1.李干林,李升. 微机原理及接口技术实验指导书.北京:北京大学出版社.2.李继灿.新编16/32位微型计算机原理及应用(第4版).北京:清华大学出版社.3.周荷琴,吴秀清.微型计算机原理与接口技术.合肥:中国科学技术大学出版社.

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

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