资源描述
计算机科学与技术学院2005级硬件课程设计报告 第18页计算机科学与技术学院硬件课程设计报告姓 名: 学 号: 专 业: 信息安全 班 级: 信息安全06-3 设计题目: 电子日历时钟系统 成 员: 指导教师: 职 称: 副教授 2008年 6月 课程设计指导教师评阅课程设计指导教师评阅书指导教师评语:成 绩: 指导教师签字: 年 月 日摘 要 本次课程设计,我们主要是用可编程定时/计数器芯片8253和并行接口芯片8255A、数码管来实现电子日历时钟系统的,首先,由可编程定时/计数器芯片8253产生一定频率的时钟脉冲,将这个时钟脉冲输出到并行接口芯片8255A,再由并行接口芯片8255A处理并输出到数码管来实现时钟的显示,这样就可以实现可视化的电子日历时钟系统了。目 录1 设计任务与要求5 1.1选题报告5 1.2设计任务与要求 5 1.3小组分工 52 总体方案与说明 6 2.1时钟运算模块 6 2.2显示模块 6 2.2.1七段LED显示器 6 2.3主要原件介绍 72.3.1 8253的主要功能 72.3.1 8255的主要功能 73硬件方案 10 3.1基本原理10 3.2电路原理图与说明114软件方案13 41原理与流程图13 42源程序清单与注释145结论与体会 1751实验结果 1751实验体会 176参考文献177.实验报告个人部分(彭长卯) 188.实验报告个人部分(陈晓声) 271设计任务与要求1.1选题报告这次我们组所选的硬件课程设计的题目是电子日历时钟系统。实际上,我们都知道在现实生活中,电子日历时钟对我们来说是再熟悉不过的了,我们生活的每一天都基本上离不开对时间的把握,电子日历时钟的运用可以说是无处不在。然而,正是我们人人都会使用的东西,我们往往是知其然不知其所以然,所以,对电子日历时钟系统的具体实现情况有一个很好的认知是很有必要的。在未来的一段时间里,我们将具体地探讨电子时钟的具体实现过程,并利用实验室所能提供的实验器材模拟实现一些具体功能。这对于我们对所学知识的具体运用和进一步掌握是很有帮助的。12设计任务与要求;电子时钟主要由显示模块和时钟运算模块三大部分组成。其中时钟运算模块要对时、分、秒的数值进行操作,并且秒计算到60时,要自己清零并向分进1;分计算到60时,要自己清零并向时进1;时计算到24时,要清零。这样,才能循环记时。我们的主要是能产生在分、秒位上的运行。1.3小组分工:硬件部分:陈晓声软件部分:彭长卯报告部分:杨起超2 总体方案与说明电子时钟主要由时钟运算模块和显示模块两大部分组成。很显然,其中时钟运算模块要对时间的数值进行操作,并且秒计算到60时,要自己清零并向分进1;分计算到60时,要自己清零并向时进1;时计算到24时,要清零。这样,才能循环记时。21时钟运算模块时钟运算模块的主要功能是对时、分、秒的运算,并把运算出的最终结果存到事先已经开辟的内存单元里,以便显示模块即时地显示出来。因为8253所能提供的信号的周期时毫秒级的,所以用8253来直接计秒肯定是远远不够的,因此必须采用级连的方式,通过软件的方法在运算模块中设置一个统计次数的变量,并且这一变量必须事先在内存里开辟存储单元。信号是8253的通道产生一个1s的脉冲信号。运算模块负责时、分、秒的计算,在程序里,必须对秒、分和时的单元内的数值进行判断,当秒加到60时,分必须加1 、秒清零;当分加到60时,时加1、分清零。当时加到24啊,直接清零。22显示模块在该模块里,主要利用FD-SJ 86/88实验箱所提供的数码显示管来完成要求。数码显示管是由七个条型的发光二极管组成的,另外还有一个小数点。这些发光二级管的阴极是互相连接在一起的,所以称为共阴极数码管。通过在这些发光二极管上加+5V或者0V电压,可以使不同的二极管发光,从而形成了不同的数字或者字符。在本次课程设计中,数字电子时钟只用到了0-9这十个数字,他们所对应的字符表依次是3FH、06H、5BH、4FH、66H、6DH、7DH、07H、7FH、6FH。该模块主要是将时钟运算模块运算出来并存放在内存单元里的十六进制表示的秒位数据转化为十进制,并通过一个七段发光二级管显示出来。另外,按照要求,要用数码管的小数点的闪烁来表示秒的跳动,所以从时钟运算模块直接接一根线至数码管的DP位。2.2.1七段LED显示器:七段LED显示器由七个发光段构成,每段均是一个LED二极管。这7个发光段分别称为a,b,c,d,e,f,和g,通过控制不同段的点亮和熄灭,可显示16进制数字09和A,b,C,d,E,F也能显示H,E,L,P等字符。 a DPg ff begd c阴极becadDP 共阴极LED 典型的七段LED2.3主要原件介绍 本实验用到的主要原件有8253,8255.2.3.1 8253的主要功能Intel8253芯片是一种可编程定时器/计数器,它可以利用硬件电路和中断方法控制定时,定时时间和范围完全由软件来确定和改变。在8253芯片内部具有3个独立的16位计数器通道,通过对它进行编程,最高计数频率能达到2MHz。8253还适用于许多其它的场合,如用作可编程方法频率产生器、分频率、程控单脉冲发生器等。在本课程设计中,8253芯片的通道0和通道1工作在方式2下,提供一秒的脉冲信号,通道2工作在方式0下,进行秒的计数。用可编程定时器/计数器电路进行定时时,先要根据预定的定时时间,用指令对计数器/定时器芯片设定计数初值,然后启动芯片进行定时工作。计数器一旦开始工作后,CPU就可以去做别的工作了,就等计数器计到预定的时间,便自动形成一个输出信号,通知CPU定时时间已到,使CPU作相应的处理。因为可编程计器/定时器8253有三个独立的计数器,可以工作在三个不同工作方式下,组成6种不同工作方式。方式0计数结束中断方式,用来实现定时或对外部事件进行计数。方式1可编程单稳态输出方式,用来产生单脉冲。方式2比率发生器,用来产生序列负脉冲。方式3方波发生器,用于产生连续的方波。方式2和方式3都实现对时钟脉冲进行N分频。方式4软件触发选通,方式5硬件触发选通波形相同。1 24 2 23 3 22 4 21 5 20 6 8253 19 7 18 8 17 9 16 10 15 11 14 12 13 D7VccD6WRD5RDD4CSD3A1D2A0D1 CLK2D0 OUT2CLKo GATA2OUTo CLK1GATEo GATA1GND OUT12.3.2 8255的主要功能8255A是一种通用的可编程并行I/O接口芯片,它是为Intel系列微处理器设计的配套电路,也可用于其它微处理器系统连接。通过8255A芯片,CPU可直接同外设相连接,其负责CPU和外设之间数据传送。通过对它进行编程,芯片可工作于不同的工作方式下。8255A芯片有三种工作方式,方式0基本输入输出方式,方式1选通输入输出方式,方式2双向总线I/O方式。在本课程设计中,通过控制字,使其工作在方式0下。1 40 2 39 3 38 4 37 5 36 6 35 7 34 8 33 9 32 10 8255A 31 11 30 12 29 13 28 14 27 15 26 16 25 17 24 18 23 19 22 20 21 2121 PA3PA4PA2PA3PA1PA2PA0PA1RDWRCS RESETGND D0 A1 D1A0 D2PC7 D3PC6 D4PC5 D5PC4 D6PC3 D7PC2 VCCPC1 PB7PC0 PB6PB0 PB5PB1PB4PB2 PB33硬件方案3.1基本原理3.1.1时钟信号产生器时钟信号产生器是整个系统的时基信号,它直接决定计时系统的精度。在本实验中,这一部分用实验箱提供的8253定时器/计数器来完成。利用8253负责中的第一、二两个计数器级连的方式来给该电子时钟提供周期为1秒的脉冲信号。 3.1.2电子时钟原理电子时钟主要由8253定时/计数器和8255A接口芯片,数码显示管组成。8253用来产生脉冲信号给8255A,8255A负责将内存里的年位,月位,日位,时位、分位和秒位数值输出到数码管,用8255A来控制,时间在数码管上显示。3.2电路原理图与说明 GATE0 GATE1 CLK0D7D0 OUT08253 CLK1 OUT1 PC4 PC3 PC2 PC1 PC0D7D0 /8255 PA7PA04软件方案4.1原理与流程图分析论证:此电子日历时钟系统主要采用了4个数码显示管分组切换,8253定时/计数器,8255A,包括了显示模块,运算模块。用8253对秒的运算,并把运算出的最终结果存到事先已经开辟的内存单元里,以便显示模块即时地显示出来。当给8253芯片的CLK0提供频率为2MHz的时钟信号时,OUT0输出的脉冲周期最大只有32.768ms,达不到1s的要求,所以必须采用8253芯片内部的两个计数器级连的方案来解决这个问题。通道0工作于方式2,通道1工作在方式0。并用out1输出一秒信号。8255用于接受并将其输出到显示器上。4.1.2流程图开始时钟初始化8253产生1秒时钟脉冲刷新显示电路S=60?M=M+1S=0否是M=60?否S=M=0 结束42源程序清单与注释DATASEGMENTTABLEDB40H,79H,24H,30H,19H,12H,02H,78H,00H,18HSDB00HMDB00HHDB00HDISP1DB00HDISP2DB00HDISP3DB00HDISP4DB00HDATAENDSCODESEGMENTMAINPROCFARASSUMECS:CODE,DS:DATASTART:;时钟先从从12:00开始启动;进入8255初始化,假设8255端口地址为300307H,8253的地址为400407H;82533产生1s的信号MOVDX,306H;控制字端口MOVAL,10000101B;A口输出,B,C低4位输入,工作方式0,OUTDX,AL;写入控制字MOVBX,OFFSETTABLE;七段代码表首地址XLAT;转换的七段代码放入BXMOVDX,302H;指向B口INAL,00000001B;分个位选中MOVDX,300H;转向A口OUTDX,BX;点亮0MOVDX,301H,INAL,00000010BMOVDX,300HOUTDX,BXMOVDX,301HINAL,00000100BMOVBX,2BX ;取2放入时个位中MOV DX , 300HOUT DX, BX ;点亮时个位2MOV DX ,301HIN AL,00001000BMOV BX , 1BX ;取1放时十位中MOV DX,300HOUT DX,BX;点亮时十位1; 对分位,时位进行分时扫描,首先对8253进行初始化(见书中332页)MOVDX,403HMOVAL,00110101BOUTDX,ALMOVDX,400HMOVAL,00HOUTDX,ALMOVAL,04H;初始值N0400OUTDX,ALMOVAL,01110111BOUT403H,ALMOVAL,00HOUT402H,AL;402H为通道1地址MOVAL,50H;计数初值N15000OUT402H,ALMOVDX,302H,;转向8255C口,确定累加1秒时间LP:TEST DX,01H;检测C口是否有1秒脉冲(高电平)JNE LP TEST DX,00H;检测C口是否有1秒脉冲(低电平) JNE LP;一高一低,唯一确定了1秒时间 INC S0CALLA;维持分个位管亮CALLB;维持分十位管亮CALLC;维持时个位管亮CALLD;维持时十位管亮 TEST S0 ,01100000B JNE LPMOV S0, 00H ;秒清零 INC M0 ;分加1CALLA;维持分个位管亮CALLB;维持分十位管亮CALLC;维持时个位管亮CALLD;维持时十位管亮INCDISP10CALLA;刷新分个位管CALLB;维持分个位管亮CALLC;维持分个位管亮CALLD;维持分个位管亮TESTDISTP10 , 00001010B ;如果DISP110,则归零JNE LP MOV DISP10, 00H ;归零TESTDISP10, 00H ;如果分个位下次为0,则分十位加1JNE LPCALLA;维持分个位管亮CALLB;维持分十位管亮CALLC;维持时个位管亮CALLD;维持时十位管亮INCDISP20CALLA;维持分个位管亮CALLB;刷新分十位管CALLC;维持时个位管亮CALLD;维持时十位管亮TESTDISP20,00000110B;如果DISP26,则归零JNELPMOVDISP20,00HTESTDISP20,00000101B;如果DISP25,JNELPTESTDISP10,00001010B;如果DISP110,即分位为59,进位JNELPMOV S0, 00H ;秒清零MOV M0, 00H ;分清零INCH0;时加1CALLACALLBCALLCCALLDINCDISP30CALLACALLBCALLCCALLDTESTDISTP30 , 00000100B ;如果DISP34,则归零JNELPMOV DISP30, 00H ;归零TESTDISP30,03H;如果DISP33,JNELPTESTDISP20,00000101B;如果DISP25,JNELPTESTDISP10,00001010B;如果DISP110,即分位为59,进位JNELPMOV S0, 00H ;秒清零MOV M0, 00H ;分清零INCH0;时加1CALLACALLBCALLCCALLDINCDISP40CALLACALLBCALLCCALLDTESTDISTP40 , 00000010B ;如果DISP42,则归零JNE LP MOV DISP40, 00H ;归零TESTDISP40,02H;如果DISP42,JNELPTESTDISP30,03H;如果DISP33,JNELPTESTDISP20,00000101B;如果DISP25,JNELPTESTDISP10,00001010B;如果DISP110,即分位为59,进位JNELPMAINENDPA:PROCFAR;扫描(不刷新)分个位过程MOV DX,301HIN AL,00000001BMOV DX,300HMOV BX,OFFSET TABLEMOV AX, DISP10BXXLATOUT DX,AL ;输出分个位RETAENDPB: PROC FAR ; 扫描(不刷新)分十位过程MOVDX,301HINAL,00000010BMOVDX,300HMOVBX,OFFSETTABLEMOVAX,DISP20BXXLATOUTDX,AL;输出分十位 RETB ENDPC: PROC FAR;扫描(不刷新)时个位过程MOV DX,301HIN AL,00000001BMOV DX,300HMOV BX,OFFSET TABLEMOV AX, DISP30BXXLATOUT DX,AL ;输出时个位RETC ENDPD: PROC FAR;扫描(不刷新)时十位过程MOV DX,301HIN AL,00000001BMOV DX,300HMOV BX,OFFSET TABLEMOV AX, DISP40BXXLATOUT DX,AL ;输出时十位RETD ENDPCODEENDSENDSTART5结果与体会5.1实验结果将编写好的源程序输入,编译后出现很多错误,经过反复修改直到程序运行通过。将生成的可执行程序装入FD-SJ 86/88的内存里,在监控状态下运行程序,一开始发现显示器一点反应都没有,经过检测发现原来问题出在线路的接线上,重新接后显示器有输出了,可是数码管显示的数字并不与理论计算值相符合,经过反复分析源程序发现问题出现在内存单元里秒位在转化为十进制时,存储转化的结果的地址空间的顺序弄混了。经过修改之后编译源程序,装入生成的可执行文件,并运行。数码管显示的数字与理论值相符合,并能正常计时,结果成功。5.2实验体会通过这次实验的学习,我大概了解了做一次课程设计的总体流程,同时也明白了学好基础知识的重要性。只有学好了基础知识才能出色的完成一次课题,因为无论做什么课题它都是对所学知识的综合应用。在一开始做这个课程设计的时候我感到很迷惘,前三次上机老师都让我们自己查找对自己的硬件课程设计有用的东西,老师并没有给我们任何具体的提示,只是在给我们分配课题之后告诉我们最后我们的课题的完成应该达到什么样的效果。当时我就感到心里很虚,因为我并不知道这次的课程设计应该要怎么样去完成。况且课程设计的内容往往是现实生活中经常看到的和用到的,但在生活中却不曾关注过它的设计与原理的事物。就拿我们这组的电子时钟日历为例吧,现实生活中有谁没有见过呢,应该说大家用的也并不少,可是真要我们说出它的设计方案来,恐怕就很少有人知道了吧,其中就包括我。所以当时的我就举足无措了,只是一味的把大量的相关模型找出来,希望自己有一个清晰的思路,好好完成这第一次的课程设计,有了第一次以后做什么课程设计就有经验了。到后面几次的时候,我们按照老师的要求一步步做出来了,发现原来这东西并没有开始认为得那么难了,这也许就是所谓的万事开头难吧。实验的总体思路是清楚了,报告的大概模型也差不多完成了,到最后两次就该连电路图,把整体的效果表现出来了。因为最后发现这个硬件课程设计其实是很简单的,我们做微机实验的时候就做过相关的连线,所以我在连线的时候并没有太细心 ,所以导致刚开始的时候,显示器没有任何的反应,我还以为是我程序编错了呢,不过程序验证了是没错的。再仔细一检查,是我把一条线的连接次序搞颠倒了。所以我得到了一个教训,就是再简单的东西如果不用心,简单也会变复杂的。最后一点体会,也是最重要的一点,就是我从这次的实验中学会了与他人的合作,也从中体会到了与人合作的乐趣。遇到问题小组一起讨论,有时因为大家都坚持自己的观点是正确的,最后引起了争执。但即使是争起来了,我们还是能继续愉快得合作。这次课程设计的完成就得益于合作。参考文献1 微型计算机原理与接口技术(第三版) 中国科学技术大学出版社关键词:电子日历时钟;intel8255 ;intel8253 ;计算机科学与技术学院硬件课程设计报告姓 名: 学 号: 专 业: 信息安全 班 级: 信息安全06-3 设计题目: 电子日历时钟系统(个人部分) 成 员: 指导教师: 职 称: 副教授 2008年 6月 课程设计指导教师评阅书指导教师评语:成 绩: 指导教师签字: 年 月 日 目 录1 设计任务与要求5 1.1我在小组中的分工5 1.2设计任务与要求 52 总体方案与说明 6 2.1时钟运算模块 6 2.2显示模块 6 2.2.1七段LED显示器 6 2.3主要原件介绍 72.3.1 8253的主要功能 72.3.1 8255的主要功能 73硬件方案 10 3.1基本原理10 3.2电路原理图与说明114结果与体会 1751实验结果 1751实验体会 17 1设计任务与要求1.1我在小组中的分工 这次实验我在小组中负责硬件部分的实现12设计任务与要求;电子时钟主要由显示模块和时钟运算模块三大部分组成。其中时钟运算模块要对时、分、秒的数值进行操作,并且秒计算到60时,要自己清零并向分进1;分计算到60时,要自己清零并向时进1;时计算到24时,要清零。这样,才能循环记时。我们的主要是能产生在分、秒位上的运行。2 总体方案与说明电子时钟主要由时钟运算模块和显示模块两大部分组成。很显然,其中时钟运算模块要对时间的数值进行操作,并且秒计算到60时,要自己清零并向分进1;分计算到60时,要自己清零并向时进1;时计算到24时,要清零。这样,才能循环记时。21时钟运算模块时钟运算模块的主要功能是对时、分、秒的运算,并把运算出的最终结果存到事先已经开辟的内存单元里,以便显示模块即时地显示出来。因为8253所能提供的信号的周期时毫秒级的,所以用8253来直接计秒肯定是远远不够的,因此必须采用级连的方式,通过软件的方法在运算模块中设置一个统计次数的变量,并且这一变量必须事先在内存里开辟存储单元。信号是8253的通道产生一个1s的脉冲信号。运算模块负责时、分、秒的计算,在程序里,必须对秒、分和时的单元内的数值进行判断,当秒加到60时,分必须加1 、秒清零;当分加到60时,时加1、分清零。当时加到24啊,直接清零。22显示模块在该模块里,主要利用FD-SJ 86/88实验箱所提供的数码显示管来完成要求。数码显示管是由七个条型的发光二极管组成的,另外还有一个小数点。这些发光二级管的阴极是互相连接在一起的,所以称为共阴极数码管。通过在这些发光二极管上加+5V或者0V电压,可以使不同的二极管发光,从而形成了不同的数字或者字符。在本次课程设计中,数字电子时钟只用到了0-9这十个数字,他们所对应的字符表依次是3FH、06H、5BH、4FH、66H、6DH、7DH、07H、7FH、6FH。该模块主要是将时钟运算模块运算出来并存放在内存单元里的十六进制表示的秒位数据转化为十进制,并通过一个七段发光二级管显示出来。另外,按照要求,要用数码管的小数点的闪烁来表示秒的跳动,所以从时钟运算模块直接接一根线至数码管的DP位。2.2.1七段LED显示器:七段LED显示器由七个发光段构成,每段均是一个LED二极管。这7个发光段分别称为a,b,c,d,e,f,和g,通过控制不同段的点亮和熄灭,可显示16进制数字09和A,b,C,d,E,F也能显示H,E,L,P等字符。 a DPg ff begd c阴极becadDP 共阴极LED 典型的七段LED2.3主要原件介绍 本实验用到的主要原件有8253,8255.2.3.1 8253的主要功能Intel8253芯片是一种可编程定时器/计数器,它可以利用硬件电路和中断方法控制定时,定时时间和范围完全由软件来确定和改变。在8253芯片内部具有3个独立的16位计数器通道,通过对它进行编程,最高计数频率能达到2MHz。8253还适用于许多其它的场合,如用作可编程方法频率产生器、分频率、程控单脉冲发生器等。在本课程设计中,8253芯片的通道0和通道1工作在方式2下,提供一秒的脉冲信号,通道2工作在方式0下,进行秒的计数。用可编程定时器/计数器电路进行定时时,先要根据预定的定时时间,用指令对计数器/定时器芯片设定计数初值,然后启动芯片进行定时工作。计数器一旦开始工作后,CPU就可以去做别的工作了,就等计数器计到预定的时间,便自动形成一个输出信号,通知CPU定时时间已到,使CPU作相应的处理。因为可编程计器/定时器8253有三个独立的计数器,可以工作在三个不同工作方式下,组成6种不同工作方式。方式0计数结束中断方式,用来实现定时或对外部事件进行计数。方式1可编程单稳态输出方式,用来产生单脉冲。方式2比率发生器,用来产生序列负脉冲。方式3方波发生器,用于产生连续的方波。方式2和方式3都实现对时钟脉冲进行N分频。方式4软件触发选通,方式5硬件触发选通波形相同。1 24 2 23 3 22 4 21 5 20 6 8253 19 7 18 8 17 9 16 10 15 11 14 12 13 D7VccD6WRD5RDD4CSD3A1D2A0D1 CLK2D0 OUT2CLKo GATA2OUTo CLK1GATEo GATA1GND OUT12.3.2 8255的主要功能8255A是一种通用的可编程并行I/O接口芯片,它是为Intel系列微处理器设计的配套电路,也可用于其它微处理器系统连接。通过8255A芯片,CPU可直接同外设相连接,其负责CPU和外设之间数据传送。通过对它进行编程,芯片可工作于不同的工作方式下。8255A芯片有三种工作方式,方式0基本输入输出方式,方式1选通输入输出方式,方式2双向总线I/O方式。在本课程设计中,通过控制字,使其工作在方式0下。1 40 2 39 3 38 4 37 5 36 6 35 7 34 8 33 9 32 10 8255A 31 11 30 12 29 13 28 14 27 15 26 16 25 17 24 18 23 19 22 20 21 2121 PA3PA4PA2PA3PA1PA2PA0PA1RDWRCS RESETGND D0 A1 D1A0 D2PC7 D3PC6 D4PC5 D5PC4 D6PC3 D7PC2 VCCPC1 PB7PC0 PB6PB0 PB5PB1PB4PB2 PB33硬件方案3.1基本原理3.1.1时钟信号产生器时钟信号产生器是整个系统的时基信号,它直接决定计时系统的精度。在本实验中,这一部分用实验箱提供的8253定时器/计数器来完成。利用8253负责中的第一、二两个计数器级连的方式来给该电子时钟提供周期为1秒的脉冲信号。 3.1.2电子时钟原理电子时钟主要由8253定时/计数器和8255A接口芯片,数码显示管组成。8253用来产生脉冲信号给8255A,8255A负责将内存里的年位,月位,日位,时位、分位和秒位数值输出到数码管,用8255A来控制,时间在数码管上显示。3.2电路原理图与说明 GATE0 GATE1 CLK0D7D0 OUT08253 CLK1 OUT1 PC4 PC3 PC2 PC1 PC0D7D0 /8255 PA7PA04结果与体会5.1实验结果把编写好的源程序输入,编译后,经过反复修改直到程序运行通过。将生成的可执行程序装入FD-SJ 86/88的内存里,在监控状态下运行程序,检测线路的连接,重新接后显示器有输出了,可是数码管显示的数字与理论计算值并不相符,经过反复分析源程序,经过修改源程序,装入生成的可执行文件,并运行。数码管显示的数字与理论值相符合,并能正常计时,结果成功。5.2实验体会通过这次课程设计,我了解了做一次课程设计的总体流程,也明白了学好基础知识并运用知识解决实际问题的重要性。只有学好了基础知识,才能对现实中接触到的东西有一个科学的解释,因为无论做什么课题它都是对所学知识的综合应用。另外,我在这次的实验中感受到了与他人的合作的艰辛和快乐,也从学习到了不少。各种问题小组一起讨论,取长补短,相互理解,相互促进,最后才能共同完成这次课程设计。总之.这次课程设计的完成与合作是分不开的。最后,也要特别感谢这次课程设计中给我们指导的老师和给我们提出宝贵意见的各位同学。电子时钟设计报告 个人设计部分一 设计内容分析对于本次实验,我主要完成的总体的汇编的编程工作。其中一些具体细节,各芯片的选择,以及各个模块实现的功能,我都其进行了详细的规划。因为8253所能提供的信号的周期是毫秒级的,因此必须通过软件的方法在运算模块中设置一个统计中断次数的变量,并且这一变量必须事先在内存里开辟存储单元。同时考虑到8255控制LED的显示输出,程序中对显示电路进行了多次反复的刷新与更新,其目的在于保证输出的持续显示,为了直观起见,程序中使用了过程,可能过程在此有会些设计上缺陷,但它能实时也进行控制。DATA SEGMENTYEAR DB 08H MONTH DB 08H DAY DB 08H HOUR DB 0CH MINU DB 00H SEC DB 00H HSEC DB 00H ; 0 1 2 3 4VALUE DB 0C0H, 0F9H, 0A4H, 0B0H, 99H ; 5 6 7 8 9 DB 92H, 82H, 0F8H, 80H, 90HARRAY DB 20 DUP(?)DATA ENDS STACK SEGMENT DB 64 DUP(?)STACK ENDSCODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,DS:DATA,SS:STACK MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AL,10000010B MOV DX,303H OUT DX,AL MOV AL,00110111B MOV DX,30BH OUT DX,AL MOV AL,00H MOV DX,308H OUT DX,AL MOV AL,00H OUT
展开阅读全文