电子钟课程设计报告Word格式.docx
《电子钟课程设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《电子钟课程设计报告Word格式.docx(18页珍藏版)》请在冰豆网上搜索。
每百分之一秒对百分之一秒寄存器的内容加一,并依次对秒、分、小时寄存器的内容加一;
六个数码管动态显示时、分、秒的当前值。
用开关(模块A5)控制计时和显示:
K1键(清除):
显示00-00-00;
K2键(启动):
显示XX-XX-XX变更的时间值;
K3键(停止):
显示XX-XX-XX不变;
K4键(设置):
设置XX-XX-XX时间值,时间值由模块B2开关输入。
2.3设计环境
PC机一台、windows
XP系统、实验箱,导线若干。
2.
4设计所用设备
8254定时器:
用于发生秒脉冲,其输出信号可作为中断请示信号送IRQ2。
8255并口:
用做接口芯片,和小键盘相连。
8259中断控制器:
用于发生中断。
LED:
六个LED用于显示时:
分:
秒值。
小键盘:
用于控制设置。
3系统硬件设计
设计所用芯片及功能介绍
.18259芯片的内部结构及引脚
中断控制器8259是Intel公司专为控制优先级中断而设计开发的芯片。
它将中断源优先排队、分辨中断源以及提供中断矢量的电路集中于一片中。
因此无需附加任何电路,只需对8259编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。
在MD微机系统中,8259芯片工作于单片方式。
8259引脚图如图3.1所示。
图3.18259引脚图
各引脚功能如下:
D7-D0——八条双向数据线;
WR(低电平有效)——写输入信号;
RD(低电平有效)——读输入信号;
CS(低电平有效)——片选输入信号;
A0——地址信号;
INT——中断请求信号;
INTA(低电平有效)——中断响应信号;
CAS0-CAS2——级联信号,形成一条专用8259A总线,以便多片8259A的级联;
SP/EN——从编程/允许级联。
在缓冲方式中,可用做输出信号以控制总线缓冲器的接收和发送。
在非缓冲方式中,作为输入信号用于暗示主片还是从片;
IR0-IR7——外部中断请求输入线。
要求输入的中断请求信号是由低电平到高电平的上升沿(并坚持高电平到CPU响应时为止)或者是高电平。
8259中断矢量地址与中断信号之间的关系如表3-1所示:
表3-18259中断矢量表
中断序号
1
2
3
4
5
6
7
功能调用
08H
09H
0AH
0BH
0CH
0DH
0EH
0FH
矢量地址
20H
~
23H
24H
27H
28H
2BH
2CH
2FH
30H
33H
34H
37H
38H
3BH
3CH
3FH
说明
时钟
键盘
可用
串行口
3.1.28255芯片的内部结构及引脚
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种工作方式下工作:
方式2—双向选通输入/输出方式
8255引脚图如图3.2示,
图3.28255引脚图
D7~D0——与CPU侧连接的八条双向数据线;
A0、A1——片内寄存器选择输入信号;
PA7~PA0——A口外设双向数据线;
PB7~PB0——B口外设双向数据线;
PC7~PC0——C口外设双向数据线;
RESET——复位输入信号。
8255端口地址表如表3-2所示:
表3-28255端口地址表
信号线
寄存器
编址
IOY3
A口
60H
B口
61H
C口
62H
控制寄存器
63H
3.8254芯片的内部结构及引脚
8254是Intel公司生产的可编程计时器,具有以下功能:
(1)有3格独立的16位计数器
(2)每个计数器可按二进制或十进制计数;
(3)每个计数器可编程工作于6种分歧工作方式;
(4)8254每个计数器允许的最高计数频率为10MHZ;
(5)8254有读回命令,除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容;
图3.3是8254芯片的内部结构及引脚图,它是由与CPU的接口、内部控制电路和三个计数器组成。
8254的工作方式如下述:
(1)方式0:
计数到0结束输出正跃变信号方式。
(2)方式1:
硬件可重触发单稳方式。
(3)方式2:
频率放生器方式。
(4)方式3:
方波发生器。
(5)方式4:
软件触发选通方式。
(6)方式5:
硬件触发选通方式。
8254芯片引脚图
3.2电子钟硬件接线图
图3.4电子钟硬件接线图
4系统软件设计
软件工作流程图
主程序流程图如图4.1所示,服务程序流程图如图4.2所示。
图主程序流程图图4.2服务程序流程图
4.2需要的程序清单
电子钟的程序:
controlequ0c003h;
8253控制口
count0equ0c000h
count1equ0c001h
count2equ0c002h
md8255equ82h;
8255控制字
pa8255equ8000h
ctl8255equ8003h
outbitequ08002h;
位控制口
outsegequ08004h;
段控制口
icw1equ00010011b;
8259,上升沿中断,要写icw4
icw2equ00100000b;
中断号为20h
icw4equ00000001b;
工作在8086/88方式
ocw1equ11111110b;
只响应int0中断
cs8259aequ0d000h;
8259地址
cs8259bequ0d001h
datasegment
cntdb0
ledbufdb6dup(?
);
显示缓冲
numdb1dup(?
显示的数据
delaytdb1dup(?
)
hourdb0
minutedb0
seconddb0
ledmap:
;
八段管显示码
db3fh,06h,5bh,4fh,66h,6dh,7dh,07h
db7fh,6fh,77h,7ch,39h,5eh,79h,71h
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
moval,ah
显示一位八段管
movah,1
calldelay
shrah,1
incbx
deccl
jnzdloop
movdx,outbit
outdx,al;
displayledendp
ienterprocnear;
8253中断服务程序
pushdx
incsecond;
秒加1
moval,second
cmpal,60;
秒数与60比较
jneexit
movsecond,0;
秒清零
incminute;
分加1
moval,minute
分数与60比较
movminute,0;
分清零
inchour;
时加1
moval,hour
cmpal,24;
时数与24比较
movhour,0;
时清零
exit:
movdx,cs8259a
moval,20h
结束本次中断
popdx
iret
ienterendp
iinitproc;
初始化8259的命令字和操纵命令字
moval,icw1
outdx,al
movdx,cs8259b
moval,icw2
moval,icw4
moval,ocw1
iinitendp
start:
movax,data
movds,ax
时、分、秒清零
movminute,0
movsecond,0
cli;
清除中断标记位
movax,0
moval,76h;
8253控制字
movdx,control
movax,62500;
利用8253计数器1分频
movdx,count1
moval,ah
moval,md8255
movdx,ctl8255
movbx,4*icw2;
中断号
movax,code
shlax,4;
*16
addax,offsetienter;
中断入口地址(段地址为0)
mov[bx],ax
mov[bx],ax;
代码段地址为0
calliinit
movcnt,0;
计数值初始为0
moval,cnt
movdx,pa8255
sti;
开中断
lp:
movah,0
movcl,10
divcl
movch,ah
movbx,offsetledmap
addbx,ax
moval,[bx];
时的十位转换成显示码
movledbuf,al;
显示码存入显示缓冲区
movbx,offsetledmap
moval,ch
时的个位转换成显示码
oral,80h
movledbuf+1,al;
显示码存入后一位显示缓冲区
分的十位转换成显示码
movledbuf+2,al
分的个位转换成显示码
movledbuf+3,al
秒的十位转换成显示码
movledbuf+4,al
movledbuf+5,al
calldisplayled
jmplp
codeends
endstart
5系统调试及结果
5.1调试结果描述
本系统设计实现后进行了为期一周左右的调试。
调试包含电路板的调试和汇编程序的调试。
下面就系统调试情况作一介绍:
(1)系统对于输入有格式要求,不克不及输入不正确的时间格式。
(2)系统对于临界值进行了验证。
(3)系统预计各功能的实现。
测试结果分析
测试结果标明,电子钟系统已能初步实现主要功能,但是由于我的能力有限,开发实践经验缺乏,系统功能不是十分完善,还存在着许多问题,目前通过测试等发现
系统存在以下几个问题:
(1)
由于试验条件的限制,开机有时候不克不及自动复位。
(2)对于多次连续输入错误格式的时间值,系统可能出现异常。
(3)由于是教学模拟课题,不克不及适应实际使用中复杂的需求,只能根据其他一些简单的调查和推测来设定系统的功能和要求,不管是功能和内容都相对简单。
尚有不满足要求的地方,一些技术问题也没有克服。
6总结
课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.
经过这次课程设计,使我对8250A有了更深一步的认识。
同时使我认识到RS-232C是微型计算机与通信工业中应用最为广泛的一种串行通信接口尺度。
加深了对芯片接口可编程原理的理解,加深了对课堂上知识的巩固。
另外,通过亲手编写汇编程序的过程也增强了程序设计的能力,学到了很多知识。
回顾起课程设计,至今我仍感慨颇多。
通过本次课程设计可以说得是苦多于甜,但是可以学到很多很多的东西,同时不但可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不敷的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才干真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序测试的过程中也有利于查错。
其次,以前对于编程工具的使用还处于一知半解的状态上,但是经过几次在计算机上的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个寄存器的内容以确保程序的正确性上都有了很大程度的提高。
在设计的过程中遇到问题,可以说得是困难重重,这究竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的缺乏之处,对以前所学过的知识理解得不敷深刻,掌握得不敷牢固。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的指导下,终于迎刃而解。
在此我暗示感谢!
同时,对给过我帮忙的所有同学和各位指导老师再次暗示忠心的感谢!
参考文献
[1]
[2]
[3]
[4]牟琦,聂建萍.微机原理与接口技术.北京:
清华大学出版社
[5.北京:
清华大学出版社
[6]彭虎.微机原理与接口技术(第2版)[M].北京:
电子工业出版社.2008
[7]张弥左,王兆月,邢立军等.微型计算机接口技术.北京:
机械工业出版社
[10]戴梅萼.微型计算机技术及应用[M].北京:
清华大学
[11]沈美明.IBM-PC汇编语言程序设计[M].北京: