合肥学院
计算机科学与技术系
微机原理与接口技术课程
设计报告
2009~2010 学年第 1 学期
课
程
微型计算机原理与接口技术
课 程 设 计 名 称
具有记忆功能的电子时钟
学 生 姓 名
学
号
专 业 班 级
指 导 教 师
任大元
0704011003
07 计本 1 班
肖连军 老师
2009 年 1 月
一、 题意分析及解决方案
1、 题意需求分析
1.1、 需求
本课程设计题目是具有记忆功能的电子时钟,这个时钟具有以下的功能:
(1)、具有正常的计时功能。
(2)、能够正确的显示当前的时间
(3)、断电后,此时钟在重新启动后能够按照断电前的时间继续计数。
1.2、分析
(1)、一个正常的时钟都可以正确的进行计时,正确的计时是怎么实现的呢?它
其实是这样的:时钟的计时分为时、分和秒的计数,时的最大数为 24,分和秒的
最大数为 60,当然时钟在显示的时候是不能显示时为 24,分秒为 60 的,所以这
就需要进行控制。当秒数达到 60 时,它要重新进行计数,所以要清零,而分钟就
要加 1;当分钟达到 60 时,它也要清零,时钟加 1;当时钟到 24 时,还是要清零。
如此循环即可实现正常的计时。
(2)、时钟能够正确的计时了,下面要说的是显示,计时正确并不能代表能正确
显示。显示时间就需要考虑该用何种外设,即显示屏改用何种。
(3)、断电后再次启动,电子时钟能够按照断电的时间继续计数,即实现记忆功
能。这就需要此时钟要有存储功能,而且断电时存储的东西不能消失,来电后,
时钟就能读出存储的时间,从而实现记忆功能。
2、解决问题的方法及思路
2.1、硬件部分
单片机工作在单任务状态,时间充裕,速度不是主要矛盾,多以用软件实现分、
秒和时的器件形成和计时控制,以减少硬件开销。
具体器件的名称和特点如下表示:
L E D
L C D
LED 显示器与 LCD 显示器相比,
LCD 占用空间小,低功耗,低辐
LED 在亮度、功耗、可视角度和
射,能降低视觉疲劳,但是会出
刷新速率等方面,都更具优势。
现闪烁问题
LED 与 LCD 的功耗比大约为 10:1,
LED 的 最 显 著 特 点 是 使 用 寿 命
长,光电转换效能高,绿色环保
8259A 芯片
8255A 芯片
8279 芯片可以实现对键盘/显示
8255 芯片是可编程的并行接口
器的自动扫描,以减轻 CPU 负担,
芯片,不需要附加外部电路便可
具有显示稳定,程序简单,不会
和大多数并行传输数据的外部设
出现误动作等,在和键盘、显示
备相连,数据的各位同时传送,
器做接口时选择 8279 合适
使用十分方便,在选择 EEPROM
的接口时选择 8255 合适
十六进制小键盘
二进制开关
键盘(Keyboard)是常用的输入
二进制逻辑开关一位表示一个二
设备,它是由一组开关矩阵组成,
进制数,对于本实验每一位数需
结构相对复杂,与 8279A 配套使
要多次拨动八位开关,使实验复
用
杂了许多
8253 芯片
软件定时
8253 是常用的可编程定时器,定
简单灵活,但占用微处理器时间,
时时间到,电路会产生一个信号,
降低了微处理器的使用效率,且
向微处理器提出中断请求,告诉
精确度相对於硬件定时不高。
微处理器定时时间已到,定时精
确灵活性大。
AT24C02
它是一个串行输入输出的存储器,数据的写入和读出是通过 IIC 总线上 SCL
与 SDA 的电平的高低来控制的。
通过以上分析,本次设计所选用的芯片为:8279A 芯片,8255A 芯片、LED 发
光二极管、、AT24C02 存储器,十六进制小键盘。
2.2、软件部分
计时器的初始时间设置:启动单片机并成功运行程序后,在十六进制开关中输入初值,
错误输入时显示 EEROR 信息,也可以按 A 键显示初始时间,初试时间为 23:59:59.
计时:首先将秒位计时加 1,判断秒位是否为 60,若不是,则直接显示时间,若是,则
将秒位置为 00,且分为加 1;分位同上;小时到 24 将时位清零。
显示:8279A 芯片内部有一个显示 RAM 和一个 FIFO RAM,可以暂存从小键盘
中读出的数据,同时可以将内存中的数据暂存到显示 RAM 中,简化了程序复杂度。
每次将各个位要显示的数据处理好后到换码表中找到对应值,初始化 8279 后将值
送到数据口即实现显示的目的
存储:本程序定位每隔一秒便将数据存放到 AT24C02 中,AT24C02 通过 8255
连到主电路中。8255 的 PC0 和 PC1 分别连 SDA 和 SCL,这样可以通过 8255 的置位
复位字来调 SDA 和 SCL 的电平以达到模拟 AT24C02 的读写时序。写入数据时,先
使 SCL 和 SDA 都为高电平,然后保持 SCL 为高,将 SDA 置低就表示传输 0,将 SDA
置高就表示传输 1.传输数据时 SCL 应为低,要结束输入,再次将 SCL 置高,将 SDA
置高。
二、硬件设计
2.1 8279A
2.1.1 8279A 在本设计中的作用
在本设计中用 8279A 芯片控制键盘输入和 LED 显示。
2.1.2 8279A 的功能分析
1、8279A 主要特性
8279A 芯片是一种通用的可编程序的键盘/显示接口器件,单个芯片就能完
成键盘输入和 LED 显示控制两种功能。可与任何 8 位机接口。8279A 芯片包括
键盘输入和显示输出两个部分。若采用 8279 作为键盘/显示器接口,则可以实
现对键盘、显示器自动扫描,8279 主要是管理键盘输入和显示器输出的。8279
可编程键盘显示器接口芯片具有动态显示驱动电路简单、不占用 CPU 的时间、
可自动进行键盘扫描、与计算机接口方便、编程容易、系统灵活等特点.当今
已成为设计计算机应用系统,特别是实时性较高的测控系统的首选器件之一。
2、8279A 的内部结构
图 2-1
8279A 的内部结构
图中,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 显示器(或其它显示器)提供多路扫描接口。
3、8279A 的引脚信号和功能
8279 可编程键盘显示器接口芯片具有动态显示驱动电路,不占用 CPU 的时
间、可自动进行键盘扫描、与计算机接口方便、编程容易、系统灵活等特点。8279
是可编程的键盘/显示接口芯片。它既具有按键处理功能,又具有自动显示功能,
在单片机系统中应用很广泛。8279 内部有键盘 FIFO (先进先出堆栈)/传感
器,双重功能的 8×8=64B RAM,键盘控制部分可控制 8×8=64 个按键或 8×8
阵列方式的传感器。该芯片能自动消抖并具有双键锁定保护功能。显示 RAM 容
量为 16×8,即显示器最大配置可达 16 位 LED 数码显示。
4、8279 的命令字及其格式
8279 有三种工作方式:键盘工作方式、显示工作方式和传感器工作方式。
键盘工作方式:双键互锁和 N 键轮回。双键互锁是指当有两个以上按键同
时按下时,只能识别最后一个被释放的按键,并把其键值送入内部 FIFO RAM
中。N 键轮回是指当有多个按键同时按下时,所有按键的键值均可按扫描顺序
依次存入 FIFO RAM 中。
显示工作方式:是指 CPU 输入至 8279 内部 FIFO RAM 的数据的输出格式,
有 8 个字符左端入口显示、16 个字符左端入口显示、8 个字符右端入口显示、
16 个字符右端入口显示四种方式。
传感器方式:是指扫描传感器阵列时,一旦发现传感器的状态发生变化就
置位 INT 向 CPU 申请中断。
选择不同的工作方式均是通过 CPU 对 8279 送入命令来进行控制。8279 共
有 8 种命令,命令寄存器为 8 位,其中 D7~D5 为命令特征位,D4~D0 为命令
的控制位。CPU 对 8279 写入的命令数据为命令字,读出的数据为状态字。
8279 共有八条命令,其功能及命令字格式分述如下。
(1)键盘/显示方式设置命令字
命令格式:
D7
0
D6
0
D5
0
D4
D
D3
D
D2
K
D1
K
D0
K
其中:D7、D6、D5=000 为方式设置命令特征位。DD(D4、D3):用来设定
显示方式,如表 2-2 所示。
D4
D3
显示方式
0
0
1
1
0
1
0
0
8 个字符显示,左端入口
16 个字符显示,左端入口
8 个字符显示,右端入口
16 个字符显示,右入口
表 2-2 显示方式选择
所谓左入口 ,即显示位置从最左一位(最高位)开始,以后逐次输入的显
示字符逐个向右顺序排列;所谓右入口,则是显示位置从最右一位(最低位)开
始,以后逐次输入显示字符时,已有的显示字符依次向左移动。
KKK(D2、D1、D0):用来设定七种键盘/显示扫描方式,如表 2-3 所示。
D2
D1
D0
键盘/显示扫描方式
0
0
0
0
1
0
0
1
1
0
0
1
0
1
0
编码扫描键盘,双键锁定
译码扫描键盘,双键锁定
编码扫描键盘,N 键轮回
译码扫描键盘,N 键轮回
编码扫描传感器矩阵
1
1
1
0
1
1
1
0
1
译码扫描传感器矩阵
选通输入,编码显示扫描
选通输入,译码显示扫描
表 2-3 键盘/显示扫描方式
(2)时钟编程命令
命令格式:
D7
0
D6
0
D5
1
D4
P
D3
P
D2
P
D1
P
D0
P
其中: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 命令
命令格式:
D7
0
D6
1
D5
0
D4
AI
D3
X
D2
A
D1
A
D0
A
其中:D7、D6、D5=010 为读 FIFO/传感器 RAM 命令特征位。该命令字只在传
感器方式时使用。在 CPU 读传感器 RAM 之前,必须用这条命令来设定所读传感器
RAM 中的地址。
AAA(D2、D1、D0)为传感器 RAM 中的八个字节地址。
AI(D4)为自动增量特征位。当 AI=1 时,每次读出传感器 RAM 后地址自动
加 1 使地址指向下一个存储单元。这样,下一个数据便从下一个地址读出,而不
必重新设置读 FIFO/传感器 RAM 命令。
在键盘工作方式中,由于读出操作严格按照先入先出顺序,因此,不需使用
这条命令。
(4)读显示 RAM 命令
命令格式:
D7
0
D6
1
D5
1
D4
AI
D3
A
D2
A
D1
A
D0
A
其中:D7、D6、D5=011 为读显示 RAM 命令字的特征位。该命令字用来设定将
要读出的显示 RAM 地址。
AAAA(D3、D2、D1、D0)用来寻址显示 RAM 中的存储单元。由于位显示 RAM
中有 16 个字节单元,故需要 4 位寻址。
AI(D4)为自动增量特征位。AI=1 时,每次读出后地址自动加 1,指向下一
地址。
(5)写显示 RAM 命令
命令格式:
D7
1
D6
0
D5
0
D4
AI
D3
A
D2
A
D1
A
D0
A
其中:D7、D6、D5=100 为写显示 RAM 命令字的特征位。在写显示 RAM 之前
用这个命令字来设定将要写入的显示 RAM 地址。
AAAA(D3、D2、D1、D0)为将要写入的显示 RAM 中的存储单元地址。
AI(D4)为自动增量特征位。AI=1 时,每次写入后地址自动加 1,指向下一
次写入地址。
(6)显示禁止写入/消隐命令
命令格式:
D7
1
D6
0
D5
1
D4
X
D3
D2
D1
D0
IW/A
IW/B
BL/A
BL/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)清除命令
命令格式:
D7
1
D6
1
D5
0
D4
CD
D3
CD
D2
CD
D1
CF
D0
CA
其中:D7、D6、D5=110 为清除命令特征位。清除显示 RAM 方式如表 2-4 所示。
D4 D3 D2
清除方式
1
1
1
0 ×
将全部显示 RAM 清为 00H
1
1
0 将全部显示 RAM 置为 20H,A 组输出 0010,B 组输出 0000
1
将全部显示 RAM 置为 FFH
0 × ×
D0=0 不清除,D0=1 按上述方法清除
表 2-4 显示 RAM 清除方式
CF(D1)用来置空 FIFO 存储器,当 CF=1 时,执行清除命令后,FIFO
RAM
被置空,使 INT 输出线复位。同时,传感器 RAM 的读出地址也被置为 0。
CA (D0)为总清的特征位。它兼有 CD 和 CF 的联合效能。在 CF =1 时,对
显示的清除方式由 D3、D2 的编码决定。
显示 RAM 清除时间约需 160us。在此期间状态字的最高位 Du=1,表示显示无
效。CPU 不能向显示 RAM 写入数据。
(8)结束中断/错误方式设置命令
命令格式:
D7
1
D6
1
D5
1
D4
E
D3
X
D2
X
D1
X
D0
X
其中: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,并产生中
断请求信号和禁止写入 FIFO RAM。
上述八种用于确定 8279 操作方式的命令字皆由 D7D6D5 特征位确定,输入
8279 后能自动寻址相应的命令寄存器。因此,写入命令字时唯一的要求是使数
据选择信号 A0 =1。
5、8279 的状态字及其格式
8279 的 FIFO 状态字,主要用于键盘和选通工作方式,以指示 FIFO
RAM
中的字符数和有无错误发生。其格式为:
D7
DU
D6
S/E
D5
O
D4
U
D3
F
D2
N
D1
N
D0
N
其中: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)为超出、不足错误特征位。对 FIFO
RAM 的操作可能出现
两种错误:超出或不足。当 FIFO
RAM 已经充满时,其它的键盘数据还企图写
入 FIFO
RAM ,则出现超出错误,超出错误特征位 O(D5)置 1;当 FIFO
RAM
已经置空时,CPU 还企图读出,则出现不足错误,不足错误特征位 U(D4)置 1。