最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

微机原理课程设计-电子钟

来源:动视网 责编:小OO 时间:2025-09-29 18:18:32
文档

微机原理课程设计-电子钟

中文摘要微机控制即微型计算机原理控制。是集CPU,RAM,ROM,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。微型计算机原理控制应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡,电子宠物等,这些都离不开微型计算机原理控制。我们组本次设计的题目是简单电子钟程序设计,用到了定时芯片8254,中断控制器
推荐度:
导读中文摘要微机控制即微型计算机原理控制。是集CPU,RAM,ROM,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。微型计算机原理控制应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡,电子宠物等,这些都离不开微型计算机原理控制。我们组本次设计的题目是简单电子钟程序设计,用到了定时芯片8254,中断控制器
中文摘要

微机控制即微型计算机原理控制。是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。

微型计算机原理控制应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡,电子宠物等,这些都离不开微型计算机原理控制。

我们组本次设计的题目是简单电子钟程序设计,用到了定时芯片8254,中断控制器8259和可编程并行芯片8255。在编辑1毫秒定时程序时,用到了中断控制器8259。

此程序主要由四部分组成:

第一部分为最主要的部分定义显示界面;

第二部分为利用延时程序,并将调用的二进制表示的时间数转换成ASCII码,并将时间数存入内存区;

第三部分将存在系统内存区的时间数用七段数码管显示出来;

第四部分利用循环程序分别对秒个位、秒十位、分个位、分十位与相应的规定值进行比较,结合延时程序来实现电子钟数字的跳变,从而形成走时准确的电子钟。

该程序实现了准确显示秒和分,读数准确,走时精准。此电子钟能准确的从0分0秒走时到59分59秒,然后能自动回复到0分0秒循环走时。

关键词:

可编程并行芯片8255    定时芯片8254   中断控制器8259

七段数码显示管   延时   计数   比较   定时   中断

1 设计任务描述

1.1设计题目

简单电子钟设计

1.2设计内容

利用微机原理试验箱的发光数码管显示单元,把时间显示在LED数码管上。

1.2.1 设计目的

通过课程设计使学生更进一步掌握微机原理及应用课程的有关知识,提高应用微机解决问题的能力,加深对微机应用的理解。通过查阅资料,结合所学知识进行软、硬件的设计,使学生初步掌握应用微机解决问题的步骤及方法。为以后学生结合专业从事微机应用设计奠定基础

1.2.2 设计要求

利用8254定时器设计一个具有分、秒显示的电子时钟,并定义一个启动键,当按下该键时时钟从当前设定值(可在显示,缓冲区中予置)开始走时。利用微机原理试验箱的发光数码管显示单元,把时间显示在LED数码管上。

基本要求:(1) 走时准确。

(2) 显示无误。

1.2.3设计发挥

         (1)延时

         (2)显示小时

1.3设计环境与器材

(1)PC微机一台

 用于对程序的编译测试等,同时还需要对实验设备进行控制,提供整个程序的运行平台,并且收集和释放硬件信号,实现程序功能。

(2)微机原理实验箱一台

 此设备必须能提供8254、8255、8259和数码管等必要芯片。并且能通过接受PC机传来的信息,显示出相应的功能。以支持电子时钟的实现。

(3)导线若干条

 用于电路和芯片之间的连接。

2设计思路

电子钟的总体设计原理是:首先利用定时芯片8254的定时作用定时计数,在给定的时间内逐渐变为0时,就会发出一个中断信号,8259中断器接到此中断信号就会调用MIR7时间显示程序,执行此程序后8255就会工作,把接到的二进制时间码转换成ASCII码在四个码管上显示时间。               

具体做法是为了实现精确走时,显示分秒。

我们先在数据段开辟一显示缓冲区,用来存储系统时间,初始化我们所要应用的芯片8254,8255,8259后,允许中断信号输入,主程序开始。

为了显示分秒,并被我们识别,先调用DIS程序,实现片选的功能。

为了得到良好的显示效果,本程序调用了一段精确的延时程序没,使各位在时间显示上有短暂的间隔,延时程序要尽量接近1秒,但又不能超过一秒。

为了实现会跳动的电子钟,我们调用了子程序clear的清屏功能,不断以刷新的方式来获取时间,形成会跳动的电子钟。

同时,由于8254定时器的分频功能,产生中断信号,8259中断器就会调用MIR7时间显示程序,实现位选,最后通过LED数码管显示出来,时间刷新,再显示,如此循环,就形成了精确走时的电子钟。 

