基于8086课程设计.docx

上传人:b****6 文档编号:11890340 上传时间:2023-06-03 格式:DOCX 页数:17 大小:154.62KB
下载 相关 举报
基于8086课程设计.docx_第1页
第1页 / 共17页
基于8086课程设计.docx_第2页
第2页 / 共17页
基于8086课程设计.docx_第3页
第3页 / 共17页
基于8086课程设计.docx_第4页
第4页 / 共17页
基于8086课程设计.docx_第5页
第5页 / 共17页
基于8086课程设计.docx_第6页
第6页 / 共17页
基于8086课程设计.docx_第7页
第7页 / 共17页
基于8086课程设计.docx_第8页
第8页 / 共17页
基于8086课程设计.docx_第9页
第9页 / 共17页
基于8086课程设计.docx_第10页
第10页 / 共17页
基于8086课程设计.docx_第11页
第11页 / 共17页
基于8086课程设计.docx_第12页
第12页 / 共17页
基于8086课程设计.docx_第13页
第13页 / 共17页
基于8086课程设计.docx_第14页
第14页 / 共17页
基于8086课程设计.docx_第15页
第15页 / 共17页
基于8086课程设计.docx_第16页
第16页 / 共17页
基于8086课程设计.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于8086课程设计.docx

《基于8086课程设计.docx》由会员分享,可在线阅读,更多相关《基于8086课程设计.docx(17页珍藏版)》请在冰点文库上搜索。

基于8086课程设计.docx

基于8086课程设计

 

1、电子时钟功能介绍

本电子时钟可以24小时循环计时,并且具有调时功能,操作方法如下:

开机运行后,即显示初始时间12:

00整。

按动一下MIN按键即可启动调分,此时每按动一下MIN按键分位数字加1,完成对分的调整;再按动一下HOU按键启动调时,按动一下HOU按键时位数字加1,完成对时的调整。

再按一下HOU按键即关闭功能,正常计时。

2、电子时钟系统设计方案

2.1、设计要求

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

2.2、设计思路

电子时钟主要由显示模块、对时模块和时钟运算模块三大部分组成。

其中对时模块和时钟运算模块要对时、分、秒的数值进行操作,并且秒计算到60时,要自己清零并向分进1;分计算到60时,要自己清零并向时进1;时计算到24时,要清零。

这样,才能循环记时。

显示时利用7段显示器显示六位十进制数据。

前两个显示小时,中间两个显示分钟,后两个显示秒。

时钟的运算是利用中断来实现的,利用8253的模式三输出一定频率的方波作为触发中断的条件。

8253A可编程定时/计数器的输入时钟为100KHz,设定时/计数器0的计数初值为100,工作在方式3,即方波发生器,其输出的1KHz方波作定时/计数器2的时钟。

定时/计数器2的初值设为1000,工作在方式2,即每隔1s输出负脉冲,取反后用作不可屏蔽中断的中断申请信号,在中断服务程序中计算时间,并通过74ls273并行输出到数码管显示。

3、电子时钟的工作原理

电子时钟主要由74ls273锁存器、8253定时/计数器、74ls244反相器、LED数码显示管和两个按键组成。

主要用8086的NMI的中断服务程序完成秒、分、时的运算即计时功能,两个开关的中断服务程序完成调时、调分功能。

8253用来产生1s的脉冲信号作为NMI的中断请求信号。

74ls273负责将内存里的时位和分位秒位值输出到数码管。

 

3.1、显示模块

利用数码管的显示功能来设计。

数码管是由八个条形发光二极管组成的,这些发光二极管的阴极是互相连接在一起的,所以称为共阴极数码管。

通过在这八个发光二极管的阳极加+5V或0V的电压使不同的二极管发光,形成不同的字符和数字。

电子时钟用到的是0到9十个数字,他们所对应的字符表依次是3FH、06H、5BH、4FH、66H、6DH、7DH、07H、7FH、6FH。

该模块显示时先将保存在数据单元的当前时间包括小时和分钟读取出来,把十六进制数字转化成十进制用四个字节分别存放小时和分钟,并把这四个数值通过74ls273端口输出给数码管显示。

3.2、时钟运算模块

该模块的主要功能是对时、分、秒的运算,并把运算出的最终结果存到事先已经开辟的内存单元里,以便显示模块即时地显示出来。

该模块可以细分为秒定时模块和运算模块。

秒定时模块负责提供中断信号,由于CPU运算模块中的指令消耗一定的时间,所以中断信号最好通过硬件来实现,选择的是8253定时/计数器,但又因为8253所能提供的信号的周期时毫秒级的,因此必须通过软件的方法在运算模块中设置一个统计中断次数的变量,并且这一变量必须事先在内存里开辟存储单元。

中断信号是8253的计数器2工作方式为方式2时,同过设置计数器2的初值来产生一个1s的脉冲信号。

