倒计时数字钟_第1页
倒计时数字钟_第2页
倒计时数字钟_第3页
倒计时数字钟_第4页
倒计时数字钟_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、合肥学院计算机科学与技术系页:1写明课程名称课程设计报告20082009学年第一学期页:1课程 微型计算机原理与接口技术 课程设计名称倒计时数字钟学生姓名杨和平学号0604031040专业班级网络工程(1)班指导教师张向东 教 授 2009年 2月倒计时数字钟页:2题目可以不写一. 题义分析及解决方案:页:2标题没有标点符号,其他雷同用STAR ES598PCI单板开发机设计一个与七段LED显示器,显示一个倒计时时钟,显示初值为60分00秒,每隔一秒改变一次显示值,60秒为一分钟,LED显示器显示分、秒的动态值。1. 题义需求分析:根据题意设计一个接口和七段LED显示器,本设计能显示一个具有固

2、定初值的倒计时钟,能每隔固定时间间隔(1s),动态刷新显示值,并且能用LED显示器显示分秒的动态值,需要解决如下问题:1) 选择怎样的接口问题2)初值的设置和输入问题3)计数值与显示码的转换及动态值显示问题4)相关芯片与译码器的选择问题2解决问题方法及思路:1).硬件部分:选择8279芯片和七段LED显示器与键盘相连,8279的扫描输出信号经译码器译码,三根输出线Y0Y7作为矩阵键盘的行扫描信号,返回信号RL0RL7与矩阵键盘的8个列输出信号相连接,扫描输出信号经另一译码器产生的8个输出信号作为8个显示器的宣统信号,即位选信号,轮流刷新8个显示器。2).软件部分:根据题义要求,可以设立一个段码

3、表,用来数字09的段码,根据这些段码可以判定LED显示器选用的共阳极还是共阴极方式;同时还要设置一个显示缓冲区以动态刷新的方式,显示四位数字表示的时间,设置好8279的工作方式,运行显示程序,将缓冲区中的数字通过LED显示器显示出来,待四个数字都显示出来后,保持一秒钟的显示,然后显示下一个时间值;为了达到倒计时时钟显示,还要设定一个修改缓冲区是在内存中,由键盘键入的初值就存在这里,修改时间值仍然是在内存的缓冲区中修改,然后将这个修改后的时间值送到8279的FIFO RAM中显示出来。二 硬件选择分析1、选择芯片82791)8279在本设计中的作用:8279是专用键盘、数码管显示接口芯片,它可以

4、自动维持7段显示器的刷新,不需要主机的干预,并且可以同时完成矩阵键盘的扫描,延时去抖和键码识别等功能。8279通过扫描输出信号确定键盘矩阵的行,返回信号确定矩阵的列,确定数字后,通过译码器获得8个显示器的选通信号,即位选通信号。2)芯片8279的功能分析:A. 8279的内部结构框图如下所示:(1)数据缓冲器它连接内、外总线,暂时CPU与8279芯片之间传送的命令、数据或状态。(2)I/O控制它用于控制信息的流向及区分信息的特征。CS=1时,由RO或WR控制从8279读出或向8279写入;A0=0时,选中数据寄存器,输入/输出均为数据。A0=1时,选中命令、状态寄存器,输入时位命令,输出时位状

5、态。(3)控制与定时寄存器它用来寄存键盘和显示的工作方式,以及由CPU编程的其他操作方式,并通过译码产生相应的控制信号,完成规定的控制功能。 图2_1:8279的内部结构框图 (4)定时控制它对外部时钟信号CLK分频至内部所需要的100kHz时钟。(5)扫描计数器它可根据编程命令按编码或译码方式工作。编码方式:4位计数器按二进制计数,计数状态从扫描线SL0SL3输出,经外部译码器译码后,为键盘和显示器提供16个扫描信号。译码方式:扫描计数器最低两位被译码后从SL0SL3输出,可直接作为键盘和显示器扫描信号。此时键盘矩阵为4×8,显示字符为4位。(6)键盘去抖与控制键盘去抖电路:在键盘

