ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:183.11KB ,
资源ID:6650355      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6650355.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(倒计时数字钟解析.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

倒计时数字钟解析.docx

1、倒计时数字钟解析合肥学院计算机科学与技术系微机原理与接口技术课程设计报告20082009学年第1学期课程微机原理与接口技术课程设计名称倒计时数字钟学生姓名昌 飞 霞学号0604032012专业班级网络工程专业(06网工2)指导教师肖连军老师2009 年 2 月一、题意分析及解决方案1 .题义与需求分析用STAR ES598PCI单板开发机设计一个接口与七段LED显示器,显示一个倒计时数字钟,显示初值为60分00秒,每隔一秒改变一次显示值,60秒为一分钟,LED显示器显示分、秒的动态值。根据题目要求需要考虑以下几方面问题:1 初值的设置及输入问题 倒计时时需要从一个固定的值开始倒计时,这个初值需

2、要用输入一个输入设备输入。2 接口设计 当初值设置完毕,应将时间信息传送到外设中,即设计CPU与外设之间传送信息的接口。3 动态值的显示 从初始值开始每隔一秒就要动态的改变这个初值,并且把这个值用显示设备显示出来。4 显示设备 为了使用者能够清楚方便的使用该产品,倒计时数字钟要把每隔一秒后相应数值动态的显示出来,这样才会使得设计出来的产品有应用价值。5 一秒的控制 倒计时钟需要每隔一秒改变一下显示值,所以需要一个操作来控制一秒这个固定延时。需要注意的是,在选择芯片或选择其它元器件时,应当考虑所选器件在设计中所起的实验效果、产品成本、产品可靠性、可行性以及使用的难易程度等等,这都是我们在设计过程

3、中需要考虑的因素。 2 .解决问题的方法与思路1) 硬件部分初值的设置及输入问题倒计时钟是从初值开始一秒一秒的倒计时,可以使用一组八位二进制逻辑开关作为输入设备。需要输入的有秒个位、秒十位、分个位、分十位、时个位、时十位,用K7K5来选择要输入的是哪位,000时表示设置的是秒个位,001时设置的是秒十位,010时设置的是分个位,011时设置的是分十位,100时设置的是时个位,101时设置的是时十位。K4K1用来表示需要设置位的具体值,00001001分别表示十进制数的09。K8作为主控开关,为1时表示需要设置初值,为0时不需设置初值及开始倒计时。接口设计接口芯片是CPU与外设之间的界面,一方面

4、要接收CPU进行输入/输出所发出的一系列信息,另一方面又要与外设交换数据以及一些联络信号等。为增加本设计的灵活性,在接口的选择上要求是可编程的输入/输出接口,而可编程的输入/输出接口又分为可编程并行接口(8255A)和可编程串行接口(8251A)。8255A芯片是一种可编程通用并行接口芯片,它有24条可编程的I/O引脚,采用40脚双列直插式封装,单一+5V电源,全部输入/输出均与TTL电平兼容。在8255A中有A、B、C三个并行输入/输出端口,其功能全部由程序设定,每个端口都有自己的特点。A口、B口通常作为独立的I/O端口使用,C口也可以作为一般的I/O端口使用,但当A口、B口作为应答式的I/

5、O端口使用时,C口分别以来为A口、B口提供应答控制信号。8251A芯片是一种可编程通用串行接口芯片,是通用的同步异步接收/发送器,它的作用是把计算机的并行数据转换成串行数据发送出去,把接收到的外部串行数据转换成并行数据送入计算机内部,它可以通过编程选用同步/异步通信方式,它具有独立的发送器和接收器,能够以单工、半双工或全双工方式进行通信,并提供相应的控制信号。如果采用8251A作为计时时钟的输入/输出接口,那么就需要把计算机的并行数据转换成串行数据发送出去,把接收到的外部串行数据转换成并行数据送入计算机内部,这个过程是需要时间的,所以从时间效率方面来说并没有8255A芯片合适;另外,可编程并行

6、接口(8255A)的是数据传输速度快,虽然使用的通信线多,但是传输距离并不算远,所以在解决接口问题时,采用可编程并行接口(8255A)是比较合适的。采用8255A作为计时时钟的输入/输出接口,那么8255A的三个端口设置如下:PA口工作与方式0,作为输出口,其PA0PA3分别与外设的位选码相连,用以确定显示的是秒还是分的值;PB口工作与方式0,作为输出口,其PB0PB7分别与外设相连,作为段选线;PC口用来为PA口、PB口提供应答控制信号。显示设备倒计时钟的显示问题可以通过LED数码管来解决,LED是发光二级管(Light-Emitting Diode)的简称,它是将七个发光管进行组合,排列成

