20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。所以在此次设计中有以下几点要注意:
(1)设计内容及设计方案 论述时钟的具体设计方案及设计要求。
(2)单元电路设计、原理及器件选择 说明时钟的设计原理以及器件 的选择。
(3)主要从LED点阵屏驱动部分、时钟电路部分、温度传感器电路部分、单片机最小部分、扬声器几部分中进行说明。
(4)绘制整机原理图,该系统的设计、安装、调试工作全部完成。
1
课 程 设 计 任 务 书
1.课程设计题目
电子钟的设计
2.设计任务和内容
设计一个电子钟,利用四个数码管,在其上显示分、秒;用4个小键盘分别进行分+1,分-1,秒+1,秒-1改变时间值。
3.设计步骤和要求
设计步骤:
首先进行相关资料查阅和学习,理解电子钟制作的流程和要求。然后结合微机接口技术的理论和实验教材中实例的指导,完成设计任务。
设计要求:
1.撰写要求
设计报告有设计报告目录和正文组成。其中正文要求最少包括以下部分: (1).课程设计题目名称; (2).设计要求完成的任务
(3).系统设计文档(包括:系统结构,详细设计以及程序设计文档) (4).课程设计总结(包括收获和体会以及不足和存在的问题) (5).参考文献.
2.装订顺序
(1).封面 (2).前言 (3).目录
(4).课程设计任务书 (5).正文 (6).小结 (7).参考文献
(8).附录,主要代码
指导老师(签名)__________________________ 年 月 日
2
目录
第一章 概述
1.1设计目的…………………………………………………………………………4 1.2设计内容…………………………………………………………………………4 1.3设计参考…………………………………………………………………………5 1.4电子时钟简介……………………………………………………………………5 1.5设计思路…………………………………………………………………………5
第二章 概要设计
2.1设计内容…………………………………………………………………………6 2.2分析论证…………………………………………………………………………6 2.3设计思路…………………………………………………………………………7 2.4电路原理与主要芯片功能………………………………………………………7 2.4.1 8279主要功能…………………………………………………………….8 2.4.2 8259 主要功能……………………………………………………………10 2.4.3 8253 主要功能……………………………………………………………12 2.4.4系统设计框图………………………………………………………………12
第三章 详细设计
3.1 8279键盘显示模块设计…………………………………………………………14
3.1.1 8279内部结构…………………………………………………………………14
3.1.2 8279方式字命令………………………………………………………………14 3.1.3 8279的初始化设置……………………………………………………………15 3.2 8259A 中断控制模块……………………………………………………………15 3.2.1 8259A 方式控制字……………………………………………………………15 3.2.2 8259A 初始化设置……………………………………………………………16 3.3 定时器/计数器的设计……………………………………………………………16 3.3.1 8253方式控制字………………………………………………………………16
3.3.2 8253工作方式…………………………………………………………………17 3.3.3 8253初始化设置………………………………………………………………17
3.4 设计系统电路………………………………………………………………….18
第四章 接线与调试…………………………………………………………………………19
小结………………………………………………………………………………………………20
参考文献………………………………………………………………………………………21
附录程序………………………………………………………………………………………22
3
第一章 概述
1.1设计目的
通过这学期对《微机原理及接口技术》的学习,可是掌握的知识还不够,知识局限于书本上和老师教的,这些还只是停留在理论的层面上。这是一门对于硬件及其原理要求熟悉掌握的实践性很强的课程,让学生在学完该课程之后,进行一次课程设计,使学生将课堂所学的知识和实践有机的结合起来,初步掌握计算机应用系统设计的步骤和接口设计的方法,提高分析和解决实际问题的能力。
通过设计实践,培养学生查阅专业资料,工具书和参考书,了解有关工业标准,掌握现代设计手段和软件工具,并能以图纸和说明书表达设计思想和结果的能力。
通过设计,不但要培养和提高学生解决工程具体问题,动脑动手的技术工作能力,而且还要逐步建立科学正确的设计和科研思想,培养良好的设计习惯,牢固树立实事求是和严肃认真的工作态度。具体要求如下:
1、掌握DMA工作原理,中断工作原理,定时计数原理,并行通信原理,A/D和D/A工作原理。
2、熟悉编程及调试程序的方法。
3、掌握8259中断控制器的工作原理和应用编程方法,练习编写中断程序的方法。 4、掌握8279的各种工作方式及其应用编程。
5、掌握8253定时/计数器的工作原理、工作方式及其应用编程。
6、练习LED-KEYBOARD UNIT的使用方法和数码管的显示编程方法能运用所提到的芯片,设计系统并进行程序开发,满足用户需求。
1.2 设计内容
设计的主要内容:
设计一个电子钟,利用四个数码管,在其上显示分、秒;用4个小键盘分别进行分+1、分-1、秒+1、秒-1改变时间值。
基本要求:
(1)、设计实验电路(要求利用实验仪的硬件资源) (2)、分析实验原理
4
(3)、列出实验接线表
(4)、采用汇编语言编写实验程序 (5)、通过实验验证功能的实现 (6)、编写课程设计说明书
1.3设计参考
本课程设计中的几个要点:
A、设计一个1s时钟,作为时间的基准。可通过定时器来实现,由于定是限制,我们可以设定定时时钟为50ms中断一次,然后用一个计数器计数20次,即50ms*20=1000ms=1s。
B、分与时都可采用软件计数器来实现,60秒为1分,60分为1小时。
C、由于实际应用中要求显示为十进制,而在程序中处理的数据都为十六进制,因此在程序中要对显示缓冲区的数据进行十进制调整。
1.4电子时钟简介
电子时钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。传统的设计方法有两种:一是利用组合逻辑电路和时序电路等中小规模集成电路来设计,在大三的《数字电路》中已经实际并利用组合逻辑电路和时序电路芯片74L161、74LS190、74LS04和LED数码管设计12时制电子钟;一是利用单片机编程技术来设计。这两种设计在硬件方面都是比较复杂的,而且设计周期长。本学期通过对《现代微机原理与接口技术》的学习,利用目前所掌握的知识进行实践是必要的,以巩固基础知识,培养独立操作能力。
1.5 设计思路
电子时钟主要由显示模块、对时模块和时钟运算模块三大部分组成。其中对时模块
和时钟运算模块要对时、分、秒的数值进行操作,并且秒计算到60时,要自己清零并向分进1;分计算到60时,要自己清零并向时进1;时计算到24时,要清零。这样,才能循环记时。
本次课程设计要实现的功能为:利用定时器从0开始进行计时,将计时的结果显示在数码管上。每隔1秒,秒钟计时一次,到60秒,分钟加1,到60分小时加1。根据需要,需选择的芯片有8254,8259,8255,系统时钟频率1.041667MHz。
5
第二章 概要设计
2.1设计内容
本次课程设计的内容为电子时钟的设计与实现,利用定时器从0开始进行计时,将计时的结果显示在数码管上。每隔1秒,秒钟计时一次,到60秒,分钟加1,秒钟清零。根据需要,需选择的芯片有8253,8259,8279,系统时钟频率1.041667MHz。
利用8253计时,计时从0秒到9秒,到9秒后又从0秒重新开始计时,同时将0秒~9秒的数字变动信息通过8279送数码管显示。由系统时钟频率1.041667MHz,同学们考虑如何利用8253计数器实现1秒的计时。
2.2 分析论证 2.2.1显示模块
利用数码管的显示功能来设计。数码管是由八个条形发光二极管组成的,这些发光二
极管的阴极是互相连接在一起的,所以称为共阴极数码管。通过在这八个发光二极管的阳极加+5 V或0 V的电压使不同的二极管发光,形成不同的字符和数字。电子时钟用到的是0到9十个数字,他们所对应的字符表依次是3FH、06H、5BH、4FH、66H、6DH、7DH、07H、7FH、6FH。该模块主要是将时钟运算模块和对时模块运算出来并存放在内存单元里的十六进制表示的时位和分位数据转化为十进制,并通过四个数码管显示出来。该模块实现的硬件是TND86/88的LED-KEYBOARD UNIT。
2.2.2时钟运算模块
该模块的主要功能是对时、分、秒的运算,并把运算出的最终结果存到事先已经开辟的内存单元里,以便显示模块即时地显示出来。该模块可以细分为秒定时模块和运算模块。秒定时模块负责提供中断信号,由于CPU运算模块中的指令消耗一定的时间,所以中断信号最好通过硬件来实现,可以选择TND86/88实验箱中的8253定时/计数器来提供,但又因为8253所能提供的信号的周期时毫秒级的,因此必须通过软件的方法在运算模块中设置一个统计中断次数的变量,并且这一变量必须事先在内存里开辟存储单元。中断信号是8253的通道2工作方式为方式3时,产生一个50ms的脉冲信号。运算模块负责时、分、秒的计算,该模块主要通过8259A的IRQ7号中断来实现,首先将秒定时模块提供的中断信号为8259的IRQ7中断请求信号。但由于每50ms一次中断请求。所以在中断服务程序必须利用已申请内存单元count来统计中断请求的次数,只有当count的值为20时,才能让秒单元内的数值加1。另外,在中断服务程序里,必须对秒、分和时的单元内的数值进行判断,当秒加到
6
60时,分必须加1 、秒清零;当分加到60时,时加1、分清零。当时加到24啊,直接清零。
2.2.3对时模块
该模块主要功能是修改时、分内存单元的数值。在对时的时候,秒应停止不变,并且在对分进行调整的时,时单元内的数值不变。由以上分析可见,对时、分的调整用两个优先级高于IRQ7的中断来完成。因此,可以用8259的IRQ2中断来实现,两个中断源的中断请求信号只需直接接在两个按键即可起到对时作用。
2.3设计思想
本系统所要完成的是电子钟的计时等功能,其中最基本的就是实现计时功能,并把相
应的数值送到数码管上显示出来。
在本系统中,用到的8253的功能只是相当于一个定时计,我们给定时器输入30KHz频率的脉冲,这样每隔一秒就会在OUT0端产生0到1的跃变,作为中断IRQ的请求信号。当然,时钟的计数也有其特定的规则,那就是秒、分的个位逢十进一,十位逢六进一,所以,我们可以通过中断处理程序来控制其进位。这样我们便完成了计时功能。然而,如果仅仅将计时得到的相应数据送入数码管,我们会发现,四个数码管同时显示,无法完成其时钟的显示功能。但是,我们知道,四个数码管的亮灭与小键盘X1,X2,X3,X4各列是否为低电平是相对应的,于是,我们就可以将低电平输出到相应的键盘上,来实现对应数码管的显示。
通过以上分析,我们可以用四位二进制码分别对应表示X4X3X2X1的逻辑值(1--高电平,0--低电平),这样要实现时钟的显示功能,便可以按照以下方法来进行:首先将秒的个位数据通过8279的B端口送给数码管,同时将二进制码“0111”通过8279的A端口送给小键盘X4X3X2X1,这样通过计算机的扫描后,就会在数码管4上显示秒的个位值;接着将秒的十位数据送给数码管,同时将二进制码“1011”送给小键盘X4X3X2X1,这样就会在数码管3上显示相应的数值;同样的道理,分别将分的个位、十位送给数码管,“1101” 、“1110”送给小键盘X4X3X2X1,就会依次在数码管2、1上显示分的个位、十位数值。另外,必须注意的一点就是,显示的时间应该是:XX.XX,中间的一点显示在分的个位上,也就是说在数码管2上显示那一点,以区分分与秒。所以,我们将显示分个位的数码管的二进制码最高位置“1”,其他数码管置“0”,便达到了显示点的功能。从上面的方法我们可以看出,电子钟分秒各位的显示并不是同时进行的,而是按顺序依次循环显示的,它利用的就是人的视觉暂留现象来欺骗人们的眼睛,造成一种“四位数值同时显示”的假象。
2.4电路原理与主要芯片功能
本次设计实现的电子时钟的功能,电子时钟主要采用可编程并行接口芯片8279、中断控制器 8259A、定时/计数器8253、LED数码显示管和四个按键来设置一个控制灯的开关来
7
组合设计。
其中主要用8259A的IR7中断服务程序完成秒、分、时的运算即计时功能,IR6的中断服务程序完成调时、调分功能。8253用来产生50ms的脉冲作为IR7的中断请求信号。8279A用来控制显示器显示时钟。按键K1+和K2+分别作为IR2和IR6的中断请求信号。按键K1+启动/关闭对时功能,它决定是否屏蔽IR7和IR6中断源。
2.4.1 8279主要功能
8279是可编程的键盘、显示接口芯片。它既具有按键处理功能,又具有自动显示功能,在单片机系统中应用很广泛。8279内部有键盘FIFO(先进先出堆栈)/传感器,双重功能的8*8=64B RAM,键盘控制部分可控制8*8=64个按键或8*8阵列方式的传感器。该芯片能自动消抖并具有双键锁定保护功能。显示RAM容量为16*8,即显示器最大配置可达16位LED数码显示。 (1)数据线
DB0→DB7是双向三态数据总线,在接口电路中与系统数据总线相连,用以传送CPU和8279之间的数据和命令。 (2)地址线
/CS=0选中8279,当A0=1时,为命令字及状态字地址;当A0=0时,为片内数据地址,故8279芯片占用2个端口地址。 (3)控制线
CLK:8279的时钟输入线。
IRQ:中断请求输出线,高电平有效。 /RD、/WR:读、写输入控制线。
SL0---SL3:扫描输出线,用来作为扫描键盘和显示的代码输出或直接输出线。 RL0---RL7:回复输入线,它们是键盘或传感器矩阵的信号输入线。 SHIFT:来自外部键盘或传感器矩阵的输入信号,它是8279键盘数据的次高位即D6位的状态,该位状态控制键盘上/下档功能。在传感器方式和选通方式中,该引脚无用。
CNTL/S:控制/选通输入线,高电平有效。键盘方式时,键盘数据最高位(D7)的信号输入到该引脚,以扩充键功能;选通方式时,当该引脚信号上升沿到时,把RL0---RL7的数据存入FIFO RAM中。
OUTA0---OUTA3:通常作为显示信号的高4位输出线。 OUTB0---OUTB3:通常作为显示信号的低4位输出线。
/BD:显示熄灭输出线,低电平有效。当/BD=0时将显示全熄灭。
2. 8279的工作方式
8279有三种工作方式:键盘方式、显示方式和传感器方式。 (1) 键盘工作方式
8279在键盘工作方式时,可设置为双键互锁方式和N键循回方式。
双键互锁方式:若有两个或多个键同时按下时,不管按键先后顺序如何,只能识别最后一个被释放的键,并把该键值送入FIFO RAM中。
N键循回方式:一次按下任意个键均可被识别,按键值按扫描次序被送入FIFO RAM中。 (2) 显示方式
8279的显示方式又可分为左端入口和右端入口方式。
8
显示数据只要写入显示RAM,则可由显示器显示出来,因此显示数据写入显示RAM的
顺序,决定了显示的次序。
图 2-1 8279键盘显示模块结构图
2.4.2 8259A主要功能
8259A是专门为了对8085A和8086/8088进行中断控制而设计的芯片,它是可以用程序控制的中断控制器。
单个的8259A能管理8级向量优先级中断。在不增加其他电路的情况下,最多可以级联成64级的向量优级中断系统。8259A有多种工作方式,能用于各种系统。各种工作方式的设定是在初始化时通过软件进行的。 在总线控制器的控制下,8259A芯片可以处于编程状态和操作状态.编程状态是CPU使用IN或OUT指令对8259A芯片进行初始化编程的状态。
8259A 的命令共有7 个,一类是初始化命令字,另一类是操作命令。8259A 的编程就是根据 应用需要将初始化命令字ICW1-ICW4 和操作命令字OCW1- OCW3 分别写入初始化命令寄存器 组和操作命令寄存器组。
OCW1-OCW3 各命令字格,其中OCW1 用于设置中断屏蔽操作字,OCW2 用于设置优先级循环方式和 中断结束方式的操作命令字,OCW3 用于设置和撤销特殊屏蔽方式、设置中断查询方式以及设 置对8259A 内部寄存器的读出命令。
9
图2-2 8259 内部结构和引脚
2.4.3 8253主要功能
Intel8253是NMOS工艺制成的可编程计数器/定时器,有几种芯片型号,外形引脚及功能都是兼容的,只是工作的最高计数速率有所差异,例如8253(2.6MHz),8253-5(5MHz)
8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。
执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。输出锁存器的值是通过程序设置的。输出锁存器OL用来锁存计数执行部件CE的内容,从而使CPU可以对此进行读操作。顺便提一下,CR、CE和OL都是16位寄存器,但是也可以作8位寄存器来用。
工作原理
8253具有3个独立的计数通道,采用减1计数方式。在门控信号有效时,每输入1个
计数脉冲,通道作1次计数操作。当计数脉冲是已知周期的时钟信号时,计数就成为定时。
8253内部结构
8253芯片有24条引脚,封装在双列直插式陶瓷管壳内。
1.数据总线缓冲器 数据总线缓冲器与系统总线连接,8位双向,与CPU交换信息的
10
通道。这是8253与CPU之间的数据接口,它由8位双向三态缓冲存储器构成,是CPU与8253之间交换信息的必经之路。
2.读/写控制 读/写控制分别连接系统的IOR#和IOW#, 由CPU控制着访问8253的内部通道。接收CPU送入的读/写控制信号, 并完成对芯片内部各功能部件的控制功能, 因此, 它实际上是8253芯片内部的控制器。A1A0:端口选择信号,由CPU输入。8253内部有3个独立的通道和一个控制字寄存器, 它们构成8253芯片的4个端口,CPU可对3个通道进行读/写操作3对控制字寄存器进行写操作。 这4个端口地址由最低2位地址码A1A0来选择。如表9.3.1所示。
3.通道选择 (1) CS#——片选信号,由CPU输入,低电平有效,通常由端口地址的高位地址译码形成。 (2) RD#、WR#——读/写控制命令,由CPU输入, 低电平有效。RD#效时,CPU读取由A1A0所选定的通道内计数器的内容。WR#有效时,CPU将计数值写入各个通道的计数器中, 或者是将方式控制字写入控制字寄存器中。CPU对8253的读/写操作如表9.3.2所示。
4.计数通道0~2 每个计数通道内含1个16位的初值寄存器、减1计数器和1个16位的(输出)锁存器。8253内部包含3个功能完全相同的通道,每个通道内部设有一个16位计数器,可进行二进制或十进制(BCD码)计数。采用二进制计数时, 最大计数值是FFFFH, 采用BCD码计数时。 最大计数值是9999。与此计数器相对应, 每个通道内设有一个16位计数值锁存器。必要时可用来锁存计数值。
当某通道用作计数器时,应将要求计数的次数预置到该通道的计数器中、被计数的事件应以脉冲方式从CLK端输入, 每输入一个计数脉冲,计数器内容减“1”,待计数值计到“0”。 OUT端将有输出。表示计数次数到。当某个通道用作定时器时。 由CLK输入一定频率的时钟脉冲。根据要求定时的时间长短确定所需的计数值。并预置到计数器中,每输入一个时钟脉冲,计数器内容减“1”, 待计数值计到“0”。OUT将有输出,表示定时时间到。允许从CLK输入的时钟频在1~2MHz范围内。因此,任一通道作计数器用或作定时器用,其内部操作完全相同,区别仅在于前者是由计数脉冲进行减“1”计数。 而后者是内时钟脉冲进行减“1”计数。作计数器时, 要求计数的次数可直接作为计数器的初值预置到减“1”计数器中。作定时器时, 计数器的初值即定时系数应根据要求定时的时间进行如下运算才能得到: 定时系数=需要定时的时间/时钟脉冲周期
①设置通道:向方式控制字寄存器端口写入方式选择控制字,用于确定要设置的通道及工作方式;
11
②计数/定时:向通道写入计数值,启动计数操作;
③读取当前的计数值:向指定通道读取当前计数器值时,8253将计数器值存入锁存器,从锁存器向外提供当前的计数器值,计数器则继续作计数操作。
④计数到:当计数器减1为0时,通过引脚OUTi向外输出“到”的脉冲信号。 计数初值输入存放在初值寄存器中,计数开始或重装入时被复制到计数器中。 锁存器在非锁存状态,其值随计数器的变化而变化;一旦锁存了计数器的当前值,直到锁存器值被读取后才能解除锁存状态。
8253
图2-3 8253内部结构框图和引脚图
2.4.4 系统设计框图
12
2-4 系统框图
13
图
第三章 详细设计
3.1 8279键盘显示模块
8279是一具有40条引脚的双列直插式芯片,8279的主要特征:能同时控制键盘与显示器操作、扫描式键盘工作方式、有8B的FIFORAM(键盘)、可控制2个8位或1个16位LED数码显示器、有16B可左/右输入的显示RAM等。外部引脚如下图所示:
图 2-1
8279键盘显示模块结构图
3.1.1 8279内部结构
(1)I/O控制及数据缓冲器;
(2)控制与定时寄存器及定时控制; (3)扫描计数器;
(4)键盘去抖动与控制及返回缓冲器; (5)FIFO RAM及状态寄存器;
(6)显示RAM、显示寄存器、显示地址寄存器。
3.1.2 8279方式命令字
当引脚A0=1时,CPU向8279芯片写入命令字。命令字格式如下:
特征位 命令参数 D7 D6 D5 D4 D3 D2 D1 D0 (1) 设置键盘及显示方式(D7 D6 D5=000) (2) 设置时钟频率(D7 D6 D5=001) (3) 读FIFO RAM(D7 D6 D5=010) (4) 读显示RAM(D7 D6 D5=011) (5) 写显示RAM(D7 D6 D5=100)
(6) 禁写显示RAM/消隐(D7 D6 D5=101)
14
(7) 清除(D7 D6 D5=110)
(8) 结束中断/设置错误方式(D7 D6 D5=111) 显示输出方式 输入工作方式
K2K1 方式 D D 方式 00 01 10 11 8个字符显示,左进方式 16个字符显示,左进方式 8个字符显示,右进方式 16个字符显示,右进方式 00 01 10 11 扫描键盘输入,双键锁定 扫描键盘输入,N键轮回 扫描传感器输入 选通输入 表2-2 键盘显示方式命令字(1) 表2-3键盘显示方式命令字(2)
3.1.3 8279的初始化设置
(1)键盘显示方式采用8个字符显示,左进方式,扫描键盘输入,双键锁
定;
(2)分频系数为2AH;
(3)显示RAM为每次写入后地址自动减1,方式字为83H; (4)片选信号接0FF90H,CLK接1MHZ。
3.2 8259A中断控制模块 3.2.1 8259A方式控制字
8259A有7个命令,只有两个命令口,一端口次额如多个命令字时,则是按规定写入顺序写入,或以特征位标记。
8259A的命令分初始化和操作命令,前者是对其工作方式和工作条件的设置,后者是对中断处理过程实现动态控制的操作。
2. 中断请求触发器方式的设置及芯片数目的选择; 3. 中断类型号的设置; 4. 中断级联方式的设置; 5. 特定完全嵌套方式的设置; 6. 缓冲器方式的设置; 7. 终端结束方式的设置 8. 中断屏蔽操作;
9. 非自动中断结束方式的操作;
15
10. 中断排队方式的操作; 11. 查询中断方式的操作; 12. 特定屏蔽方式的操作; 13. 读状态操作。
3.2.2 8259A的初始化设置
1. 中断请求触发方式为边沿触发,单片使用; 2. 中断类型号为0号中断;
3. 采用一般完全嵌套,非自动结束方式;
4. IR0接8253通道1的OUT,片选信号接0FF80H,INT接8088的INTR,
INTA接8088的INTA。
使用8259A控制,用数码管的显示功能来设计,显示部分用四只LED为显示管,这些
LED发光二极管的阴极是互相连接在一起的,所以称为共阴极数码管。通过在这八只发光二极管的阳极加+5V或0V的电压使不同的二极管发光,形成不同的字符和数字。电子时钟用到的是0-9十个数字,它们所对应的字符表依次是3FH、06H、5BH、4FH、66H、6DH、7DH、07H、7FH、6FH。
显示的基本代码如下:
MOV AX,SEC 完成秒计时值的显示
CALL DECSHOW
MOV AX,0E0DH 回车,置光标到行首 INT 10H
这是对秒的显示,以此类推可以得到显示分、时的代码。
3.3 定时器/计数器的实现
3.3.1 8253方式控制字
定时/计数器8253的每个计数通道根据CPU发命令写入控制寄存器的控制字确定工作方式和计数格式。8253控制字的格式如下所示:
D7 SC1
D6 SC2 D5 RW1 D4 RW0 16
D3 M2 D2 M1 D1 M0 D0 BCD 表2-1 8253方式控制字
D7、D6:计数器选择位SC1、SC0。8253的3个计数器相互独立,并且都有一个控制寄存器。
D5、D4:读/写指示位RW1、RW0。CPU向某个计数器写入初值和读取它们的当前值时不同的格式
D3、D2、D1:工作方式选择位M2、M1、M0。8253有6种工作方式,选择哪种工作方式由M2、M1、M0编码确定
DO:数值计数格式,用来选择计数格式。DO=O,计数器按二进制格式计数;D0=1,计数器按BCD码格式计数。
3.3.2 8253工作方式
1、方式0——低电平输出(GATE信号上升沿继续计数) 2、方式1——低电平输出(GATE信号上升沿重新计数) 3、方式2——周期性负脉冲输出 4、方式3——周期性方波输出
5、方式4——单次负脉冲输出(软件触发) 6、方式5——单次负脉冲输出(硬件触发)
3.3.3 8253的初始化设置
由芯片的内外特性,对其进行设置工作有:
1.选择工作方式3,因为可以产生周期的方波,而且可以自动装载; 2.利用通道0和通道1计时1s,通道0的CLK接1MHZ,通道1的CLK接通
道0的OUT,通道0和1的GATE接+5V;
3.通道0计时50ms,所以由公式计算初值为5000,通道1计时1s,所以
初值为20;
4.数值计数格式以二进制格式计数;
5.通道0的端口为40H,通道1的端口为41H,控制口为43H。
17
3.4 设计系统电路
经过上面整体的硬件模块的特性及结构了解,我们采用的主要芯片是8253、8259、8279,分别用于定时/计时,中断控制,键盘显示等等,经过总体的分析与设计,采用Protel99SE进行原理图的绘制,连接的系统原理电路图大致如下所示:
图3-4 系统原理电路图
T2是实验仪器上的脉冲发生模块所产生的1MHZ;
18
第四章 接线与调试
上两章已经根据所选方案对硬件和软件进行了设计,下面就具体说明接线和调试工作,DJ-598K实验开发系统提供了丰富的系统资源,支持联机和脱机运行。为用户调试提供了方便。利用DJ-598K实验开发系统的硬件资源和软件环境进行接线和调试。
4.1 硬件接线
因为DJ-598K实验开发系统已经提供了所需芯片,所以,只需少量的接线。主要接线如下表:
系统接线表 芯片、器件 引脚 连接到 8253 GATE0 +5V 8253 GATE1 +5V 8253 CLK0 T2 8253 CLK1 OUT0 分频器 T 8.0MHZ 8259 INT 8088的INTR 8259 INTA 8088的INTA 8259 IR0 8253的OUT1 8259 CS FF80H 8279 CS FF90H 8279 JSL JS 8279 JRL JR 8279 JOUT JLED 开关JK置外接 表4-1 系统接线表 19
小结
通过一周的课程设计时间,课程设计的基本目的达到了。本系统完成了电子时钟的基本功能。利用8253定时器从0开始进行计时,将计时的结果显示在数码管上。每隔1秒,秒钟计时一次,到60秒,分钟加1,到60分小时加1,数字变动信息通过8255送数码管显示。期间通过8259中断控制器实现秒到分,分到时的转变,准确实现了计时。通过本次微机
原理接口技术课程设计——电子钟的制作,我基本学会了8253定时器/计数器、8259中断器、8279键盘显示接口芯片的原理,特性,及其具体的使用。
随着科技的进步电子时钟的实现方法已经很多,由传统的物理实现转变到软件实现,而且起精确程度也大大的提高,且实现方法也越来越简单。本学期学习了《微机原理及接口技术》这门专业课,基于专业学习的基础,运用学到的专业知识来完成电子时钟的设计。要完成好这个设计首先应该画出硬件设计图,这个过程是基础,然后是流程图,这个是重点,流程图的完成在很大程度上等于程序的完成,然后是程序的编写。
通过辅导老师的指导,同学们的相互帮助,我收获了很多,也通过设计增强了自己动手的能力,同时也对自己所学到的知识作一个肯定。学好这门课程在自己今后的学习和工作中都有很大的作用,对自己以后的帮助也很大。这次课程设计给我的最大的印象就是如果自己有了兴趣,就动手去做,这对于我的毕业设计也有很大帮助,我的毕业设计的方向是关于硬件的。
20
参考文献
[1] 任向民。微机接口技术使用教程。清华大学出版社.2008年 [2] 郭兰英. 微机原理与接口技术. 清华大学出版社. 2006年 [3] 陈忠强.现代微机原理与接口技术.冶金工业出版社.2006年
[4] 余锡存 .曹国华. 汇编语言、微机原理及接口技术[M].陕西:西安电子科技大学出版社,2000.7
[5] 沈美明.IBM-PC汇编语言程序设计.北京:清华大学出版社,1991.
21
附 录
;***************根据CHECK配置信息修改下列符号值******************* INTR_IVADD EQU 01CCH ;INTR对应的中断矢量地址
INTR_OCW1 EQU 0A1H ;INTR对应PC机内部8259的OCW1地址 INTR_OCW2 EQU 0A0H ;INTR对应PC机内部8259的OCW2地址 INTR_IM EQU 0F7H ;INTR对应的中断屏蔽字 PCI_INTCSR EQU 0DF38H ;PCI卡中断控制寄存器地址 IOY0 EQU 0DA00H IOY1 EQU 0DA40H
;***************************************************************** MY8253_COUNT0 EQU IOY0+00H*4 ;8253计数器0端口地址 MY8253_COUNT1 EQU IOY0+01H*4 ;8253计数器1端口地址 MY8253_COUNT2 EQU IOY0+02H*4 ;8253计数器2端口地址 MY8253_MODE EQU IOY0+03H*4 ;8253控制寄存器端口地址
MY8255_A EQU IOY1+00H*4 ;8255的A口地址 MY8255_B EQU IOY1+01H*4 ;8255的B口地址 MY8255_C EQU IOY1+02H*4 ;8255的C口地址 MY8255_MODE EQU IOY1+03H*4 ;8255的控制寄存器地址 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DATA SEGMENT
CS_BAK DW ? ;保存INTR原中断处理程序入口段地址的变量 IP_BAK DW ? ;保存INTR原中断处理程序入口偏移地址的变量 IM_BAK DB ? ;保存INTR原中断屏蔽字的变量 SEC DW 0 ;秒计时变量 MIN
DW 9
HOUR DW 0
22
COUNT DB 0 DATA ENDS DATA1 SEGMENT
VALUE DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH,77H DATA1 ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA1 START: MOV AX,DATA MOV DS,AX CLI
MOV DX,PCI_INTCSR SUB DX,19H IN AL,DX
MOV DX,PCI_INTCSR ;初始化PCI卡中断控制寄存器 MOV AX,1F00H ;向PCI_INTCSR中写入003F1F00H OUT DX,AX ADD DX,2 MOV AX,003FH OUT DX,AX
MOV AX,0000H ;替换INTR的中断矢量 MOV ES,AX
MOV DI,INTR_IVADD MOV AX,ES:[DI]
MOV IP_BAK,AX ;保存INTR原中断处理程序入口偏移地址 MOV AX,OFFSET MYISR
MOV ES:[DI],AX ;设置当前中断处理程序入口偏移地址 ADD DI,2 MOV AX,ES:[DI]
MOV CS_BAK,AX ;保存INTR原中断处理程序入口段地址 MOV AX,SEG MYISR
23
MOV ES:[DI],AX ;设置当前中断处理程序入口段地址 MOV DX,INTR_OCW1 ;设置中断屏蔽寄存器,打开INTR的屏蔽位 IN AL,DX
MOV IM_BAK,AL ;保存INTR原中断屏蔽字 AND AL,INTR_IM OUT DX,AL
MOV DX,MY8255_MODE ; MOV AL,80H ; OUT DX,AL
MOV DX,MY8255_A ; MOV AL,3FH OUT DX,AL STI MOV SEC,0 MOV AX,SEC CALL DECSHOW
MOV AX,0E0DH ; INT 10H
MOV DX,MY8253_MODE ; MOV AL,34H ; OUT DX,AL
MOV DX,MY8253_COUNT0 ; MOV AL,0A2H OUT DX,AL MOV AL,87H OUT DX,AL
WAIT1: MOV AH,1 ; INT 16H
JZ WAIT1 ;QUIT: CLI
初始化8255工作方式 工作方式0,A口输出 写A口发出的起始数据 回车,置光标到行首 初始化8253工作方式 计数器0,方式2 装入计数初值 判断是否有按键按下 无按键则跳回继续等待,有则退出 24
MOV DX,PCI_INTCSR ;恢复PCI卡中断控制寄存器 MOV AX,0000H OUT DX,AX
MOV AX,0000H ;恢复INTR原中断矢量 MOV ES,AX
MOV DI,INTR_IVADD
MOV AX,IP_BAK ; MOV ES:[DI],AX ADD DI,2
MOV AX,CS_BAK ; MOV ES:[DI],AX
MOV DX,INTR_OCW1 ; MOV AL,IM_BAK OUT DX,AL STI
MOV AX,4C00H ; INT 21H
MYISR PROC NEAR ; MOV AX,DATA MOV DS,AX INC COUNT CMP COUNT,30 JNZ OVER MOV COUNT,0 INC SEC
CMP SEC,10 ; JNE DIS MOV SEC,0 add MIN,1 CMP MIN,10
恢复INTR原中断处理程序入口偏移地址恢复INTR原中断处理程序入口段地址 恢复INTR原中断屏蔽寄存器的屏蔽字 返回到DOS 中断处理程序MYISR 计时值自增,到10即归0 25
JNE DIS MOV MIN,0 add HOUR,1
DIS: MOV AX,SEC ;完成秒计时值的显示 CALL DECSHOW
MOV AX,0E0DH ;回车,置光标到行首 INT 10H
OVER: MOV DX,PCI_INTCSR SUB DX,19H IN AL,DX
MOV DX,PCI_INTCSR ; ADD DX,2 MOV AX,003FH OUT DX,AX
MOV DX,INTR_OCW2 ; MOV AL,20H OUT DX,AL MOV AL,20H OUT 20H,AL IRET MYISR ENDP DECSHOW PROC NEAR MOV AX,DATA MOV DS,AX MOV AX,MIN
MOV DX,0 ; MOV BX,10 DIV BX
ADD AL,30H ; MOV AH,0EH
清PCI卡中断控制寄存器标志位 向PC机内部8259发送中断结束命令 完成分计时值的显示 显示计时值十位 26
INT 10H
ADD DL,20H ;显示计时值个位 MOV AL,DL MOV AH,0EH INT 10H mov al,3ah mov ah,0eh
int 10h
MOV AX,SEC
MOV DX,0 ; MOV BX,10 DIV BX
ADD AL,20H ; MOV AH,0EH INT 10H XOR BX,BX MOV BL,DL
ADD DL,20H ; MOV AL,DL MOV AH,0EH INT 10H
MOV DX,MY8255_A ; MOV AX,DATA1 MOV ES,AX LEA DI,VALUE
MOV AL,ES:[DI+BX] OUT DX,AL RET DECSHOW ENDP CODE ENDS
完成秒计时值的显示显示计时值十位 显示计时值个位 写A口 27
;ES: DATA1, DI: VALUE
END START
28
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- xiaozhentang.com 版权所有 湘ICP备2023022495号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务