《数字电子钟8255.8253.8259.doc》由会员分享,可在线阅读,更多相关《数字电子钟8255.8253.8259.doc(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date数字电子钟8255.8253.8259涂膜抑制花生仁贮藏过程中黄曲霉毒素含量的研究 Hefei University 微机原理与接口技术课程设计学科专业:自动化(3)班课程题目:数字电子钟完成时间:2011-1-12自动化专业微机原理课程设计任务书论文题目数字电子钟的设计设计类型设计型导师姓名刘伟主要内容及目标要求:具有24/12小时计时;正点报时;设置时间;设置闹钟
2、;显示用数码管;设置按键尽量少;可扩展秒表功能;具有的设计条件1 PC机一台,EL教学实验箱一台及汇编程序;计划学生数及任务3人(1):明确课题对程序功能,运算精度等方面的要求及硬件条件(2):把复杂问题分解为若干模块,确定各模块处理方法,画出流程图。(3):存储器资源分配(4):编制程序,根据流程图精心选择合适的指令和寻址方式来编制源程序(5):对程序进行汇编,调试和修改,直到程序运行结果正确为止。计划设计进程(按课程设计周计算)第一周设计任务:(1):明确课题对程序功能,运算精度等方面的要求及硬件条件(2):把复杂问题分解为若干模块,确定各模块处理方法,画出流程图。(3):存储器资源分配第
3、二周设计任务:(4):编制程序,根据流程图精心选择合适的指令和寻址方式来编制源程序(5):对程序进行汇编,调试和修改,直到程序运行结果正确为止。参考文献微型计算机原理及接口技术中国科技大学出版社 吴秀清 周荷琴编著16-32位微型计算机技术及应用清华大学出版社 戴梅萼 史嘉权 编著汇编语言程序设计南京大学出版社 姚君遗编著汇编语言程序设计教程清华大学出版社 杨记文编著微型计算机原理及接口技术实验指导书目录引言41.设计目的12.设计要求13.总体设计:14.硬件设计:24.1、8259A芯片的内部结构及引脚24.2、8255芯片的内部结构及引脚34.3、8253芯片的内部结构及引脚34.4.设
4、计方案55.软件设计:65.1原理框图65.2系统模块详细设计与调试65.3用定时器8253输出的脉冲75.4完整程序如下:96.设计总结:15引言计算机的产生加快了人类改造世界的步伐,但是体积大,随着人们的生活越来越离不开计算机。微型处理器在这种情况下应运而生。纵观各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及生活中使用的各种智能IC卡、电子宠物等,这些都离不开微型计算机。微机即是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。这次课
5、程设计的题目是:数字电子钟的设计。计时精确的电子钟在我们生活中能处处能见到。钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。通过对一个学期的微机原理与接口技术的学习,我们可以利用我们所学过的知识来实现数字电子钟的工作过程。我们选择LED显示, 8253定时功能、8255基本输入输出的功能、8259的中断功能来实现数字电子钟的设计。其中附有电路原理图
6、,电路接线图和源程序。因水平有限,难免有疏落不足之处,敬请指导老师批评指正。 -1.设计目的熟悉编程及调试程序的方法。掌握8259中断控制器的工作原理和应用编程方法,练习编写中断程序的方法。掌握8255的各种工作方式及其应用编程。掌握8253定时/计数器的工作原理、工作方式及其应用编程。数码管的显示编程方法。2.设计要求设计一个接口与七段LED显示器,显示一个计时时钟,显示初值为0,LED显示器循环显示时、分的动态值,具有校时校分功能。3.总体设计:利用8253可编程定时/计数器、8259中断控制器、8255可编程并行接口芯片和七段数码管设计一个电子钟的电路,并编制一程序使得该电子钟能正常运行
7、。电子钟除了能够完成正常的计时、显示功能外,还必须具备正常时、分、秒的数值显示功能、时间设定功能等。绘制相应的硬件电路原理图并完成接线。编制相应控制程序实现电子钟的计时、显示等功能。控制程序设计规范,应有适当的注释,表达清楚。钟的时分秒显示分别采用6个7段LED数码管实现。利用8253做定时器,对其送入一个计数初值,然后将输出的脉冲送到的8259的IR0产生中断,在8259中断处理程序中,对时、分、秒进行计数,在等待中断的循环中,采用8255芯片,利用LED显示时间,将8255的两个输出端口A口与B口实现其位选与段选。在主程序中要分别对8253、8259、8255进行初始化编程,8253的计数
8、器1可在方式3下工作。时、分、秒分别对应6个存储单元,分别存放时、分、秒的个位和十位。当中断来时,将秒的个位加1,判断是否到10,如到了则十位加1,个位清零;再判断十位是否到了6,如到了则十位清零,分的个位加1,同理对分、时作相应处理。七段数码管显示作为子程序,将时、分、秒对应存储单元的内容分别取出并转换成相应的代码,利用缓冲区和延时子程序进行显示。修改时间通过8255的C口低三位实现,当K1按下的时候将时间复位为初始时间00:00:00,当K2按下的一次将时位加1,当K3按下的一次将分位加1.4.硬件设计:4.1、8259A芯片的内部结构及引脚中断控制器8259A是Intel公司专为控制优先
9、级中断而设计开发的芯片。它将中断源优先排队、辨别中断源以及提供中断矢量的电路集中于一片中。因此无需附加任何电路,只需对8259A编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。在MD微机系统中,8259芯片工作于单片方式。8259引脚图如图3.3,各引脚功能如下。D7D0八条双向数据线;WR(低电平有效)写输入信号;RD(低电平有效)读输入信号;CS(低电平有效)片选输入信号;A0地址信号;INT中断请求信号;INTA(低电平有效)中断响应信号;CAS0CAS2级联信号,形成一条专用8259A总线,以便多片8259A的级联;图3.1 8259A引脚图SP
10、/EN从编程/允许级联。在缓冲方式中,可用做输出信号以控制总线缓冲器的接收和发送。在非缓冲方式中,作为输入信号用于表示主片还是从片;IR0IR7外部中断请求输入线。要求输入的中断请求信号是由低电平到高电平的上升沿(并保持高电平到CPU响应时为止)或者是高电平。4.2、8255芯片的内部结构及引脚8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种工作方式下工作:图3.2 8255引脚图方式0基本输入/输出方式方式1选通输入/输出方式方式2双向选通输入/输出方式8255引脚图如图3.2示,各引脚功能如下。D7D0与
11、CPU侧连接的八条双向数据线;WR(低电平有效)写输入信号;RD(低电平有效)读输入信号;CS(低电平有效)片选输入信号;A0、A1片内寄存器选择输入信号;PA7PA0A口外设双向数据线;PB7PB0B口外设双向数据线;PC7PC0C口外设双向数据线;RESET复位输入信号4.3、8253芯片的内部结构及引脚8253可编程定时/计数器是Intel公司生产的通用外围芯片之一,有3个独立的十六位计数器,技术频率范围为02MHZ,它所有的技术方式和操作方式都通过编程控制。8253的功能用途是:(1)延时中断 (2)可编程频率发生器 (3)事件计数器 (4)二进倍频器 (5)实时时钟(6)数字单稳(7
12、)复杂的电机控制器8253有六种工作方式:(1)方式0:计数结束中断(2)方式1:可编程频率发生器(3)方式2:频率发生器(4)方式3:方波频率发生器(5)方式4:软件触发的选通信号(6)方式5:硬件触发的选通信号8253各引脚功能如下。D7D0八条双向数据线;WR(低电平有效)写输入信号;RD(低电平有效)读输入信号;CS(低电平有效)片选输入信号;A0、A1片内寄存器地址输入信号;CLK计数输入,用于输入定时基准脉冲或计数脉冲;OUT输出信号,以相应的电平指示计数的完成,或输出脉冲波形;GATE选通输入(门控输入),用于启动或禁止计数器的操作,以使计数器和计测对象同步。 4.4.设计方案在
13、整个电子钟的设计中。我们使用8253用于定时功能,由于8259的中断只能是电平与电缘触发,所以我们选择电缘触发。由于我们选择一次写入计数初值后的能循环进行,所以我们选择工作方式2在每次的计数初值的N-1是产生一个脉冲。在CLK0引脚接入10KHZ的时钟周期,而将计数初值写为10000时,继而在OUT0会在每1s产生脉冲,在控制字的时候采用十进制计数,所以其控制字为35H,所以8253能产生准确的计时功能。8255A芯片,将8255A的A,B口均工作在工作方式0的下,且为输出控制LED的位选与片选,而C口用于修改时间用,同样工作于方式0低四位输出。所以其控制字为81H。8259A芯片用于产生中断
14、信号去自动修改秒针。所以只需将8259的IR0产生中断,其他未屏蔽,单片8259,上升沿中断,要写ICW4,中断号为20H,工作在8086/88方式。硬件连接图:5.软件设计:5.1、原理框图 上图为主程序流程图; 5.2.系统模块详细设计与调试1在主程序中要分别对8253、8259、8255进行初始化编程。具体如下:8253的方式控制字:MOV AX,0 MOV DS, AX MOV AL,35 H MOV DX,CONTROL OUT DX,AL 利用8253计数器0: MOV AX,00H MOV DX,COUNT1 OUT DX,AL MOV AX,00H OUT DX,AL 8259
15、初始化命令字和操作命令字: MOV DX,CS8259A MOV AL,ICW1 OUT DX,AL MOV DX,CS8259B MOV AL,ICW2 OUT DX,AL MOV AL,ICW4 OUT DX,AL MOV AL,OCW1 OUT DX,AL 利用计算机内部8255:MOV AL,MD8255 MOV DX,CTL8255 OUT DX,AL5.3用定时器8253输出的脉冲8259产生中断一次时、分、秒的处理。中断服务程序详见程序中IENTER模块:IENTER PROC NEAR PUSH AX PUSH DX INC SECOND ;秒加1 MOV AL,SECOND
16、CMP AL,60 ;秒数与60比较 JNE EXIT MOV SECOND,0 ;秒清零 INC MINUTE ;分加1 MOV AL,MINUTE CMP AL,60 ;分数与60比较 JNE EXIT MOV MINUTE,0 ;分清零 INC HOUR ;时加1 MOV AL,HOUR CMP AL,24 ;时数与24比较 JNE EXIT MOV HOUR,0 ;时清零利用按键K1,K2,K3修改时间程序:CHANGE PROC NEARMOV DX,34HIN AL.DX ;读入C口是否有键按下AND AL,07H ;屏蔽高5位CMP AL,07H ;检查是否全为零JZ EXIT
17、;没有键按下不需要修改退出CALL DELAY ;延迟20ms消键盘抖动IN AL,DX ;再次读入C口AND AL,07HCMP AL,07JZ EXIT ;确认第一次检查为干扰键盘退出MOV BL,AL ;不是干扰存开关量入寄存器BLRESET :AND AL,01H ;复位JZ MIN MOV HOUR,00H MOV MINUTE,00H MOV SECOND,00H JMP EXITMIN: MOV AL,BL AND AL,02H JZ HOU INC MINUTEHOU: MOV AL,BL AND AL,04H INC HOUREXIT: NOPCHANGE EDNP5.4完整
18、程序如下:MD8253 EQU 35H ;8253控制字CONTROL EQU 86H ;8253控制口COUNT0 EQU 80HCOUNT1 EQU 82HCOUNT2 EQU 84HMD8255 EQU 81H ;8255控制字 CTL8255 EQU 36H ;8255控制口OUTBIT EQU 30H ;位控制口OUTSEG EQU 32H ;段控制口CHANGE EQU 34H ;C口地址用于修改时间ICW1 EQU 00010011B ;单片8259,上升沿中断,要写ICW4ICW2 EQU 00100000B ;中断号为20HICW4 EQU 00000001B ;工作在808
19、6/88方式OCW1 EQU 11111110B ;只响应INT0中断CS8259A EQU 0D000H ;8259地址CS8259B EQU 0D001HDATA SEGMENTCNT DB 0LEDBUF DB 6 DUP(?) ;显示缓冲NUM DB 1 DUP(?) ;显示的数据DELAYT DB 1 DUP(?)HOUR DB 0MINUTE DB 0SECOND DB 0LEDMAP ;七段管显示码 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71HDATA ENDSCODE SEGMENT
20、ASSUME CS:CODE,DS:DATA,ES:DATADELAY PROC NEAR ;延时子程序在显示时能供调用 PUSH AX PUSH CX MOV AL,0 MOV CX,AX LOOP $ POP CX POP AX RETDELAY ENDPCHANGE PROC NEARMOV DX,34HIN AL.DX ;读入C口是否有键按下AND AL,07H ;屏蔽高5位CMP AL,07H ;检查是否全为零JZ EXIT ;没有键按下不需要修改退出CALL DELAY ;延迟20ms消键盘抖动IN AL,DX ;再次读入C口AND AL,07HCMP AL,07JZ EXIT ;
21、确认第一次检查为干扰键盘退出MOV BL,AL ;不是干扰存开关量入寄存器BLRESET :AND AL,01H ;复位JZ MIN MOV HOUR,00H MOV MINUTE,00H MOV SECOND,00H JMP EXITMIN: MOV AL,BL AND AL,02H JZ HOU INC MINUTEHOU: MOV AL,BL AND AL,04H INC HOUREXIT: NOPCHANGE EDNPDISPLAYLED PROC NEAR MOV BX,OFFSET LEDBUF MOV CL,6 ;共6个八段管 MOV AH,00100000B ;从左边开始显示D
22、LOOP: MOV DX,OUTBIT MOV AL,0 OUT DX,AL ;关所有八段管 MOV AL,BX MOV DX,OUTSEG OUT DX,AL MOV DX,OUTBIT MOV AL,AH OUT DX,AL ;显示一位八段管 PUSH AX MOV AH,1 CALL DELAY POP AX SHR AH,1 INC BX DEC CL JNZ DLOOP MOV DX,OUTBIT MOV AL,0 OUT DX,AL ;关所有八段管 RETDISPLAYLED ENDPIENTER PROC NEAR PUSH AX PUSH DX INC SECOND ;秒加1
23、MOV AL,SECOND CMP AL,60 ;秒数与60比较 JNE EXIT MOV SECOND,0 ;秒清零 INC MINUTE ;分加1 MOV AL,MINUTE CMP AL,60 ;分数与60比较 JNE EXIT MOV MINUTE,0 ;分清零 INC HOUR ;时加1 MOV AL,HOUR CMP AL,24 ;时数与24比较 JNE EXIT MOV HOUR,0 ;时清零EXIT: MOV DX,CS8259A ;结束中断 MOV AL,20H OUT DX,AL POP AX ;恢复AX IRETIENTER ENDPIINIT PROC NEAR ;初始
24、化8259的命令字和操作命令字 MOV DX,CS8259A MOV AL,ICW1 OUT DX,AL MOV DX,CS8259B MOV AL,ICW2 OUT DX,AL MOV AL,ICW4 OUT DX,AL MOV AL,OCW1 OUT DX,AL RETIINIT ENDPSTART: MOV AX,DATA MOV DS,AX MOV HOUR,0 ;时、分、秒清零 MOV MINUTE,0 MOV SECOND,0 CLI ;清除中断标志位 MOV AX,0 MOV DS,AX MOV AL,MD8253 ;8253控制字 MOV DX,CONTROL OUT DX,A
25、L MOV AL,00 ;利用8253计数器0 MOV DX,COUNT0 OUT DX,AL MOV AL,00 OUT DX,AL ;两次写入,先写低字节,后写入高字节 MOV AL,MD8255 ;8255初始化 MOV DX,CTL8255 OUT DX,AL MOV BX,4*ICW2 ;中断号*4得到入口地址 MOV AX,CODE SHL AX,4 ;*16 ADD AX,OFFSET IENTER ;中断入口地址(段地址为0) MOV BX,AX MOV AX,0 INC BX INC BX MOV BX,AX ;代码段地址为0 CALL IINIT MOV AX,DATA M
26、OV DS,AX STI ;开中断LP: MOV AL,HOUR MOV AH,0 MOV CL,10 DIV CL MOV CH,AH MOV AH,0 MOV BX,OFFSET LEDMAP ADD BX,AX MOV AL,BX ;时的十位转换成显示码 MOV LEDBUF,AL ;显示码存入显示缓冲区 MOV BX,OFFSET LEDMAP MOV AL,CH MOV AH,0 ADD BX,AX MOV AL,BX ;时的个位转换成显示码 OR AL,80H MOV LEDBUF+1,AL ;显示码存入后一位显示缓冲区 MOV AL,MINUTE MOV AH,0 MOV CL,
27、10 DIV CL MOV CH,AH MOV AH,0 MOV BX,OFFSET LEDMAP ADD BX,AX MOV AL,BX ;分的十位转换成显示码 MOV LEDBUF+2,AL MOV BX,OFFSET LEDMAP MOV AL,CH MOV AH,0 ADD BX,AX MOV AL,BX ;分的个位转换成显示码 OR AL,80H MOV LEDBUF+3,AL MOV AL,SECOND MOV AH,0 MOV CL,10 DIV CL MOV CH,AH MOV AH,0 MOV BX,OFFSET LEDMAP ADD BX,AX MOV AL,BX ;秒的十
28、位转换成显示码 MOV LEDBUF+4,AL MOV BX,OFFSET LEDMAP MOV AL,CH MOV AH,0 ADD BX,AX MOV AL,BX ;分的个位转换成显示码 OR AL,80H MOV LEDBUF+5,AL CALL DISPLAYLEDCALL CHANGE ;检查按键K1,K2,K3是否按下 JMP LPCODE ENDS END START6.设计总结:微机原理与接口技术是一门很有趣的课程,任何一个计算机系统都是一个复杂的整体,学习计算机原理是要涉及到整体的每一部分。讨论某一部分原理时又要涉及到其它部分的工作原理。这样一来,不仅不能在短时间内较深入理解
29、计算机的工作原理,而且也很难孤立地理解某一部分的工作原理。所以,在循序渐进的课堂教学过程中,我总是处于“学会了一些新知识,弄清了一些原来保留的问题,又出现了一些新问题”的循环中,直到课程结束时,才把保留的问题基本搞清楚。学习该门课程知识时,其思维方法也和其它课程不同,该课程偏重于工程思维,具体地说,在了解了微处理器各种芯片的功能和外部特性以后,剩下额是如何将它们用于实际系统中,其创造性劳动在于如何用计算机的有关技术和厂家提供的各种芯片,设计实用的电路和系统,再配上相应的应用程序,完成各种实际应用项目。这次课程设计,首先,让我学习和掌握计算机中常用接口电路及8255A的应用和设计技术,充分认识理
30、论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。通过实践,进一步加深了对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。本次设计给我最大的收获就是动手能力的重要性,实践和理论上是有差距的,理论与实际相结合是很重要的。只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。动手试验也让自己对书本知识有了更深刻的认识,把书本知识
31、真正的转化为自己所掌握的东西,能加以利用。实验中个人的力量是不及群体的力量的,我们同组三个人分工合作,做事的效率高了很多。虽然有时候会为了一些细节争论不休,但最后得出的总是最好的结论。而且实验也教会我们在团队中要善于与人相处,与人共事,不要一个人解决所有问题。总之,这次课程设计对于我们有很大的帮助,通过课程设计,我更加深入地理解了,微机原理课程上讲到的各种芯片的功能,以及引脚的作用,同时加深了对于主要芯片的应用的认识,同时在试验室的环境里熟悉了汇编程序的编写过程和运行过程,最后还提高了自己的动手能力。在此我还要感谢老师的悉心指导和同组人员的协助及配合,正是因为你们的帮助才确保了本次课程设计的顺利进行,谢谢!参考文献 微机原理实验与课程设计指导书,陆红伟编,中国电力出版社,2006年8086微型计算机组成、原理及接口,顾滨,机械工业出版社,2001微型计算机原理及应用,吕淑萍等,哈尔滨工程大学出版社,2004年微型计算机技术及应用,戴梅萼,清华大学出版社,2005