微机原理与接口技术倒计电子时钟课程设计报告.docx

上传人:b****5 文档编号:6214942 上传时间:2023-01-04 格式:DOCX 页数:16 大小:181.50KB
下载 相关 举报
微机原理与接口技术倒计电子时钟课程设计报告.docx_第1页
第1页 / 共16页
微机原理与接口技术倒计电子时钟课程设计报告.docx_第2页
第2页 / 共16页
微机原理与接口技术倒计电子时钟课程设计报告.docx_第3页
第3页 / 共16页
微机原理与接口技术倒计电子时钟课程设计报告.docx_第4页
第4页 / 共16页
微机原理与接口技术倒计电子时钟课程设计报告.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

微机原理与接口技术倒计电子时钟课程设计报告.docx

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

微机原理与接口技术倒计电子时钟课程设计报告.docx

微机原理与接口技术倒计电子时钟课程设计报告

 

微机原理与接口技术

课程设计报告

——倒计电子时钟

 

倒计电子时钟课程设计报告

 

一、设计题目:

倒计电子时钟

二、设计目的:

1、掌握多位计数器相连的设计方法。

2、掌握十进制、六十进制、二十四进制计数器的设计方法。

3、进一步掌握定时器的使用和编程方法。

4、进一步掌握中断处理程序的编程方法。

5、进一步掌握数码显示电路的驱动方法。

三、设计要求:

1.用时、分、秒计数显示功能,以24小时开始倒计时。

格式如下:

24:

60:

60由左向右分别为:

时、分、秒

2.具有重新调节开始时间为12:

60:

60,暂停,继续的功能。

四、设计环境:

伟福Lab6000通用微控制器实验系统实验仪以及伟福6000仿真模拟软件。

五、设计说明:

定时器每100us中断一次,在中断服务程序中,对中断次数进行计数,100us计数10000次就是1秒。

然后再对秒计数得到分和小时值,并送入显示缓冲区。

六、设计连接电路图:

1、电路连接图描述:

本实验利用8253做定时器,用定时器输出的脉冲控制8259产生中断

在8259中断处理程序中,对时、分、秒进行计数,在等待中断的循

环中用LED显示时间。

8253用定时器/计数器1,8253片选接CS4,地址为0C000H。

8253时钟

源CLK1接分频电路的F/64输出。

分频器的Fin接4MHz时钟。

8253的

GATE1接VCC。

8259中断INT0接8253的OUT1,片选接CS5,地址为0D000H。

显示电路的KEY/LEDCS接CS0,地址为08000H。

2、电路连接图如下:

 

七、设计程序框架图:

 

八、设计原理和步骤:

1.设计原理:

(1)、数字电路设计理论

 

 

(2)、时钟倒计数:

秒---60进制BCD码计数;分---60进制BCD码计数;时---24进制BCD码计数;开始时计数器显示的是初始化的时钟时间:

24:

60:

60。

时钟根据电路连接图时频的不同接法,其运行时间的快慢也会有所不同。

按不同的按钮其执行的功能也有所不同,整个计数器具有重新运行自己所设置的时间开始倒计时(这里的按钮键是:

9)、暂停(按钮是:

7)、继续(按钮是:

8)的功能。

并且功能键的位置也可根据自己的习惯在代码中进行相应的设置,如:

设重新运行设置的时间开始倒计时(按钮键是:

4)、暂停(按钮是:

5)、继续(按钮是:

6)。

2.设计步骤:

(1)、在有masm软件的计算机上进行设计编码。

(2)、对masm上的代码进行调试并进行修改。

运行。

(3)、把已在masm可运行的程序移植到EDA实验室的计算机wav6000软件上。

(4)、对程序进行编译,修改,直至编译通过。

并对选择的环境进行相应的设置。

编译通过截图如下:

 

(5)、根据电路连接图的描述和对应的连接图在试验箱中进行电路图的连接。

(6)、把计算机wav6000软件与试验箱相连接进行通信,可把程序代码导入8086cpu芯片中。

(7)、运行程序,在试验箱中按根据已设的按钮,观察其对应的显示信息。

