数字电子钟设计
学 院 : 物 理 与 信 息 工 程
专 业 : 电 子 信 息 工 程
设计者姓名 : 刘雪云 吳兰华 张旭东
指 导 老 师: 李 池 水
摘要:
本文利用Protel绘制原理图,使用微机原理仿真试验箱,以8086微处理器作为CPU,用8254做定时计数器产生时钟频率,8255做可编程并行接口显示时钟,8259做中断控制器产生中断。4个LED实现了电子钟的基本功能,在电子钟上显示分,秒。使用汇编语言进行编程。电子时钟的显示格式MM:SS,由左到右分别为分、秒,最大记时59:59,超过这个时间时分秒位都清零从00:00重新开始。
关键词:8086处理器,电子钟,8253计数器/定时器,8259中断器。 Abstract:
This passage using drawing principle diagram, using Protel microcomputer principle simulation test cases to 8086 microprocessor as CPU, use 8254 do timing counter produces clock frequency, 8255 do programmable parallel interface displays clock, 8259 do interrupt controller produce interrupts. Four LED realized the basic function of electric clock in electric clock display on points, seconds. Use assembler programming language. Electronic clock display format MM: SS, from left to right respectively, minutes and seconds, the biggest time-stamped 59:59, exceed this time when arc bits cleared from prefer start again.
Keywords:8086 processor, electric clock, 8253 counter/timer, 8259 interrupt device。
2
目录
第一章 系统概述„„„„„„„„„„„„„„„„„„„„„„„„ 4 1. 系统介绍„„„„„„„„„„„„„„„„„„„„„„„„„„„ 4 2.重要芯片简述„„„„„„„„„„„„„„„„„„„„„„„„„ 5 1.2.1 8253计数器/定时器简述„„„„„„„„„„„„„„„„„„ 5 1.2.2 8259A中断器„„„„„„„„„„„„„„„„„„„„„„„ 6 1.2.3 8255并行口„„„„„„„„„„„„„„„„„„„„„„„ 6 第二章 实现电子钟系统„„„„„„„„„„„„„„„„„„„„„ 9 2.1 硬件连接„„„„„„„„„„„„„„„„„„„„„„„„„„ 9 2.2 使用Protel绘制原理图„„„„„„„„„„„„„„„„„„„ 10 2.3 软件编程„„„„„„„„„„„„„„„„„„„„„„„„„„ 10 第三章 系统测试与结果分析„„„„„„„„„„„„„„„„„„„ 16 3.1 调试结果描述„„„„„„„„„„„„„„„„„„„„„„„ 16 3.2 测试结果分析„„„„„„„„„„„„„„„„„„„„„„„ 16 第四章 总结„„„„„„„„„„„„„„„„„„„„„„„„„„ 17 参考文献„„„„„„„„„„„„„„„„„„„„„„„„„„„„ 18
3
数字电子钟设计
第一章 系统概述
1. 系统介绍
学习微机原理与接口技术在实际中的应用,利用实验室现有的实验仪器和软件资源,进行实时调试,提高系统的适应性,灵活性。提高学生实际应用微计算机开发设计系统的能力,使理论设计得到实践的检验。本文要求掌握8259中断器,8253计数器/定时器的接口方法和应用编程,开发出相应的综合性设计项目。对上述的“需求”进行分析之后, 本文利用试验箱实现电子钟功能。整体框图如图1所示。
图1 系统整体框图
4
2. 重要芯片简述
1.2.1 8253计数器/定时器简述 1.2.1.1 内部结构
8253的基本功能:
1:含有3个独立的16位计数器,能够进行3个16位的独立计数。 2:每一个计数器具有六种工作方式。 3:能进行二进制、十进制计数(减法计数)。所谓十进制计数,是指BCD码计数,每个计数器可表示4位十进制数的BCD码,每来一个计数脉冲时,按照十进制数减一规律进行计数。例如,当前的计数值为1000 0100 0000 0000 (8400),来一个计数脉冲后,变为1000 0011 1001 1001(8399)。 4:计数频率为0—2MHz. 5:可作计数器或定时器。
8253为24引脚,双列直插封装。其引脚排列与内部结构如图 所示。由图可看出,8253的内部结构由数据总线缓冲器,读、写控制逻辑,3个独立的计数器三部分组成。
1:数据总线缓冲器 2:读/写控制逻辑 3:计数器
三个计数器中每一个都有三条信号线:
CLK:计数输入用于输入定时基准脉冲或计数脉冲。
OUT:输出信号以相应的电平指示计数的完成或输出脉冲波形。
GATE:选通输入,用于启动或禁止计数器的操作,以使计数器和计数器输入信号同步。
每个计数器中有四个寄存器.
1.2.1.2 工作方式
计数启动方式: 软件启动: 硬件启动:
8253有6种工作方式,在不同的工作方式下,计数器的启动方式,GATE端输入信号的作用以及OUT端的输出波形都有所不同。
1.2.1.3 控制字
8253只有一个控制字,其格式和含义如下图所示
5
D7,D6两位用来选择计数器,D5,D4两位用来规定读写格式,D3,D2,D1三位用来选择工作方式,D0用来表示使用二进制表示还是使用十进制表示。 8253的控制寄存器和3个计数器分别具有独立的编程地址,并且控制字本身的内容又确定了所控制的寄存器序号,所以对8253的编程没有太多严格的顺序规定,使用非常灵活。
1.2.2 8259A中断器
8259A是一种可由软件进行控制的中断控制器。8259A使用于各种不同环境,具有很强的中断管理功能。
具有三种中断结束方式,即自动中断结束方式,一般的中断结束方式和特殊的中断结束方式。
8259A用NMOS工艺制作,只需要一组+5V电源。
1.2.2.1 内部结构
D0-D7:这是8条数据引脚,在系统中,他们和数据总线相连,从而实现和CPU的数据交换,在较大的系统中,一般使用总线驱动器(即缓冲方式),这时,D0-D7与总线驱动器相连,,在小系统中,则D0-D7直接与数据总线相连。
1.2.3 8255并行口 1.2.3.1 内部结构
8255为可编程的并行接口芯片,具有40个引脚,双列直插DIP封装,+5V供电,全部信号与TTL电平兼容。 引脚图如下:
6
8255由四部分组成。如图所示
1)数据总线缓冲器。 2)读写控制逻辑。 3)数据端口A,B,C。 4)A组和B组控制电路。
1.2.3.2 工作方式
8255有三种工作方式(方式0,方式1,方式2)可供选择使用,而且三个端口可以同时按照各自选择的工作方式工作,当然8255各端口在正常工作开始前,必须进行初始化设计,确定每个端口按哪种工作方式工作。
1.2.3.3 控制字
8255在正常工作之前必须进行初始化设置,对所用到的每个端口都要设置具体的工作方式。 1)方式控制字
方式控制字各位定义见图
7
其中D7为方式控制字标志位,用来区别C口位控控制字。 2)C口位控控制字
C口位控控制字用于将C口中的某一位清0或置1。C口位控控制字格式定义如下:
其中D7为方式控制字标志位,用来区别方式控制字,D6D5D4为无效位,D3D2D1用来选择PC7—PC0中之一,D0为0表示清0,为1表示置1。
8
第二章 实现电子钟系统
2.1 硬件连接
PC总线
XD7 D7 XD0 D0 8254 X10R RD X10W WR CLK0 10KHz IOY0 CS OUT0 IRQ XA1 A1 GATE +5V XA0 A0 a XD7 D7 PA7 b c 七 XD0 D0 PA0 d 段 e 共 8255 f 阴 X10R RD PB3 g 数 X10W WR x1 码 IOY2 CS x2 管 XA1 A1 x3 XA0 A0 PB0 x4 9
2.2 使用Protel绘制原理图
Protel原理图
2.3 软件编程
初始化8259,8253,8255各芯片。初始化缓冲区,在LED上显示00 00。分秒都用高低两位来表示,秒值的低位是9时,再加1后,低位写0。秒值的高位是5,再加一后,高位写0。分值的低位是9时,再加1后,低位写0,高位加1。分值的高位是5,再加1后,高位写0。对于时钟值,要先判断高位,如果高位为2,检查时钟值的地位,如果为3,再加1后,时钟值清零。否则,低位为9,再加1后,地位写0,高位加1。
10
主程序流程图不断执行主程序 源程序代码:
;---------------8259----------------------
INTR_IVADD EQU 01C8H INTR_OCW1 EQU 0A1H INTR_OCW2 EQU 0A0H
定时中断 中断保护 秒位加1 与60比较 否 是否=60? 秒位清零 是 分位加1 否 与60比较 是否=60? 是 分位清零 恢复中断 中断返回 ;INTR对应的中断矢量地址 72H
;INTR对应PC机内部8259的OCW1地址 ;INTR对应PC机内部8259的OCW2地址
11
INTR_IM EQU 0FBH ;INTR对应的中断屏蔽字 IR2 从片 ;--------------8255------IOY2----------------------------------------------------- IOCON EQU 3043H IOA EQU 3040H IOB EQU 3041H IOC EQU 3042H
;--------------8254------IOY0------------------------------------------------------ TCONTRO EQU 3003H TCON0 EQU 3000H
;--------------------------------------------------------------------------- STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS
DATA SEGMENT
MES DB 'hello',0AH,0DH,0AH,0DH,'$'
CS_BAK DW ? ;保存INTR原中断处理程序入口段地址的变量 IP_BAK DW ? ;保存INTR原中断处理程序入口偏移地址的变量 IM_BAK DB ? ;保存INTR原中断屏蔽字的变量 TAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH SHIH DB ? SHIL DB ? GEH DB ? GEL DB ? SHIW DW 12
GEW DW 12
COUNT DB 0 DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA MOV DS,AX
MOV DX,OFFSET MES ;显示退出提示
MOV AH,09H INT 21H
CLI
MOV AX,0000H ;替换INTR的中断矢量 MOV ES,AX
MOV DI,INTR_IVADD MOV AX,ES:[DI]
MOV IP_BAK,AX ;保存INTR原中断处理程序入口偏移地址
12
MOV AX,OFFSET MYISR
MOV ES:[DI],AX ;设置当前中断处理程序入口偏移地址
ADD DI,2
MOV AX,ES:[DI]
MOV CS_BAK,AX ;保存INTR原中断处理程序入口段地址 MOV AX,SEG MYISR
MOV ES:[DI],AX ;设置当前中断处理程序入口段地址
MOV DX,INTR_OCW1 ;设置中断屏蔽寄存器,打开INTR的屏蔽位 IN AL,DX
MOV IM_BAK,AL ;保存INTR原中断屏蔽字 AND AL,INTR_IM OUT DX,AL
;------------8255外部IO接口的初始化---------------------------- MOV AL,81H ;A输出 B输出 MOV DX,IOCON OUT DX,AL
;-----------8254定时器的初始化程序------------------------------
MOV DX,TCONTRO
MOV AL,00110101B ;计数器0,先低后高,方式2,BCD OUT DX,AL
MOV DX,TCON0
MOV AX,99H ;时钟为10KHZ ,计数时间=0.1MS*10000 =1s OUT DX,AL MOV AX,99H OUT DX,AL
STI
;----------------主函数一直进行循环----------------------------------- LOOP: CALL DIS
CALL DELAY
CALL DELAY
JMP LOOP
;--------------------中断服务程序-------------------------------------- MYISR PROC NEAR PUSH AX INC GEW
CALL PANDUAN
OVER: MOV DX,INTR_OCW2 ;向PC机内部8259发送中断结束命令 MOV AL,20H OUT DX,AL MOV AL,20H
13
OUT 20H,AL ;两次终中断,首先是从片,后是主片 POP AX IRET MYISR ENDP
;----------显示子程序---------------------- DIS PROC NEAR
MOV AX,GEW MOV CL,10 DIV CL MOV GEH,AL MOV GEL,AH
MOV AX,SHIW MOV CL,10 DIV CL
MOV SHIH,AL
MOV SHIL,AH
MOV CX,01AAH DISP:
MOV AL,00H MOV DX,IOA OUT DX,AL
MOV AL,07H MOV DX,IOB OUT DX,AL
MOV BX,OFFSET TAB MOV AL,GEL XLAT MOV DX,IOA OUT DX,AL
CALL DELAY
MOV AL,00H MOV DX,IOA OUT DX,AL
MOV AL,0BH MOV DX,IOB OUT DX,AL
14
MOV BX,OFFSET TAB MOV AL,GEH XLAT
MOV DX,IOA
OUT DX,AL CALL DELAY
MOV AL,00H MOV DX,IOA OUT DX,AL
MOV AL,0DH MOV DX,IOB OUT DX,AL
MOV BX,OFFSET TAB MOV AL,SHIL XLAT MOV DX,IOA OUT DX,AL CALL DELAY
MOV AL,00H MOV DX,IOA OUT DX,AL
MOV AL,0EH MOV DX,IOB OUT DX,AL
MOV BX,OFFSET TAB MOV AL,SHIH XLAT MOV DX,IOA OUT DX,AL CALL DELAY
LOOP DISP RET
DIS ENDP
;--------延时子程序---------------- DELAY PROC NEAR MOV BX,01AAH
15
JIAN: DEC BX
CMP BX,0 JNZ JIAN RET
DELAY ENDP ;--------判断子程序---------------- PANDUAN PROC NEAR CMP GEW,60 JNZ PAN
MOV GEW,0 INC SHIW
PAN: CMP SHIW,60 JNZ EXIT1
MOV SHIW,0 JMP EXIT1 EXIT1: RET
PANDUAN ENDP
CODE ENDS
END START
第三章 系统测试与结果分析
3.1 调试结果描述
本系统设计实现后进行了为期一周左右的调试。调试包括电路板的调试和汇编程序的调试。下面就系统调试情况作一介绍:
(1) 系统对于输入有格式要求,不能输入不正确的时间格式。 (2) 系统对于临界值进行了验证。 (3) 系统预计各功能的实现。
3.2 测试结果分析
测试结果表明,电子钟系统已能初步实现主要功能,但是由于我的能力有限,开发实践经验不足,系统功能不是十分完善,还存在着许多问题,目前通过测试等发现
16
系统存在以下几个问题:
1. 由于试验条件的限制,开机有时候不能自动复位。
2. 对于多次连续输入错误格式的时间值,系统可能出现异常。
3. 由于是教学模拟课题,不能适应实际使用中复杂的需求,只能根据其他一些简单的调查和推测来设定系统的功能和要求,不论是功能和内容都相对简单。尚有不满足要求的地方,一些技术问题也没有克服。
第四章 总结
电子钟系统虽是一个假拟的项目,但是,对于一个尚未毕业的本科生来说,要完成这个项目,也是一个不小的挑战。在设计中我体会到了技术应用的重要性。
经过几天的学习,是我学到了很多,不仅巩固了以前学过的的模电、数电、C语言,而且学到了很多课本上所没有的知识。懂得了理论与实际相结合的重要性,只有把所学的理论知识于实践相结合,从理论中得出结论,才能真正为社会服务,从而提高自己的动手能力和独立思维能力。在设计的过程中遇到问题会很多,同时在设计过程中发现了自己还有许多不足之处,所学到的只是远远不够,对以前所学的知识理解得也不够深刻,掌握的不够牢固,以至于很难达到自己的预期效果。
总之,这次课程设计不但增加和巩固了我的汇编语言的知识,包括硬件、软件方面,而且增强了我们的动手能及我们的团队合作精神,在此对给我们帮助的所以学生和老师 表示衷心的感谢!这里还要感谢毕业设计中的伙伴。他们给了我技术上的帮助和支持,和我一起调试。大学生活,我们不仅是同学,还是朋友。如果没有他们,我的这个设计无法得以顺利完成。在这里,我对他们表示深深感谢!
17
参考文献
[1] 赵国相 于秀峰 . 微型计算机原理与接口计术.北京.科学出版社.2003
[2] 赵国相,赵大鹏,张健,徐长春等. 微型计算机原理与汇编语言程序设计.北京.科学出版社.2003
[3] 陈连坤.嵌入式系统的设计与开发.北京.清华大学出版社.北京交通大学出版社2005
[4] 余春喧80X86/Pentium微机原理及接口技术.北京.机械工业出版社.2007 [5] 张伟,王力. 电路设计与制板 Protel 99SE基础教程 北京. [6] 王成耀.80x86汇编语言程序设计.北京.电子工业出版社. 2004
18
因篇幅问题不能全部显示,请点此查看更多更全内容