6、扫描方式中,当有键闭合时,按命令指定方式去抖动后读入键值。控制电路:按命令指定方式控制去抖电路的工作过程,以及对返回信号进行处理。(7)返回缓冲器它锁存来自RL0RL7的回复信号,在键盘扫描方式中,返回线与键盘矩阵列线相连,在逐行扫描时搜寻一行中闭合键所在的列。当有键闭合时,经去抖动后经行、列编码和附近的移位、控制状态一起形成键盘数据送至FIFO存储器,供CPU读取。表2_1:键盘数据格式 D7 D6 D5 D4 D3 D2 D1 D0CNTLSHIFTSL2SL1SL0R2 R1R0控制移位行编码列编码其中,控制和移位由两个独立的附加开关决定;SL2 SL1 SL0为按下键的行编码,来自扫描

7、计数器的低3位;R2 R1 R0是根据返回信号确定的列编码。(8)FIFO RAM它是一个8×8RAM,在键盘输入方式时遵循先入先出(FIFO)原则。(9)FIFO RAM的状态寄存器它用来存放FIFO RAM的状态,例如RAM空、满等。当工作在键盘方式FIFO存储器不空时,将产生IRQ1信号向CPU申请中断。(10) 显示RAM、显示地址寄存器显示RAM用来存储显示数据。容量为168位。在显示过程中,存储的显示数据轮流从显示寄存器输出。显示寄存器分别为A、B两组,OUTA03和OUTB03可以单独送数,也可以组成一个8位的字。显示寄存器的输出与显示扫描配合,不断从显示RAM中读出显

8、示数据,同时轮流驱动被选中的显示器件,以达到多路复用的目的,使显示器件呈现稳定的显示状态。显示地址寄存器用来寄存由CPU进行读/写显示RAM的地址,它可以由命令设定,也可以设置成每次读写或写入之后自动递减。 (11)显示寄存器它存放显示内容。在显示过程中它与显示扫描配合,轮流从显示RAM中读出显示信息并依次驱动被选中的显示器件,循环不断地刷新显示字符编码,使显示器件呈现稳定的显示字符。8位显示寄存器分为A、B两组,OUTA03和OUTB03可以单独送树,显示4个字符也可以组成一个8位字符。(12)显示地址寄存器它寄存读/写显示RAM地址,即对应显示字符从哪一位开始。它由命令设定,并可设置成每次

9、读出或写入之后自动加1。B芯片8279是一种具有40条引脚的双列直插式芯片,它的外部引脚如下图所示:CS(片选):输入线,当CS=0时8279被选中,允许CPU对其读、写,否则被禁止。 D0D7(数据总线):双向、三态总线,和系统数据总线相连;用于CPU和8279间的数据/命令传递。A0:地址线,进行片内端口选择。为0时,选中数据寄存器;为1时选中命令/状态寄存器。RD、WR(读、写信号):输入线。低电平有效,来自CPU的控制信号,控制8279的读、写操作。CLK:系统时钟,为8279芯片提供内部定时。RESET:复位线,高电平时复位8279到:16个字符显示(左进方式);编码扫描键盘(双键锁

10、定);时钟设置为31。IRQ(中断请求):输出线。高电平有效。 图2_2: 外部引脚图页:5图要居中,图标错应为 图2-2 外部。,其他雷同 在键盘工作方式中,当FIFO/传感器RAM存有数据时,IRQ为高电平。CPU每次从RAM中读出数据时,IRQ变为低电平。若RAM中仍有数据,则IRQ再次恢复高电平。在传感器工作方式中,每当检测到传感器状态变化时,IRQ就出现高电平。SL0SL3:扫描线,用来扫描键盘或显示器,可编程设定为编码输出或译码输出。RL0RL7:返回线,用作键盘矩阵列线的返回信号输入。SHIFT:移位信号,高电平有效,是键盘数据的D6位,用于扩充键的控制功能,如作为上、下档功能键

11、。CNTL:控制线,高电平有效,键盘工作方式时,是键盘数据的D7位,用于扩充键的控制功能控制功能键。OUTA0 OUTA3,OUTB0OUTB3:A组、B组显示信号输出线,与扫描线SL0SL3同步,实现分时数据显示,即刷新各位显示字符。两组可独立使用,也可合并使用。BD(显示消隐):输出线。低电平有效。该信号在数字切换显示或使用消隐命令时,将显示消隐。C8279的工作过程通过确定其方式字/命令字来实现。当A0=1时,CPU向8279芯片写入命令。(1) 设置键盘/显示方式表2_2: 设置命令字 D7 D6 D5 D4 D3 D2 D1 D0000DDKKK其中: D7、D6、D5=000方式设