看其是否有按预设的功能显示,并记录。

(8)、对电路进行不同的连接,并在代码进行相应的修改,看其显示的信息是否有发生相应的变化。

(9)、完成设计后,整理实验仪器。

书写设计报告。

九:

设计结论和心得:

1.结论:

实验达到了实验的要求和目的。

(1)、按按钮7可暂停,按按钮8可使已暂停的计数继续倒计时,按按钮9可使正在运行的倒计时从12:

60:

60开始进行倒计时。

(2)、对按钮的位置修改也可达到预期的效果,对倒计时的时频进行修改,也可加快或减慢其倒计时的速度。

(3)、对电路图的接口进行修改和相应的代码修改也可达到相同的显示结果。

2.心得体会:

通过这次倒计电子时钟的设计和实现,掌握了六十进制和二十四进制数字电路的设计,同时复习了wav6000这个软件和试验箱的连接应用。

由于汇编原理的有些知识掌握不牢固,实验过程中遇到了很多困难,但在老师和同学的帮助下,顺利完成了此次的设计,同时也借此机会复习了汇编原理的知识,提高了自己动手能力。

希望以后能多做一些这样的设来验证已学过知识,达到学以致用的效果。

十、附加代码:

CONTROLequ0a003h

COUNT0equ0a000h

COUNT1equ0a001h

COUNT2equ0a002h

md8255equ82h;8255工作方式

PA8255equ8001h;8255PA口输出地址

CTL8255equ8003h;8255控制口地址

OUTBITequ08002h;位控制口

OUTSEGequ08004h;段控制口

IN_KEYequ08001h;键盘读入口

ICW1equ00010011b;单片8259,上升沿中断,要写ICW4

ICW2equ00100000b;中断号为20H

ICW4equ00000001b;工作在8086/88方式

OCW1equ11111110b;只响应INT0中断

CS8259Aequ0d000h;8259地址

CS8259Bequ0d001h

datasegment

CNTdb0

LEDBufdb6dup(?

);显示缓冲

Numdb1dup(?

);显示的数据

