收藏 分销(赏)

数字钟接口课设报告微机原理与接口关键技术专业课程设计.doc

上传人:精**** 文档编号:2798461 上传时间:2024-06-06 格式:DOC 页数:30 大小:478.54KB
下载 相关 举报
数字钟接口课设报告微机原理与接口关键技术专业课程设计.doc_第1页
第1页 / 共30页
数字钟接口课设报告微机原理与接口关键技术专业课程设计.doc_第2页
第2页 / 共30页
数字钟接口课设报告微机原理与接口关键技术专业课程设计.doc_第3页
第3页 / 共30页
数字钟接口课设报告微机原理与接口关键技术专业课程设计.doc_第4页
第4页 / 共30页
数字钟接口课设报告微机原理与接口关键技术专业课程设计.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、接口技术基本 实验报告学院:计算机科学与技术学院班级:计091学号:姓名:曹恒楼指引教师:顾 晖时间:/6/16目 录数字钟设计31设计需求分析与解决方案31.1设计需求分析31.1.1题目规定31.1.2依照题目规定提出问题31.2解决问题办法及思路31.2.1硬件设计选取某些31.2.2软件设计分析42硬件设计52.1选取芯片825552.1.1芯片8255 A在本设计中功能作用52.1.2芯片8255 A功能分析52.1.38255 A 方式控制字52.1.48255 A与外设相连逻辑图62.2选取器件 LED62.2.1LED在本设计中作用62.2.2LED功能分析62.2.3LED技

2、术参数72.3硬件设计思路及连线图72.3.1硬件设计思路72.3.2硬件接线原理图、连接图73软件设计思路及程序控制流程框图 83.1软件设计思路83.2程序流程图有关阐明93.3程序控制流程框图93.4程序清单(见附录)114实验环境115上机调试过程115.1硬件调试115.2软件调试135.3软、硬件联立调试135.4调试成果136实验运营成果、分析156.1实验运营成果与分析156.2问题讨论157实验心得168参照文献17附录(源代码)17数字钟设计一、 设计需求分析与解决方案1.1设计需求分析1.1.1题目规定设计一种接口与七段LED显示屏,显示一种计时时钟,显示初值为0,每隔一

3、秒变化一次显示值,60s为一分钟,60min为一小时,LED显示屏循环显示时、分、秒动态值。 1.1.2依照题目规定提出问题1、选取用于显示时间显示屏;2、如何使显示屏实现显示时间;3、如何实现计时功能,是用软件还是硬件实现;4、选取何种接口芯片以及考虑该接口芯片及LED显示屏技术参数,考虑最大工作电流,需不需要其她辅助芯片等;5、对设计题目功能扩展,在设计中加入其她功能;6、可否用不同设计办法完毕设计,与其她计算机语言设计相比异同之处。1.2解决问题办法及思路1.2.1硬件设计选取某些1、接口芯片选取秒位设立完毕后,如何将时间信息传送到外设中,即选取何种芯片用于CPU与外设之间传送信息。接口

4、芯片是微型机系统中实现输入输出惯用器件,是CPU与外设之间界面,一方面要接受CPU进行输入/输出所发出一系列信息,另一方面又要与外设互换数据以及某些联系信号等。为增长本设计灵活性,在接口选取上规定是可编程输入/输出接口8255A芯片或8251A芯片。8255A芯片:它是一种可编程通用并行接口芯片,它有24条可编程I/O引脚,采用40脚双列直插式封装,单一+5V电源,所有输入/输出均与TTL电平兼容。在8255A中有A、B、C三个并行输入/输出端口,其功能所有由程序设定,每个端口均有自己特点。A口、B口普通作为独立I/O端口使用,C口也可以作为普通I/O端口使用,但当A口、B口作为应答式I/O端

5、口使用时,C口分别以来为A口、B口提供应答控制信号。如果采用8255A作为计时时钟输入/输出接口,那么8255A三个端口设立如下:A口工作与方式0,作为输出口,其PA0PA6分别与外设段选码相连,用以拟定在何时显示时间哪一位;B口工作与方式0,作为输出口,其PB0PB7分别与外设相连,作为位选线;C口用来为A口、B口提供应答控制信号。8251A芯片:它是一种可编程通用串行接口芯片,是通用同步异步接受/发送器,它作用是把计算机并行数据转换成串行数据发送出去,把接受到外部串行数据转换成并行数据送入计算机内部,它可以通过编程选用同步/异步通信方式,它具备独立发送器和接受器,可以以单工、半双工或全双工