7、数字图形8,再根据需要控制七个管的亮与灭,即可显示出定义数字在本设计中采用7段数字发光二级管,做为终端显示,因为它的成本低,可靠性高,从显示的效果上来说也可以满足显示计时时钟的需要。2) 软件部分(汇编语言编写程序)动态值控制问题该部分可通过软件编程来实现。首先将秒个位减一判断结果是否小于0,如果小于0则置秒个位为9,否则直接显示。再将秒十位减一判断结果是否小于0,如果小于0则置秒十位为5,否则直接显示。同理再判断分个位、分十位、时个位、时十位直到减为00:00:00。一秒的控制可以通过做N次空操作来实现。可以先将循环部分每句程序的时钟周期从参考资料中查到再相加,算出该部分运行的时间T。最后用

8、1S除以T就得到了N。二、硬件设计1选择芯片8255A1) 8255A在本设计中的作用PA口、PB口作为作为输出口,PA口的低4位与LED显示器的位选信号LED0到LED3相连作为位选码的输出口,高4位禁止。PB口与LED0LED3的段选信号相连作为段选码的输出口。PC口与逻辑开关相连把读入的二进制数送8086CPU。PA、PB、PC三口均工作在方式状态。PC0PC7与逻辑开关18相连。当控制程序运行到读开关变量时,逻辑开关状态经PC口送8086CPU。PA0PA3与LED0LED3相连当控制呈现运行至显示16进制数时送出位选码选中相应位,对应的七段LED显示器显示16进制数的字型,PB0PB

9、3与LED的段选信号相连,对显示位进行控制。在使用8255前首先要对它进行初始化设置,设置它的方式选择控制字。2) 8255A的功能分析 图2-1 8255A的内部框图8255A是可编程并行接口,内部有3个相互独立的8位数据端口,即A口、口和口。三个端口都可以作为输入端口或输出端口。口有三种工作方式:即方式、方式和方式,而口只能工作在方式或方式下,而口通常作为联络信号使用。8255A的工作只有当片选CS效时才能进行。而控制逻辑端口实现对其他端口的控制。8255有三种工作方式。方式0:基本输入输出,端口与外设之间无联络信号,只能使用无条件传送方式输入输出数据;方式1:是选通输入输出方式,PC口用

10、作联络信号;方式2:双向数据传送方式,仅A口有此功能。本设计用到工作方式0。表2-1 8255A的操作功能 A1 A0操 作数 据 传 送 方 式 0 0 1 0 0读 A 口A口数据 数据总线 0 0 1 0 1读 B 口B口数据 数据总线 0 0 1 1 0读 C 口C口数据 数据总线 0 1 0 0 0写 A 口数据总线数据 A口 0 1 0 0 1写 B 口数据总线数据 B口 0 1 0 1 0写 C 口数据总线数据 C口 0 1 0 1 1写控制口数据总线数据 控制口3) 8255A的技术参数 与外设相连的PA7PA0:A口数据信号线。PB7PB0:B口数据信号线。PC7PC0:C口

11、数据信号线。 与CPU相连的RESET:复位信号。当此信号来时,所有寄存器都被清除。同时三个数据端口被自动置为输入端口。D7D0:它们是8255A的数据线和系统总线相连。CS:片选信号。在系统中,一般根据全部接口芯片来分配,若低位地址(比如A5、A4、A3)组成各种芯片选择码,当这几位地址组成某一个低电平,8255A被选中。只有当其有效时,读信号写才对8255A进行读写。 RD:读信号。当此信号有效时,CPU可从8255A中读取数据。WR:写信号。当此信号有效时,CPU可向8255A中写入数据。A1、A0:端口选择信号。8255A内部有3个数据端口和1个控制端口,共4个端口。规定:A1、A0为

12、00时,选中A端口;A1、A0为01时,选中B端口;A1、A0为10时,选中C端口;A1、A0为11时,选中控制口。 参数说明:输入最低电压:min-0.5V,max0.8 V输入最高电压:2.0 V输出最低电压:0.45 V输出最高电压:2.4 V8255A的方式控制字 D7 D6 D5 D4 D3 D2 D1 D0100010011:工作方式 A口方式0输出 B口方式0输出 C口高4位输入 C口低4位输入图2-2 8255A的方式控制字表方式0的工作特点:这种方式通常不用联络信号,不使用中断,三个通道中的每一个都有可以由程序选定作为输入或输出。通道的功能为:两个8位通道:通道A和B。两个四