12、置命令特征位。 DD(D4、D3):来设定显示方式,其定义如下: 00:8个字符显示,左入口 01:16个字符显示,左入口 10:8个字符显示,右入口 11:16个字符显示,右入口所谓左入口,即显示位置从最左一位(最高位)开始,以后逐次输入的显示字符逐个向右顺序排列; 所谓右入口,即显示位置从最右一位(最低位)开始,以后逐次输入的显示字符时,已有的显示字符逐个向左顺序移动。 KKK(D2、 D1、 D0):用来设定七种键盘、显示工作方式: 000  编码扫描键盘,双键锁定  001  译码扫描键盘,双键锁定  010  编码扫描键盘,N键轮回

13、011  译码扫描键盘,N键轮回 100  编码扫描传感器矩阵 101  译码扫描传感器矩阵 110  选通输入,编码显示扫描 111  选通输入,译码显示扫描 双键锁定与N键轮回是多键按下时的两种不同的保护方式。双键锁定为两键同时按下提供的保护方法。再消颤周期里,如果有两键同时按下,则只有其中一个键弹起,而另一个键保持在按下位置时,才被认可。N键轮回为N键同时按下的保护方法。当有若干键按下时,键盘扫描能够根据发现他们的顺序,依次将它们的状态送入FIFO RAM中。(2) 设置程序时钟命令 表2_3:命令格式 D7 D6 D5 D4 D3 D2

14、 D1 D0001PPPPP其中:D7、D6、D5=001为时钟命令特征位。PPPPP(  D4、D3、D2、D1、D0)用来设定外部输入CLK端的时钟进行分频的分频数N。N取值为231。例如外部时钟频率为2MHZ,PPPPP被置为10100(N=20),则对输入的外部时钟20分频,以获得8279内部要求的100KMZ的基本频率。(3) 读FIFO/传感器RAM命令 表2_4:命令格式 D7 D6 D5 D4 D3 D2 D1 D0010AIXAAA其中:D7D6D5 =010为读FIFO/传感器RAM命令特征位。该命令字只在传感器方式时使用。在CPU读传感器RAM之前,必须使用这条

15、命令来设定传感器RAM中的8个地址(每个地址一个字节)。 AAA(D2、D1、D0)为传感器RAM中的八个字节地址。 AI(D4)为自动增量特征位。当AI=1时,每次读出传感器RAM后地址自动加1使地址指针指向下一个存储单元。这样,下一个数据便从下一个地址读出,而不必重新设置读FIFO/传感器RAM命令。在键盘工作方式中,由于读出操做严格按照先入先出顺序,因此,不需使用此命令。(4) 读显示RAM命令 表2_5:命令格式 D7 D6 D5 D4 D3 D2 D1 D0011AIAAAA其中:D7D6D5 =011为读显示RAM命令字的特征位。该命令用来设定将要读出的显示RAM地址。AAAA(D

16、3、D2、D1、D0)用来寻址显示RAM命令字的特征位。由位显示RAM中有16个字节单元故需要4位寻址。AI(D4)为自动增量特征位。当AI=1时,每次读出后地址自动加1指向下一地址。(5) 写显示RAM命令 表2_6:命令格式 D7 D6 D5 D4 D3 D2 D1 D0100AIAAAA其中:D7D6D5 =100为写显示RAM命令字的特征位。在写显示器RAM之前用该命令用来设定将要写入的显示RAM地址。AAAA(D3、D2、D1、D0)为将要写入的存储单元地址,AI(D4)为自动增量特征位。当AI=1时,每次写入后地址自动加1指向下一次写入地址。(6) 显示禁止写入/消隐命令特征位 表

17、2_7:命令格式 D7 D6 D5 D4 D3 D2 D1 D0101 XIWAIWBIWCIWD其中:D7D6D5 =101为显示禁止写入/消隐命令特征位。IWA、IWB(D3、D2)为A、B组显示RAM写入屏蔽位。由于显示寄存器分成A、B两组,可以单独送数,故用两位来分别屏蔽。当A组的屏蔽位D3=1时,A组的显示RAM禁止写入。因此,从CPU写入显示器RAM数据时,不会影响A的显示。这种情况通常在采用双4位显示器时使用。因为两个双四位显示器是相互独立的。为了给其中一个双四位显示器输入数据而又不影响另一个四位显示器,因此必须对另一组的输入实行屏蔽。IWC、IWD(D1、D0)为消隐显示位。用

