汇编实训报告电子时钟.doc

上传人:精*** 文档编号:1031183 上传时间:2024-03-24 格式:DOC 页数:22 大小:308KB
下载 相关 举报
汇编实训报告电子时钟.doc_第1页
第1页 / 共22页
汇编实训报告电子时钟.doc_第2页
第2页 / 共22页
汇编实训报告电子时钟.doc_第3页
第3页 / 共22页
汇编实训报告电子时钟.doc_第4页
第4页 / 共22页
汇编实训报告电子时钟.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、课 程 设 计 报 告课程名称 微机原理与接口技术 系 别: 工程技术系 专业班级: 计算机科学与技术* 学 号: * 姓 名: * 课程题目: 电子钟的设计与制作 完成日期: * 指导老师: * 20*年 * 月 * * 日课 程 设 计 目 的通过本次课程设计要掌握此三种芯片使用的方法,灵活运用课本知识,加深所学的知识,对所学的相关芯片的原理、内部结构、使用方法等有更加深刻的了解,学会利用课本知识联系实际应用及编程。同时并了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰。1、理解掌握定时/计数器和中断的使用方法2、掌握微机常用

2、的输入输出方式及接口技术3、掌握一定的汇编语言知识,培养自己的动手操作能力4、学习程序设计的基本思路和方法课 程 设 计 要 求利用8254可编程定时计数器、8259中断控制器、8255可编程并行接口芯片和七段数码管设计一个电子时钟,并编制一程序使得电子时钟能正常运行。1、走时准确2、显示无误课 程 设 计 注 意 事 项1、在接线时要先关掉实验箱的电源。2、在换芯片时要小心不要把管脚弄断及注意方向。3、认真看图接线。4、注意保存资料,保持干净的实验环境。课 程 设 计 内 容利用微机原理实验箱的发光数码管显示单元,把时间换显示在LED数码管上1、 定义显示界面。2、 调用系统时间,并将调用的

3、用二进制表示的时间数转换成ASCII码,并将时间数存入内存区3、 将存在系统内存区的时间数用显示字符串的形式显示出来4、 获取键盘的按键值,以ESC键退出系统系统返回DOS课 程 设 计 简 要 操 作 步 骤电子时钟的总体设计原理是: 首先利用定时、延时程序在将给定的时间逐渐变为零时就会发出一个信号执行时间显示程序执行此程序后8255就会工作把接到的二进制时间码转换成ASCII码在六个数码管上显示时间。 具体做法是在数据段开辟一显示缓冲区,用来存储系统时间调用延时,返回系统时间,并将返回的二进制时间转换成ASCII码,方便时间显示时调用。分别将分钟数、秒数存入显示缓冲区,调用字符串显示功能将

4、时间显示出来。1、 画出主程序流程图。2、 在实验箱把硬件连接起来。3、 编写程序。4、 调试程序。5、写报告。6、整理实验设备。课 程 设 计 心 得 体 会通过本次课程设计,我对利用微机原理课程所学的知识设计电子时钟的基本过程的设计方法、步骤、思路、有一定的了解与认识。它相当于实际工业设计的模拟。在课程设计过程中,我先是收集、调查有关资料,然后进入草案阶段,其间与老师、同学进行几次方案的讨论、修改,再讨论、再修改,最后定案,得出了总体方案设计。设计方案确定后,在老师指导下进行扩初详细设计,并分别设计了相应的模块;将这些模块组合起来,便形成了一个完整的电子时钟的设计。经过这次成功的设计,我更

5、加深刻的理解了微机原理的相关知识。对一些常用芯片有了更深一步的认识,如8255、8254等,并且能够很好的使用它们。应该说,这次课程设计基本达到了目的。 课 程 设 计 评 语 及 成 绩评 语成 绩指导教师(签 名)2011年12月 日电子时钟的设计与制作中文摘要微机控制即微型计算机原理控制。是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。微型计算机原理控制应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理

6、,以及我们生活中广泛使用的各种智能IC卡,电子宠物等,这些都离不开微型计算机原理控制。我们组本次设计的题目是简单电子钟程序设计,用到了定时芯片8254,中断控制器8259和可编程并行芯片8255。在编辑1毫秒定时程序时,用到了中断控制器8259。此程序主要由四部分组成:第一部分为最主要的部分定义显示界面;第二部分为利用延时程序,并将调用的二进制表示的时间数转换成ASCII码,并将时间数存入内存区;第三部分将存在系统内存区的时间数用七段数码管显示出来;第四部分利用循环程序分别对秒个位、秒十位、分个位、分十位与相应的规定值进行比较,结合延时程序来实现电子钟数字的跳变,从而形成走时准确的电子钟。该程