3 主要元器件介绍

3.1  8254简介

8254具有3个的16位计数器,6种不同的工作方式。计数寄存器用来寄存计数初值,计数工作单元为16位减1计数器,它的初值便是计数寄存器内容,计数单元对CLK脉冲计数,每出现一个CLK脉冲,计数器减1,当减为零时,通过OUT输出指示信号表明计数单元已为零。当作为定时器工作时,每当计数单元为零时,计数寄存器内容会自动重新装入 计数单元,而且CLK输入是均匀的脉冲序列,于是OUT输出频率是降低了的(相对于CLK信号频率)脉冲序列。 当作为计数器工作时,表明只关心在CLK端出现(代表事件)的脉冲个数,当CLK端出现了规定个数的脉冲时,OUT输出一个脉冲。

3.1.1  8254引脚功能

图3.3.1 内部结构框图和引脚图

上图是8254 的内部结构框图和引脚图,它是由与CPU 的接口、内部控制电路和三个计数器组成。

本次设计主要利用8254产生1ms的方波,其与总线相连接的引线主要是:

D0~D7双向数据线,用以传送数据和控制字。这里分别与XD0~XD7相连接。

CS输入信号,低电平有效,当它有效时才能选中该定时器芯片,实现对它的读或写,这里与系统IOY3相连接。

RD读控制信号,低电平有效,与系统总线IOR#相连接。

WR写控制信号,低电平有效,与系统总线IOW#相连接。

A0、A1为8254的内部计数器和一个控制寄存器的编码选择信号,其功能如下:

A1A0选择
00计数器0

01计数器1

10计数器2

11控制寄存器
CLK0是计数器的时钟输入端。本次设计的时钟为1MHZ,计数器对此时钟信号进行计数。

GATE0门控信号,即计数器的控制输入信号,用来控制计数器的工作,这里使其为高电平,直接接系统5V。

OUT计数器输出信号,用来产生不同方式工作时的输出波形,本次设计的1ms方波由此输出。

3.1.2  8254 的工作方式 

8254有6种方式工作,由于只用来产生方波,所以使其工作在方式3(方波发生器),在此方式下,GATA信号为低电平时,强迫OUT输出高电平,当GATA主高电平时,OUT输出时称方波。

(1) 方式0 :计数到0 结束输出正跃变信号方式。 

(2) 方式1:硬件可重触发单稳方式。 

(3) 方式2 :频率发生器方式。 

(4) 方式3 :方波发生器。 

(5) 方式4 :软件触发选通方式。 

(6) 方式5 :硬件触发选通方式。

3.1.3  8354内部控制字

  8254 的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设 置读回命令,称为读回控制字。这两个控制字共用一个地址,由标识位来区分。当读回控制字的D4 位为0 时,由该读回控制字D1~D2 位指定的计数器的状态寄存器内容将被锁存到状态寄存器中。状态字格式如图6.3.2所示:

图3.3.2  8254状态字格式

                                                                                                                             

4 源程序清单及注释

MY8255_A   EQU     0600H          

MY8255_B   EQU     0602H                                                       

MY8255_C   EQU     0604H                                 

MY8255_MODE  EQU    0606H         

A8254      EQU   06C0H           ;宏定义

B8254      EQU   06C2H

C8254      EQU   06C4H

CON8254    EQU   06C6H

SSTACK    SEGMENT    STACK   

          DW      32   DUP(?)        ;设置段,开辟一个内存空间

SSTACK     ENDS

DATA    SEGMENT  

DTABLE    DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H

            DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H         

MSEC        DW     0                                  ;定义数据段

SEC        DB     0                                  

MIN         DB      0

DATA    ENDS     

CODE       SEGMENT                            ;定义代码段

        ASSUME   CS:CODE,DS:DATA,SS:SSTACK

START:PUSH DS                             ;入栈代码段

        MOV AX, 0000H

        MOV DS, AX

        MOV AX, OFFSET MIR7        ;取中断入口地址

        MOV SI, 003CH                   ;中断矢量地址

        MOV [SI], AX                   ;填IRQ7的偏移矢量        确定地址        

MOV AX, CS                    ;段地址

        MOV SI, 003EH

        MOV [SI], AX                   ;填IRQ7的段地址矢量

        CLI                         ;清除中断标志

        POP DS                      ;出栈

        ;初始化主片8255

        