18、于对两组显示输出消隐。若BL=1时,对应组的显示输出被消隐。当BL=0时,则恢复显示。(7) 清除命令 表2_8: 命令格式页:7没有冒号,应为表2-8,不是下划线 D7 D6 D5 D4 D3 D2 D1 D0110CDCDCDCFCA其中: D7D6D5 =110清除命令特征位。 CDCDCD(D4D3D2)用来设定清除显示RAM方式。共有四种消除方式,见表6-10-1。 CF(D1)用来置空FIFO存储器,当=1时,执行清除命令后,FIFO RAM被置空,使中断输出线复位。同时,传感器RAM的读出地址也被置0。 CA(D0)为总清的特征位。它兼有CD和CF的联合效能。在CD=1时,对显示

19、的清除方式由D3、D2的编码决定。 清除显示RAM约需160S。在此期间FIFO状态时的最高位DU=1,表示显示无效。CPU不能向显示RAM写入数据。(8) 结束中断/错误方式设置命令 表2_9:命令格式 D7 D6 D5 D4 D3 D2 D1 D0111 EXXXX其中: D7D6D5 =111为该命令的特征位。此命令有两种不同的作用: 作为结束中断命令。在传感器工作方式中使用。每当传感器状态出现变化时,扫描检测电路将其状态写入传感器RAM,并启动中断逻辑,使IRQ变高,向CPU请求中断,并且禁止写入传感器RAM。此时,若传感器RAM读出地址的自动递增特征没有置位(AI=0),则中断请求I

20、RQ在CPU第一次从传感器RAM读出数据时就被清除。若自动递增特征已置位(AI=1),则CPU对传感器RAM的读出并不能清除IRQ,而必须通过给8279写入结束中断/错误方式设置命令才能使IRQ变低。因此在传感器工作方式中,此命令用来结束传感器RAM的中断请求。 作为特定错误方式设置命令。在8279已被设定为键盘扫描N键轮回方式以后,如果CPU给8279又写入结束中断/错误方式设置命令(E=1),则8279将以一种特定的错误方式工作。这种方式的特点是:在8279的消颤周期内,如果发现多个按键同时按下,则FIFO状态字中的错误特征位S/E将置1,并产生中断请求信号和阻止写入FIFO RAM。 上

21、述八种用于确定8279操作方式的命令字皆由D7D6D5特征位确定,输入8279后能自动寻址相应的命令寄存器。因此,写入命令字时唯一的要求是使数据选择信号A0=1。8279芯片的状态字主要用于键盘和选通工作方式,以指示FIFO RAM中的字符数和有无错误发生。表2_10:键盘和选通工作方式格式 D7 D6 D5 D4 D3 D2 D1 D0DUS/E0 UFNNN其中: DU( D7)为显示无效特征位。当DU=1表示显示无效。当显示RAM由于清除显示或全清命令尚未完成时,DU=1。D6(S/E):在键盘工作方式中为特殊错误方式标志位。S/E=1表示出现多键同时按下的错误。D5(0):超出标志位,

22、当向已满的FIFO RAM中写入,致使FIFO RAM中的字符个数n>8而产生重叠时,0被置为1。D4(U):“空”标志位,当FIFO RAM中的字符个数n=0时,U被置为1。D3(F):“满”标志位,当FIFO RAM中的字符个数n=8时,F被置为1。D2D1D0(NNN):表示FIFO RAM中有n个字符待取走。2选择器件LED:1)芯片在本设计中的作用:LED发光二极管在本设计中采用7段数字发光二极管,作为终端显示。显示时间的分秒。2)LED的功能分析:物理构造:LED发光二级管,采用砷化镓、镓铝砷、和磷化镓等材料制成,其内部结构为一个PN结,具有单向导电性。当在发光二极管PN结上

23、加正向电压时,PN结势垒降低,载流子的扩散运动大于漂移运动,致使P区的空穴注入到N区,N区的电子注入到P区,这样相互注入的空穴与电子相遇后会产生复合,复合时产生的能量大部分以光的形式出现。将七个发光管进行组合,排列成数字图形8,再根据需要控制七个管的亮与灭,即可显示出定义数字。有段选码和位选码确定数字18的输出并在延时程序中保持复位。它是一种当外加电压超过额定电压时发生击穿,并因此而产生可见光的器件。这种数码管是有7段或8段笔画显示器组成一个字符而形成的。如下图: 图2_3: LED内部结构 图2_4:LED显示表2_11:LED显示管段选码编码表数字dpgfedcba二进制编码0110000