运算模块负责时、分、秒的计算,该模块主要通过8086的NMI信号中断来实现,首先将秒定时模块提供的中断信号为8086的NMI中断请求信号。

但由于每1s一次中断请求。

所以在中断服务程序必须利用已申请内存单元count来统计中断请求的次数,只有当count的值为1000时,才能让秒单元内的数值加1。

另外,在中断服务程序里,必须对秒、分和时的单元内的数值进行判断,当秒加到60时,分必须加1、秒清零;当分加到60时,时加1、分清零。

当时加到24啊,直接清零。

3.3、对时模块

该模块主要功能是修改小时、分钟内存单元的数值。

在对时的时候,秒继续走时,并且在对分进行调整的时,时单元内的数值不变。

由以上分析可见,对时、分的调整用两个优先级高于NMI的中断来完成。

两个中断源的中断请求信号只需直接接在两个按键即可起到对时作用。

4、硬件设计

4.1、硬件设计电路图

4.1.1、8086最小工作方式

 

4.1.2、秒脉冲发生器

4.1.3、时、分调整电路

 

4.1.4、显示电路

 

4.2、硬件设计所用芯片介绍

、8253的主要功能:

可编程定时器/计数器,其定时与计数功能可由程序灵活地设定,设定后与CPU并行工作,不占用CPU的时间。

计数器2工作在模式3方式下,提供计算一秒的中断请求信号。

、D触发器74LS273管脚排列图及功能表介绍

74LS273是一种带清除功能的8D触发器,1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作数据锁存器,地址锁存器。

、单向总线驱动器74LS244管脚排列图及功能表介绍

74LS244是8路3态单向缓冲驱动,也叫做总线驱动门电路或线驱动。

简单地说,它有8个输入端,8个输出端,可以增加信号的驱动能力.为单向驱动。

A为输入,Y为输出,高电平有效。

 

5、电子时钟总体程序

.MODELSMALL

.8086

.STACK

.CODE

.STARTUP

NMI_INIT:

PUSHES

;nmi不可屏蔽中断向量表初始化

XORAX,AX

MOVES,AX

MOVAL,02H

XORAH,AH

SHLAX,1

SHLAX,1

MOVSI,AX;相当于cs,ip入栈

MOVAX,OFFSETNMI_SERVICE

;调用中断处理程序

MOVES:

[SI],AX

INCSI

INCSI

MOVBX,CS;?

MOVES:

[SI],BX

POPES

;定时器初始化

MOVAL,00110111B

MOVDX,0406H

OUTDX,AL

MOVDX,0400H

MOVAX,0100H

OUTDX,AL

MOVAL,AH

OUTDX,AL

MOVAL,10110101B

MOVDX,0406H

OUTDX,AL

MOVDX,0404H

MOVAX,1000H

OUTDX,AL

MOVAL,AH

OUTDX,AL

LOOP0:

;主任务

CALLKEY

CALLDISP

JMPLOOP0

NMI_SERVICE:

;中断服务程序

PUSHAX

MOVAL,SEC

ADDAL,1

DAA

MOVSEC,AL

CMPSEC,60H

JBEXIT

MOVSEC,0

MOVAL,MIN

ADDAL,1

DAA

MOVMIN,AL

CMPMIN,60H

JBEXIT

MOVMIN,0

MOVAL,HOU

ADDAL,1

DAA

MOVHOU,AL

CMPHOU,24

JBEXIT

MOVHOU,0

EXIT:

POPAX

IRET

DISPPROCNEAR

MOVAL,0FFH;不显示

MOVDX,0201H

OUTDX,AL

MOVBL,SEC

ANDBX,000FH

MOVSI,BX

MOVAL,SITUATION[SI];段码

MOVDX,0200H

OUTDX,AL

MOVAL,0FEH;秒个位

MOVDX,0201H

OUTDX,AL

CALLDELAY

MOVAL,0FFH;不显示

MOVDX,0201H

OUTDX,AL

MOVBL,SEC

ANDBX,00F0H

MOVCL,4

SHRBX,CL

MOVSI,BX

MOVAL,SITUATION[SI];段码

MOVDX,0200H

OUTDX,AL

MOVAL,0FDH;秒十位

MOVDX,0201H

OUTDX,AL

CALLDELAY

MOVAL,0FFH;不显示

MOVDX,0201H

OUTDX,AL

MOVAL,40H;段码

MOVDX,0200H

OUTDX,AL

MOVAL,0FBH;秒个位

MOVDX,0201H

OUTDX,AL

CALLDELAY

MOVAL,0FFH;不显示

MOVDX,0201H

OUTDX,AL

MOVBL,MIN

ANDBX,000FH

MOVSI,BX

MOVAL,SITUATION[SI];段码

MOVDX,0200H

OUTDX,AL

MOVAL,0F7H;分个位

MOVDX,0201H

