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

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

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

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

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

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

[

1.设计目的

培养和锻炼在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力。

通过课程设计,要求熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,得到微机开发应用方面的初步训练。

掌握8255、8259、8253等芯片使用方法和编程方法,通过本次课程设计,学以致用,进一步理解所学的相关芯片的原理、内部结构、使用方法等,学会相关芯片实际应用及编程,系统中采用8086微处理器完成了电子秒表系统的独立设计。

同时并了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰。

2.设计内容

\

设计一个可任意启动/停止的电子秒表,要求用6位LED数码显示,计时单位为1/100秒。

利用功能键进行启/停控制。

其功能为:

上电后计时器清0,当第一次(或奇数次)按下启/停键时开始计数。

第2次(或偶数次)按下该键时停止计时,再一次按启/停键时清零后重新开始计时。

可用开关控制,也可用按键控制。

(开关控制☆)(按键控制★)

3.设计要求

一.基本要求

1)设计可以显示1~60秒的无存储功能的秒表,最小单位为毫秒。

2)通过键盘按键控制秒表清零、暂停、继续,退出等。

其中数字0控制清零,数字1控制继续和退出

二.提高要求:

-

1)秒表可以分组存储、批量显示、倒计时等。

2)采用图像显示,界面精美,设置报警声等

4.设计原理与硬件电路

一.整体设计思想

使用8253工作在方式0计数,对1/100S计数,并讲计数值写入bl中并与100比较若不相等,则将计数值装换为10进制后送8255控制端显示,如相等则1S计数程序加1之后并与59比较若不相等则将计数值装换为10进制后送8255控制端显示,如相等则1min计数程序加1之后并与59比较若不相等则将计数值装换为10进制后送8255控制端显示,如相等则计数程序加1之后产生溢出,跳转清零程序将计数清零,同时数码管清零。

二.使用各芯片的作用及工作原理

1、定时器/计数器8253

;

用系统8253定时器提供的55ms定时单位,设计秒表定时程序。

有关系统定时方法:

PC机系统中的8253定时器0工作于方式3,外部提供一个时钟作为CLK信号,

频率:

f=。

定时器0输出方波的频率:

fout=65536=。

输出方波的周期Tout=1/=。

8253A每隔55ms引起一次中断,作为定时信号。

可用55945ms作基本计时单位。

用BIOS调用INT1AH可以取得该定时单位。

例:

1秒=(计时单位)

8253的引脚图及硬件连接图如下图示:

8253是一片具有三个独立的16位计数器通道的可编程定时器/计数器芯片。

每个通道都可以编程设定3种工作方式之一种;8253由以下几个部分组成:

(1)数据总线缓冲器(8位、三态、双向);

(2)读/写控制逻辑;

CS:

片选信号,低电平有效;

RD:

读信号,低电平有效;

WR:

写信号,低电平有效

A1A0:

端口选择信号

(3)三个通道(0~2),由A0,A1控制选择;

(4)一个控制寄存器;

《8253引脚图》硬件连接图

当A1A0分别为00011011时分别选中三个通道和控制字寄存器在8088系统中,8088的A1A0分别与8253的A1A0相连在8086系统中,通常将8253的8位数据线与8086的低8位相连,即使用偶地址,所以8086的A2A1分别与8253的A1A0相连。

计数器(0~2)即三个计数器/定时器通道。

每个通道包括:

8位控制字寄存器、16位计数初值寄存器、减一计数器和输出锁存器。

作定时器用:

其CLK端上的输入脉冲应是标准的、精确的;作计数器用:

对其CLK端上的脉冲计数,脉冲宽度可以不等。

采用减一计数器,为0时,从OUT端上输出一个脉冲定时时间=时钟脉冲周期X预置的计数初值

由于8253的读/写操作对系统时钟没有特殊的要求,因此它几乎可以应用与由任何一种微处理器组成的系统中,可作为可编程的方波频率发生器、分频器、实时时钟、事件计数器和单脉冲发生器等。

表8-4控制功能表

 