DelayTdb1dup(?

Hourdb0

Minutedb0

Seconddb0

LEDMAP:

;八段管显示码(使用软件译码的方式显示LED数码管)

db3fh,06h,5bh,4fh,66h,6dh,7dh,07h

db7fh,6fh,77h,7ch,39h,5eh,79h,71h

KeyTable:

;键码定义

db16h,15h,14h,0ffh

db13h,12h,11h,10h

db0dh,0ch,0bh,0ah

db0eh,03h,06h,09h

db0fh,02h,05h,08h

db00h,01h,04h,07h

dataends

codesegment

assumecs:

code,ds:

data

Delayprocnear

pushax;延时子程序

pushcx

moval,0

movcx,ax

loop$

popcx

popax

ret

Delayendp

DisplayLEDprocnear

movbx,offsetLEDBuf

movcl,6;共6个八段管

movah,00100000b;从左边开始显示

DLoop:

movdx,OUTBIT

moval,0

outdx,al;关所有八段管

moval,[bx]

movdx,OUTSEG

outdx,al

movdx,OUTBIT

moval,ah

outdx,al;显示一位八段管

pushax

movah,1

callDelay

popax

shrah,1

incbx

deccl

jnzDLoop

movdx,OUTBIT

moval,0

outdx,al;关所有八段管

ret

DisplayLEDendp

IEnterprocnear

pushax

pushdx

decSecond;秒数减少1

moval,Second

cmpal,0;比较,若秒数小于0则结束本次中断,若等于0则秒数为60,分数减1

jneExit

movSecond,0

decMinute

moval,Minute

cmpal,0

jneExit

movMinute,0

decHour

moval,Hour

cmpal,0

jneExit

movHour,0

Exit:

movdx,CS8259A

moval,20h;中断服务程序结束指令

outdx,al

popdx

popax

iret

IEnterendp

IInitproc;8259A初始化子程序

movdx,CS8259A

moval,ICW1

outdx,al;写控制字ICW1

 

movdx,CS8259B

moval,ICW2

outdx,al;写控制字ICW2

 

moval,ICW4

outdx,al;写控制字ICW4

 

moval,OCW1

outdx,al;写控制字OCW1

ret

IInitendp;初始化结束

TestKeyprocnear

movdx,OUTBIT

moval,0

outdx,al;输出线置为0

movdx,IN_KEY

inal,dx;读入键状态

notal

andal,0fh;高四位不用

ret

TestKeyendp

GetKeyprocnear

movch,00100000b

movcl,6

KLoop:

movdx,OUTBIT

moval,ch;找出键所在列

notal

outdx,al

shrch,1

movdx,IN_KEY

inal,dx

notal

andal,0fh

jneGoon_;该列有键入

deccl

jnzKLoop

movcl,0ffh;没有键按下,返回0ffh

jmpExit1

Goon_:

deccl

shlcl,2;键值=列X4+行

movch,4

LoopC:

testal,1

jnzExit1

shral,1

inccl

decch

jnzLoopC

Exit1:

movdx,OUTBIT

moval,0

outdx,al

movch,0

movbx,offsetKeyTable

addbx,cx

moval,[bx];取出键码

movbl,al

WaitRelease:

movdx,OUTBIT

moval,0

outdx,al;等键释放

movah,10

callDelay

callTestKey

jneWaitRelease

moval,bl

ret

GetKeyendp

startprocnear;主程序

movax,data

movds,ax

movHour,24;分别给时,分,秒赋初值

movMinute,60

movSecond,60

cli;关中断

movax,0

movds,ax;数据段段地址为0

 

moval,76h;01110110B;初始化8253计数器1,16位,方式3,二进制

movdx,CONTROL

outdx,al

movax,62500

movdx,COUNT1

outdx,al;计数器低字节

moval,ah

outdx,al;计数器高字节

moval,MD8255

movdx,CTL8255

outdx,al

movbx,4*ICW2;中断号

movax,code;获取中断向量段地址cs值

shlax,4;x16

addax,offsetIEnter;中断入口地址(段地址为0)

mov[bx],ax

movax,0

incbx

incbx

mov[bx],ax;将cs:

ip的地址附给中断向量[bx+2]:

[bx]

callIInit;初始化8259

movax,data

movds,ax

movCNT,0;计数值初始为0

moval,CNT

movdx,PA8255

outdx,al

sti

LP:

callTestKey;判断是否简易键盘是否有键入,有则转至

;set,无则往下执行

jnzSet;等待中断,并计数。

moval,Hour;把时钟时数为10位和个位

movah,0

movcl,10

divcl

movch,ah

movah,0;把时数的十位数送到数据缓冲区

movbx,offsetLEDMAP

addbx,ax

moval,[bx]

movLEDBuf,al

movbx,offsetLEDMAP;把时数的个位数送到数据缓冲区

moval,ch

movah,0

addbx,ax

moval,[bx]

oral,80h

movLEDBuf+1,al

moval,Minute

movah,0

movcl,10

divcl

movch,ah

movah,0

movbx,offsetLEDMAP

addbx,ax

moval,[bx]

movLEDBuf+2,al

movbx,offsetLEDMAP

moval,ch

movah,0

addbx,ax

moval,[bx]

oral,80h

movLEDBuf+3,al

moval,Second

movah,0

movcl,10

divcl

movch,ah

movah,0

movbx,offsetLEDMAP

addbx,ax

moval,[bx]

movLEDBuf+4,al

movbx,offsetLEDMAP

moval,ch

movah,0

addbx,ax

moval,[bx]

oral,80h

movLEDBuf+5,al

callDisplayLED;调用LED数码管数据显示子程序,使上面的数值显示出来

jmpLP

Set:

callGetKey

cmpal,07h

jzpause

cmpal,08h

jzcontiue

cmpal,09h

jzReset

jmpLP

pause:

CLI

jmpLP

contiue:

sti

jmpLP

Reset:

cli

movHour,12

MOVMinute,0

MOVSecond,0

sti

jmpLP

startendp

codeends

endstart

;按7暂停,8继续,9复位

 

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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