24、00C0h111111001F9h210100100A4h310110000B0h41001100199h51001001092h61000001082h711111000F8h81000000080h91001000090h3)LED的技术参数分析LED发光二极管的压降一般为1.5-2.0V,其工作电流一般取10-20Ma,发光二极管可应用于直流驱动电路、交流驱动电路和脉冲驱动电路。 由于8255A的最大驱动电流为4.0mA,而LED的工作电流一般为10-20mA,所以需要加一个驱动器74LS244。3矩阵键盘:1)矩阵键盘在本设计中的作用:矩阵键盘在工作时,是按照行线和列线交叉点的电平值来

25、识别按键的,由人手按动键盘。当键释放后,该键就有效。矩阵键盘将0F这16哥键按行和列排列成矩阵形式。对于m×n哥键的键盘,只需要m+n位I/O端口,我们的实验采用的是4×4键盘。2)矩阵键盘的功能分析:页:10注意文章的段落和缩进。其他雷同在矩阵键盘中,通过行列交叉点上的电平值来识别按键,而行列线通过键盘数据格式确定,键盘数据格式如下: 表2_12:键盘数据格式 D7 D6 D5 D4 D3 D2 D1 D0CNTLSSHIFTSL2SL1SL0R2R1R0控制移位行编码列编码其中,控制和移位由两个独立的附加开关决定;SL2 SL1 SL0为按下键的行编码,来自扫描计数器的

26、低三位,R2 R1 R0是根据返回信号确定的列编码。通常使用的键盘是矩阵结构的。对于4×4=16个键的键盘,采用矩阵方式只要用8条引线和2个8位端口便完成键盘的连接。如图,这个矩阵分为4行4列,如果键5按下,则第1行和第1列线接通而形成通路。如果第1行线接低电平,则键5的闭合,会使第1列线也输出低电平。矩阵式键盘工作时,就是按行线和列线的电平来识别闭合键的。 图2_5:4×4键盘矩阵图行扫描法识别按键的原理如下:先使第0行接低电平,其余行为高电平,然后看第0行是否有键闭合。这是通过检查列线电位来实现的,即在第0行接低电平时,看是否有哪条列线变成低电平。如果有某列线变为低电平

27、,则表示第0行和此列线相交位置上的键被按下;如果没有任何一条列线为低电平,则说明第0行没有任何键被按下。此后,再将第1行接低电平,检测是否有变为低电平的列线。如此重复地扫描,直到最后一行。在扫描过程中,当发现某一行有键闭合时,也就是列线输入中有一位为0时,便退出扫描,通过组合行线和列线即可识别此刻按下的是哪一键。实际应用中,一般先快速检查键盘中是否有键按下,然后再确定按键的具体位置。为此,先使所有行线为低,然后检查列线。这时如果列线有一位为0,则说明必有键被按下, 采用扫描法可进一步确定按键的具体位置。474LS240芯片:1 ) 74LS240译码器在本设计中的作用本设计实验中主要是为增加L

28、ED的驱动电流2 ) 74LS240译码器的功能分析74LS240 TTL 八反相三态缓冲器/线驱动器引出端符号: 1A,2A 输入端 , 三态允许端(低电平有效) 1Y8Y 输出端 图2_6:逻辑图 表2_13:功能表输入输出AYLLHLHXHLZ3 ) 74LS240译码器的技术参数 极限值: 电源电压 - 7V 输入电压 - 5.5V 输出高阻态时高电平电压 - 5.5V 工作环境温度 - 070 存储温度 -65150 574LS138芯片:1) 74LS138在本设计中的作用:将SL0SL2锁确定的信号经译码器译为矩阵键盘的行选择线。2) 74LS138 的功能分析:74LS138是

29、3/8译码器,即对3哥输入信号进行译码,得到8个输出状态。其引脚功能图如下所示: 表2_14:真值表页:12表格超出边界 图2_6 引脚图G1 G2A G2B为数据输出端,G2A G2B为低电平有效,G1高电平有效,A、B、C为译码器输入出端,Y0Y7为译码输出端,低电平有效。真值表如下所示:3) 74LS138的技术参数:极限值 电源电压-7V 输入电压-7V 工作环境温度 -070 贮存温度-65150 三硬件总逻辑图及其说明图3_1:硬件总逻辑图上图中8279的地址由和A0决定,故数据口地址为7FFEH,命令口地址为7FFFH。所接的16个按键,扫描线接在74HC138的译码输出端 和