OUTDX,AL

CALLDELAY

MOVAL,0FFH;不显示

MOVDX,0201H

OUTDX,AL

MOVBL,MIN

ANDBX,00F0H

MOVCL,4

SHRBX,CL

MOVSI,BX

MOVAL,SITUATION[SI];段码

MOVDX,0200H

OUTDX,AL

MOVAL,0EFH;分十位

MOVDX,0201H

OUTDX,AL

CALLDELAY

MOVAL,0FFH;不显示

MOVDX,0201H

OUTDX,AL

MOVAL,40H;段码

MOVDX,0200H

OUTDX,AL

MOVAL,0DFH;秒个位

MOVDX,0201H

OUTDX,AL

CALLDELAY

MOVAL,0FFH;不显示

MOVDX,0201H

OUTDX,AL

MOVBL,HOU

ANDBX,000FH

MOVSI,BX

MOVAL,SITUATION[SI];段码

MOVDX,0200H

OUTDX,AL

MOVAL,0BFH;时个位

MOVDX,0201H

OUTDX,AL

CALLDELAY

MOVAL,0FFH;不显示

MOVDX,0201H

OUTDX,AL

MOVBL,HOU

ANDBX,00F0H

MOVCL,4

SHRBX,CL

MOVSI,BX

MOVAL,SITUATION[SI];段码

MOVDX,0200H

OUTDX,AL

MOVAL,07FH;时十位

MOVDX,0201H

OUTDX,AL

CALLDELAY

RET

DISPENDP

KEYPROCNEAR

MOVDX,0600H

INAL,DX

TESTAL,01H

JNZNEXTHOU

CALLDISP;消抖

CALLDISP

CALLDISP

MOVDX,0600H

INAL,DX

TESTAL,01H

JNZNEXTHOU

MOVAL,MIN

ADDAL,1;分调整

DAA

MOVMIN,AL

CMPMIN,60H

JBNEXTHOU

MOVMIN,0

NEXTHOU:

MOVDX,0600H

INAL,DX

TESTAL,02H

JNZEXITKEY

CALLDISP;消抖

CALLDISP

CALLDISP

MOVDX,0600H

INAL,DX

TESTAL,02H

JNZEXITKEY

MOVAL,HOU

ADDAL,1

DAA;时调整

MOVHOU,AL

CMPHOU,24H

JBNEXTHOU

MOVHOU,0

EXITKEY:

RET

KEYENDP

DELAYPROCNEAR;定时子程序

PUSHBX

PUSHCX

MOVBX,1

LP1:

MOVCX,469

LP2:

LOOPLP2

DECBX

JNZLP1

POPCX

POPBX

RET

DELAYENDP

.DATA

SECDB00H

MINDB00H

HOUDB23H

SITUATION

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H

SIT_END=$

END

 

6、调试过程遇到问题及解决方法

将编写好的源程序输入,编译后出现很多问题,经过反复修改程序终于运行通过。

数码管显示的数字并不与理论计算值相符合,经过反复分析源程序发现问题出现在内存单元里时位和分位在转化为十进制时出错,经过更改内存但愿数据。

一开始数字闪动,后来请教同学,原因应该出在显示子程序里,缺少延时程序。

编写延时子程序,并在显示子程序调用它;编译源程序,装入生成的可执行文件,并运行。

数码管显示的数字与理论值相符合,并能正常计时。

7、总结与体会

在这次课程设计过程中,我们逐步养成了发现、提出、分析和解决实际问题的习惯;这不但锻炼提高了我们的实践能力,更是对我们实际工作能力的具体训练和考察过程。

对于此次电子时钟课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在这短短两个星期的日子里,不仅让我们巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中也发现了自己对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说触发器的运用还是不怎么熟识,但是通过这次课程设计,我们对8086CPU,8253定时器74LS273,74LS244等一些芯片有了更深刻的理解与认识。

同时也看到了自己基础知识还是不够扎实,实践经验还是比较缺乏,理论联系实际的能力还待急需提高。

通过这次课程设计之后,一定把以前所学过的知识重新温故。

在这个过程中,也曾经因为实践经验的缺乏失落过,也曾经仿真成功而热情高涨。

生活就是这样,汗水预示着结果也见证着收获。

虽然这只是一次的较简单的课程设计,可是也耗费了我们不少的心血,让我们真正的体会到了对于设计者来说,钻研精神是何等的重要。

经历过了这次课程设计,我们不但在知识上有了重要收获,精神上的丰收更加难能可贵。

这让我明白,我们每一个人做任何事,都需要探索精神,不管前方的道路有多艰险,走过,你才能知道自己的能力,人不能停留于眼前,因为学无止境。

一次挫折是一份财富,一次成功是一份动力,一次跨步就是一次飞跃,人生贵在拼搏!

毋庸置疑,这次课程设计必将是大学里一个新的起点!

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2