7、序实现了准确显示秒和分,读数准确,走时精准。此电子钟能准确的从0分0秒走时到59分59秒,然后能自动回复到0分0秒循环走时。关键词:可编程并行芯片8255 定时芯片8254 中断控制器8259七段数码显示管 延时 计数 比较 定时 中断目 录一、课程设计要求7二、设计环境与器材7三、设计思路7四、设计所用芯片结构81、8259A芯片的内部结构及引脚82、8254芯片的内部结构及引脚83、8255芯片的内部结构及引脚9五、具体模块设计101、主控模块102、定时模块113、中断处理模块114、小键盘模块115、硬件连接图12六、程序流程图13主程序流程图13中断处理程序流程图13七、结果分析及心

8、得体会14八、致谢15附录一:参考书目15附录二:部分源代码16一、课程设计要求利用试验平台提供的硬件资源设计一个电子表。该电子表以时、分、秒的形式实时显示当前时间,且具有校表功能,利用小键盘与标准时间校准。掌握8255、8259、8253芯片使用方法和编程方法,通过本次课程设计,学以致用,进一步理解所学的相关芯片的原理、内部结构、使用方法等,学会相关芯片实际应用及编程,系统中采用8088微处理器完成了电子钟的小系统的独立设计。同时并了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰。二、设计环境与器材1、PC微机一台 用于对程序的

9、编译测试等,同时还需要对实验设备进行控制,提供整个程序的运行平台,并且收集和释放硬件信号,实现程序功能。2、微机原理实验箱一台 此设备必须能提供8254、8255、8259和数码管等必要芯片。并且能通过接受PC机传来的信息,显示出相应的功能。以支持电子时钟的实现。3、导线若干条 用于电路和芯片之间的连接。三、设计思路电子时钟的总体设计原理是:首先利用定时芯片8254的定时作用定时计数,在给定的时间内逐渐变为0时,就会发出一个中断信号,8259中断器接到此中断信号就会调用MIR7时间显示程序,执行此程序后8255就会工作,把接到的二进制时间码转换成ASCII码在四个码管上显示时间。 具体做法是为

10、了实现精确走时,显示分秒。我们先在数据段开辟一显示缓冲区,用来存储系统时间,初始化我们所要应用的芯片8254,8255,8259后,允许中断信号输入,主程序开始。为了显示分秒,并被我们识别,先调用DIS程序,实现片选的功能。为了得到良好的显示效果,本程序调用了一段精确的延时程序没,使各位在时间显示上有短暂的间隔,延时程序要尽量接近1秒,但又不能超过一秒。为了实现会跳动的电子时钟,我们调用了子程序clear的清屏功能,不断以刷新的方式来获取时间,形成会跳动的电子时钟。同时,由于8254定时器的分频功能,产生中断信号,8259中断器就会调用MIR7时间显示程序,实现位选,最后通过LED数码管显示出

11、来,时间刷新,再显示,如此循环,就形成了精确走时的电子时钟。 四、设计所用芯片结构1、 8259A芯片介绍图1 8259芯片中断控制器8259A 是专门为控制优先级中断而设计开发的芯片。它将中断源优先排队、辨别中断源以及提供中断矢量的电路集于一片中。因此无需附加任何电路,只需对8259A进 行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。同时,在不需要增加其他电路的情况下,通过多片8259A 的级连,能构成多达64级的矢量中断系统。 8259A的主要功能如下:一片8259A可以接受并管理8级可屏蔽中断 请求,通过9片8259A级联可扩展至64级可屏蔽中

12、断优先控制。对每一级中断都可以通过程序来屏蔽或允许在中断响应周期,8259A可为CPU提供相应的中断类型码。具有多种工作方式,并可通过编程来加以选择。通过初始化编程向8259A写入相应的初始化命令ICW,可以使芯片处于一个规定的基本工作方式,并在此方式下进行工作。8259A的初始化命令字共有4个ICW1-ICW4,进行初始化时要求ICW1-ICW4按一定的顺序写入。2、8254芯片的内部结构及引脚8254可编程定时/计数器是Intel公司生产的通用外围芯片之一,有3个独立的十六位计数器,技术频率范围为02MHZ,它所有的技术方式和操作方式都通过编程控制。8254的功能用途是:(1) 延时中断