30、上,当 为0(SL2SL1SL0=000)时,扫描第1列按键,当 为0(SL2SL1SL0=001)扫描第2列按键,故07号按键的键值为00H07H,815号按键键值为08H0FH。当某一按键被按下后,键值就自动进入缓冲区,当8279内部RAM不空时由INT输出高电平告知CPU取走,故INT连接CPU的中断输入需加一反向器。8279键盘配置最大为8×8,若要配置64个按键,其它列扫描线可分别连至 至 上,形成8行8列的按键扫描电路。图6-1中显示部分段选码由8279的OUTA3OUTA0、OUTB3OUTB0通过驱动器74LS240提供,位选码由SL2SL0 经3-8译码器通过驱动器

31、74LS240提供。2程序流程图1) 控制程序设计思路说明:程序框架一个主程序用于设置8279的工作方式;一个显示程序用 于显示当前的分值和秒值,在其中还设置了一个小的程序用于延时,以稳定显示的数值。采用动态刷新的方式将四位数字显示一遍。每遍约20秒的时间,显示约50次可使得时间约为一秒。然后将时间减少一秒,再次将时间显示出来。如此循环,直到时间减少到00分00秒为止。2)流程图:开始N8279初始化置时间初值并显示延时一秒调用显示子程序键扫描有键按下是2是3NYN调用修改子程序调用清除和设置初值子程序YY图3_2:程序主流程图开始写清除命令字读状态清除完毕返回NY开始读状态有键CF=0读键值

32、,CF=1返回NY图3_3:清除子程序 图3_4:键扫描子程序INT21功能调用开始AH置0FFHDX赋给490返回图3_5:延时子程序开始将AL与3F相与结束开始取时间值显示天的十位显示天的个位显示时的十位显示时的个位显示分的十位显示分的个位显示秒的十位显示秒的个位结束图3_6:键号转化为键值 图3_7:显示子程序开始有键键扫描1ABCDEF89修改秒的个位修改秒的十位修改分的个位修改分的十位修改时的个位修改时的十位修改天的个位修改天的十位结束NYNYNNNNNNNYYYYYYYYYN显示ERROR按3继续按键错误 图3_8;修改子程序开始秒个位为0天,时,分,秒都为0秒十位为0分个位为0分

33、十位为0时个位为0时十位为0天个位为0天个位置为9天十位减1结束秒个位减1显示OVER结束秒十位减1,个位为9秒十位为5,分个位减1分个位为9,分十位减1分十位为5,时个位减1时个位减1,时个位为9天个位减1,时个位为2秒个位为9秒十位为5分十位为9分十位为5时个位为3NYYNNNNNNNYYYYYY 图3_9:修改显示开始输入天十位,个位输入时十位大于222输入时个位出错22输入分十位大于522输入分个位出错22输入秒十位大于522输入秒个位出错22结束显示ERROR显示ERROR显示ERROR显示ERROR显示ERROR显示ERRORYYYYYYNNNNNN 图3_10:设置时间初值3控制

34、程序页:19标题加粗,代码要有分栏符; 8279 倒计时时钟;1.查询控制方式 2.输入时钟2MHZ 3.8279内部20分频(100KHZ);4.扫描计数器采用编码工作方式;5.显示按键初值(6个字符);6.每过一秒改变一次显示值;7.每过一秒中对计数器进行减一操作;8. 1 确定,开始倒计时 2 停止 3 清除 A 修改秒的个位 B 修改秒的十位; C 修改分的个位 D 修改分的十位 E 修改时的个位 F 修改时的十位; 8 修改天的个位 9修改天的十位 .MODELTINYPCIBAR3 EQU1CH;8位I/O空间基地址(它就是实验仪的基地址,也为DMA & 32 BIT RA

35、M板卡上的8237提供基地址)Vendor_IDEQU 10EBH;厂商ID号Device_IDEQU 8376;设备ID号 .STACK100 .DATAIO_Bit8_BaseAddress DW?msg0 DB'BIOS不支持访问PCI $'msg1 DB'找不到Star PCI9052板卡 $'msg2 DB'读8位I/O空间基地址时出错$'DAY DB 2 DUP(?) ;天,时,分,秒HOUR DB 2 DUP(?) MIN DB 2 DUP(?)SEC DB 2 DUP(?) DB'$'KEYCOUNT DB?ERR