MOV  DX,MY8255_MODE

          MOV  AL,80H

          OUT  DX,AL

           ;初始化主片8254

           MOV DX,CON8254

          MOV AL,36H

          OUT DX,AL

          MOV DX,A8254

          MOV AL,0E8H

          OUT DX,AL

          MOV AL,03H

          OUT DX,AL

            ;初始化主片8259

           MOV AL, 11H

           OUT 20H, AL                ;ICW1

           MOV AL, 08H

           OUT 21H, AL                ;ICW2

           MOV AL, 04H

           OUT 21H, AL                ;ICW3

           MOV AL, 01H

           OUT 21H, AL                ;ICW4

           MOV AL, 6FH                ;OCW1

           OUT 21H, AL

           STI             ;置中断标志位 IF

            MOV  AX,DATA   ;数据传给AX

MOV   DS,AX      ;再把AX中心数据送入段DS中

             MOV  SI,3000H   ;SI中的值设为3000H

             MOV  AL,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

             MOV  DI,3003H

BEGIN::CALL DIS        ;调用子程序DIS

             CALL CLEAR      ;调子程序CLEAR

           JMP BEGIN       ;无条件跳到BEGIN

MIR7:STI           ;置中断标志位IF

          PUSH AX

           PUSH SI

          MOV AX,MSEC                 ; 毫秒内容0给AX,并让其在AX中自增,

          INC AX                                 然后再传回到毫秒中

          MOV MSEC,AX

CMP AX,2000              AX中的数经过自增后变化了,用这个

          JB MRET                   数与2000比较,如果低于2000跳到MRET 

         MOV AX,0

          MOV MSEC,AX                      

          MOV AL,SEC

          ADD AL,1

          DAA

          MOV SEC,AL

          CMP AL,60H

          JB MTODIS

          MOV AL,0

          MOV SEC,AL

          MOV AL,MIN

          ADD   AL,1

          DAA

          MOV MIN,AL

         CMP AL,60H

         JNZ MTODIS

         MOV AL,0

         MOV MIN,AL

MTODIS: MOV AL,SEC

          MOV AH,AL

          MOV SI,3000H

          AND AL,0FH

          MOV [SI],AL

          ROR AH,1

          ROR AH,1

          ROR AH,1

          ROR AH,1

          AND AH,0FH

          MOV [SI+1],AH

          MOV AL,MIN

          MOV AL,MIN

          MOV AH,AL

          AND AL,0FH

          MOV [SI+2],AL

           ROR AH,1

           ROR AH,1

           ROR AH,1

           ROR AH,1

           AND AH,0FH

           MOV [SI+3],AH            

MRET:MOV AL, 20H

           OUT 20H, AL        ;中断结束命令

           POP SI

           POP AX

           IRET

CLEAR::MOV DX,MY8255_B

          MOV AL,00H            把00H写入8255的B口,使B口停止工作

          OUT DX,AL                      

          RET

DIS:PUSH AX                            ;AX内容存在栈中

        MOV SI,3000H

        MOV DL,0F7H

        MOV AL,DL

AGAIN:PUSH DX                             ;内容入栈保存

        MOV DX,MY8255_A                        把AL内容OF7H写入A口中

       OUT DX,AL

       MOV AL,[SI]

       MOV BX,OFFSET DTABLE

AND AX,00FFH                       

ADD BX,AX

        MOV AL,[BX]

       MOV DX,MY8255_B            把数据传到A口,再经过B口传出接DEL

OUT DX,AL                   段显示器

CALL DALLY

        INC SI

       POP DX

       MOV AL,DL

TEST AL,01H

       JZ  OUT1

       ROR AL,1                 ;循环右移

MOV DL,AL

       JMP AGAIN

OUT1::POP AX

        RET                                                                        

                                                                                

  DALLY:PUSH CX                 ;延时过程                                                 

           MOV CX,000FH                                                              

T1:        MOV AX,009FH                                                               

T2:     DEC AX                                                                     

          JNZ  T2                                                                               

          LOOP T1                                                                   

          POP CX                                                                    

          RET                                                                       

CODE ENDS                     ;程序结束                                                    

         END START                                                                 

                                               

5 设计原理流程图

                

  

6 实际硬件电路接线图

系统的连线图主要由五个部分构成。8259中断控制器、8254可编程时间间隔定时器、8255并口控制器、键盘及数码管显示单元、开关及LED显示单元构成。如下图所示:

芯片8254           系统总线           芯片8255         DEL数码管

D0    PB0

D1    PB1

D2    PB2

D3    PB3

