微机原理课程设计电子时钟.docx
《微机原理课程设计电子时钟.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计电子时钟.docx(13页珍藏版)》请在冰豆网上搜索。
![微机原理课程设计电子时钟.docx](https://file1.bdocx.com/fileroot1/2023-1/30/69716f78-d521-4bf0-9f5b-c31b1098d565/69716f78-d521-4bf0-9f5b-c31b1098d5651.gif)
微机原理课程设计电子时钟
时钟控制系统设计
一、设计任务及其要求………………………………………………………
二、方案比较及评估论证……………………………………………………
三、系统工作原理……………………………………………………………
四、硬件原理及其电路图……………………………………………………
五、软件思想(含流程图和程序)…………………………………………
六、调试记录及结果分析……………………………………………………
七、参考资料…………………………………………………………………
八、芯片资料…………………………………………………………………
九、总结………………………………………………………………………
一、设计任务及其要求
(1)设计一个时钟,可以显示时分秒,年月日,并可以调整。
(2)利用PC系列微机现有的硬件和软件资源,编写程序,使在CRT屏幕上显示XXXX年XX月:
XX日:
XX时:
XX分:
XX秒,并且每秒钟更新一次显示。
(3)编写程序,利用主机内的8253/8254-2的计数器0产生10ms的对称方波输出,该输出送至IRQ0使8259A每10ms产生一次中断,100次中断后秒量+1,然后调整年,月,日,时,分,秒并显示在屏幕上。
程序从按下任意键考试显示数据区中存放的时间值,运行中按下空格键则停止运行返回DOS。
(4)调整程序,直至运行正常。
二、方案比较及评估论证
方案一:
三、系统工作原理
首先在数据段开辟一显示缓冲区,用来存储系统时间。
调用DOS中断,返回系统时间,并将来返回的二进制时间转换成ASCII码,方便时间显示时的调用。
分别将来小时数、分钟数、秒数存入显示缓冲区,并最终存入一结束字符号’$’。
调用DOS字符串显示功能将时间显示出来。
并利用8259A的IR0中断,定位光标的开始位置,结合着将时间显示在我们预先定义好的位置上。
三、硬件原理及其电路图
本系统设计的电子时钟以8088微处理器作为CPU,用8253做定时计数器产生时钟频率,8259做中断控制器产生中断。
在此系统中,8254的功能是定时,接入8254的CLK信号为周期性时钟信号。
8254采用计数器0,工作于方式2,使8253的OUT0端输出周期性的负脉冲信号。
即每隔10ms,8253的OUT0端就会输出一个负脉冲的信号,此信号接8259的IR0,当中断到100次数后,CPU即处理,使液晶显示器上的时间发生变化。
其中8259只需初始化ICW1,其功能是向8259表明IRx输入是电平触发方式还是上升沿触发方式,是单片8259还是多片8259。
8259接收到信号后,产生中断信号送CPU处理。
3.18254引脚功能
上图是8254的内部结构框图和引脚图,它是由与CPU的接口、内部控制电路和三个计数器组成。
本次设计主要利用8254产生1ms的方波,其与总线相连接的引线主要是:
D0~D7双向数据线,用以传送数据和控制字。
这里分别与XD0~XD7相连接。
CS输入信号,低电平有效,当它有效时才能选中该定时器芯片,实现对它的读或写,这里与系统IOY3相连接。
RD读控制信号,低电平有效,与系统总线IOR#相连接。
WR写控制信号,低电平有效,与系统总线IOW#相连接。
A0、A1为8254的内部计数器和一个控制寄存器的编码选择信号,其功能如下:
A1
A0
选择
0
0
计数器0
0
1
计数器1
1
0
计数器2
1
1
控制寄存器
CLK0是计数器的时钟输入端。
本次设计的时钟为1MHZ,计数器对此时钟信号进行计数。
GATE0门控信号,即计数器的控制输入信号,用来控制计数器的工作,这里使其为高电平,直接接系统5V。
OUT计数器输出信号,用来产生不同方式工作时的输出波形,本次设计的1ms方波由此输出。
3、8253芯片的内部结构及引脚
8253可编程定时/计数器是Intel公司生产的通用外围芯片之一,有3个独立的十六位计数器,技术频率范围为0~2MHZ,它所有的技术方式和操作方式都通过编程控制。
8253的功能用途是:
(1)延时中断
(2)可编程频率发生器
(3)事件计数器
(4)二进倍频器
(5)实时时钟
(6)数字单稳
(7)复杂的电机控制器
8253有六种工作方式:
(1)方式0:
计数结束中断
(2)方式1:
可编程频率发生器
(3)方式2:
频率发生器
(4)方式3:
方波频率发生器
(5)方式4:
软件触发的选通信号
(6)方式5:
硬件触发的选通信号
8253引脚图如图3.3示,各引脚功能如下。
D7~D0——八条双向数据线;
WR(低电平有效)——写输入信号;
RD(低电平有效)——读输入信号;
CS(低电平有效)——片选输入信号;
A0、A1——片内寄存器地址输入信号;
CLK——计数输入,用于输入定时基准脉冲或计数脉冲;
OUT——输出信号,以相应的电平指示计数的完成,或输出脉冲波形;
GATE——选通输入(门控输入),用于启动或禁止计数器的操作,以使计数器和计测对象同步。
8253端口地址表
2、8253端口地址
信号线
寄存器
编址
IOY2
0#计数器
40H
1#计数器
41H
2#计数器
42H
控制寄存器
43H
3.2CPU选型
本次设计选用的是8086CPU,同时该CPU工作在最小模式下(MN/MX引脚接高电平)。
其中,主要使用引脚如下:
AD0-AD15:
地址数据状态复用的引脚;
A16-A19:
高4位地址信号;
IO/M:
输入输出/存储器控制信号;
WR:
写信号输出;
RD:
读选通信号;
ALE:
地址锁存信号;
DT/R:
数据传送方向控制信号;
四、软件思想(含流程图和程序)
定时中断服务程序流程图
A8254EQU06C0H;宏定义
B8254EQU06C2H
C8254EQU06C4H
CON8254EQU06C6H
SSTACKSEGMENTSTACK
DW32DUP(?
);设置段,开辟一个内存空间
SSTACKENDS
DATASEGMENT
MSECDW0;定义数据段
SECDB0
MINDB0
DATAENDS
CODESEGMENT;定义代码段
ASSUMECS:
CODE,DS:
DATA,SS:
SSTACK
START:
PUSHDS;入栈代码段
MOVAX,0000H
MOVDS,AX
MOVAX,OFFSETMIR7;取中断入口地址
MOVSI,003CH;中断矢量地址
MOV[SI],AX;填IRQ7的偏移矢量确定地址
MOVAX,CS;段地址
MOVSI,003EH
MOV[SI],AX;填IRQ7的段地址矢量
CLI;清除中断标志
POPDS;出栈
;初始化主片8255
MOVDX,MY8255_MODE
MOVAL,80H
OUTDX,AL
;初始化主片8254
MOVDX,CON8254
MOVAL,36H
OUTDX,AL
MOVDX,A8254
MOVAL,0E8H
OUTDX,AL
MOVAL,03H
OUTDX,AL
;初始化主片8259
MOVAL,11H
OUT20H,AL;ICW1
MOVAL,08H
OUT21H,AL;ICW2
MOVAL,04H
OUT21H,AL;ICW3
MOVAL,01H
OUT21H,AL;ICW4
MOVAL,6FH;OCW1
OUT21H,AL
STI;置中断标志位IF
MOVAX,DATA;数据传给AX
MOVDS,AX;再把AX中心数据送入段DS中
MOVSI,3000H;SI中的值设为3000H
MOVAL,00H;把AL清0
MOV[SI],AL;把地址为3000H的空间清0给DEL初始化
MOV[SI+1],AL;把地址为3001H的空间清0
MOV[SI+2],AL;把地址为3002H的空间清0
MOV[SI+3],AL;把地址为3003H的空间清0
MOVDI,3003H
BEGIN:
:
CALLDIS;调用子程序DIS
CALLCLEAR;调子程序CLEAR
JMPBEGIN;无条件跳到BEGIN
MIR7:
STI;置中断标志位IF
PUSHAX
PUSHSI
MOVAX,MSEC;毫秒内容0给AX,并让其在AX中自增,
INCAX然后再传回到毫秒中
MOVMSEC,AX
CMPAX,2000AX中的数经过自增后变化了,用这个
JBMRET数与2000比较,如果低于2000跳到MRET
MOVAX,0
MOVMSEC,AX
MOVAL,SEC
ADDAL,1
DAA
MOVSEC,AL
CMPAL,60H
JBMTODIS
MOVAL,0
MOVSEC,AL
MOVAL,MIN
ADDAL,1
DAA
MOVMIN,AL
CMPAL,60H
JNZMTODIS
MOVAL,0
MOVMIN,AL
MTODIS:
MOVAL,SEC
MOVAH,AL
MOVSI,3000H
ANDAL,0FH
MOV[SI],AL
RORAH,1
RORAH,1
RORAH,1
RORAH,1
ANDAH,0FH
MOV[SI+1],AH
MOVAL,MIN
MOVAL,MIN
MOVAH,AL
ANDAL,0FH
MOV[SI+2],AL
RORAH,1
RORAH,1
RORAH,1
RORAH,1
ANDAH,0FH
MOV[SI+3],AH
MRET:
MOVAL,20H
OUT20H,AL;中断结束命令
POPSI
POPAX
IRET
CLEAR:
:
MOVDX,MY8255_B
MOVAL,00H把00H写入8255的B口,使B口停止工作
OUTDX,AL
RET
DIS:
PUSHAX;AX内容存在栈中
MOVSI,3000H
MOVDL,0F7H
MOVAL,DL
AGAIN:
PUSHDX;内容入栈保存
MOVDX,MY8255_A把AL内容OF7H写入A口中
OUTDX,AL
MOVAL,[SI]
MOVBX,OFFSETDTABLE
ANDAX,00FFH
ADDBX,AX
MOVAL,[BX]
MOVDX,MY8255_B把数据传到A口,再经过B口传出接DEL
OUTDX,AL段显示器
CALLDALLY
INCSI
POPDX
MOVAL,DL
TESTAL,01H
JZOUT1
RORAL,1;循环右移
MOVDL,AL
JMPAGAIN
OUT1:
:
POPAX
RET
DALLY:
PUSHCX;延时过程
MOVCX,000FH
T1:
MOVAX,009FH
T2:
DECAX
JNZT2
LOOPT1
POPCX
RET
CODEENDS;程序结束
ENDSTART
九、总结
在本次设计的时候,我们已经学完了《微型计算机原理及接口技术》这本教材,所以对于微机原理的一些基础知识也有所掌握,但这离一个完整设计的距离还有很大的一步。
这次课设的题目是简单电子钟课程设计,为了更好的完成这次课程设计,我去图书馆查阅了很多相关资料,并对课本进行了一次重新的学习,这一切让我对微机原理知识有了进一步的认识,并丰富了我的相关知识。
我真的很庆幸我有机会着手设计这么一个题目,它所应用到的知识覆盖面很广,所以本次课程设计让我学习到了很多新的微机知识,并从中获益良多。
在刚开始设计的时候,我真的是一头雾水,不知道从何下手,于是就借来了以前学长的程序设计作个参考,我先将他们的程序设计看懂,然后再自己尝试着去设计。
首先应该画出硬件设计图,这个过程是基础,然后是流程图,这个是重点,流程图的完成在很大程度上等于程序的完成,然后是程序的编写。
在整个设计的过程中真的遇到了很多的困难,总有自己想不明白的问题,多亏了王老师的批评指正和我组热心的同学们对我的关心帮助,让我学到了正确的知识。
在这里,我要特别感谢你们!
这次设计让我收获了很多,既是对自己所学到的知识作一个肯定,也是对《微型计算机原理及其接口技术》的复习,更主要的是通过设计增强了自己动手的能力。
在这次课程设计中涉及到很多芯片的应用,最大特点是软,硬件的结合,对动手能里的要求很大,设计完成后我的编程水平提高了一大步。
这次设计,更增加了我对微机原理的兴趣,为我将来的学习明确了目标。
令我遗憾的是,由于时间的限制以及自身能力的不足,我这次的设计方案没有任何的创新。
虽然我在设计的时候有很多想法想去尝试,并且参阅了大量的专业资料,然而最后都因为自身学识的不足而放弃,很遗憾。
但是,在这个设计的期间激发了我很多学习的乐趣,并准备在以后的课余时间多学习相关知识,多作这方面的研究,补全这次设计不足的遗憾。
参考书籍
1、戴梅萼,史嘉权编著.微型计算机技术及应用(第4版).北京:
清华大学出版社,2008
2、周明德编著.微型计算机系统原理及应用(第四版).北京:
清华大学出版社,2002
3、李顺增,吴国东,赵河明等.微机原理及接口技术.北京:
机械工业出版社,2006
4、杨立新.微型计算机原理和应用[M].北京:
科学技术文献出版社,1986.11
5、李大友.微型计算机原理[M].北京:
清华大学出版社,1998.7
6、眭碧霞.微型计算机原理与组成[M].人民邮电出版社,2003.8
7、冯博琴吴宁.微型计算机原理与接口技术[M].北京:
清华大学出版社,2007
8、姚燕南薛钧义.微型计算机原理与接口技术[M].北京:
高等教育出版社,2004
9、王克义鲁守智蔡建新王文保.微机原理与接口技术教程[M].北京:
高等教育出版社,2004