计时数字时钟.docx
- 文档编号:17051887
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:41
- 大小:185.05KB
计时数字时钟.docx
《计时数字时钟.docx》由会员分享,可在线阅读,更多相关《计时数字时钟.docx(41页珍藏版)》请在冰点文库上搜索。
计时数字时钟
合肥学院
计算机科学与技术系
课程设计报告
2008~2009学年第一学期
课程
微型计算机原理与接口技术
课程设计名称
计时数字时钟
学生姓名
周杰
学号
0604032033
专业班级
06网络工程
(2)
指导教师
肖连军老师
2009年2月
计时时钟
一、题义分析及解决方案
1.题义与需求分析
需要一个八位LED数码管显示器用于显示时间(分,秒);显示的初值在启动实验箱运行程序后输入;按任意键后时间开始走动,每隔一秒改变一次显示值(每60秒为一分钟,60分一小时);能同时显示分秒共四位;秒钟为60时,能自动复位到零,并使分钟加一;分钟为60时,能自动复位到零。
LED数码管显示器循环显示分秒的动态值。
现显示过程中,按A键可重新置初值;按B键暂停时间,再按一次从当前时间开始计时;E、F键分别清除分钟、秒钟对应两位。
最后,还有一个问题就是如何控制计时信息能够准确无误的显示出来,需要解决的就是选择什么样的外设,即通过什么样的外设来显示时间?
以上这些问题都是我们设计计时时钟需要解决的,现列举如下:
分、秒时钟怎样形成;计时控制;输出显示接口;外设。
2解决问题的方法及思路
1)硬件部分
单片机工作在单任务状态,时间充裕,速度不是主要矛盾,所以用软件实现分、秒时钟的形成和计时控制,以减少硬件开销。
接口用硬件实现。
根据实验平台的具体情况,本课程设计选用了8279A芯片、LED发光二极管、十六进制小键盘。
由于8279A的输出电流与LED不匹配的问题,需要驱动电流,本实验中选择74LS240。
2)软件部分
计时器的初始时间设置:
启动单片机并成功运行程序后在十六进制开关中输入初值。
错误输入时显示ERROR信息。
计时:
首先将秒位计时加1,判断秒位是否为60,若不是,则直接显示时间;若是,则将秒位置为00,且分位加1;分位同上。
显示:
8279A芯片内部有一个显示RAM和一个FIFORAM,可以暂存从小键盘中读出的数据,同时可以将内存中的数据暂存到显示RAM中,简化了程序复杂度。
每次将各个位要显示的数据处理好后到换码表中找到对应值,初始化8279后将值送到数据口即实现显示的目的。
1秒时间的设定:
1秒的等待时间由循环程序执行的时间来决定,经多次实验后来估计循环程序执行的次数。
3)功能扩展
考虑到实际情况,本实验除了完成任务书要求的分秒功能外,还增加了天和小时的功能。
二、硬件设计
1.8279A
1)8279A在本设计中的作用
在本设计中用8279A芯片控制键盘输入和LED显示。
2)8279A的功能分析
a)8279A主要特性
8279A芯片是一种通用的可编程序的键盘/显示接口器件,单个芯片就能完成键盘输入和LED显示控制两种功能。
可与任何8位机接口。
8279A芯片包括键盘输入和显示输出两个部分。
若采用8279作为键盘/显示器接口,则可以实现对键盘、显示器自动扫描,8279主要是管理键盘输入和显示器输出的。
8279可编程键盘显示器接口芯片具有动态显示驱动电路简单、不占用CPU的时间、可自动进行键盘扫描、与计算机接口方便、编程容易、系统灵活等特点.当今已成为设计计算机应用系统,特别是实时性较高的测控系统的首选器件之一。
b)8279A的内部结构
图2-18279A的内部结构
图中,IRQ:
中断请求输出线,DB0~DB7:
双向数据总路线(传送命令、数据、状态),
、
:
读写控制输入端,RESET:
复位输入端,CLK:
时钟输入端,
:
片选,C和/D(A0):
片内寄存器选址,OUTA0~A1、OUTB0~B3:
8位显示输出端,
:
熄灭显示输出端,SL0~SL3:
公用扫描输出线,RL0~RL7:
键盘回馈输入线,SHIFT:
抵挡键输入线,CNTL/STB:
控制/选通输入线。
另外,8279的键盘接口部分内部有一个8×8位先进先出的堆栈(FIFO),用来存放键盘输入代码,显示器接口部分内部有一个16×8位显示RAM,用来显示段数据,能为16位LED显示器(或其它显示器)提供多路扫描接口。
c)8279A的引脚信号和功能
8279可编程键盘显示器接口芯片具有动态显示驱动电路,不占用CPU的时间、可自动进行键盘扫描、与计算机接口方便、编程容易、系统灵活等特点。
8279是可编程的键盘/显示接口芯片。
它既具有按键处理功能,又具有自动显示功能,在单片机系统中应用很广泛。
8279内部有键盘FIFO(先进先出堆栈)/传感器,双重功能的8×8=64BRAM,键盘控制部分可控制8×8=64个按键或8×8阵列方式的传感器。
该芯片能自动消抖并具有双键锁定保护功能。
显示RAM容量为16×8,即显示器最大配置可达16位LED数码显示。
d)8279的命令字及其格式
8279有三种工作方式:
键盘工作方式、显示工作方式和传感器工作方式。
键盘工作方式:
双键互锁和N键轮回。
双键互锁是指当有两个以上按键同时按下时,只能识别最后一个被释放的按键,并把其键值送入内部FIFORAM中。
N键轮回是指当有多个按键同时按下时,所有按键的键值均可按扫描顺序依次存入FIFORAM中。
显示工作方式:
是指CPU输入至8279内部FIFORAM的数据的输出格式,有8个字符左端入口显示、16个字符左端入口显示、8个字符右端入口显示、16个字符右端入口显示四种方式。
传感器方式:
是指扫描传感器阵列时,一旦发现传感器的状态发生变化就置位INT向CPU申请中断。
选择不同的工作方式均是通过CPU对8279送入命令来进行控制。
8279共有8种命令,命令寄存器为8位,其中D7~D5为命令特征位,D4~D0为命令的控制位。
CPU对8279写入的命令数据为命令字,读出的数据为状态字。
8279共有八条命令,其功能及命令字格式分述如下。
(1)键盘/显示方式设置命令字
命令格式:
D7D6D5D4D3D2D1D0
000DDKKK
其中:
D7、D6、D5=000为方式设置命令特征位。
DD(D4、D3):
用来设定显示方式,如表2-2所示。
D4
D3
显示方式
0
0
8个字符显示,左端入口
0
1
16个字符显示,左端入口
1
0
8个字符显示,右端入口
1
0
16个字符显示,右入口
表2-2显示方式选择
所谓左入口,即显示位置从最左一位(最高位)开始,以后逐次输入的显示字符逐个向右顺序排列;所谓右入口,则是显示位置从最右一位(最低位)开始,以后逐次输入显示字符时,已有的显示字符依次向左移动。
KKK(D2、D1、D0):
用来设定七种键盘/显示扫描方式,如表2-3所示。
D2
D1
D0
键盘/显示扫描方式
0
0
0
编码扫描键盘,双键锁定
0
0
1
译码扫描键盘,双键锁定
0
1
0
编码扫描键盘,N键轮回
0
1
1
译码扫描键盘,N键轮回
1
0
0
编码扫描传感器矩阵
1
0
1
译码扫描传感器矩阵
1
1
0
选通输入,编码显示扫描
1
1
1
选通输入,译码显示扫描
表2-3键盘/显示扫描方式
(2)时钟编程命令
命令格式:
D7D6D5D4D3D2D1D0
001PPPPP
其中:
D7、D6、D5=001为时钟命令特征位。
PPPPP(D4、D3、D2、D1、D0)用来设定外部输入CLK时钟脉冲的分频系数N。
N取值范围为2~31。
如CLK输入时钟频率为2MHZ,PPPPP应被置为10100(N=20),才可获得8279内部要求的100KHZ的时钟频率。
(3)读FIFO/传感器RAM命令
命令格式:
D7D6D5D4D3D2D1D0
010AIXAAA
其中:
D7、D6、D5=010为读FIFO/传感器RAM命令特征位。
该命令字只在传感器方式时使用。
在CPU读传感器RAM之前,必须用这条命令来设定所读传感器RAM中的地址。
AAA(D2、D1、D0)为传感器RAM中的八个字节地址。
AI(D4)为自动增量特征位。
当AI=1时,每次读出传感器RAM后地址自动加1使地址指向下一个存储单元。
这样,下一个数据便从下一个地址读出,而不必重新设置读FIFO/传感器RAM命令。
在键盘工作方式中,由于读出操作严格按照先入先出顺序,因此,不需使用这条命令。
(4)读显示RAM命令
命令格式:
D7D6D5D4D3D2D1D0
011AIAAAA
其中:
D7、D6、D5=011为读显示RAM命令字的特征位。
该命令字用来设定将要读出的显示RAM地址。
AAAA(D3、D2、D1、D0)用来寻址显示RAM中的存储单元。
由于位显示RAM中有16个字节单元,故需要4位寻址。
AI(D4)为自动增量特征位。
AI=1时,每次读出后地址自动加1,指向下一地址。
(5)写显示RAM命令
命令格式:
D7D6D5D4D3D2D1D0
100AIAAAA
其中:
D7、D6、D5=100为写显示RAM命令字的特征位。
在写显示RAM之前用这个命令字来设定将要写入的显示RAM地址。
AAAA(D3、D2、D1、D0)为将要写入的显示RAM中的存储单元地址。
AI(D4)为自动增量特征位。
AI=1时,每次写入后地址自动加1,指向下一次写入地址。
(6)显示禁止写入/消隐命令
命令格式:
D7D6D5D4D3D2D1D0
101XIW/AIW/BBL/ABL/B
其中:
D7、D6、D5=101为显示禁止写入/消隐命令特征位。
IW/A、IW/B(D3、D2)为A、B组显示RAM写入屏蔽位。
当A组的屏蔽位D3=1时,A组的显示RAM禁止写入。
因此,从CPU写入显示器RAM数据时,不会影响A的显示。
这种情况通常在采用双4位显示器时使用。
因为两个四位显示器是相互独立的。
为了给其中一个四位显示器输入数据而又不影响另一个四位显示器,因此必须对另一组的输入实行屏蔽。
BL/A、BL/B(D1、D0)为消隐设置位。
用于对两组显示输出消隐。
若BL=1,对应组的显示输出被消隐。
当BL=0,则恢复显示。
(7)清除命令
命令格式:
D7D6D5D4D3D2D1D0
110CDCDCDCFCA
其中:
D7、D6、D5=110为清除命令特征位。
清除显示RAM方式如表2-4所示。
D4
D3
D2
清除方式
1
0
×
将全部显示RAM清为00H
1
1
0
将全部显示RAM置为20H,A组输出0010,B组输出0000
1
1
1
将全部显示RAM置为FFH
0
×
×
D0=0不清除,D0=1按上述方法清除
表2-4显示RAM清除方式
CF(D1)用来置空FIFO存储器,当CF=1时,执行清除命令后,FIFORAM被置空,使INT输出线复位。
同时,传感器RAM的读出地址也被置为0。
CA(D0)为总清的特征位。
它兼有CD和CF的联合效能。
在CF=1时,对显示的清除方式由D3、D2的编码决定。
显示RAM清除时间约需160us。
在此期间状态字的最高位Du=1,表示显示无效。
CPU不能向显示RAM写入数据。
(8)结束中断/错误方式设置命令
命令格式:
D7D6D5D4D3D2D1D0
111EXXXX
其中:
D7、D6、D5=111为该命令的特征位。
此命令有两种不同的作用。
①作为结束中断命令。
在传感器工作方式中使用。
每当传感器状态出现变化时,扫描检测电路就将其状态写入传感器RAM,并启动中断逻辑,使INT变高,向CPU请求中断,并且禁止写入传感器RAM。
此时,若传感器RAM读出地址的自动递增特性没有置位(AI=0),则中断请求INT在CPU第一次从传感器RAM读出数据时就被清除。
若自动递增特征已置位(AI=1),则CPU对传感器RAM的读出并不能清除INT,而必须通过给8279写入结束中断/错误方式设置命令才能使INT变低。
因此,在传感器工作方式中,此命令用来结束传感器RAM的中断请求。
②作为特定错误方式设置命令。
在8279已被设定为键盘扫描N键轮回方式以后,如果CPU给8279又写入结束中断/错误方式设置命令(E=1),则8279将以一种特定的错误方式工作。
这种方式的特点是:
在8279的消抖周期内,如果发现多个按键同时按下,则FIFO状态字中的错误特征位S/E将置1,并产生中断请求信号和禁止写入FIFORAM。
上述八种用于确定8279操作方式的命令字皆由D7D6D5特征位确定,输入8279后能自动寻址相应的命令寄存器。
因此,写入命令字时唯一的要求是使数据选择信号A0=1。
e)8279的状态字及其格式
8279的FIFO状态字,主要用于键盘和选通工作方式,以指示FIFORAM中的字符数和有无错误发生。
其格式为:
D7D6D5D4D3D2D1D0
DUS/EOUFNNN
其中:
Du(D7)为显示无效特征位。
当Du=1表示显示无效。
当显示RAM由于清除显示或全清命令尚未完成时,Du=1,此时不能对显示RAM写入。
S/E(D6)为传感器信号结束/错误特征位。
该特征位在读出FIFO状态字时被读出。
而在执行CF=1的清除命令时被复位。
当8279工作在传感器工作方式时,若S/E=1,表示传感器的最后一个传感器信号已进入传感器RAM;而当8279工作在特殊错误方式时,若S/E=1则表示出现了多键同时按下错误。
O、U(D5、D4)为超出、不足错误特征位。
对FIFORAM的操作可能出现两种错误:
超出或不足。
当FIFORAM已经充满时,其它的键盘数据还企图写入FIFORAM,则出现超出错误,超出错误特征位O(D5)置1;当FIFORAM已经置空时,CPU还企图读出,则出现不足错误,不足错误特征位U(D4)置1。
F(D3)表示FIFORAM中是否已满标志,若F=1表示已满。
NNN(D2、D1、D0)表示FIFORAM中的字符数据个数。
f)数据输入/输出格式
对8279输入/输出数据不仅要先确定数据地址口,而且数据存放也要按一定格式,其格式在键盘和传感器方式有所不同。
(1)键盘扫描方式数据输入格式
键盘的行号、列号及控制键格式如下:
图2-2键盘的行号、列号及控制键格式
控制键CNTL、SHIFT为单独的开关键。
CNTL与其它键连用作特殊命令键,SHIFT可作上、下挡控制键。
(2)传感器方式数据输入格式
此种方式8位输入数据为RL0~RL7的状态。
格式如下:
D7D6D5D4D3D2D1D0
RL7RL6RL5RL4RL3RL2RL1RL0
2.74LS138译码器
1)74LS138译码器在本设计中的作用
扫描计数器采用编码工作方式
2)74LS138译码器的功能分析
74LS138是3/8译码器,即对3个输入信号进行译码。
得到8个输出状态。
G1,G2A,G2B,为数据允许输出端,G2A,G2B低电平有效。
G1高电平有效。
A,B,C为译码信号输出端,Y0~Y7为译码输出端,低电平有效。
图2-374LS138图2-4功能表
3)74LS138译码器的技术参数
极限值
电源电压-----------------------------------------------------7V
输入电压74LS138---------------------------------------------7V
工作环境温度74LS138------------------------------------0~70℃
贮存温度-------------------------------------------65~150℃
3.74LS240
1)74LS240译码器在本设计中的作用
本设计实验中主要是为增加LED的驱动电流
2)74LS240译码器的功能分析
74LS240TTL八反相三态缓冲器/线驱动器
引出端符号:
1A,2A输入端
三态允许端(低电平有效)
1Y~8Y输出端
图2-574LS240逻辑图
输入
输出
A
Y
L
L
H
L
H
X
H
L
Z
表2-574LS240功能表
3)74LS240译码器的技术参数
极限值:
电源电压………………………………………….7V
输入电压………………………………………….5.5V
输出高阻态时高电平电压………………………….5.5V
工作环境温度
74LS240………………………………….0~70℃
存储温度………………………………………….-65~150℃
4.小键盘
1)小键盘在本设计中的作用
本设计中,小键盘用于输入二进制数字。
2)小键盘的功能分析
通常使用的键盘是矩阵结构的。
对于4×4=16个键的键盘,采用矩阵方式只要用8条引线和2个8位端口便完成键盘的连接。
如图,这个矩阵分为4行4列,如果键5按下,则第1行和第1列线接通而形成通路。
如果第1行线接低电平,则键5的闭合,会使第1列线也输出低电平。
矩阵式键盘工作时,就是按行线和列线的电平来识别闭合键的。
图2-54×4键盘矩阵图
行扫描法识别按键的原理如下:
先使第0行接低电平,其余行为高电平,然后看第0行是否有键闭合。
这是通过检查列线电位来实现的,即在第0行接低电平时,看是否有哪条列线变成低电平。
如果有某列线变为低电平,则表示第0行和此列线相交位置上的键被按下;如果没有任何一条列线为低电平,则说明第0行没有任何键被按下。
此后,再将第1行接低电平,检测是否有变为低电平的列线。
如此重复地扫描,直到最后一行。
在扫描过程中,当发现某一行有键闭合时,也就是列线输入中有一位为0时,便退出扫描,通过组合行线和列线即可识别此刻按下的是哪一键。
实际应用中,一般先快速检查键盘中是否有键按下,然后再确定按键的具体位置。
为此,先使所有行线为低,然后检查列线。
这时如果列线有一位为0,则说明必有键被按下,采用扫描法可进一步确定按键的具体位置。
5.七段LED显示器
1)LED作用
LED发光二级管(Light-EmittingDiode),在本设计中采用7段数字发光二级管,做为终端显示。
显示时间的分秒。
2)LED功能分析
物理构造:
LED发光二级管,采用砷化镓、镓铝砷、和磷化镓等材料制成,其内部结构为一个PN结,具有单向导电性。
图2-6LED结构图
数字成像:
将七个发光管进行组合,排列成数字图形8,再根据需要控制七个管的亮与灭,即可显示出定义数字。
字型
ABCD
abcdefgbp
OX
0
0000
11111100
3f
1
0001
01100000
06
2
0010
11011010
5b
3
0011
11110010
4f
4
0100
01100110
66
5
0101
10110110
6d
6
0110
00111110
7d
7
0111
11100000
07
8
1000
11111110
7f
9
1001
11100110
6f
A
1010
11101110
77
B
1011
00111110
7c
C
1100
10011100
39
D
1101
01111010
5e
E
1110
10011110
79
F
1111
10001110
71
表2-6LED数码表
3)LED技术参数
表2-7LED技术参数表
6.硬件总逻辑图及其说明
图2-7硬件接线图
图中8279的地址由
和A0决定,故数据口地址为7FFEH,命令口地址为7FFFH。
所接的16个按键,扫描线接在74HC138的译码输出端
和
上,当
为0(SL2SL1SL0=000)时,扫描第1列按键,当
为0(SL2SL1SL0=001)扫描第2列按键,故0~7号按键的键值为00H~07H,8~15号按键键值为08H~0FH。
当某一按键被按下后,键值就自动进入缓冲区,当8279内部RAM不空时由INT输出高电平告知CPU取走,故INT连接CPU的中断输入需加一反向器。
8279键盘配置最大为8×8,若要配置64个按键,其它列扫描线可分别连至
至
上,形成8行8列的按键扫描电路。
图中显示部分段选码由8279的OUTA3~OUTA0、OUTB3~OUTB0通过驱动器74LS240提供,位选码由SL2~SL0经3-8译码器通过驱动器74LS240提供。
三、控制程序设计
1.控制程序设计思路
1)主程序部分
本程序主要实现的功能包括时间初值设置,输入错误则会提示ERROR,并按任意键重新输入。
正确输入完按任意键开始计时。
A、B、C、D、E、F键为功能键,用于时间重置,时间暂停及清除时分秒各位。
程序开始条件查询是否有按键,当按键按下,8279状态字低三位为此时按键按下次数,由此判断是否从8279数据端口读入数据,当有按键按下时,从8279读数据到内存中,同时COUNT变量加一,当COUNT增加到9时,停止检查是否有按键按下。
CALLSCAN_KEY;键扫描
JNCSTART2;没有按键
XCHGAL,KEYCOUNT
INCAL
CMPAL,9
JZSTART4
XCHGAL,KEYCOUNT
CALLKEY_NUM;键值转换为键号
STOSB
数据存入内存的HOUR,MIN,SED共八个字节单元中,每个单元对应一个数据,首先判断输入的天、时、分、秒是否在合理的范围内,如果不在,显示出错信息,并跳回到程序初始化部分,等待重新输入。
如果输入正确,则开始计时,每次显示前将数据从内存读到不同的寄存器中,如将秒钟两位读到AX中,比较AL是否到10,没有则跳出判断,直接从内存中读出时间显示;若到10了,则将秒钟个位清零,并对AH加一后再写回到内存中。
如此类推,判断分钟时钟各个位。
应注意的是,在判断时钟个位时,既要比较其是否到4,又要判断是否到十,到十则清零,十位加一;到四则继续判断十位是否到2,若十位到2,清除时钟两位。
判断天数时,规定天数的最大值为30,天数个位到十清零,十位加一,天数十位大于2且个位大于0则出错。
必须保证天数十位小于3,天数个位小于10.或者天数个位为10,个位为0.此时若天数加一,则天数的个位,十位同时清零。
;秒钟进一,比较秒钟个位是否到10
MOVAL,SEC[1];秒钟SEC[0],SEC[1]单元
INCAL
MOVSEC[1],AL
CMP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计时 数字 时钟
![提示](https://static.bingdoc.com/images/bang_tan.gif)