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

上传人:b****6 文档编号:9242222 上传时间:2023-02-03 格式:DOCX 页数:15 大小:86.53KB
下载 相关 举报
微机原理课程设计电子时钟.docx_第1页
第1页 / 共15页
微机原理课程设计电子时钟.docx_第2页
第2页 / 共15页
微机原理课程设计电子时钟.docx_第3页
第3页 / 共15页
微机原理课程设计电子时钟.docx_第4页
第4页 / 共15页
微机原理课程设计电子时钟.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

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

《微机原理课程设计电子时钟.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计电子时钟.docx(15页珍藏版)》请在冰豆网上搜索。

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

微机原理课程设计电子时钟

 

山东理工大学计算机学院

课程设计

(微机原理及接口技术)

 

班级

计科0702

姓名

张赛龙

学号

0712106457

指导教师

王志强

 

二○一○年七月十三日

 

课程设计任务书及成绩评定

 

课题名称

电子时钟设计

 

Ⅰ、题目的目的和要求:

学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。

通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。

Ⅱ、设计进度及完成情况

日期

内容

2010.7.4-7.6

选取参考书,查阅有关文献资料,初步设计。

2010.7.7~7.8

创建相关流程图、原理图,编写源程序

2010.7.12

调试程序并记录调试中的问题。

2010.7.13

系统测试,演示设计成果。

2010.7.14

整理课程设计说明书,并上交

 

主要参考文献及资料

[1]戴梅萼等.微型计算机技术及应用.清华大学出版社出版,2008.2

[2]徐建平,成贵学,朱萍等主编,微机原理与接口技术,北京航空工业出版社,2010

[3]马金忠编,微机原理及应用学习指导,重庆大学出版社,2009

 

Ⅳ、成绩评定:

 

设计成绩:

(教师填写)

指导老师:

(签字)

 

二〇一〇年七月十三日

第一章概述

 

1.1本课程设计意义

课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。

课程设计是让同学们对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。

《微机原理与接口技术》是一门重要的专业课。

1.2课题意义和设计目标

学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。

通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。

该系统的要求利用8253定时器设计一个具有时、分、秒显示的电子时钟,并定义一个启动键,当按下该键时时钟从当前设定值(可在显示缓冲区中予置)开始走时。

 

第二章系统分析与设计

2.1系统设计

该系统是一个简单的利用8253定时器、8255可并行通信接口和中断控制器8259设计的电子时钟系统,在该系统中设有一个启动键,启动键未按下时,显示初始化界面“HELLO”;当按下启动键时,8253定时器开始计时(8253的初值为10000,接1MHz的脉冲,即当8253计满100时正好是1S),当计时计满100时,8259便产生一次中断,在LED显示器便显示系统预先设计好的初始值“02.59.55”便开始从秒位开始加1,当加到10S时,10s位加1,加到60S时分位加1,同时秒位清零。

该系统的主要工作原理为:

在主程序中,要对各个用到的芯片进行初始化,在对8253进行初始化时,使它用方式2,每10ms产生一次脉冲。

在系统总8253的输入时钟频率为1MHZ,定时常数设为10000,则定时周期正好为10ms。

由于8253的定时输出与8259的IR0相连,所以,系统中每隔10ms便由8253对8259产生一次中断请求,即每隔10ms执行一次中断处理程序。

本系统将与时间密切相关的两个模块即显示模块和计时模块放在中断处理程序中,这样,就保证了LED的数字每隔10ms得到一次刷新,从而保证了数字显示的稳定。

中断处理程序完成计时功能要依靠两个方面,因为中断处理程序是每10ms执行一次,但计时并不是一10ms为单位进行的,而是以秒为单位进行的,所以,计时功能的事项一方面要利用10ms这个基准时间单位,另一方面要借助于一个计数单元。

计数单元的初始值为100,每进行一次中断,便使计数单元的内容减1,也就是说,每10ms作一次计数。

每当计数单元从100减为0时,说明已经经过了10ms*100=1s时间,于是使秒位加1。

秒位加1之后,又须判断由此而可能引起的进位,如有进位,则应实现正确的修改。

修改完以后,再将LED显示一遍。

 

第三章程序设计流程图

3.1程序设计原理图

3.2程序流程图

 

第四章程序源代码

codesegment

assumecs:

code,ds:

code

start:

movax,cs

movds,ax

movbp,0064h;设置计数初值

jmpstart1

portbitequ208h

portsegequ209h

start1:

movdx,20bh

moval,10000001b

outdx,al;8255初始化

moval,34h

movdx,203h

outdx,al;8253写控制字

movdx,200h

movax,10000d

outdx,al

moval,ah

outdx,al;8253初始化

moval,13h;8259初始化

movdx,210h

outdx,al;ICW1初始化

moval,08h

movdx,211h

outdx,al;ICW2初始化

moval,01h

outdx,al;ICW4初始化

inal,dx

andal,0feh

outdx,al;OCW1打开非屏蔽位IR5被屏蔽************************************************************

pushds

movax,0

movds,ax

movax,offsetintr