6、方式进行通信,并提供相应控制信号。最佳解决方案:如果采用8251A作为计时时钟输入/输出接口,那么就需要把计算机并行数据转换成串行数据发送出去,把接受到外部串行数据转换成并行数据送入计算机内部,这个过程是需要时间,因此从时间效率方面来说并没有8255A芯片适当;此外,可编程并行接口芯片(8255A)数据传播速度快,虽然使用通信线多,但是传播距离并不算远,因此在解决接口问题时,采用可编程并行接口芯片8255A是比较适当。2、时间显示为实现计时时钟显示,可选取共阴极(或共阳极)七段LED上,芯片LCD或LED,表1-1为两种芯片比较:发光二极管,是由发光二极管排列构成显示屏件,它采用低电压扫描技术

7、,具备耗电少,使用寿命长,成本低,亮度高,故障少,视角大,视角大,可视距离远特点。通过度析和对比以及实验室实验条件可知LED显示屏要较优于LCD显示屏,因而本实验选取LED来实现时间显示。3、秒钟设计秒钟设计有两种解决方案:硬件实现、软件实现:(1)硬件分析:可选取8253A芯片,8253A是一种定期精确、使用以便、灵活性大可编程定期器/计数器,其定期时间长度可以通过软件来设立,对芯片设立处置初值后,计数器开始工作,微解决器就可以去做其她工作,定期时间到,电路会产生一种信号,向微解决器提出中断祈求,告诉解决器定期时间已到。(2)软件分析:为实现1秒长度设定,可执行一种循环程序,通过循环次数和循

8、环嵌套层数来调节计时时间长短,该办法长处是不需要专用硬件,从而成本低,办法简朴灵活,使用起来也比较容易。(3)最佳解决方案:通过以上分析,硬件实现1秒设定虽然较精确,但用软件来实现可以极大节约成本,并且通过周密计算循环次数和循环嵌套层数也可以将计时精确度提高,因此在实现计时时间方面选取软件是比较好方案。1.2.2软件设计分析1、初始值设立在程序中数据段定义秒位数据second,分位数据minute,时位数据hour,初始值都设为00H,并在LED显示屏上显示初值。2、8255初始化设立8255工作方式:B口和C口都用于输出,且都工作在方式0。3、计时过程从初始值开始显示,当显示了1s时,秒位加

9、1,并判断秒位与否为60,若不是,则直接显示时间;若是,则将秒位置0,分位加1,接着判断分位与否为60,若不是,则直接显示;若是,则将分位置0,时位加1,然后判断时位与否为25,若不是,则直接显示;若是,则将时位置0,日期加1,并判断日期与否加到31,若是,则将日期清零,重新计时。如此循环。4、1秒时间设定执行一种循环程序,通过循环次数和循环嵌套层数来调节计时时间长短,该循环次数处定为0100h。二、 硬件设计2.1选取芯片82552.1.1芯片8255 A在本设计中功能作用8255是并行I/0接口芯片,内部有三个互相独立8位数据端口。8255实现了外设与8086之间数据传播。8255B口工作

10、于方式0,作为输出口,其PB0PB7分别与LED数码管显示屏显示屏八段a,b,c,d,e,f,g,dp相连,C口作为输出口,其PC7PC0与LED数码管显示屏LED0LED7相连,作为位选。2.1.2芯片8255 A功能分析1、8255A是可编程并行接口,内部有3个互相独立8位数据端口,即A口、B口和C口。三个端口都可以作为输入端口或输出端口。A口有三种工作方式:方式0、方式1和方式2;B口可以工作在方式0或方式1下;C口普通作为联系信号使用。8255工作只有当片选CS有效时才干进行工作,而控制逻辑端口实现对其她端口控制。当8255 A工作在方式0时,即基本输入输出方式时,可将三个数据端口划分