D4    PB4

D5    PB5

D6    PB6

D7    PB7

WR     

RD    PA3

CS    PA2

A0    PA1

A1    PA0

A

B

C

D

E

F

G

H

X1

X2

X3

X4
XD0

XD1

XD2

XD3

XD4

XD5

XD6

XD7

IOW#

WOR#

IOY3 IOY0

XA1

XA2

PCLK

MIR7

+5V
D0

D1

D2

D3

D4

D5

D6

D7

WR

RD

CS

A0

A1

CLK0

OUT0

GATE0

设计总结

    为期一周的微机原理课程设计在紧张的期末复习期间匆忙的结束了,时间虽然很短暂,但是我却收获了不少。之前大半个学期的学习都是些理论知识,这次的课程设计才使我对微机原理的应用有了一次真正的感悟。

    在本次设计的时候,我们已经学完了《微型计算机原理及应用》这本教材,所以对于微机原理的一些基础知识也有所掌握,但这离一个完整设计的距离还有很大的一步。这次课设的题目是简单电子钟课程设计,为了更好的完成这次课程设计,我去图书馆查阅了很多相关资料,并对课本进行了一次重新的学习,这一切让我对微机原理知识有了进一步的认识,并丰富了我的相关知识。我真的很庆幸我有机会着手设计这么一个题目,它所应用到的知识覆盖面很广,所以本次课程设计让我学习到了很多新的微机知识,并从中获益良多。

    在刚开始设计的时候,我真的是一头雾水,不知道从何下手,于是就借来了以前学长的程序设计作个参考,我先将他们的程序设计看懂,然后再自己尝试着去设计。首先应该画出硬件设计图,这个过程是基础,然后是流程图,这个是重点,流程图的完成在很大程度上等于程序的完成,然后是程序的编写。在整个设计的过程中真的遇到了很多的困难,总有自己想不明白的问题,多亏了王老师的批评指正和我组热心的同学们对我的关心帮助,让我学到了正确的知识。在这里,我要特别感谢你们!

    这次设计让我收获了很多,既是对自己所学到的知识作一个肯定,也是对《微型计算机原理及应用》的复习,更主要的是通过设计增强了自己动手的能力。在这次课程设计中涉及到很多芯片的应用,最大特点是软,硬件的结合,对动手能里的要求很大,设计完成后我的编程水平提高了一大步。这次设计,更增加了我对微机原理的兴趣,为我将来的学习明确了目标。

    令我遗憾的是,由于时间的以及自身能力的不足,我这次的设计方案没有任何的创新。虽然我在设计的时候有很多想法想去尝试,并且参阅了大量的专业资料,然而最后都因为自身学识的不足而放弃,很遗憾。但是,在这个设计的期间激发了我很多学习的乐趣,并准备在以后的课余时间多学习相关知识,多作这方面的研究,补全这次设计不足的遗憾。

    最后,我认真地完成了课程设计的论文。希望这次能取得好成绩!

                             

致谢

一个星期的微机原理课程设计结束了,我很顺利的完成了本次课程设计的题目,这次课程设计的完成与很多人对我的关心帮助是密不可分的。

首先我要感谢王老师在为期一周的微机原理课程设计里为我的设计方案提供参考意见,指导我改正设计方案中的错误以及不厌其烦地解答我的问题。使我得以最终完成这次课程设计的题目。

其次我要感谢同小组的同学在讨论中为我消除了很多疑惑,使我对电子钟的设计有了更清楚的思路。

再次我还要感谢上一届的学长学姐给我提供了一些设计思路作为参考以及大力的支持与鼓励。

最后要感谢学校图书馆为我们提供了很多实用的参考书籍和庞大的数字图书馆数据库。

谢谢你们! 

参考文献

[1].周明德.《微型计算机系统原理与应用》(第四版).北京:清华大学出版社,1998

[3].韩进宏.贾鹏《微型计算机原理与接口技术实验指导书》.北京:机械工业出版社,1996

[5] 王颐. 《微机原理及应用实验教程》.重庆:重庆大学出版社,1998 

[6] 潘峰. 《微型计算机原理与汇编语言》.电子工业出版社,1997

文档

微机原理课程设计-电子钟

中文摘要微机控制即微型计算机原理控制。是集CPU,RAM,ROM,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。微型计算机原理控制应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡,电子宠物等,这些都离不开微型计算机原理控制。我们组本次设计的题目是简单电子钟程序设计,用到了定时芯片8254,中断控制器
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top