2、用可编程并行接口芯片8255的PA口以及PB口实现数码管输出,PC口实现按键实现数据显示输出

8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。

CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位、32位等。

用+5V单电源供电,能在以下三种方式下工作:

方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。

8255的内部结构及引脚如图所示:

图内部结构及引脚

 

8255工作方式控制字和C口按位置位/复位控制字格式如图3-7-2所示:

图置位/复位控制字格式

 

&

 

3.锁存器273

74LS273是8位数据/地址锁存器,他是一种带清除功能的8D触发器,下面介绍一下他的管脚图功能表等资料。

(1).1脚是复位CLR,低电平有效,当1脚是低电平时,输出脚2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)全部输出0,即全部复位;

;

(2).当1脚为高电平时,11(CLK)脚是锁存控制端,并且是上升沿触发锁存,当11脚有一个上升沿,立即锁存输入脚3、4、7、8、13、14、17、18的电平状态,并且立即呈现在在输出脚2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)上.

74ls273管脚功能:

1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。

  

4.数据收发器245

当片选端/CE低电平有效时,DIR=“0”,信号由B向A传输;(接收)

*DIR=“1”,信号由A向B传输;(发送)当/CE为高电平时,A、B均为高阻态。

:

5.译码器74ls154

74ls154为4—16线制译码器其引脚图如下图所示

6.7段数码管

  数码管要正常显示,就要来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。

静态显示驱动

  静态驱动也称直流驱动。

静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。

静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。

动态显示驱动

数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制。

5.程序流程图

 

 

 

 

6.程序代码

a1equ0000h

b1equ0002h

c1equ0004h

ctr1equ0006h;8255各端口地址

a2equ0200h;8253计数器0端口地址

ctr2equ0206h;8253控制端口地址

a3equ0100h

datasegment

;keynumdb0EEH,0DEH,0BEH,7EH,0EDH,0DDH,0BDH,7DH,0EBH,0DBH,0BBH,7BH,0E7H,0D7H,0B7H,77H

tabdb3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H

bufdb0,0,0,0

buf1db0,0,0,0,0,0,0,0

buf2db0,0;前为第一开关次数

buf3db80dup()

dataends

codesegment'code'

assumeds:

data,cs:

code

start:

movax,data

$

movds,ax

;设中断入口地址设置

movax,0

moves,ax

movdi,08

movax,offsetintr_key

cld

stosw

~

movax,segintr_key

stosw

movax,data

moves,ax

;8255写入控制字

moval,b;A口B口输出显示,C口高四位低四位输入

movdx,ctr1

outdx,al

n3:

calljishu

jmpn3

n2:

leasi,buf2

movbh,00h

movbl,1h[si]

leadi,buf3

adddi,bx

|

addbl,8

mov1h[si],bl

leasi,buf1

cld

movcx,8

repmovsb

n4:

calldis

jmpn4

~

n5:

leasi,buf2

movbh,00h

movbl,1h[si]

cmpbl,0

jzn1

leadi,buf1

subbl,8

mov1h[si],bl

leasi,buf3

addsi,bx

cld

movcx,8

repmovsb

n6:

calldis

jmpn6

n1:

callqinlin

jmpn1

;jmpstart

jishuprocnear;计数子程序

leasi,buf

movbl,[si]

cmpbl,100

jnzs6