13、(2) 可编程频率发生器 (3) 事件计数器 (4) 二进倍频器 (5) 实时时钟(6) 数字单稳(7) 复杂的电机控制器8254有六种工作方式:(1) 方式0:计数结束中断(2) 方式1:可编程频率发生器(3) 方式2:频率发生器(4) 方式3:方波频率发生器图2 8254芯片(5) 方式4:软件触发的选通信号(6)方式5:硬件触发的选通信号8254引脚图如图2示,各引脚功能如下。D7D0八条双向数据线;WR(低电平有效)写输入信号;RD(低电平有效)读输入信号;CS(低电平有效)片选输入信号;A0、A1片内寄存器地址输入信号;CLK计数输入,用于输入定时基准脉冲或计数脉冲;OUT输出信号,

14、以相应的电平指示计数的完成,或输出脉冲波形;GATE选通输入(门控输入),用于启动或禁止计数器的操作,以使计数器和计测对象同步。表3.3 8254端口地址表8254端口地址信号线寄存器编址IOY20#计数器40H1#计数器41H2#计数器42H控制寄存器43H3、 8255芯片介绍8255特性:(1)一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口.(2)具有24个可编程设置的I/O口,即使3组8位的I/O口为PA口,PB口和PC口.它们又可分为两组12位的I/O口,A组包括A口及C口 (高4位,PC4PC7),B组包括B口及C口(低4位,PC0PC3).A组可

15、设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I /O3种模式;B组只能设置为基本I/O或闪控式I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定.8255引脚功能:RESET:复位输入线图38255芯片CS:芯片选择信号线RD:读信号线WR:写入信号D0D7:三态双向数据总线 PA0PA7:端口A输入输出线PB0PB7:端口B输入输出线PC0PC7:端口C输入输出线A0,A1:地址选择线五、具体模块设计1、主控模块主控模块是系的核心模块,对8254进行初始化,设置中断向量,扫描键盘根据按键值作相应的处理。主要由软件实现。它的主要功能是调用其它模块对系统工作进行协调,它

16、的主要功能是读小键盘输入键值并执行要做的工作,如果键值为C则将显示初始值00:00:00置入显示缓冲,并调用显示模块显示。如果键值为G则开中断,(中断程序为秒最低位加一)。如果键值为D则关中断,停止动态显示。如健值为P则连续六次调用小键盘模块,将键值依次存入显示缓冲。并调用显示模块显示。如果健值为E,则终止程序,返回DOS。2、定时模块定时模块是为8259提供中断请求信号的。由一片8254实现,选用定时器0#,工作在方式3,由4时钟应该1秒走动一次,所以输出值应为1S,其输出信号可作为8259的中断请求信号。3、中断处理模块中断模块实现动态显示的,硬件为一片8259,由于中断请求信号为每秒一次

17、,中断程序该为时间按秒增加,并显示,只要开中断,便可实现每秒显示时间增加一秒,从而达到动态显示的效果。4、小键盘模块小键盘模块送入主控模块的子功能模块。由软件和硬件实现,硬件上由小键盘和8255互连,将小键值由8255送入主控模块。软件上使用行扫描法获得键值并送回主控模块。本课题只考虑去抖动。执行一个约10ms的延时程序后再扫描键盘,若F0=1表示真正有键按下,从而消除了抖动影响。5、硬件连接图22图4 硬件连接的整体思想图 1/64 1/32分频电路 4McsD0D78253GATE0 CLK0 OUT0csGATE1 CLK1 OUT1+5V8259IR0IR18255 csPA0PA7P

18、B0PB7PC0PC78255cs7cs5cs3cs1cs6cs4cs2cs0cs PA0PA7PB0PB7PC0PC76个八段译码管蜂鸣器图5 具体硬件连接图六、软件程序设计图6主程序流程图图7 中断服务程序流程图七、结果分析及心得体会 结果分析:最后,我们得到了预期的结果,电路能完成准确的硬件定时和显示。在一开始的调试中,数码管没有跳动,就像没有脉冲一样,后来换了另一块8254,然后就可以了,在实验过程中有些实验箱也可能会存在一些问题,有时可以换个实验箱解决问题心得体会: 总的来说,本次实验过程中,我们很快的完成了硬件连线过程,实现了基本的电子钟的功能,能够准确的定时,从中,我们意识到,虽