11、为四个独立某些:A口和B口作为两个8位端口,C口高4位和低4位可以用作两个4位输入输出口,各个端口都可独立地用作输入或输出。2、数据总线缓冲器是一种8位双向三态缓冲器,三态是由读/写控制逻辑控制,它可与系统DB直接相连,实现CPU和8255A之间信息传送;读写控制器用于管理数据、控制字或状态字传送,接受来自CPU地址信息及某些控制信号,然后向A组、B组控制电路发送命令,控制端口数据传送方向。2.1.38255 A方式控制字8255A方式控制字(见图2-1) 图2-18255A方式控制字2.1.48255 A 与外设相连逻辑图图2-38255与外设相连逻辑图PA7PA0:A口数据信号线;PB7P

12、B0:B口数据信号线;PC7PC0:C口数据信号线。2.2选取器件LED2.2.1LED在本设计中作用LED发光二极管(Light-Emitting Diode),在本设计中采用7段数字发光二级管,是作为终端用来显示计时时钟时、分、秒、毫秒值。2.2.2LED功能分析LED发光二级管分为共阳极和共阴极两种,共阳就是7段显示字码共用一种电源正极,同理共阴就是7段显示字码共用一种电源阴极,共阴极数码管原理示意图如下:(见图2-4)图2-4LED原理图LED数码管采用砷化镓、镓铝砷、和磷化镓等材料制成,其内部构造为一种PN结,具备单向导电性。从上图可以看出,要是数码管显示数字,有两个条件:1、是要在

13、VT端(3/8脚)加正电源;2、要使(a,b,c,d,e,f,g,dp)端接低电平或“0”电平。这样才干显示。将七个发光管进行组合,排列成数字图形8,再依照需要控制七个管亮与灭,即可显示出定义数字。2.2.3LED技术参数数字DPgfedcba二进制编码(字形)0001111113FH10000001103H2010110115BH3010011114FH40110011066H5011011016DH6011111017DH70000011107H8011111117FH9011011116FHA0111011177HB011111007CHC0011100169HD010111105EHE

14、0111100179HF0111000171H表2-5LED共阴极显示管段选码编码表2.3硬件设计思路及连线图2.3.1硬件设计思路80868位数据线D7D0与8255D7D0相连,地址线经74LS373锁存后其低位A0、A1分别与8255A0、A1相连,其她地址线经74LS138译码后,其CS0接8255片选CS引脚,其入口地址为00F0H00F3H。8255A口PA0PA7分别与逻辑开关K1K8相连,其中开关量K7用于判断与否修改时间,K5K6用于判断修改哪一位,K1K4为要修改值;B口作为段选;C口作为位选段码信号。2.3.2硬件接线原理图图2-6 硬件连线原理图图2-7硬件连接图三、

15、软件设计思路及程序控制流程框图3.1软件设计思路1、初始化8255A,设立其工作方式。2、设立初值,定义相应十六进制数七段代码表及其时间区表。3、显示计时并循环判断,当1秒时间到是则秒位加1计时显示。4、8255A芯片个端口地址为:控制端口地址:206HA口地址:200HB口地址:202HC口地址:204H3.2程序流程图有关阐明一方面对8255A进行初始化,然后开始读取开关量,判断与否要修改时间,若需修改,则判断需修改哪位,随后将该位相应时间区数据修改为逻辑开关K1K4相应值,若不需要修改则继续显示并循环判断,当1秒时间到达时,则秒位加1计时显示。3.3程序控制流程框图开始8255初始化送1

16、秒时间常数数读取开关量修改时间修改秒低位修改秒高位修改分低位修改分高位修改时低位修改时高位显示时间1秒时间秒位加1秒=60秒为00分加1分=60分为00时加1时=23时为00重计时NNN修改日低位修改日高位图3-1程序流程图图3-2中断操作流程图3.4程序清单(见附录)四、 实验环境系统环境:Win-7系统软件环境:Proteus五、 上机调试过程5.1硬件调试本次课程设计采用是Proteus集成软件开发环境,把总体分为3大块,第一块就是8086CPU译码电路,如下图5-1,第二块为8255A控制时间显示电路,如下图5-2,第三块为8255A不可屏蔽中断控制电路,如下图5-3.在硬件接线连接时

