基于8086的电子时钟设计(彩色图版)(共21页).doc

上传人:飞****2 文档编号:14240593 上传时间:2022-05-03 格式:DOC 页数:21 大小:544.50KB
返回 下载 相关 举报
基于8086的电子时钟设计(彩色图版)(共21页).doc_第1页
第1页 / 共21页
基于8086的电子时钟设计(彩色图版)(共21页).doc_第2页
第2页 / 共21页
点击查看更多>>
资源描述

《基于8086的电子时钟设计(彩色图版)(共21页).doc》由会员分享,可在线阅读,更多相关《基于8086的电子时钟设计(彩色图版)(共21页).doc(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上 目 录 112222 2 334 445 56677 7 77 7911 13 14 15专心-专注-专业摘要本设计以微机原理与接口技术为基础,以8086CPU为核心,利用INTER 8253可编程定时/计数器,通过引入时钟发生器产生标准时钟进行精准定时;经定时器产生中断源,采用可编程中断控制器8259A进行中断扩展,用可屏蔽中断方式进行时间的采集;以可编程并行I/O接口芯片8255A扩展接口,驱动MSC1602液晶模块进行时间显示。关键词:微机原理;接口技术;8086CPU;可屏蔽中断;MSC1602液晶;可编程;INTER 8253定时/计数器;中断控制器825

2、9A;并行I/O接口芯片8255AAbstractThis design take the microcomputer principle and the connection technology as a foundation, by the 8086CPU core, uses the INTER 8253 programmable fixed time/counters, produces the standard clock through the introduction clock generator to carry on fine fixed time; Produces t

3、he interrupt source after the timer, uses programmable interrupt controller 8259A to carry on the interrupt to expand, sends the maskable interrupt way to carry on the counting; By programmable parallel I/O the connection chip 8255A expansion connection, actuates the MSC1602 liquid crystal module to

4、 carry on the time demonstration.Key word: Microcomputer principle; Connection technology; 8086CPU; Maskable interrupt; MSC1602 liquid crystal; Programmable; INTER 8253 fixed time/counters; Interrupt controller 8259A; Parallel I/O connection chip 8255A第一章 电子钟设计总体方案设计1.1 设计目的电子钟是一种基于微电子技术实现时、分、秒计时的装置

5、,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。1.2 设计要求利用8253定时器设计一个具有时、分、秒显示的电子时钟,并定义一个启动键,当按下该键时电子时钟从当前设定值开始走时。1.3 方案比较为实现设计要求,在8086微机系统中实现计时功能可有多种方式,同时实现显示的方式也有多种,现主要比较计时方式中的中断与非中断方式,及显示常用的LED显示与液晶显示。1.3.1 非中断方式与中断方式的比较在非中断方式设计常使用的方式为查询法,查询法的设计,可将定时/计数器8253的OUT引脚接至并行I/O扩展芯片8255的PA,PB,PC的任一口上,C

6、PU通过不断的检测该引脚上的高低电平变化,来进行计数。该方式的优点:实现思路相对简单;由于不要引入中断则可不用中断扩展芯片8259电路相对简单;该方式的缺点:由于CPU要不断的去检测单一引脚高低电平的变化,占用的时间比较长,利用率较低;与此同时,CPU要进行数据的运算与控制数据的传输,如果二者冲突,可能会发生计时不准的现象。中断方式的设计思路,将定时/计数器8253的OUT脚接至中断扩展芯片8259的IR引脚上,定时器产生相同频率的计数脉冲,形成中断源。8259再通过INTR引脚向CPU发出中断请求信号,CPU通过中断检测进行计数/计时。该方式的主要缺点:由于芯片8259的引进,使电路相对复杂

7、;该方式的主要优点是:用中断的方式可以大大提高CPU的利用效率,同时可以在该系统上进行更多功能的扩展,同时用中断的方式进行计数/计时,计时更加的准确可靠。基于以上的考虑本设计,采用电路稍微复杂,但可靠性强,利用效率高的中断方式。1.3.2 LED显示与液晶显的比较为完成本设计的要求,若采用LED则需6块以上,可以采用二片8255来驱动动这六片LED进行静态显示。也可以采用动态扫描的方式,用一片8255加锁存器(如74LS573)来进行动态显示。若采用液晶显示,则只需用一片8255芯片进行接口的扩展(具体扩展方案将在下面进行介绍),可以得到较为满意的显示效果,但操作的技巧性要求相对较高,成本相对

8、较高。不论从硬件电路驱动的复杂性,还是从软件设计的简洁性及整个系统的外观来看,时尚的液晶显示更能满足系统的需求。鉴于以上考虑,本次设计采用操作要求相对较高的液晶进行数码显示。1.4 总体方案设计思路本方按主要设计思路如右下图所示:以8086CPU最小系统为核心,控制可编程定时/计数器INTER 8253,可编程中断控制器8259A,可编程并行I/O接口芯片8255A。通过8253的输出记数脉冲为8259产生中断源,8259将中断信号反馈到CPU,从而产生可屏蔽中断的申请信号,在CPU的合理响应下进行计数,通过8255驱动16*2的液晶显示模块LCM1602进行时间显示。8086CPU82558

9、25982531602驱动产生中断控制中断源控制控制 第二章 系统硬件设计在本章中,将分模块对本次设计的硬件设计进行简述,分块介绍系统的主要功能及连线方式。2.1 8255与CPU之间的连接关系 通过CPU与8255的读写控制线对接,有效的控制接口芯片的输入输出状态,用第11和12根地址线再加上2-4译码器的的Y0脚接8255片选,为8255的A,B,C及控制口分配了可靠的地址。将8086的低八位数据线与8255数据端对接,为8255的输入输出提供数据。由于为芯片提供的都是偶地址,系统默认访问低八位的数据线。具体连线图见右图:2.2 8253与周边电路的连接关系在系统中定时/计数芯片8253主

10、要与CPU及中断扩展芯片8259之间存在着连接关系。同8255,8253的读写控制线与CPU的读写控制线对接,正确控制CPU对8253的读写控制(本次设计只用到了CPU往8253中写入数据,没用到读出状态的功能),第2和3位数据/地址复用线加上译码器的Y1端为8253的定时器0,1,2及控制口确定了可靠的地址(仅用到T0及控制地址),CPU低八位数据线为控制8253提供数据。通过CLK0端引入时钟发生器所产生的标准时钟(本设计采用10KHZ的外部时钟),将OUT0接至8259的IR0引脚上,作为中断源。具体电路如上示:2.3 8259与周边电路连接关系为了对8259进行合理分配奇、偶地址,从C

11、PU引入了第A13作为地址线,再加上译码器的Y2端作为片选信号,8259获得了两个可靠的地址。同8255与8253相似8086同样靠低八位的数据线,与8259进行数据交换。IR0为8253的计数输出端,8259通过检测IR一组引脚的输入情况,经过中断判优以后,对当前优先级最高的中断进行响应,同时向CPU发送INTR信号请求中断,在可屏蔽中断允许的情况下CPU对其进行响应,返回INTA非的信号,8259此时发出当中断的中断类型号给8086。程序跳到中断子程序的入口地址处去执行中断操作。具体电路连线如右图所示:2.4 液晶显示模块与8255之间的连线关系液晶显示模块1602的数据线接在8255的A

12、口上,通过对A口进行读写操作,为显示模块提供控制指令及显示数据。8255的PC0和PC1分别接1602的RS(指令/数据控制脚)和EN(使能脚)上,控制指令/数据的输入。其它引脚按典型接法接线,要说明的是,本次对1602只进行了写的操作,故将读写控制脚接低电平。通过延时的方式来解决1602读写操作忙的问题(具体时序见第三章 系统软件设计)。连线图如右示:2.5 地址译码器与按键在本次设计中,由于有多片芯片要进行地址编码,使用了一片2-4译码器74LS139进行译码,使地址编码更加的方便。使用的CPU地址端口为第9和10号地址线,输出的Y0,Y1,Y2分别接8255,8253,8259。由于设计

13、要求,在本设计中进行了按键设计,其电路简单,当K未按下时输出为高电平,当K按下时输入给8255PB0口一个低电平,系统通过检测这一引脚是否为低电平来判断系统是否开始从当前时间开始计时。具体设计电路图见2.6总体硬件电路图。2.6 系统总体硬件电路图第三章 系统软件设计3.1 编址及控制字的确定3.1.1 编址按照第二章硬件设计电路中,CPU对8253,8255,8259进行的地址分配地址(仅为在编程过程过要使用的地址进行编制),本设计所用编址无用位均置0;8253 定时器0的地址:0200H;控制口:020CH8255 A口地址:0;B口地址:0800H; C口地址:1000H;控制口:180

14、0H8259 奇地址:2400H; 3.1.2 控制字根据系统的需要,合理选择各芯片的工作方式。8253:选取定时器0,采用先写高八拉后写低八的初值写入方式,工作方式3方波发生器,采取二进制的方式输入初值,从而CWB36H8255:分别选取A,C口为输出端口,B口为输入端口均采用工作方式0简单的输入/输出方式,故工作方式控制字为;B82H;同时要对PC0和PC1进行复位和置位操作,其复位/置位控制字分别为:PCO复位/置位控制字为:0/01H;PC1口的置位/复位控制字:02H/03H8259:本设计中只有一片8259无从片,故无须写入ICW3,不需要写ICW4采用上升沿触发的方式可得:ICW

15、1H12H;使用60H号中断故ICW260H3.2 分块子程序3.2.1 1602读写操作子程序如右图所示,为1602液晶显示的写时序图:1602的写操作通过不同的时序进行控制,可分为写指令操作(子程序WRITECOM)和写数据(子程序WRITEDATA)。写指令的时序为,先拉低RS小延时(约0.5ms)后将EN拉低,小延时后拉高电平输入指令到液晶,然后拉低EN;写数据的操作时序与之基本类似,只是先拉低指令/数据控制信号RS,然后拉低EN。最体子程序代码如下示:WRITE_COM PROC FAR;1602写指令子程序PUSH AX;将AX压入堆栈PUSH CX;MOV DX,1800H;MO

16、V AL,1;OUT DX,AL;将PC0即RS拉为高电平MOV AL,2;将PC1即EN拉为低电平OUT DX,AL;MOV DX,0;从A口输出数据POP AX;OUT DX,AL;CALL DELAY;短暂延时MOV AL,3;将EN拉高让数据写入液晶MOV DX,1800H;OUT DX,AL;CALL DELAY;MOV AL,2;拉低EN;OUT DX,AL;POP CX;POP AX;RET;WRITE_COM ENDPWRITE_DATA PROC FAR;1602写数据子程序PUSH AX;将AX压入堆栈PUSH CX;MOV DX,1800H;MOV AL,0;OUT DX

17、,AL;将PC0即RS拉为低电平MOV AL,2;将PC1即EN拉为低电平OUT DX,AL;MOV DX,0;从A口输出数据POP AX;OUT DX,AL;CALL DELAY;短暂延时MOV AL,3;将EN拉高让数据写入液晶MOV DX,1800H;OUT DX,AL;CALL DELAY;MOV AL,2;拉低EN;OUT DX,AL;POP CX;POP AX;RET;WRITE_DATAENDP3.2.2中断子程序中断开始保护现场恢复中断现场秒加1并输出秒60秒清0分加1并输出分60分清0时加1并输出时24时清0恢复现场并开中断中断返回保护中断现场NNNYYY中断子程序的设计流程

18、图如右示,进入中断后先保护现场(将寄存器CX,AX,DX及标志寄存器中的内容压入堆栈中),然后恢复中断现场(分别将秒时分计数寄存器BX,SI,DI的数值进行恢复继续计数)然后进行时钟的操作,最后要保护中断现场,即将时分计数寄存器BX,SI,DI的当前数值进行压栈操作进行保护方便下一次的计数,接着要进行现场的恢复(对寄存器CX,AX,DX及标志寄存器进行弹栈操作,并进行开启中断方便下一次中断的到来)。具体子程序设计如下:TIMER PROC FARPUSH CX;保护现场PUSH AX;PUSH DX;PUSHF;POP BX;恢复秒计数寄存器POP SI;恢复分计数寄存器POP DI;恢复时计

19、数寄存器INC BX; 秒加一操作MOV AL,80H+40H+0AH;写指令给1602进行输出定位CALL WRITE_COMMOV AX,BX;AAD;BCD码调整指令MOV CX,10;DIV CX; AX除以10得当前秒的十位和个位CALL WRITE_DATA ;写入秒十位MOV AL,AH;CALL WRITE_DATA;写入秒个位CMP BX,60;比较是否到了60JNZ EXIT; 不是60跳到EXIT的位置MOV BX,0;秒清0INC SI;分加1MOV AL,80H+40H+08H;写指令给1602进行输出定位CALL WRITE_COMMOV AX,SI;AAD;BCD

20、码调整指令MOV CX,10;DIV CX; AX除以10得当前分的十位和个位CALL WRITE_DATA ;写入分的十位MOV AL,AH;CALL WRITE_DATA;写入分的个位CMP SI,60;检测分是否到60JNZ EXIT;不是60跳转到EXIT处MOV SI,0;分清0INC DI;时加1MOV AL,80H+40H+05H;写指令给1602进行输出定位CALL WRITE_COMMOV AX,DI;AAD;BCD码调整指令MOV CX,10;DIV CX; AX除以10得当前时的十位和个位CALL WRITE_DATA;写入时的十位MOV AL,AH;CALL WRITE

21、_DATA;写入时的个位CMP DI,24;检测时是否为24JNZ EXIT;跳到公共点EXITMOV SI,0;时清零EXIT:PUSH DI; 保护中断现场 PUSH SI; PUSH BX;POP DX;恢复现场 POP AX; POP CX; STI;开启中断 IRET;中断返回TIMER ENDP3.3 主程序设计主程序的主要功能是:1. 完成各主要芯片的初始化;2. 完成液晶显示模块的初始化;开始8255初始化8253初始化8259初始化1602初始化检测K0等待中断NY3. 检测开关按键是否按下;4. 实时检测有无可屏蔽中断其主要流程如右图所示:具体设计代码如下:START: M

22、OV AX,DATAS MOV DS,AX MOV AL,82H;8255初始化MOV DX,1800HOUT DX,AL;MOV AL,36H;8253初始化MOV DX,020CH;OUT DX,AL;MOV AL,27H;MOV DX,0200HOUT DX,AL;MOV AL,10H;OUT DX,AL;MOV AL,12H;8259初始化MOV DX,0204H;OUT DX,AL;MOV AL,60H;OUT DX,AL;MOV AL,60H;将TIMER对应的60号中断写入中断向量表,本设计采用DOS功能调用法写入MOV AH,25H;MOV CX,SEG TIMER;MOV D

23、S,CX;MOV DX,OFFSET TIMER;INT 21H;MOV AL,38H;设置1602为16*2行 5*7点阵CALL WRITE_COM;MOV AL,0BH;开显示,不显示光标,光标不闪烁CALL WRITE_COM;MOV AL,06H;指针自动加一,整屏不移动CALL WRITE_COM;MOV AL,1;清屏指令CALL WRITE_COM;MOV AL,80H+40H+05H;在1602的第二行第5个位置写入数据,正好在1602的正中位置CALL WRITE_COM;MOV CX,8;MOV SI,-1;AA1:INC SI;将BUF里边的内容写入1602,其初始化完

24、成MOV AL,BUFSI;CALL WRITE_DATA;LOOP AA1;MOV BX,0;MOV SI,0;MOV DI,0;AA2:MOV DX,0800H;检测按键K是否按下IN AL,DX;TEST AL,1;JNZ AA2 ;不为0表明K未按下跳转 STI ;开中断JMP $;等待中断总结与致谢:经过一周的微机原理及应用课程设计,深化了我对微机原理及其接口技术的理解与认识。在接到课到课题以后我先对设计的要求进行了分析,通过方案的比校最终确定了所要使用的芯片,然后开始利用PROTEL 99进行硬件设计,在硬件设计完成后开始着手程序的设计,并成功运行原代码的书写,最后完成了文档的制作

25、。在这一周的实习时间内让我受益良多,不仅让我平时所学的内容在本次设计中得到了应用,也让我更熟悉了各主要芯片的工作方式,同时通过文档的制作也让我在文档的制作上有了一定的进步,这将为我以后的毕业设计和以后的工作奠定良好的基础。在此首先要感谢我的课程设计指导老师王南兰老师,她在设计之前对设计的要求与实现方式进行了详细的说明,为我的设计方案提供了思路;也为我们的文档设计提供了模板,让我在文档制作时更具有方向性和标准性。其次要感谢的是我的微机原理及接口技术的任课老师张晓虎老师,他在这一学期内教会了我程序设计的方法及对各主要芯片应用与控制,也教会了我一个完整的去做一个课题设计的步骤。再次向两位老师表示衷心

26、的感谢!但是,这次的实习唯一感到遗憾的是,由于实验器材的限制,也无法做出直观可见的仿真结果,所以这次的设计仅是基于理想化的设计。参考文献:1 彭楚武,张志文,等,微机原理与接口技术.湖南大学出版社,20042 周秀清,周荷琴 .微型计算机原理与接口技术.合肥:中国科技大学出版社,19993 李芷主编.微机原理与接口技术.北京:电子工业出版社,20024 杨路明.微型计算机系统及应用.长沙:中南工业大学出版社,19945 钱晓捷,陈涛.微型计算机原理及接口技术.北京:机械工业出版社,19996 朱德森,温鹏.微型计算机原理及接口技术.武汉:华中理工大学出版社,19957 朱定华.微机原理与接口技

27、术.北京:北方交通大学出版社,清华大学出版社,20028 谢维达,李玲玲编著.微型计算机原理与系统.北京:北京希望电子出版社,20039 沈美明,温冬婵.IBM-PC汇编语言程序设计(第二版).北京:清华大学出版社,200310 李广军,王厚军.实用接口技术.成都:电子科技大学出版社,1998附录:源程序代码:DATAS SEGMENT BUF DB 00:00:00,$;此处输入数据段代码 DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: M

28、OV AX,DATAS MOV DS,AX MOV AL,82H;8255初始化MOV DX,1800HOUT DX,AL;MOV AL,36H;8253初始化MOV DX,020CH;OUT DX,AL;MOV AL,27H;MOV DX,0200HOUT DX,AL;MOV AL,10H;OUT DX,AL;MOV AL,12H;8259初始化MOV DX,0204H;OUT DX,AL;MOV AL,60H;OUT DX,AL;MOV AL,60H;将TIMER对应的60号中断写入中断向量表,本设计采用DOS功能调用法写入MOV AH,25H;MOV CX,SEG TIMER;MOV D

29、S,CX;MOV DX,OFFSET TIMER;INT 21H;MOV AL,38H;设置1602为16*2行 5*7点阵CALL WRITE_COM;MOV AL,0BH;开显示,不显示光标,光标不闪烁CALL WRITE_COM;MOV AL,06H;指针自动加一,整屏不移动CALL WRITE_COM;MOV AL,1;清屏指令CALL WRITE_COM;MOV AL,80H+40H+05H;在1602的第二行第5个位置写入数据,正好在1602的正中位置CALL WRITE_COM;MOV CX,8;MOV SI,-1;AA1:INC SI;将BUF里边的内容写入1602,其初始化完

30、成MOV AL,BUFSI;CALL WRITE_DATA;LOOP AA1;MOV BX,0;MOV SI,0;MOV DI,0;AA2:MOV DX,0800H;检测按键K是否按下IN AL,DX;TEST AL,1;JNZ AA2 ;不为0表明K未按下跳转 STI ;开中断JMP $;等待中断 DELAY PROC FARPUSH CX;AA3:MOV CX,50LOOP AA3;POP CX;RETDELAYENDPWRITE_COM PROC FAR;1602写指令子程序PUSH AX;将AX压入堆栈PUSH CX;MOV DX,1800H;MOV AL,1;OUT DX,AL;将P

31、C0即RS拉为高电平MOV AL,2;将PC1即EN拉为低电平OUT DX,AL;MOV DX,0;从A口输出数据POP AX;OUT DX,AL;CALL DELAY;短暂延时MOV AL,3;将EN拉高让数据写入液晶MOV DX,1800H;OUT DX,AL;CALL DELAY;MOV AL,2;拉低EN;OUT DX,AL;POP CX;POP AX;RET;WRITE_COM ENDPWRITE_DATA PROC FAR;1602写指令子程序PUSH AX;将AX压入堆栈PUSH CX;MOV DX,1800H;MOV AL,0;OUT DX,AL;将PC0即RS拉为低电平MOV

32、 AL,2;将PC1即EN拉为低电平OUT DX,AL;MOV DX,0;从A口输出数据POP AX;OUT DX,AL;CALL DELAY;短暂延时MOV AL,3;将EN拉高让数据写入液晶MOV DX,1800H;OUT DX,AL;CALL DELAY;MOV AL,2;拉低EN;OUT DX,AL;POP CX;POP AX;RET;WRITE_DATAENDPTIMER PROC FARPUSH CX;保护现场PUSH AX;PUSH DX;PUSHF;POP BX;恢复秒计数寄存器POP SI;恢复分计数寄存器POP DI;恢复时计数寄存器INC BX; 秒加一操作MOV AL,

33、80H+40H+0AH;写指令给1602进行输出定位CALL WRITE_COMMOV AX,BX;AAD;BCD码调整指令MOV CX,10;DIV CX; AX除以10得当前秒的十位和个位CALL WRITE_DATA ;写入秒十位MOV AL,AH;CALL WRITE_DATA;写入秒个位CMP BX,60;比较是否到了60JNZ EXIT; 不是60跳到EXIT的位置MOV BX,0;秒清0INC SI;分加1MOV AL,80H+40H+08H;写指令给1602进行输出定位CALL WRITE_COMMOV AX,SI;AAD;BCD码调整指令MOV CX,10;DIV CX; A

34、X除以10得当前分的十位和个位CALL WRITE_DATA ;写入分的十位MOV AL,AH;CALL WRITE_DATA;写入分的个位CMP SI,60;检测分是否到60JNZ EXIT;不是60跳转到EXIT处MOV SI,0;分清0INC DI;时加1MOV AL,80H+40H+05H;写指令给1602进行输出定位CALL WRITE_COMMOV AX,DI;AAD;BCD码调整指令MOV CX,10;DIV CX; AX除以10得当前时的十位和个位CALL WRITE_DATA;写入时的十位MOV AL,AH;CALL WRITE_DATA;写入时的个位CMP DI,24;检测时是否为24JNZ EXIT;跳到公共点EXITMOV SI,0;时清零EXIT:PUSH DI; 保护中断现场 PUSH SI; PUSH BX;POP DX;恢复现场 POP AX; POP CX; STI;开启中断 IRET;中断返回TIMER ENDPMOV AH,4CH INT 21HCODES ENDSEND START

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