movds:

wordptr[4*8],ax

movax,cs

movds:

wordptr[4*8+2],ax;设置中断向量

popds

************************************************************

ab:

movdx,20ah;主程序开始

inal,dx

andal,1

cmpal,01h;判断时钟是否启动

jzintr1;若启动,则开中断

callshowhello;没启动,则转显示

cli;关中断

jmpab

intr1:

sti;开中断

jmpab;检测时钟状态

************************************************************

;初始界面显示程序

showhello:

leabx,TABLE

leadi,BUFDA

movcl,11011111b;位码

next:

movdx,208h

moval,cl

outdx,al;输出位码

moval,[di+06];取段码

xlat;把al+bl放到al

movdx,209h;输出段码

outdx,al

pushcx

movcx,30h

delay1:

loopdelay1;软件延迟

popcx

cmpcl,11111110b;判断是否扫完一遍

jzaaaa;显示完一遍则返回

incdi

rorcl,1;循环右移一位

jmpnext

aaaa:

ret

************************************************************

intrprocnear;中断处理程序

pushsi

pushax;保存寄存器的内容

decbp;计数单元减1

jnzdisplay;如未计到100,则直接转显示

movdi,offsetBUFDA

movbp,0064h;计数单元设置初值

moval,[di+05]

incal;秒位加1

mov[di+05],al

cmpal,0ah;是否引起进位

jnzdisplay;无进位则转显示

moval,00

mov[di+05],al

moval,[di+04]

incal;有进位则本位清零,前一位加1

mov[di+04],al

cmpal,06;是否满60秒

jnzdisplay;否,则转显示

moval,00

mov[di+04],al

moval,[di+03]

incal;是则本位清零,而分位加1

mov[di+03],al

cmpal,0ah;是否引起分位有进位

jnzdisplay;否,则转显示

moval,00

mov[di+03],al

moval,[di+02]

incal

mov[di+02],al;有进位,则本位清零,前一位加1

cmpal,06;是否满60分

jnzdisplay;否,则转显示

moval,00

mov[di+02],al

moval,[di+01]

incal;有进位,则本位清零,前一位加1

mov[di+01],al

cmpal,0ah;是否引起时位有进位

jnzdisplay;否,则转显示

moval,00

mov[di+01],al

display:

calldispl;调用显示程序

movdx,210h

moval,20h

outdx,al;手动结束中断

popax

popsi

iret

intrendp;被中断处理程序调用的显示程序

displprocnear

pushdx

pushcx

pushbx

pushsi

movcx,0006;显示位数

movbx,offsetTABLE

movsi,offsetBUFDA

movah,11011111b

displ1:

movdx,portbit//portbitequ208H

moval,0ffh

outdx,al;关显示

pushcx

movcx,0100h

wait1:

loopwait1;软件延时

movdx,portseg//portsegequ209H

moval,[si]

xlat;转换

outdx,al;输出段码

movdx,portbit

moval,ah

outdx,al;输出位码

movcx,0100h

wait2:

loopwait2;延时

popcx

rorah,1

incsi

loopdispl1

popsi

popbx

popcx

popdx

ret

displendp

TABLE:

db3fh;“0”的段码

db06h;“1”的段码

db5bh;“2”的段码

db4fh;“3”的段码

db66h;“4”的段码

db6dh;“5”的段码

db7dh;“6”的段码

db07h;“7”的段码

db7fh;“8”的段码

db6fh;“9”的段码

db00h;

db76h;“H”的段码

db79h;“E”的段码

db38h;“L”的段码

db38h;“L”的段码

db5ch;“o”的段码

BUFDA:

db0,2,5,9,5,7,11,12,13,14,15,16

codeends

endstart

 

第五章调试过程中的问题及系统测试情况

本次课程设计过程中,碰到了不少的问题,但最终通过互联网和查阅资料,都一一解决掉,获益匪浅,纠正了以前自己认识上的不足之处,增强了自己程序设计能力。

最终系统能够成功运行。

 

第六章心得体会

经过两周努力,在指导老师和同学的帮助下,终于如期完成了该电子时钟的课程设计。

当然在课程设计的过程中遇到了许多问题,但是经过查阅有关资料和向老师、同学请教后,还是一一解决了。

系统设计的开始几天的时间,没有什么大的进展,仅仅是初始界面就调试了很长时间才成功,以后的几天的时间开始调中断程序,程序中一旦有了中断,调试就困难了,调中断调了好几天,难度挺大的,任何一个初始化的失误都可能使你的程序不正常,所以写程序的时候一定要仔细,考虑问题一定要全面,最后使各部分捏成一整体,让整个程序顺利运行,这部分不是很难,所以只用半天就调完了。

通过本次课程设计,使我在课堂中学到的东西充分的融入到实践当中。

进一步的熟悉了可并行通信接口8255、计数器/定时器8253及中断控制器的编程原理和7段LED数码管显示器的工作原理,为以后独立的设计系统提供了丰富的实践经验。

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

当前位置:首页 > 考试认证 > 其它考试

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

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