17、,应将8255AA口与端控制端口相连,用于决定显示值,B口也同段控制端口相连,决定显示值,而C口8位接两个位控制端口,用于决定哪个数码管显示。中断电路与8086CPU译码电路均参照课本先有实验图连接,至此,硬件线路已经接好。图 5-1 8086CPU译码电路图 5-2 数码管显示电路图 5-3 中断控制电路5.2软件调试在软件某些,程序分为三个某些:8255A初始化某些,读入初值、循环操作某些,显示出数字量某些。5.3联立调试软件和硬件分别调试完毕后,进行联机调试,浮现了新问题:显示在LED数码管上数字不断跳跃,变幻不定,数值显示不稳定,控制不好。要解决这个问题,我问了几种同窗,分别进行修改,

18、刚开始采用6位,改了好久总是控制显示不好,要么奇数位显示要么偶数位显示,修改了延时操作,又增长了清屏操作,但是数码管还是显示不好。因此最后决定用两个4位数码管显示,增长毫秒位,这样在软件设计时没有浮现显示问题,除此之外,每个数字显示后延时是运用延时子程序循环次数来控制,为了使数字编码显示得清晰,应当通过调试,拟定延时子程序循环次数。在本设计中,循环次数设为16(10h)次。5.4调试成果调试后编码成果对的,显示清晰,稳定,且可通过按键进行清零,及校时操作。图 5-4-1 程序运营效果图 5-4-2 清零操作图 5-4-3 校时操作六、实验运营成果、分析6.1实验运营成果与分析成果:当程序开始全

19、速运营时,LED显示屏上显示“00 00 00 00”,一秒后变为“00 00 01”这样每隔一秒秒位加1,显示“ 00 00 59”后一秒显示为“00 01 00”,显示“23 59 59”后一秒显示为“ 00 00 00”。三个按键分别用于实现复位清零、分钟加一、小时加一系列校时操作,按下复位后,数码管显示初值,加一即在本来基本上进行。分析:将8255A A口(PA0-PA7)作为输出用,A口(PA0-PA7)作为输出用(送段选码),B口(PB0-PB7)作为输出用(送段选码),C口作为输出用(送位选码)。程序一方面从8255AA口读取初始值,并进行显示时间,若按键有中断则响应中断操作。在

20、8255AB口送段选码,C口送位选码后在LED显示屏上显示时间;若中断操作为分钟加一或小时加一,则将相应值经段码表转换及程序转换后在B口(PB0-PB7)输出作为段选码,在C口输出位选码后在LED显示屏上显示时间。然后程序判断之前设立一秒时间常量有无到,若一秒时间到,则将时间加一后接着显示。6.2问题讨论该实验一开始较简朴仅显示分秒,没有浮现什么问题,日后加上时日和毫秒以及按键后致使程序变得复杂,条件跳转超过范畴而调用子程序又有错,日后终于使用JMP指令完毕了程序,成果达到了规定但程序太繁杂条理不清,然后自己又将程序进行某些优化,把多余操作删掉后,终使程序较为抱负。七、实验心得微机原理与接口技

21、术是一门很有趣课程,任何一种计算机系统都是一种复杂整体,学习计算机原理是要涉及到整体每一某些。讨论某一某些原理时又要涉及到其他某些工作原理。这样一来,不但不能在短时间内较进一步理解计算机工作原理,并且也很难孤立地理解某一某些工作原理。因此,在循序渐进课堂教学过程中,我总是处在“学会了某些新知识,弄清了某些本来保存问题,又浮现了某些新问题”循环中,直到课程结束时,才把保存问题基本弄清晰。学习该门课程知识时,其思维办法也和其他课程不同,该课程偏重于工程思维,详细地说,在理解了微解决器各种芯片功能和外部特性后来,剩余是如何将它们用于实际系统中,其创造性劳动在于如何用计算机关于技术和厂家提供各种芯片,