13、位通道:通道C高4位和低四位,任何一个通道可以作输入/输出,输入是不锁存的,输出是锁存的,在方式0时各个通道的输入/输出可有16种不同的组合。D7 D6 D5 D4 D3 D2 D1 D00XXX写入位编码写入内容 写入位 编码 0写入0 D0-D7 000-111 1写入1图2-3 8255A的置位/控制字表8255主要用作数据的输入输出端口,电源为5V,输入最低电压:-0.5V0.8V,输入最高电压:2.0 V,输出最低电压:0.45 V,输出最高电压:2.4 V。8255的达林顿驱动电流最大4.0mA表22 8255A技术参数8255A技术参数测试条件规范值单位大小输入低电平电压IL.输

14、入高电平电压IHCC.输出低电平电压OL(数据端口)OL.输出低电平电压OL(外围端口)OL.输出高电平电压OH(数据端口)OR.输出高电平电压OH(外围端口)OH.达林顿驱动电流OAR.mA电源电流CCmA输入负载电流ILINmA输出浮动电流OFOR.VmA2选择芯片LED1) LED在本设计中的作用LED为发光二极管(Light-Emitting Diode),在本设计中采用7段数字发光二级管,做为终端显示,主要是作为动态显示计时的秒个位、秒十位、分个位、分十位、时个位、时十位的值。2) LED的功能分析LED发光二级管,采用砷化镓、镓铝砷、和磷化镓等材料制成,其内部结构为一个PN结,具有

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

16、111103FH000000111O6H0101101125BH0100111134FH01100110466H0110110156DH0111110167DH00000111707H0111111187FH0110111196FH(1)静态:数码管显示过程持续得到信号,与数码管接口的I/O口线为专用。特点是无闪烁,元器件多,占I/O线多,无须扫描,节省CPU时间,编程简单。(2)动态:数码管显示过程轮流得到信号,与各数码管接口的I/O口线为共用。特点是有闪烁,元器件少,占I/O线少,必须扫描,花费CPU时间,编程复杂 (有多个LED时尤为突出)。3) LED的技术参数消耗功率 PM150mW

17、 最大工作电流 IFM100mA 正常工作电流 IF40mA 正向压降 VF 1.8V 燃亮电压为5V共阴极LED的PM300mW,IFM200 mA,IF60mA,VF 1.8V,VR5V,发红光。发光颜色有:红色光、黄色光、绿色光、红外光等。发光二极管应用电路有四种,即直流驱动电路、交流驱动电路、脉冲驱动电路、变色发光驱动电路。表2-4LED技术参数PCWIFVrIrIfP对应型号散射 颜色BT235-2702551.52.5200SEL-10红色BT14415291004050.52.5565绿色BT13415291004050.52.5585蓝色3选择芯片逻辑开关1)逻辑开关在本设计中

18、的作用4位开关作为倒计时的初始值的设定,3位开关作为位选,1位作为主控开关。开关K4K1位设置输入的时间数字(09),K7K5用来控制对时分秒位数的修改,k8控制程序的运行与否,仅当K8为1时即程序停止运行时才可以修改时间。表2-5开关设置的位K5 K6 K7对应的操作0 0 0修改秒的个位0 0 1修改秒的十位0 1 0修改分的个位0 1 1修改分的十位1 0 0修改时的个位1 0 1修改时的十位表2-6开关编码表K4 K3 K2 K1数 字0 0 0 000 0 0 110 0 1 020 0 1 130 1 0 040 1 0 150 1 1 060 1 1 171 0 0 081 0

19、0 192)逻辑开关的功能分析逻辑电平开关可以进行简单的高电平和低电平信号的输入。在8255A可编程并行口的实验中,它作为一种简单的输入设备,当开关拨上时为1,拨下时为0。3)逻辑开关的技术参数当K接VCC=+5V时为1,接地时输出为0。4、硬件总逻辑图及其说明图2-5硬件总逻辑图PC机的AD0AD19经数据总线与8255A的D0D7相连,地址线A1、A0与8255的A0、A1相连,即偶地址有效。控制总线RD、WR、RESET分别与8255相应的控制信号线连接。片选信号CS0与8255的CS信号连接,则8255的端口地址为04A004A6。8255的PA口用于存放位选码,使用的是高四位,分别连

20、接到四个七段LED显示器上。使用的是共阴极接;PB口用于存放段选码,八位全部连接到八个二极管上;PC口用作信号输入。三、控制程序设计1 .控制程序设计思路说明本课程设计用到了6片LED显示器,分别显示倒计时时钟的秒个位、秒十位、分个位、分十位、时个位、时十位。为节省硬件,所以采用动态扫描显示方式,每次只使一位LED显示器公共端的电平有效,因而每次只有一位LED显示器发光。但由于人眼的视觉暂留的效应,只要间隔的时间足够短,则依次从右向左显示时就感觉是6位LED是同时点亮一样。用8255的PA口接LED显示器的公共端作位选择,用PB口接LED的各片的发光二极管作段选择的控制,用PC口接二进制开关作

