用8088设计电子时钟资料.docx
- 文档编号:7129603
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:22
- 大小:1.43MB
用8088设计电子时钟资料.docx
《用8088设计电子时钟资料.docx》由会员分享,可在线阅读,更多相关《用8088设计电子时钟资料.docx(22页珍藏版)》请在冰豆网上搜索。
用8088设计电子时钟资料
利用8088设计电子时钟的设计报告
一、设计任务和要求
时钟就是一种对时间进行累计的工具,即计时。
计时的本质就是计数,只不过这里的“数”的单位是时间单位,如果把一小片一小片计时单位累计起来,就可获得一段时间。
因此,使用计数器对时钟脉冲进行计数,就是时钟实现的基本原理;再用LED数码管显示出来,并设计出几个按键用于对时钟进行调整,这样,一个完整的时钟就设计完成了。
本次课程设计要求利用8253定时器设计一个具有时、分、秒显示的电子时钟,并定义一个启动键,当按下该键的时候,时钟从当前的设定值(可以在缓冲区中设置)开始走时。
同时,再定义三个按键,分别对时、分、秒进行校正。
可调整运行的电子钟具有三种工作状态:
“P.”状态、运行状态、调整状态。
(1)“P.”状态:
依靠上电进入,在此状态下,按B,C,D键均无效,按A键有效,进入运行状态。
(2)运行状态:
按奇数次A键进入,在此状态下,按B,C,D键均无效,只有按A键有效,按下A键后,退出运行状态,进入调整状态。
(3)调整状态:
按偶数次A键进入,在此状态下,按A,B,C,D键均有效。
如按下A键,则退出调整状态,进入运行状态;按下B,C,D键,则分别对时、分、秒加1,调整结束后必须按A键,即可退出调整状态,进入运行状态口
基本功能要求:
“P.”稳定地显示在LED显示器的最左端数码管上,无A键按下(在“P.”状态下,按下B,C,D键无效),则不进入电子钟的运行状态,继续显示“P.”。
按下A键后,电子钟从当前的设定值开始走时。
再次按下A键后,电子钟退出运行状态,进入调整状态,利用B,C,D键把电子钟的显示时间修改为当前实时时间,时间修改正确后可再次按下A键,电子钟则退出调整状态,进入运行状态。
二、设计方案的选择与论证
2.1方案比较
方案一:
利用AT89S52单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时:
AT89S52的PO口和P2口外接LED数码管构成显示器;P1口外接四个按键A,B,C,D构成键盘电路。
如图2-1所示。
图2-1AT89S52单片机设计方案框图
方案二:
以8088微处理器作为CPU,8253做定时计数器产生时钟脉冲,8255A做可编程并行接口,接LED显示时钟和扩展调整按键。
如图2-2所示。
图2-2以8088为CPU设计方案框图
2.2方案选择
就方案一用单片机来设计电子时钟,从主要芯片耗材上来说比方案二要少,但是用单片机来设计电子时钟,需要做的其他模块,如单片机最小系统,相对方案二要复杂很多,而且就程序上的编写来说,方案二也比方案一简单。
因此,本设计采用方案二来做。
三、程序设计计算与分析
3.1实现时钟计时的基本方法
利用8253的16位可编程定时/计数器及8088中断系统实现时钟计数。
(1)计数初值计算:
选用8253的定时/计数器1,把定时器设为工作方式2.输入250kHz,输出200Hz,定时时间为5毫秒,则计数溢出200次即得时钟计时最小单位一秒.
(2)采用中断方式进行fly出次数累计,计满200次为秒计时(1秒);
(3)从秒到分和从分到时的计时是通过累加和数值比较实现。
8253的初始化程序段:
设置8253,t1,方式2,输入250kHz,输出200Hz。
计数初值计算公式t=1/f*TC,t为设定时间,TC为计算初值。
movdx,233h
mova1,74h;设置控制字
outdx,al
movdx,231h
movax,1250;设置初值
outdx,al
moval,ah
outdx,al
3.2电子钟的时间显示
电子钟的时钟时间在六位数码管上进行显示,因此,在内部RAN中设置显示缓冲区共6个单元。
电子钟设置4个按键通过程序控制来完成电子钟的启、停及时间调整
A键控制电子钟的启、停:
B键调整时
C键调整分
D键调整秒
3.3硬件设计电路图
3.3.1主电路模块
主电路模块由8088,8253,8255A构成,电路如图所示。
3-3-1主电路模块电路
3.3.2LED显示模块
显示部分由6个LED组成,用8255A的A口作LED的段码输出口,B口作六个LED数码管的位控输出线。
电路如图3-3-2
3-3-2显示模块电路
3.3.3按键模块
四个按键A,B,C,D分别完成各自功能,由8255A的C口控制。
电路如图3-3-3
3-3-3按键模块电路
3.3.4总体电路图
总体电路图见附录l
3.4硬件设计所用芯片介绍
1.8088的芯片引脚介绍
在本系统中,8088工作在最小模式下。
负责对8255A,8253等芯片进行工作方式控制和数据处理,对时钟信号进行响应并控制LED数码管进行显示。
1.AD7~AD0(双向。
三态)为低8位地址/数据的复用引脚线。
采用分时的多路转换方法来实现对地址线和数据线的复用。
在总线坐骑的T1状态。
可见对复用信号使用时间来加以划分的。
它要求在T1状态线出现低8位地址时,用地址锁存器加以锁存。
这样在随后的T状态,即使这些线用作数据线,而低8位地址线的地址在个体却被记录保存下来,并送到地址总线上。
在DMA方式时,这些引线被浮置为高阻状态。
2.A15~A8(输出,三态)为8位地址线。
在读写存储器或外设端口的总线周期内,都作为地址线输出高8位地址。
在DMA方式时,这些引线被浮置为高阻。
3.A19/S6~A16/S3(输出。
三态)为地址/状态复用引脚线,在总线周期的T1状态,这些线表示为最高4位的地址线,在总线周期的其他T状态,这些线用作提供状态信息,同样需要地址锁存器对T1状态出现的最高4位地址加以锁存。
状态信息S6总是为低电平,S5反映当前允许中断标志的状态。
S4与S3一起指示当前哪一个段寄存器被使用。
在DMA方式时,这些引线被浮置为高阻。
4.RD(输出,三态)读信号,当其有效时表示正在对存储器或I/O端口进行读操作。
若IO/M为低电平,表示读取存储器的数据,若IO/M为高电平,表示读取I/O端口的数据。
在DMA方式时,这些引线被浮置为高阻。
5.READY(输入)为准备就绪信号。
低电平有效。
本信号由等待指令WAIT来检查。
我们知道当CPU执行WAIT指令时,CPU处于等待状态,一旦检测到TEST号为低,则结束等待状态,继续执行WAIT指令下面的指令。
6.TEST(输入)
为检测信号,低电平有效。
本信号由等待指令WAIT来检查。
我们知道当CPU执行WAIT指令时,CPU处于等待状态,一旦检测到TEST号为低,则结束等待状态,继续执行WAIT指令下面的指令。
7.INTR(输入)可屏蔽中断请求信号,高电平有效。
CPU在执行每条指令的最后一个T状态时,去采样INTR信号,若发现有效,而中断允许标志IF有为1,则CPU在结束当前指令周期后响应中断请求,转去执行中断处理程序。
8.NMI(输入)非屏幕中断请求信号,为一个边缘触发信号,不能由软件加以屏蔽。
只要在NMI线上出现由低到高的变化信号,则CPU就会在当前指令中,转去执行给屏蔽中断处理程序。
9.RESET(输入)
复位信号,高电平有效,复位时该信号要求维持高电平值到4个时钟周期,若使初次加电,则高电平信号至少要保持50us,复位信号的到来,将立即结束CPU的当前操作,内部寄存器恢复到初始状态。
当RESET信号从高电平回到低电平时,即复位后进入重新启动时,CPU执行从内存FFFF0H处的指令,通常在FFFF0H存放一条无条件转移指令,转移到系统程序的实际入口处。
这样只要系统被复位启动,就自动进入系统程序。
10.CLK(输入)时钟信号,它为CPU和总线控制电路提供基准时钟,对时钟信号要求:
1/3周期为高电平,2/3周期为低电平。
8088的标准时钟频率为5MHz。
11.电源和地VCC为电源引线,单一的为+5V电源。
引脚为1和20为两条GND线,要求均要接地。
12.IO/M访问存储器或I/O端口的控制信号。
若IO/M为高电平,则访问的是I/O端口;若IO/M为低电平,则访问的是存储器。
13.WR写信号。
当其有效时表示CPU正在对存储器或I/O端口进行写操作,具体对谁进行写操作,有IO/M信号决定。
本信号在总线周期的T2,T3。
TW状态有效。
在DMA方式时,此线被浮置为高阻。
2.8253芯片的内部结构及引脚
8253有3个独立的十六位计数器,计数频率范围为0-2.6MHz。
它所有的计数方式和操作方式都通过编程控制。
8253的功能用途是:
(1)延时中断;
(2)可编程频率发生器;(3)事件计数器;(4)二进倍频器;(5)实时时钟;(6)数字单稳;(7)复杂的电机控制器。
8253引脚图以及功能说明:
图3-4-18253引脚
3.8255A芯片的内部结构及引脚
8255A可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A,B,C三个并行接口,用+5V单电源供电,能在以下三种工作方式下工作:
方式0-基本输入/输出方式,方式1-选通输入/输出方式,方式2-双向选通输入/输出方式。
8255A引脚图如图4-6所示,各引脚功能如下:
图3-4-28255A引脚
D7-DO—与CPU连接的双向数据线;
WR(低电平有效)—写输入信号;
RD(低电平有效)—读输入信号;
CS(低电平有效)—片选输入信号:
A0,A1—片内寄存器选择输入信号;PAO—PA7A口外PA7-PAOA口外设双向数据线;
PB7-PBOB口外设双向数据线;
PC7-PCOC口外设双向数据线
RESET—复位输入信号
3.5、软件设计
3.5.1主程序流程框图
图3-5-1主程序流程框图
3.5.2键扫子程序流程框图
如图3-5-2所示
图3-5-2键扫子程序流程框图
3.5.3中断处理程序流程框图
图3-5-3中断处理程序流程框图
3.6电子时钟总体程序
总程序见附录2
四、总结及体会
随着计算机技术的飞速发展,微机接口技术作为计算机技术的一门学科,它是一门应用性、综合性、实践性都较强的课程,通过本次课程设计过程,我基本熟悉和掌握了微机系统的软件、硬件设计的方法、设计步骤,是一次微机开发应用方面的初步训练;通过本次课程设计使我熟练掌握了微机系统与接口扩展电路的设计方法,并熟练应用8088汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。
通过本次设计,不但使我的专业知识得到巩固和开拓,而且能使我将所学与实践联系起来,我对所学的知识有了更深刻的了解和掌握,使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。
计算机技术的发展日新月异,其接口技术应用十分广泛,我不但要经常跟踪专业新技术、新动态,时刻走在时代的前列;还要注重积累经验,积累一些通用俗语,才能使自己慢慢地融入专业之中,更快地进入工作角色。
此外,还要注重养成终身的学习习惯,扩大自己的知识面,才能促进自己不断进步。
有了这次的设计经验,在以后的学习设计实践过程中,我会继续努力。
五.附录
附录1
附录2
电子时钟程序
;8255A用作读键盘信息;8253提供时钟信号;LED采用动态显示;8088工作在最小模式下
stack50
data;数据段
bufdb0,0,0,0,0,0;显示缓冲区
leddb3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,80h;数码管笔形码0,1等
hourdb08h;时缓冲单元
mindb30h;分缓冲单元
secdb30h;秒缓冲单元
msecdb0;毫秒缓冲单元
dexdb0;笔形码索引值
keytabdw57FH,5BFH,5DFH,5EFH,5FEH,5FDH,5FBH,5F7H
dw67FH,6BFH,6DFH,6EFH,6FEH,6FDH,6FBH,6F7H
;键盘编码表
keyenddw7ffh
agekeydb12;键龄
oldkeydw0;键码字保存
keynumdb0;键号
keyokdb0;按键响应标记
statedb0;系统状态,0一运行态;1一修改态
keymddb0;修改键标记,B修改时;C修改分;D修改秒
stimedb0;时间设定单元,保存键盘输入的时间
代码段
code
;主程序:
;实现8253的设置,中断向量的设置,检测系统大键盘信号,有按键就结束程序返回系统。
mainprocfar
start:
movax,data;设置数据段和附加段
movds,ax
moves,ax
cli;关中断
;设置8253,计数器1,方式2,输入250kHz,输出200Hz
movdx,233h
mova1,74h;设置控制字
outdx,al
movdx,231h
movax,1250;设置初值
outdx,al
moval,ah
outdx,al
;保存原中断向量
moval,Obh
movah,35h
int21h
pushes;保护现场
pushbx
pushds
;设置新中断向量
movdx,offsetintpro
movax,segintpro
movds,ax
mova1,Obh
movah,25h
int21h
;打开中断屏蔽
popds
ina1,21h
andal,Of7h
out21h,a1
sti;开中断
;等持按键,返回系统
wait:
movah,l
intlbh
jzwait
;回复中断向量
popdx;恢复现场
popds
mova1,Obh
movah,25h
int21h
;退出程序,返回系统
movax,4e00h
int21h
;中断一f程序:
;完成时钟处理、键盘监控和显示功能
intproprocnear
pushds;保存寄存器
pushax
pushcx
ax
movax,data;设置数据段和代码段寄存器
movds,ax
;不是修改状态才走时钟
nush
;时钟处理模块,以5毫秒为单位调整时、分秒。
elk:
incmsec;毫秒加1
moval,msec
addal,l
daa
movsec,al
cmpsec,60h
jnznext
movsec,0
moval,min
addal,l
daa
movmin,al
cmpmin,60h
jnznext
movmin,0
moval,hour
addal,l
daa
movhour,al
cmphour,24h
jnznext
movhour,0
;键盘监控模块
next:
decagekey
jznextl
jmpdsp
nextl:
movagekey,12
movdx,223h;设置PA输出,PB输入
mova1,82h;设置8255A控制字
outdx,al
mova1,0;A口输出低电平,读B口
movdx,220h
outdx,al
movdx,221h
inal,dx
movbh,al
movdx,223h;设置PB输出,PA输入
mova1,90h;设置8255A控制字
outdx,al
moval,0
movdx,22lh
outdx,al
movdx,220h
inal,dx
movbl,al
andbx,7ffh;去除键码中无用位数
cmpbx,7ffh
jnzkeyon;有按键则进入按键处理
movkeyok,0;无按键则清除响应标志退出按键处理
jmpdsp
keyon:
cmpbx,oldkey
jzkeyonl;已经去抖动则直接处理按键
movagekey,4;有新按键则设置键龄退出中断
movkeyok,0
movoldkey,bx
jmpdsp
keyonl:
cmpkeyok,l
jnzII;按键已响应则退出键盘处理
jmpdsp
II:
movkeyok,l;设立按键响应标记
std
leadi,keyend;指向键码表
movax,bx;读取键号,地址递减,cx的值为键号
movcx,17;串长送寄存器cx
repnescasw;不相等继续查找,一旦相等退出
jekeyon2
jmpdsp
keyon2:
movkeynum,cl;保存键号
cmpstate,0;系统在修改态否?
jnekeyon3;跳到修改态的处理
cmpkeynum,0ah;为A键否
jnekeyb
movkeymd,l;作a键修改标志
movhour,0aah;时显示为一
movstate,l;进入修改态
jmpdsp
keyb:
cmpkeynum,Obh;为B键否
jnekeyc
movkeymd,2;作b键修改标志
movmin,0aah;分钟异示为..
movstate,l;进入修改态
jmpdsp
keyc:
cmpkeynum,Och;为c键否
jekeycl
jmpdsp
keycl:
movkeymd,3;作c键修改标志
movsec,0aah
movstate,l;秒显示为..
jmpdsp
keyon3:
cmpkeynum,9;在修改态,判断是否为数字键
jbekeys;<=9则认为是数字键
jmpkeyen;否则判断是否为确定键
keyn:
moval,stime;滋取输入时间,十进制格式
movc1,4
shlal,cl;在确定以前最后输入的两个十进制数有效
oral,keynum
movstime,al
jmpdsp
keyen:
cmpkeynum,Ofh;处理f键
jekeyenl
jmpdsp
keyenl:
movstate,0;恢复到运行态
cmpkeymd,l;将修改内容送小时单元
jnekeyen2
movkeymd,0;清除修改小时标志
cmpstime,24h;判断输入时间是否>=24
jbkey-3
movhour,0;大于24时,输入为0
movstime,0;清除时间单元
jmpdsp
key-3:
moval,stime
movhour,al;小于24时,输入设定时间
movstime,0;清除时间单元
jmpdsp
key-2:
cmpkeymd,2;将修改分钟标志
jnekeyen4
movkeymd,0;请除修改分钟标志
cmpstime,60h
jbkeyen5
movmin,0
movstime,0
jmpdsp
keyen5:
moval,stime
movmin,al
movstime,0
jmpdsp
keyen4:
cmpkeymd,3;将修改秒
jnedsp
movkeymd,0
cmpstime,60h;判断输入时间是否>=60
jbkeyen6
movsec,0;大于60时,输入为0
movstime,0
jmpdsp
keyen6:
moval,stime
movsec,al
movstime,0
jmpdsp
;显示模块
dsp:
movsi,0;将时、分、秒信号拷贝到显示缓冲区
movc1,4
movch,2
moval,hour
lpl:
rolal,cl
movah,al
anda1,Ofh
movbuf[si],al
moval,ah
movmin
decch
jazlpl
movch,2
moval,min
lp2:
rolal,cl
movah,al
anda1,Ofh
movbuf[si],al
moval,ah
movsec
decch
jnzlp2
movch,2
moval,sec
lp3:
rolal,cl
movah,al
anda1,Ofh
movbuf[si],al
moval,ah
movhour
decch
jnzlp3
movcl,dex;显示数码管的某一位
moval,l
rolal,cl
movdx,210h
outdx,al
andax,0
moval,dex
movsi,ax
movbl,buf[si]
movbh,0
moval,led[bx]
movdx,211h
outdx;al
incdex
cmpdex,6
jneexit
movdex,0
exit:
mova1,20h
out20h,a1
popdx;现场恢复
popcx
popax
popds
iret;中断返回
intproendp
endstart
六.参考文献
1.李顺增,吴国东,赵河明等.微机原理及接口技术.北京:
机械工业出版社,2006;
2.戴梅馨,史嘉权.微型计算机技术及应用(第4版)北京:
清华大学出版社,2008;
3孙德文.微型计算机技术.高等教育出版社,2007;
4.赵明富.黄丽雯,李文杰.微机原理及接口技术实验.重庆工学院电子信息与自动化学院,2006;
5侯伯亨,李伯成微机原理与接口技术.西安电子科技大学出版社2003;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 8088 设计 电子 时钟 资料
![提示](https://static.bdocx.com/images/bang_tan.gif)