22、设计实用电路和系统,再配上相应应用程序,完毕各种实际应用项目。这次实验我选取题目有是数字钟,由于一开始感觉并不是很难,因此就想一种人独自完毕本次课程设计,刚开始我想法是硬件重要运用两个芯片,8255和8253,运用8253通道0实现计时单元,同步运用软件进行计数,而时间显示则采用6个7段数码管分别显示时、分、秒,并采用动态扫描方式来实现。但我依着这个总体设计想法做了两天后,硬件也连接好了,代码也写好了,但是数码管总是显示不对,然后又花了一天时间去调代码,可是最后还是没调出来,重要就是对数码管控制不好,用8255C口PC0PC6来分别控制六个数码管,但是总是显示不对,请同窗帮看看后,也没有得到较

23、好解决。因此我立即改了方案,运用软件计数,同步用8255C口控制8个7段数码管,多余两位用来增长毫秒显示功能,同步运用不可屏蔽中断NMI实现始终复位、校时功能,固然这样设计也不是一帆风顺,重要困难来自对程序理解,例如始终两位,逢十就要向十位进一,余数用作个位显示,同步每100ms要向秒进1,每逢60s要向分进1,每逢60min要向小时进1,而一天只有24小时,整个过程要用软件进行控制,其实是有难度,还涉及到内存存取原理,低位高位转换等等,都是需要我一种人去解决,功夫不负有心人,通过我摸索以及向同窗某些请教,我最后对实验原理有了清晰结识。虽然重要芯片就是用了8255,但是在那么短时间内可以完毕设

24、计既定功能,我对这个成果还是很满意。总之,通过这次课程设计,我更加清晰结识了计算机中惯用接口电路及8255A应用和设计技术,也结识到了理论知识相应用技术指引性作用。通过实践,我进一步加深了对专业知识和理论知识学习结识和理解,使自己设计水平和对所学知识应用能力以及分析问题、解决问题能力得到了一定提高。我也更加进一步地理解了,微机原理课程上讲到各种芯片功能,以及引脚作用,同步加深了对于重要芯片应用结识。在实验过程中,我也遇到了某些困难,但是我通过及时请教同窗,查询有关资料,及时解决了问题,但仍有局限性之处,我将会在此后学习中更加努力。八、参照文献1 顾晖,梁惺彦等.微机原理与接口技术.北京:电子工

25、业出版社,.82 沈美明,温冬婵.IBM-PC汇编语言程序设计(第2版). 北京:清华大学出版社,附录(源代码):IO1EQU200H IO2EQU400H CODESEGMENTCODE ASSUMECS:CODESTART:MOVES,AXMOVSI,2H*4;不可屏蔽中断NMI向量设立MOVAX,OFFSET UPDATETIME;偏移地址MOVES:SI,UPDATETIME MOVAX,SEG UPDATETIME;段地址 MOVES:SI+2,AX MOVAL,10001001B;显示8255A初始化,A,B,C三端口均工作在方式0,基本输出MOVDX,IO1+6OUTDX,AL

26、MOVAL,10000000B;控制器8255A初始化,C端口输出MOVDX,IO2+6OUTDX,AL LOP1: CALLTIMEDISPLAY;调用时间显示屏CALLTIMESET;调用设立时间JMPLOP1 MOVAH,4CHINT21HTIMESETPROC;设立时间显示屏PUSHDXPUSHCXPUSHBXPUSHAXPUSHSIPUSHDIPUSHFLEADI,TIMEOUTMOVDX,WORD PTRDI;取计时器分钟MOVCX,WORD PTRDI+2;取计时器秒钟MOVBX,WORD PTRDI+4;取计时器分钟MOVAX,WORD PTRDI+6;取计时器秒钟XCHGAH

27、,AL;由于内存关系,高低位互换XCHGBH,BLXCHGCH,CL;由于内存关系,高低位互换XCHGDH,DLCMPAL,9;毫秒100进1,与9相比,如果相等则加一后向高位进一;否则直接加一JNZNEXT2MOVAL,-1;由于都要加一,因此要显示0这里给-1值CMPAH,9JNZNEXT3MOVAH,-1CMPBL,9JNZNEXT4MOVBL,-1CMPBH,5;秒60进1JNZNEXT5MOVBH,-1CMPCL,9JNZNEXT6MOVCL,-1CMPCH,5;分60进1JNZNEXT7MOVCH,-1CMPDL,9JNZNEXT8MOVDL,-1CMPDH,2;24小时JNZNE