19、然过程简单,但也是要细心的,特别是涉及到8254定时器的模块,要格外的小心,本以为已经结束,没想到真正遇到的困难是后面程序的理解,由于没有系统的学过汇编语言,很难理解面向机器的汇编语言,特别的抽象,看的那个无聊啊,后来想了一个办法,我们先去网上下了此次课设的基本资料,先了解了整个的流程和各个工作模块,同时又查阅了8259、8254、8255芯片的一些引脚和编程方法,以及实现中断的理念,定时器的定时方法,和8255的扩展功能,同时还翻阅了用C语言编写的类似程序,大家坐在一起仔细的解读每一条指令,相互的补充纠正,最后终于完成了整个浩大的工程。最后是答辩过程,我被问到了延时的基本原理:是软件的作用,

20、通过CPU执行“自加1”指令,实现了延时。通过此次课程设计经历,我知道团队的合作也是重要的,只有相互的学习、补充才能达最佳的工作效率,对于书本上的很多知识我们还不能灵活运用,我们大家在汇编的理解上还是有些过于单薄了点,所以在以后学习过程中要加强理论学习,把基础打好,为以后工作学习做准备!致谢一个星期的微机原理课程设计结束了,我很顺利的完成了本次课程设计的题目,这次课程设计的完成与很多人对我的关心帮助是密不可分的。首先我要感谢黄老师在为期一周的微机原理课程设计里为我的设计方案提供参考意见,指导我改正设计方案中的错误以及不厌其烦地解答我的问题。使我得以最终完成这次课程设计的题目。其次我要感谢同小组

21、的同学在讨论中为我消除了很多疑惑,使我对电子钟的设计有了更清楚的思路。最后还得要感谢学校图书馆为我们提供了很多实用的参考书籍和庞大的数字图书馆数据库。谢谢你们! 附录一:参考书籍1、杨立,邓振杰,荆淑霞等编著.微型计算机原理与接口技术(第三版).北京:中国铁道出版社,20092、周明德编著.微型计算机系统原理及应用(第四版).北京:清华大学出版社,20023、 李顺增,吴国东,赵河明等.微机原理及接口技术.北京:机械工业出版社,20064、杨立新.微型计算机原理和应用M.北京:科学技术文献出版社,1986.11 附录二:部分源代码MY8255_A EQU 0600HMY8255_B EQU 0

22、602HMY8255_C EQU 0604HMY8255_CONEQU 0606HA8254 EQU 06C0HB8254 EQU 06C2HC8254 EQU 06C4HCON8254 EQU 06C6HDATA SEGMENTDTABLEDB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,6FH,77H,7CH,39H,5EH,79H,71HDATA ENDSSSTACKSEGMENT STACKDW 200 DUP(?)SSTACK ENDSCODESEGMENTASSUME CS:CODE, SS:SSTACK,DS:DATASTART:PUSH DSMO

23、V AX, 0000HMOV DS, AXMOV AX, OFFSET IRQ7;取中断入口地址MOV SI, 003CH;中断矢量地址MOV SI, AX;填IRQ7的偏移矢量MOV AX, CS;段地址MOV SI, 003EHMOV SI, AX;填IRQ7的段地址矢量CLIPOP DSMOV AX,DATA ;remember this MOV DS,AX ;not lose,it is very important MOV CX,03HMOV DI,3000HMOV AL,00HLP:MOV DI,AL ;clear 3000h3006h,save second ,minute, h

24、our INC DI LOOP LP ;MOV DI,3003H ;save counter MOV SI,4000HMOV AL,00HMOV SI,AL;清显示缓冲MOV SI+1,AL ;display secondMOV SI+2,ALMOV SI+3,AL ;display minuteMOV SI+4,ALMOV SI+5,AL ;display hourMOV SI,4000H ;MOV AX,COUNT ;SAVE COUNT=1000;MOV DI,AL;MOV DI+1,AH;初始化主片8259MOV AL, 11HOUT 20H, AL;ICW1MOV AL, 08HOU

