论文部分内容阅读
[摘要]向读者介绍一种用FDSJ86/88电子实验箱实现的电子数字时钟系统。通过采用汇编语言进行软件编程,结合FDSJ86/88电子实验箱的硬件支持环境,实现电子时钟的基本功能,如时间的设置、时间的显示以及闹钟功能的设定与报警等功能。揭示电子时钟的工作原理,有助于加深对电子时钟原理的了解与认识。
[关键词]电子时钟 FDSJ86/88 汇编语言 模块分解
中图分类号:TP2文献标识码:A文章编号:1671-7597(2009)0920039-01
一、设计背景
电子时钟在我们日常生活中有着及其广泛的应用,无论在人们的工作,学习还是生活中,电子时钟都发挥这不可或缺的作用。在很多场所都可以看到电子时钟的身影。为了实现电子时钟时间设置,时间显示,以及能够正确无误的运行,本文采用用硬件软件相结合的方式来完成此次电子时钟设计。我们为电子时钟设计三个功能:时间的设置和时间的显示以及闹钟功能的设定与报警。时间的设置是通过汇编程序来完成的,我们可以根据不同的需求设置不同的时间,并通过显示器进行显示。
二、需求分析
在电子时钟的设计过程中,我们需要用到的电子芯片主要有8255和8253。他们的工作原理和功能如下所示。
(一)8253芯片
Intel8253芯片是一种可编程定时器/计数器,它可以利用硬件电路和中断方法控制定时,定时时间和范围完全由软件来确定和改变。在8253芯片内部具有3个独立的16位计数器通道,通过对它进行编程,最高计数频率能达到2MHz。8253还适用于许多其它的场合,如用作可编程方法频率产生器、分频率、程控单脉冲发生器等。在本课程设计中,8253芯片的通道0和通道1工作在方式2下,提供一秒的脉冲信号,通道2工作在方式3下,进行秒的计数。
(二)8255A芯片
8255A是一种通用的可编程并行I/O接口芯片,它是为Intel系列微处理器设计的配套电路,也可用于其它微处理器系统连接。通过8255A芯片,CPU可直接同外设相连接,其负责CPU和外设之间数据传送。通过对它进行编程,芯片可工作于不同的工作方式下。8255A芯片有三种工作方式,在本课程设计中,通过控制字,使其工作在方式0下。
8255A由数据端口A、B、C,A组和B组控制逻辑,数据总线缓冲器和读/写控制逻辑组成。A口包含一个8位的数据锁存器/缓冲器,一个8位的数据输入锁存器,因此它作输入输出时数据均能锁存。B口包含一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。C口包含一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器,无输入锁存功能。
A组和B组控制逻辑用来接收送来的命令字,然后分别决定A组和B组的工作方式,或对C口的每一位执行置位/复位操作。数据总线缓冲器是一个双向的8位缓冲器,用作8255A和系统总线之间的接口。通过这个缓冲器与之相连的8位数据总线D7~D0,接收CPU送来的数据或命令字。
读/写控制逻辑电路用来管理所有的内部或外部数据信息、控制字或状态字的传送过程,它接收从CPU的地址总线和控制总线来的信号,并产生对A组和B组控制逻辑进行操作的控制信号。8255A有两类控制字。一类是方式选择控制字,另一类是置位复位控制字。方式选择控制字的D7位总是1,而置位复位控制字的D7位总是0。方式选择控制字有3种基本的工作方式,即方式0-基本输入输出方式,方式1-选通输入输出方式,方式2-双向总线I/O方式。通过向8255A的控制字寄存器写入方式选择字,就可以规定各端口的工作方式。
(三)功能模块分析
该模块设计思路是将年月日时分秒分别保存至year,month,day,hour,
minute,second中,每个数字对应与一个字节,通过8253定时我们在8255的portA0口检测到低电平时调用INCSCD子程序,子程序中我们将更新year,month,day,hour,minute,second内的值,使秒加1,然后调用displaytime将year,month,day,hour,minute,second内的数据转化为ASCII码并显示到屏幕。通过开关1启动,程序检测到开关1接通时转入服务模块中的调整时间,通过把用户输入的值转化为16进制并替换year,month,day,hour,minute,second中的值我们在INCSCD子程序中更新完时间后比较当前时间与贮存的闹铃时间,如果两者一致程序会闪灯,否则跳出子程序;如要更新闹铃时间可以开启开关2,程序会转入服务模块,调整过程与时间调整类似。
三、调试与分析
根据上述需求分析得出的思路,进行汇编语言程序的编写。汇编语言程序一共分为三个分:第一部分是8255A芯片的初始化;第二部分是8253可编程定时/计数芯片的初始化;第三部分是,模块的编写。在该电子时钟的设计过程中一共有三个模块:1.计时和显示模块;2.时间调整模块;3.闹铃及其调整模块。
设计之初的思路是选择将年,月,日,时,分,秒分别保存在一个字节的内存单元中,这样在计时的设计上将变得简单,但这样的设计也带来一个问题,那就是在读入用户输入和将时间显示到屏幕上时的16进制转到ASCII码时,由于涉及到将一个字节内容拆分转化,灵活性受到限制,于是作者考虑将年,月,日,时,分,秒的每一位用一个字节储存,这样在进行转化时将节省很多操作时间,设计过程中作者反复修改了程序的结构以达到优化目的,在时间显示出现问题后,我们进行了单元测试并最终发现了问题,在找到问题症结后,我们对显示部分代码及电路进行了完善,最终得到了正确的显示结果。
四、设计总结
在该电子时钟的设计过程中,要注意到每个单独模块的编写实现不仅要使该模块完成相应的子任务,而且要使这个模块与主程序相匹配,尤其是各种命令必须相互匹配,所以就需要在编写程序时,经常性的调试运行、修改完善。在该系统的设计过程中用到了大量的软件工程的知识,虽然该系统整体偏向于硬件实现,但是软件工程的思想却穿插始终,在该系统的整个实现过程中体现的淋漓尽致。在电子时钟的设计实现过程中,很多理论并不能拿来直接为我们所用,必须考虑到客观条件,根据已有的条件进行调整完善,在设计过程中注意到模块分解使得整个系统的实现难度得以降低,逻辑性也更强。作为一个基础性的硬件实现系统,相信该电子时钟的实现会为许多新型实用系统提供理论与实践的技术支持。
参考文献:
[1]于海生,微型计算机控制技术[M].清华大学出版社,1999.6.
[2]黄正谨,综合电子设计与实践[M].东南大学出版社,2002.3.
[关键词]电子时钟 FDSJ86/88 汇编语言 模块分解
中图分类号:TP2文献标识码:A文章编号:1671-7597(2009)0920039-01
一、设计背景
电子时钟在我们日常生活中有着及其广泛的应用,无论在人们的工作,学习还是生活中,电子时钟都发挥这不可或缺的作用。在很多场所都可以看到电子时钟的身影。为了实现电子时钟时间设置,时间显示,以及能够正确无误的运行,本文采用用硬件软件相结合的方式来完成此次电子时钟设计。我们为电子时钟设计三个功能:时间的设置和时间的显示以及闹钟功能的设定与报警。时间的设置是通过汇编程序来完成的,我们可以根据不同的需求设置不同的时间,并通过显示器进行显示。
二、需求分析
在电子时钟的设计过程中,我们需要用到的电子芯片主要有8255和8253。他们的工作原理和功能如下所示。
(一)8253芯片
Intel8253芯片是一种可编程定时器/计数器,它可以利用硬件电路和中断方法控制定时,定时时间和范围完全由软件来确定和改变。在8253芯片内部具有3个独立的16位计数器通道,通过对它进行编程,最高计数频率能达到2MHz。8253还适用于许多其它的场合,如用作可编程方法频率产生器、分频率、程控单脉冲发生器等。在本课程设计中,8253芯片的通道0和通道1工作在方式2下,提供一秒的脉冲信号,通道2工作在方式3下,进行秒的计数。
(二)8255A芯片
8255A是一种通用的可编程并行I/O接口芯片,它是为Intel系列微处理器设计的配套电路,也可用于其它微处理器系统连接。通过8255A芯片,CPU可直接同外设相连接,其负责CPU和外设之间数据传送。通过对它进行编程,芯片可工作于不同的工作方式下。8255A芯片有三种工作方式,在本课程设计中,通过控制字,使其工作在方式0下。
8255A由数据端口A、B、C,A组和B组控制逻辑,数据总线缓冲器和读/写控制逻辑组成。A口包含一个8位的数据锁存器/缓冲器,一个8位的数据输入锁存器,因此它作输入输出时数据均能锁存。B口包含一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。C口包含一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器,无输入锁存功能。
A组和B组控制逻辑用来接收送来的命令字,然后分别决定A组和B组的工作方式,或对C口的每一位执行置位/复位操作。数据总线缓冲器是一个双向的8位缓冲器,用作8255A和系统总线之间的接口。通过这个缓冲器与之相连的8位数据总线D7~D0,接收CPU送来的数据或命令字。
读/写控制逻辑电路用来管理所有的内部或外部数据信息、控制字或状态字的传送过程,它接收从CPU的地址总线和控制总线来的信号,并产生对A组和B组控制逻辑进行操作的控制信号。8255A有两类控制字。一类是方式选择控制字,另一类是置位复位控制字。方式选择控制字的D7位总是1,而置位复位控制字的D7位总是0。方式选择控制字有3种基本的工作方式,即方式0-基本输入输出方式,方式1-选通输入输出方式,方式2-双向总线I/O方式。通过向8255A的控制字寄存器写入方式选择字,就可以规定各端口的工作方式。
(三)功能模块分析
该模块设计思路是将年月日时分秒分别保存至year,month,day,hour,
minute,second中,每个数字对应与一个字节,通过8253定时我们在8255的portA0口检测到低电平时调用INCSCD子程序,子程序中我们将更新year,month,day,hour,minute,second内的值,使秒加1,然后调用displaytime将year,month,day,hour,minute,second内的数据转化为ASCII码并显示到屏幕。通过开关1启动,程序检测到开关1接通时转入服务模块中的调整时间,通过把用户输入的值转化为16进制并替换year,month,day,hour,minute,second中的值我们在INCSCD子程序中更新完时间后比较当前时间与贮存的闹铃时间,如果两者一致程序会闪灯,否则跳出子程序;如要更新闹铃时间可以开启开关2,程序会转入服务模块,调整过程与时间调整类似。
三、调试与分析
根据上述需求分析得出的思路,进行汇编语言程序的编写。汇编语言程序一共分为三个分:第一部分是8255A芯片的初始化;第二部分是8253可编程定时/计数芯片的初始化;第三部分是,模块的编写。在该电子时钟的设计过程中一共有三个模块:1.计时和显示模块;2.时间调整模块;3.闹铃及其调整模块。
设计之初的思路是选择将年,月,日,时,分,秒分别保存在一个字节的内存单元中,这样在计时的设计上将变得简单,但这样的设计也带来一个问题,那就是在读入用户输入和将时间显示到屏幕上时的16进制转到ASCII码时,由于涉及到将一个字节内容拆分转化,灵活性受到限制,于是作者考虑将年,月,日,时,分,秒的每一位用一个字节储存,这样在进行转化时将节省很多操作时间,设计过程中作者反复修改了程序的结构以达到优化目的,在时间显示出现问题后,我们进行了单元测试并最终发现了问题,在找到问题症结后,我们对显示部分代码及电路进行了完善,最终得到了正确的显示结果。
四、设计总结
在该电子时钟的设计过程中,要注意到每个单独模块的编写实现不仅要使该模块完成相应的子任务,而且要使这个模块与主程序相匹配,尤其是各种命令必须相互匹配,所以就需要在编写程序时,经常性的调试运行、修改完善。在该系统的设计过程中用到了大量的软件工程的知识,虽然该系统整体偏向于硬件实现,但是软件工程的思想却穿插始终,在该系统的整个实现过程中体现的淋漓尽致。在电子时钟的设计实现过程中,很多理论并不能拿来直接为我们所用,必须考虑到客观条件,根据已有的条件进行调整完善,在设计过程中注意到模块分解使得整个系统的实现难度得以降低,逻辑性也更强。作为一个基础性的硬件实现系统,相信该电子时钟的实现会为许多新型实用系统提供理论与实践的技术支持。
参考文献:
[1]于海生,微型计算机控制技术[M].清华大学出版社,1999.6.
[2]黄正谨,综合电子设计与实践[M].东南大学出版社,2002.3.