21、初始值的控制输入。同时要解决每隔一秒变化一次显示的问题,所以需要一个时间控制定时。在本程序中用了一个延时子程序来完成这个功能的。在LED显示器上显示的数字是从09共十个字符,将其相应的转换代码存入一个缓冲区中,用查表转换的方式来控制编程调用。2 控制程序流程图图3-1程序流程图图3-2显示子程序流程图3 控制程序.MODEL TINY PCIBAR3 EQU 1CH ;8位I/O空间基地址(它就是实验仪的基地址, 也为DMA & 32 BIT RAM板卡上的8237提供基地址) Vendor_ID EQU 10EBH ;厂商ID号Device_ID EQU 8376 ;设备ID号 .STACK

22、 100 .DATA IO_Bit8_BaseAddress DW ? msg0 DB BIOS不支持访问PCI $msg1 DB 找不到Star PCI9052板卡 $msg2 DB 读8位I/O空间基地址时出错$ COM_ADD DW 00F3H ;控制口偏移量PA_ADD DW 00F0H ;PA口偏移量PB_ADD DW 00F1H ;PB口偏移量PC_ADD DW 00F2H ;PC口偏移量len db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码表time db 00h,00h,00h,00h,04h,02hlen0 db 00h,10h,

23、20h,30h,40h,50h;00:秒个位,10:秒十位,20:分个位,30:分十位,len1 db 09h,05h,09h,05h,09h,09h .CODE START: MOV AX,DATA MOV DS,AX NOP CALL InitPCI CALL ModifyAddress ;根据PCI提供的基地址,将偏移地址转化为实地址;* MOV al,89h ;10001001b初始化工作方式控制字 MOV dx,COM_ADD ;工作方式寄存器端口地址 OUT dx,alloop3: MOV dx,PC_ADD ;PC口端口地址 IN al,dx ;读入八位开关量 AND al,80

24、h ;判断最高位K8是否为1 CMP al,80h ;为1时设置数据缓冲区初值 JE setlen CALL display1 ;调用显示子程序,显示一秒 CALL alter ;调用数据缓冲区修改子程序 JMP loop3 setlen: MOV bx,offset time ;数据缓冲区送BX MOV dx,PC_ADD ;PC口端口地址 IN al,dx ;读八位开关量 MOV ah,al ;AH=AL 保存数据,下面的操作会改变al的值 AND ax,0f70h ;选取5 6 7进行输入选择判断,并保留ah中的低四位 MOV si,offset len0 ;ah=要设置的具体的值,al

25、=对哪位进行设置loop0: MOV cl,byte ptr si CMP al,cl JNE loop00 ;不是要修改的位 MOV byte ptr bx,ah ;读入的开关量低四位存入缓冲 CALL display1 ;调用显示子程序 JMP loop3loop00: INC si ;指针指向下一个需要修改的位 INC bx ;指针指向下一个需要修改的数值 JMP loop0 ;*display1 PROC ;显示子程序 PUSH si ;保护SI PUSH dx ;保护DX PUSH cx ;保护CX PUSH bx ;保护BX PUSH ax ;保护AX PUSH di ;保护DI

26、MOV di,50h ;控制1s的计时loop1: MOV si,offset time ;数据缓冲区首地址送SI MOV cx,6 MOV ah,0feh ;设置位选 选中秒的个位loop2: MOV al,byte ptr si ;位移量 MOV bx,offset len ;查表转换 XLAT ;查数据段表,al+bx-al MOV dx,PB_ADD ;PB口地址 OUT dx,al ;送段选码 MOV al,ah ;位选码AL MOV dx,PA_ADD ;PA口地址 OUT dx,al CALL delay ;调用延时子程序 MOV al,0ffh ;禁止显示 OUT dx,al

27、ADD si,1 ; ROL ah,1 ;选中前一位进行操作 LOOP loop2 DEC di ;控制显示一秒 JNE loop1 ;总共循环50h次每次是一个delay时间 POP di POP ax POP bx POP cx POP dx POP si RETdisplay1 ENDP;*alter PROC ;数据缓冲区子程序 PUSH si PUSH ax PUSH bx PUSH dx MOV si,offset time ;数据缓冲区首值送BX MOV bx,offset len1 ;将每位要借位后下一次的初值读入bxloop7:MOV ax,si ;缓冲区中的秒值取入ax MOV dx,bx SUB al,1 CMP al,-1 JG loop6 MOV al,dl SUB ah,1 CMP ah,-1 JG loop6 MOV ah,dh MOV si,ax INC si INC si INC bx INC bx JMP loop7 loop6:MOV si,ax ;修改后的值再保存回缓冲区 POP dx POP bx POP ax POP si RETalter ENDP;*

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1