25、T 21H, AL;ICW2MOV AL, 04HOUT 21H, AL;ICW3MOV AL, 01HOUT 21H, AL;ICW4MOV AL, 6FH;OCW1OUT 21H, AL;8254MOV DX, CON8254;MOV AL, 30H;计数器0,方式0MOV AL, 36H;计数器0,方式3,产生50ms方波OUT DX, ALMOV DX, A8254 ;计数初值为3E8H=1000,产生1ms中断MOV AL, 50H ;c350H=50000,产生50msOUT DX, ALMOV AL, 0c3HOUT DX, ALMOV DX, CON8254MOV AL, 50

26、H;计数器1,方式0OUT DX, ALMOV DX, B8254 ;计数初值为3E8H=1000,产生1ms中断MOV AL, 20H ;c350H=50000,产生50ms中断OUT DX, ALMOV DX,MY8255_CON;写8255控制字 MOV AL,81HOUT DX,ALSTIAA1:CALL DIS;调用显示子程序JMP AA1;=;显示子程序;=DIS: PUSH AXMOV SI,4000HMOV DL,0DFHMOV AL,DLAGAIN: PUSH DX MOV DX,MY8255_A OUT DX,AL ;select first seg MOV AL,SI M

27、OV BX,OFFSET DTABLE XLAT MOV DX,MY8255_B OUT DX,ALCALL DALLYINC SI POP DX MOV AL,DLTEST AL,01H JZ OUT1ROR AL,1MOV DL,ALJMP AGAINOUT1: POP AXRET;= 延时子程序 =DALLY: PUSH CX MOV CX,0005HT1: MOV AX,0010HT2: DEC AXJNZ T2LOOP T1POP CXRET;save secondIRQ7: PUSH AX MOV DX, B8254 ;重装计数初值MOV AL, 20H OUT DX, AL;MO

28、V AX, 0173H;INT 10H;显示字符s;SECONDMOV DI,3000HMOV DL,DIMOV AH,00HMOV AL,DLMOV BL,10DIV BLMOV BH,AH ;AH 保存余数,al保存商MOV BL,AL ;MOV SI,4001H ;4000H内存单元保存秒的十位MOV SI,ALOR AL,30H ;ADD 30HMOV AH,01HINT 10HMOV AL,BHMOV SI,4000H ;4001H内存单元保存秒的个位MOV SI,ALOR AL,30H ;ADD 30HMOV AH,01HINT 10HMOV AX, 0120H ;20h=空格IN

29、T 10HMOV DI,3000HMOV DL,DIINC DLMOV DI,DLCMP DL,60JL NEXT1MOV DL,00HMOV DI,3000HMOV DI,DL ;clear second value;minute;MOV DI,3001HMOV DL,DI ;read minuteINC DLMOV DI,DL ;SAVE UPDATE MINUTEMOV AH,00HMOV AL,DLMOV BL,10DIV BLMOV BH,AH ;AH 保存余数,al保存商MOV BL,AL ;MOV SI,4003H ;4000H内存单元保存秒的十位MOV SI,ALOR AL,3

30、0H ;ADD 30HMOV AH,01HINT 10HMOV AL,BHMOV SI,4002H ;4001H内存单元保存秒的个位MOV SI,ALOR AL,30H ;ADD 30HMOV AH,01HINT 10HMOV AX, 0120H ;20h=空格INT 10HMOV DI,3001HMOV DL,DICMP DL,60JL EXITMOV DL,00H ;CLEAR MINUTEMOV DI,DLJMP AANEXT1: JMP EXIT;HOURAA:MOV DI,3002HMOV DL,DI ;read hourINC DLMOV DI,DL ;SAVE UPDATE ho

31、urMOV AH,00HMOV AL,DLMOV BL,10DIV BLMOV BH,AH ;AH 保存余数,al保存商MOV BL,AL ;MOV SI,4005H ;4000H内存单元保存秒的十位MOV SI,ALOR AL,30H ;ADD 30HMOV AH,01HINT 10HMOV AL,BHMOV SI,4004H ;4001H内存单元保存秒的个位MOV SI,ALOR AL,30H ;ADD 30HMOV AH,01HINT 10HMOV AX, 0120H ;20h=空格INT 10HMOV DI,3002HMOV DL,DICMP DL,12JL EXITMOV DL,00H ;CLEAR MINUTEMOV DI,DL; EXIT: MOV AL, 20HOUT 20H, AL;中断结束命令POP AXIRETCODEENDSEND START

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922