{

s1:

movbl,0

mov[si],bl

movah,1h[si]

cmpah,59

jzs2

incah

mov1h[si],ah

jmps6

|

s2:

movah,0

mov1h[si],ah

movah,2h[si]

incah

mov2h[si],ah

jmps6

`

s6:

callchu

movcx,3

s5:

calldis

loops5

calldelay1s

incbyteptr[si]

ret

jishuendp

%

chuproc;rukoual;数处理子程序

pushsi

pushbx

movbl,4

leadi,buf1

leasi,buf

next:

lodsb

movah,00

movcl,10

divcl

xchgah,al

stosb

moval,ah

stosb

decbl

jnznext

popbx

popsi

ret

chuendp

disprocnear;显示buf1中的值

pushbx

pushcx

leabx,tab

leadi,buf1

movcx,8

movah,7Fh

loop1:

moval,[di]

xlat;换码

movdx,a1

:

outdx,al

movdx,b1

moval,ah

outdx,al

movbh,1

calldelay

callqp

leabx,tab

·

rorah,1

incdi

looploop1

popcx

popbx

ret

disendp

|

delay1sprocnear;8253延时子程序

pushdx

pushax

movdx,ctr2;8253控制

moval,00110000b

outdx,al;8253计数器0控制字方式0out端作为中断请求信号

movdx,a2

moval,01h

%

outdx,al

moval,00h

outdx,al

movdx,a3

M1:

inal,dx

testal,01h

jzM1

popax

!

popdx

ret

delay1sendp

qpprocnear;清频子程序

moval,0ffh

movdx,b1

outdx,al

#

ret

qpendp

delayPROCNEAR;内部延时之程序

PUSHbx

PUSHCX

wait0:

MOVCX,06h

wait1:

LOOPwait1

DECbh

JNZwait0

POPCX

POPbx

RET

delayENDP

intr_keyprocnear;中断服务子程序

:

callkey

testal,2h

jzn1

testal,4h

jzn5

leadi,buf2

movbh,[di]

incbh

%

mov[di],bh

testbh,1h

jnzn2

jmpn3

iret

intr_keyendp

qinlinproc;键盘清零子程序

movax,0

leadi,buf

movcx,14

cld

repstosb

calldis

qinlinendp

keyproc;读取键盘程序

movdx,c1

inal,dx

ret

keyendp

codeends

endstart

7.程序及硬件系统调试情况

按下暂停键实现暂停功能

继续计数后按下清零键实现清零功能

8.设计心得

 经过这次课程设计,我觉得我有了很大的收获,:

1.我大大地锻炼了自己搞科研的能力,作为我们大学生,尤其是工科的大学生,对于科研能力,能够自主开发课题,项目有着很高的要求,而我们很多大学生动手研发的能力还不是很强。

而通过这次课程设计,使自己的研发能力有了很大堤提高。

2.我对于工科设计的严谨性,仔细性有了更深地体会。

我们本次设计的秒表仅仅是工科设计中非常简单的一个,思想并不是非常复杂,手头也有一定的资料,但是我们在研发,调试过程中还是出现了一些错误。

简单的一些程序好检查,但是如果说是以后要设计的一些大型程序,出现故障就不是那么容易检查了。

这就要求我们在以后的工程设计当中要更为细致仔细。

3我的专业知识得到了很好的巩固,对于本专业的一些问题有了更深的思考。

原来有很多知识只是死学课本,而并没有与实际相结合,而这次课程设计使我的专业知识与实际有了很好的契合。

4.在程序设计中不能够想当然,许多程序,功能在脑子中想得很好,但是将其转变城实际程序就会出现许多问题。

如何由脑子里的构想转变成实际的程序,这是我以后需要提高的一点。

5.掌握了一些检查与判断错误的经验与方法,对今后的专业学习与设计有着深刻的影响。

6.对专业设计的许多流程、原则、注意事项以及撰写专业报告的有关事项有了一定的了解。

7.学到了书本上没有的知识,掌握了一些程序设计的技巧,对以后的学习与设计有深远影响。

总之,经过这次课程设计,我对今后的专业学习所要注意的事项有了更深刻地了解,这对我以后的学习必将产生深远的影响。

9.参考文献

[1]顾晖等。

微机原理与接口技术-基于8086和Proteus仿真[M].电子工业出版社陈继红等.微机原理及应用[M].高等教育出版社,2010

[2]戴梅萼等.微型计算机技术及应用[M].清华大学

[3]沈美明等.IBM-PC汇编语言程序设计 [M].清华大学出版社

[4]彭虎等.微机原理与接口技术(第2版)[M].电子工业出版社,2008

[5]张弥左,王兆月,邢立军等.微型计算机接口技术.北京:

机械工业出版社

 

 

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

当前位置:首页 > 小学教育 > 语文

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

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