28、XT9MOVDH,-1 NEXT9:INCDH;加1操作 NEXT8:INCDL NEXT7:INCCH NEXT6:INCCL NEXT5:INCBH NEXT4:INCBL NEXT3:INCAH NEXT2:INCAL XCHGAH,AL;由于内存关系,高低位互换XCHGBH,BLXCHGCH,CL;由于内存关系,高低位互换XCHGDH,DLMOVWORD PTRDI,DX;取计时器分钟MOVWORD PTRDI+2,CX;取计时器秒钟MOVWORD PTRDI+4,BX;取计时器分钟MOVWORD PTRDI+6,AX;取计时器秒钟POPFPOPDIPOPSIPOPAXPOPBXPOP

29、CXPOPDXRET TIMESETENDPTIMEDISPLAY PROC;调用时间显示屏PUSHCXPUSHBXPUSHAXPUSHSIPUSHDIPUSHFMOVCL,77H;01110111循环右移MOVCH,0LEASI,TIMEOUTMOVDI,SIADDDI,4DISP2:MOVAL,CL;输出位码MOVDX,IO2+4OUTDX,AL MOVBX,OFFSET LEDTAB;输出A段码MOVAL,SIXLATMOVDX,IO2OUTDX,AL MOVBX,OFFSET LEDTAB;输出B段码MOVAL,DIXLATMOVDX,IO2+2OUTDX,ALCALLDISPLAY;

30、延时 MOVAL,0H;清空A端口内容MOVDX,IO2OUTDX,AL MOVAL,0H;清空B端口内容MOVDX,IO2+2OUTDX,AL INCDIINCSIRORCL,1INCCHCMPCH,4JZNEXTTIMEJMPDISP2NEXTTIME:POPFPOPDIPOPSIPOPAXPOPBXPOPCX RETTIMEDISPLAYENDPDISPLAYPROC;延时PUSHCXPUSHBXMOVBX,10HD1:MOVCX,0FHD2:LOOPD2DECBXJNZD1POPBXPOPCXRETDISPLAYENDP UPDATETIMEPROCCLI PUSHDXPUSHCXPU

31、SHAXPUSHSIPUSHFMOVDX,IO1+4 INAL,DXCMPAL,11111110B;清零JZA5CMPAL,11111101B;分钟加1JZA4CMPAL,11111011B;小时加1JZA3 JMPNEXTOUTA5:LEADI,TIMEOUTMOVAX,0MOVWORD PTRDI,0;取计时器分钟MOVWORD PTRDI+2,0;取计时器秒钟MOVWORD PTRDI+4,0;取计时器分钟MOVWORD PTRDI+6,0;取计时器秒钟 JMPNEXTOUTA4:LEADI,TIMEOUTMOVDX,WORD PTRDI;取计时器分钟MOVCX,WORD PTRDI+2

32、;取计时器秒钟XCHGCH,CL;由于内存关系,高低位互换XCHGDH,DLCMPCL,9JNZN6MOVCL,-1CMPCH,5JNZN7MOVCH,-1CMPDL,9JNZN8MOVDL,-1CMPDH,2JNZN9MOVDH,-1 N9:INCDHN8:INCDLN7:INCCHN6:INCCLXCHGCH,CL;由于内存关系,高低位互换XCHGDH,DLMOVWORD PTRDI,DX;取计时器分钟MOVWORD PTRDI+2,CX;取计时器秒钟JMPNEXTOUT A3:LEADI,TIMEOUTMOVDX,WORD PTRDI;取计时器分钟XCHGDH,DLCMPDL,9JNZX8MOVDL,-1CMPDH,2JNZX9MOVDH,-1 X9:INCDHX8:INCDLXCHGDH,DLMOVWORDPTRDI,DX;取计时器分钟NEXTOUT:POPFPOPSIPOPAXPOPCXPOPDXSTIIRETUPDATETIMEENDP TIMEOUTDB0,0,0,0,0,0,0,0;初值显示小时分钟,秒毫秒 LEDTABDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;段码表CODEENDSEND START

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服