36、OR DB 086H,88H,88H,0C0H,88HOVER DB 086H,0C8H,0A1H LED_TAB DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 080H,90H,88H,83H,0C6H,0A1H,86H,8EHCMD_8279 DW 00B1H;8279命令字、状态字地址DATA_8279 DW 00B0H ;8279读写数据口的地址 .CODE START: MOV AX,DATA MOV DS,AXNOPCALLInitPCICALLModifyAddress;根据PCI提供的基地址,将偏移地址转化为实地址CALL INIT827

37、9 ;初始化子程序CALL SET_TIME ;设置初值START4: MOVAX,0START5: CALL DL1S ;倒计时开始CALL SHOW_TIME ;调用显示子程序STOP: CALL SCAN_KEY JNC START5 CMP AL,0C1H JZ START5 CMP AL,0C2H JZ TIME_1 CMP AL,0C3H JZ START52 JMP STOP START52: CALL CLEAR CALL SET_TIME JMP START4TIME_1: CALL CHANGE_TIME ;调用修改时间子程序 JMP START5SET_TIME PROC

38、 NEARSTART1: MOV KEYCOUNT,0 LEA DI,DAY START2: CALL SCAN_KEY ;键扫描 JNC START2 ;没有按键 XCHG AL,KEYCOUNT INC ALJUDGE_COUNT: CMP AL,9 JNZ JUDGE01 XCHG AL,KEYCOUNTSTART_TIME: CMP AL,0C1H ;判断键值是否为1 JNZ START_TIME1 ;键值不为1,继续判断 JMP EXIT_1 START_TIME1: CALL SCAN_KEY ;若键值不为1,就不停地扫描键盘,直到键值为1 JNC START_TIME1 JMP

39、START_TIMEJUDGE01: CMP AL,1 ;判断键入的是否是第一个键 JNZ JUDGE02 XCHG AL,KEYCOUNT CMP AL,0C9H ;显示天的十位 JBE SHOW1 CALL ERROR_1 CALL CLEAR SUB KEYCOUNT,1 JMP START2JUDGE02: CMP AL,2 ;判断键入的是否是第二个键 JNZ JUDGE03 XCHG AL,KEYCOUNT JMP JUDGE04_2 ;显示天的个位JUDGE03: CMP AL,3 ;判断键入的是否是第三个键 JNZ JUDGE04 XCHG AL,KEYCOUNT CMP AL,

40、0C2H ;判断时的十位是否小于等于2 JBE SHOW1 ;时的十位小于等于2,显示 CALL ERROR_1 JMP SHOW111JUDGE04: CMP AL,4 ;判断键入的是否是第四个键 JNZ JUDGE05 XCHG AL,KEYCOUNT MOV BL,HOUR CMP BL,2H JZ JUDGE04_1 JMP JUDGE04_2SHOW1: CALL KEY_NUM ;键值转换为键号 STOSB ;顺序存储键值,为以后的显示做准备 LEA BX,LED_TAB;字型码表 XLAT CALL WRITE_DATA ;显示键值,再去键下一个值 JMP START2 SHOW

41、111: MOV AL,KEYCOUNT DEC AL MOV KEYCOUNT,AL AND AX,0FFH PUSH CX PUSH SI PUSH BX CALL INIT8279_1 LEA SI,DAY MOV CX,AXLOOP1: LODSB LEA BX,LED_TAB XLAT CALL WRITE_DATA LOOP LOOP1 POP CX POP SI POP BX JMP START2 JUDGE04_1: CMP AL,0C4H JB SHOW1 CALL ERROR_1 JMP SHOW111JUDGE04_2: CMP AL,0C9H JBE SHOW1 CALL ERROR_1 JMP SHOW111 START22: JMP JUDGE_COUNTJUDGE05: CMP AL,5 ;判断键入的是否是第五个键 JNZ JUDGE06 XCHG AL,KEYCOUNT CMP AL,0C6H JB SHOW1 CALL ERROR_1 JMP SHOW111JUDGE06: CMP AL,6 ;判断键入的是否是第六个键 JNZ JUDGE07 XCHG AL,KEYCOUNT JMP JUDGE04_2JUDGE07: CMP AL,7 ;判

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论