基于8086的秒表设计与实现
8086数字时钟课程设计报告

INTEL 8086/8088系列微型计算机原理及接口技术课程名称:微型计算机原理及接口技课程设计设计题目:具有年月日时分秒功能的时钟显示院系:电气工程学院班级:设计者:学号:同组者:指导教师:设计时间:目录一、设计内容与要求 (2)二、设计思路 (3)三、流程图 (4)四、程序 (7)五、运行结果 (12)六、硬件设计…………………………………………………………………………………………………七、调试步骤 (13)八、心得体会 (14)九、参考文献 (14)一、设计内容与要求:用汇编语言编写一个时钟程序,在微机屏幕上显示当前时间****年**月**日**时**分**秒。
在程序启动后,微机屏幕上显示当前时间,按下a键开始计时,按下b键停止计时,按下c键退出程序。
二、设计思路:利用BIOS的INT 1AH的2号系统功能调用,将计算机系统的时间参数(BCD 码)送入寄存器。
其中CH 和CL中保存的是小时数和分钟数;DH中保存的是秒钟数。
利用除法命令DIV,若进行字节操作,16位被除数隐含在AX中,8位除数就是源操作数,结果的8位商在AL中,8位余数在AH中,即(AL)(AH)/(SRC)的商(AL)(AH)/(SRC)的余数若进行字操作,32位被除数低16位隐含在AX中,高16位8位隐含在DX中,16位除数就是源操作数,结果的16位商在AX中,16位余数在DX中,即(AX)(DX,AX)/(SRC)的商(DX)(DX,AX)/(SRC)的余数通过以上方法将二进制表示的年月日时分秒转换为BCD码,再将BCD码表示的时,分,秒转换成AS CⅡ码并送入屏幕显示。
能调用子程序,若显示时间与当前时间不符,则校准显示时间,并用INT 21H 的7号功能调用判断输入回车并清屏。
若输入字符C,则令SIGN=3,即退出程序,若无输入或输入字符不是C,则反复从系统中取出当前时间并显示。
详细过程见程序注释。
三、流程图:四、程序:GB MACRO X ;宏定义MOV AX,0200HMOV BX,0000HMOV CX,0000HMOV DX,XINT 10HENDMXIANSHI MACRO Y,Z,WMOV BP,OFFSET YMOV AH,13HMOV AL,0BMOV BX,0EHMOV CX,ZMOV DX,WINT 10HENDMDATA SEGMENTBUFFER1 DB 11 DUP (?)BUFFER2 DB 9 DUP (?)SECOND DB ?SIGN DB ?STR1 DB 'THE CURRENT TIME: $'STR4 DB 'PRESS C TO EXIT:$'DATA ENDSSTACK SEGMENT STACK 'STACK'DB 100 DUP ('S')STACK ENDSCODE SEGMENT PARA 'CODE'ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA STA PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,0600HMOV BX,0754HMOV CX,0000HMOV DX,194FHINT 10HXIANSHI STR1,17,0416H ;显示‘ THE CURRENT TIME:’XIANSHI STR4,16,1016H ;显示‘ PRESS C TO EXIT:’BEGIN: CMP SIGN,3 ;若输入字符C,则令SIGN=3,即退出程序,若无输入或输入字符不是C,则反复从系统中取出当前时间并显示JE TUI1MOV AH,2AHINT 21H ;取日期LEA BX,BUFFER1PUSH DX ;保护寄存器MOV AX,CX ;利用除法产生商和余数,把以二进制形式保存的年号转换为BCD码MOV DX,0000H ;年号除以1000得到商即为年号的千位MOV CX,1000DIV CXOR AL,30H ;年号的千位转换为其ASCII码并存入BUFFER1第1存储单元中MOV [BX],ALMOV AX,DX ;年号的百位转换为其ASCII码并存入BUFFER1第2存储单元中MOV CL,64HDIV CLOR AL,30HINC BXMOV [BX],ALMOV AL,AHMOV AH,00H ;年号的十位转换为其ASCII码并存入BUFFER1第3存储单元中MOV CL,10DIV CLOR AL,30HINC BXMOV [BX],ALOR AH,30H ;年号的千位转换为其ASCII码并存入BUFFER1第4存储单元中INC BXMOV [BX],AHPOP DX ;年号转换完毕INC BXMOV CL,2DH ;“—”号的ASCII码存入BUFFER1第5存储单元中MOV [BX],CL ;月数除以10得到商即为月数的十位MOV AL,DH ;月数的十位转换为其ASCII码并存入BUFFER1第6存储单元中CMP AL,10JAE L1JMP L2L1: ADD AL,6L2: PUSH AXAND AL,0F0HSHR AL,1SHR AL,1SHR AL,1SHR AL,1OR AL,30HINC BXMOV [BX],ALPOP AXAND AL,0FHOR AL,30HINC BXMOV [BX],AL ;月数的十位转换为其ASCII码并存入BUFFER1第7存储单元中INC BX ;月数转换完毕MOV CL,2DH ;“—”号的ASCII码存入BUFFER1第8存储单元中 MOV [BX],CL ;日期除以10得到商即为日期的十位MOV AL,DL ;日期的十位转换为其ASCII码并存入BUFFER1第9存储单元中MOV AH,00HMOV CL,10DIV CLOR AL,30HINC BXMOV [BX],AL ;日期的个位转换为其ASCII码并存入BUFFER1第10存储单元中OR AH,30HINC BX ;年月日转换完毕MOV [BX],AHMOV CL,'$' ;“$”号的ASCII码存入BUFFER1第11存储单元中 INC BXJMP NEXTTUI1:JMP TUI2NEXT:MOV [BX],CLXIANSHI BUFFER1,10,0616H ;用9号功能显示年月日MOV AH,2CHINT 21H ;取时间LEA BX,BUFFER2MOV AL,CH ;小时数除以10得到商即为小时数的十位MOV AH,00HMOV CH,10DIV CHOR AL,30H ;小时数的十位转换为其ASCII码并存入BUFFER2第1存储单元中MOV [BX],ALOR AH,30H ;小时数的个位转换为其ASCII码并存入BUFFER2第2存储单元中INC BXMOV [BX],AHINC BXMOV CH,3AH ;“:”号的ASCII码存入BUFFER2第3存储单元中 MOV [BX],CH ;分钟数除以10得到商即为分钟数的十位MOV AL,CLMOV AH,00HMOV CL,10DIV CLOR AL,30H ;分钟数的十位转换为其ASCII码并存入BUFFER2第4存储单元中INC BXMOV [BX],AL ;分钟数的个位转换为其ASCII码并存入BUFFER2第5存储单元中OR AH,30HINC BXMOV [BX],AHINC BXMOV CL,3AH ;“:”号的ASCII码存入BUFFER2第6存储单元中 MOV [BX],CLMOV AL,DH ;秒数除以10得到商即为秒数的十位MOV AH,00HMOV CL,10DIV CLOR AL,30H ;秒数的十位转换为其ASCII码并存入BUFFER2第7存储单元中INC BXMOV [BX],ALOR AH,30H ;秒数的个位转换为其ASCII码并存入BUFFER2第8存储单元中INC BXMOV [BX],AHINC BX ;时分秒转换完毕MOV CL,'$' ;“$”号的ASCII码存入BUFFER2第9存储单元中 MOV [BX],CLXIANSHI BUFFER2,8,0716H ;用9号功能显示时分秒CALL DELY ;调用子程序,若显示时间与当前时间不符,则校准显示时间JMP BEGINTUI2: RETSTA ENDPDELY PROCPUSH CXPUSH DXMOV AH,2CHINT 21HMOV SECOND,DHRE: MOV AH,2CHINT 21HPUSH DXMOV AH,6MOV DL,0FFHINT 21HPOP DXCMP AL,63H ;若输入字符C,则令SIGN=3,即退出程序,若无输入或输入字符不是C,则反复从系统中取出当前时间并显示JE Z3JMP CONTINZ3: MOV SIGN,3CONTIN: CMP SECOND,DHJE RECMP SIGN,1JMP EXITEXIT: POP DXPOP CXRETDELY ENDPCODE ENDSEND STA五、运行结果:程序运行后如下图所示:按下c键,则会出现下图界面:(此时按下任意键即可退出该程序)(注意,若没按下任何键或按下的不是c键,则不会出现下图所示界面)六、硬件设计:1、硬件设计说明:由8284产生系统脉冲送8253的CLK1,通过CPU置计数初值使计数器2输出1KHZ方波。
8086计时器课程设计

8086计时器课程设计一、课程目标知识目标:1. 理解8086计时器的硬件结构和工作原理;2. 掌握8086计时器的编程方法,能编写简单的计时程序;3. 了解8086计时器在实际应用中的功能和使用场景。
技能目标:1. 学会使用8086计时器进行时间测量和定时控制;2. 能分析并解决8086计时器编程中遇到的问题;3. 培养学生的动手实践能力和团队协作能力。
情感态度价值观目标:1. 培养学生对计算机硬件及编程的兴趣,激发学习热情;2. 培养学生严谨、细心的学习态度,养成良好的编程习惯;3. 增强学生的创新意识,鼓励学生勇于尝试,敢于挑战。
课程性质:本课程为计算机硬件及编程相关课程,结合学生年级特点,注重理论与实践相结合。
学生特点:学生具备一定的计算机基础,对硬件及编程有一定了解,但实践经验不足。
教学要求:通过本课程的学习,使学生掌握8086计时器的原理和编程方法,提高学生的实践能力,为后续课程打下坚实基础。
教学过程中,注重引导学生主动探究,培养学生的创新思维和团队协作能力。
课程目标分解为具体学习成果,以便于教学设计和评估。
二、教学内容1. 计时器原理及8086计时器硬件结构- 理解计时器的基本概念- 学习8086计时器的硬件结构及其工作原理2. 8086计时器的编程方法- 掌握计时器的编程接口- 学习编写简单的计时程序- 熟悉中断处理程序在计时器编程中的应用3. 实际应用案例分析与编程实践- 分析8086计时器在实际应用中的功能和使用场景- 开展编程实践,实现计时功能- 选取典型实例,进行问题分析和解决方案设计4. 课程项目设计与实施- 分组进行课程项目设计,培养学生的团队协作能力- 结合实际应用场景,设计具有创新性的计时器应用方案- 实施项目,进行调试和优化教学内容安排与进度:第一周:计时器原理及8086计时器硬件结构第二周:8086计时器的编程方法第三周:实际应用案例分析与编程实践第四周:课程项目设计与实施教材章节关联:本教学内容与教材中关于8086计时器相关章节紧密关联,涵盖了计时器的基本概念、硬件结构、编程方法及实际应用等方面,确保了教学内容的科学性和系统性。
基于8086的电子时钟设计(彩色图版)

目录错误!未找到引用源。
摘要 (1)Abstract (1)第一章电子钟设计总体方案设计 (2)1.1 设计目的 (2)1.2 设计要求 (2)1.3 方案比较 (2)1.3.1 非中断方式与中断方式的比较 (2)1.3.2 LED显示与液晶显的比较 (3)1.4 总体方案设计思路 (3)第二章系统硬件设计 (4)2.1 8255与CPU之间的连接关系 (4)2.2 8253与周边电路的连接关系 (4)2.3 8259与周边电路连接关系 (5)2.4 液晶显示模块与8255之间的连线关系 (5)2.5 地址译码器与按键 (6)2.6 系统总体硬件电路图 (6)第三章系统软件设计 (7)3.1 编址及控制字的确定 (7)3.1.1 编址 (7)3.1.2 控制字 (7)3.2 分块子程序 (7)3.2.1 1602读写操作子程序 (7)3.2.2中断子程序 (9)3.3 主程序设计 (11)总结与致谢: (13)参考文献: (14)附录: (15)摘要本设计以微机原理与接口技术为基础,以8086CPU为核心,利用INTER 8253可编程定时/计数器,通过引入时钟发生器产生标准时钟进行精准定时;经定时器产生中断源,采用可编程中断控制器8259A进行中断扩展,用可屏蔽中断方式进行时间的采集;以可编程并行I/O接口芯片8255A扩展接口,驱动MSC1602液晶模块进行时间显示。
关键词:微机原理;接口技术;8086CPU;可屏蔽中断;MSC1602液晶;可编程;INTER 8253定时/计数器;中断控制器8259A;并行I/O接口芯片8255AAbstractThis design take the microcomputer principle and the connection technology as a foundation, by the 8086CPU core, uses the INTER 8253 programmable fixed time/counters, produces the standard clock through the introduction clock generator to carry on fine fixed time; Produces the interrupt source after the timer, uses programmable interrupt controller 8259A to carry on the interrupt to expand, sends the maskable interrupt way to carry on the counting; By programmable parallel I/O the connection chip 8255A expansion connection, actuates the MSC1602 liquid crystal module to carry on the time demonstration.Key word: Microcomputer principle; Connection technology; 8086CPU; Maskable interrupt; MSC1602 liquid crystal; Programmable; INTER 8253 fixed time/counters; Interrupt controller 8259A; Parallel I/O connection chip 8255A第一章电子钟设计总体方案设计1.1 设计目的电子钟是一种基于微电子技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。
8086计时器课程设计

8086计时器课程设计一、课程目标知识目标:1. 理解8086计时器的原理与功能,掌握其内部结构与工作流程;2. 学习并掌握8086计时器的编程方法,能够编写简单的计时程序;3. 了解计时器在计算机系统中的应用场景,如延时、定时等。
技能目标:1. 能够运用所学知识,独立完成8086计时器的编程与调试;2. 培养学生的动手实践能力,学会使用相关开发工具进行程序开发;3. 提高学生的逻辑思维和分析问题的能力,能够解决实际编程中遇到的问题。
情感态度价值观目标:1. 培养学生对计算机硬件与编程的兴趣,激发学生的学习热情;2. 培养学生严谨、踏实的学术态度,养成良好的编程习惯;3. 增强学生的团队协作意识,学会与他人合作解决问题。
课程性质:本课程为计算机硬件与接口技术的实践课程,通过学习8086计时器的原理与编程,使学生掌握计算机硬件编程的基本方法,提高学生的动手实践能力。
学生特点:学生具备一定的计算机基础知识和编程能力,对硬件编程有一定兴趣,希望通过实践课程提高自己的技能。
教学要求:教师应结合学生特点,采用理论讲解与实践操作相结合的教学方法,引导学生主动参与,注重培养学生的实际操作能力。
在教学过程中,将课程目标分解为具体的学习成果,以便进行教学设计和评估。
二、教学内容1. 8086计时器原理及功能:讲解8086微处理器的计时器工作原理,介绍计时器的内部结构、计数方式、时钟源等,使学生理解计时器的基本概念。
相关教材章节:第3章 计时器与计数器2. 8086计时器编程方法:教授学生如何使用汇编语言编写8086计时器程序,包括初始化计时器、设置计数初值、启动与停止计时等操作。
相关教材章节:第4章 汇编语言编程3. 实践操作:指导学生使用开发工具(如EMU8086)进行计时器编程实践,通过编写简单的延时、定时程序,加深对计时器编程的理解。
相关教材章节:第5章 硬件编程实践4. 计时器应用案例分析:分析计时器在计算机系统中的应用案例,如电子时钟、倒计时等,使学生了解计时器的实际应用。
课程设计-8086电子时钟设计

微机道理及其接口技术之杨若古兰创作课程设计题目: 8086电子时钟设计前言课程设计是培养和锻炼先生在进修完本门课后综合利用所学理论常识解决实际工程设计和利用成绩的能力的次要教学环节,它具有动乎、动脑和理论联系实际的特点,是培养在校工科大先生理论联系实际、敢于动手、善于动手和独立自立解决设计实践中碰到的各种成绩能力的一种较好方法.《微机接口技术》是一门利用性、综合性、实践性较强的课程,没有实际的有针对性的设计环节,先生就不克不及很好的理解和把握所学的技术常识,更缺乏解决实际成绩的能力.所以通过有针对性的课程设计,使先生学会零碎地综合应用所学的理论常识,提高先生在微机利用方面的开发与设计本领,零碎的把握微机硬软件设计方法.时钟就是一种对时间进行累计的工具,即计时.计时的实质就是计数,只不过这里的“数”的单位是时间单位,如果把一小片一小片计时单位累计起来,就可获得一段时间.是以,使用计数器对时钟脉冲进行计数,就是时钟实现的基来源根基理;再用LED数码管显示出来,并设计出几个按键用于对时钟进行调整,如许,一个完好的时钟就设计完成了.本次课程设计请求利用8253定时器设计一个具有时、分、秒显示的电子时钟,并定义一个启动键,当按下该键的时候,时钟从当前的设定值(可以在缓冲区中设置)开始走时.同时,再定义三个按键,分别对时、分、秒进行校订.目录目录21、电子时钟功能介绍32、电子时钟零碎整体方案设计4方案比较错误!未定义书签。
方案选择错误!未定义书签。
3、电子时钟的工作道理6实现时钟计时的基本方法错误!未定义书签。
电子钟的时间显示错误!未定义书签。
4、硬件设计7硬件设计电路图错误!未定义书签。
主电路模块错误!未定义书签。
4.1.2 LED显示模块7按键模块错误!未定义书签。
整体电路图错误!未定义书签。
硬件设计所用芯片介绍错误!未定义书签。
4.2.2 8253芯片的内部结构及引脚104.2.3 8255A芯片的内部结构及引脚115、软件设计12电子时钟部分程序流程框图错误!未定义书签。
微机原理课程设计报告(电子秒表)

微机原理课程设计报告(电⼦秒表)⼀、设计⽬的培养和锻炼在学习完本门课后综合应⽤所学理论知识,解决实际⼯程设计和应⽤问题的能⼒。
通过课程设计,要求熟悉和掌握微机系统的软件、硬件设计的⽅法、设计步骤,得到微机开发应⽤⽅⾯的初步训练。
掌握8255、8259、8253等芯⽚使⽤⽅法和编程⽅法,通过本次课程设计,学以致⽤,进⼀步理解所学的相关芯⽚的原理、内部结构、使⽤⽅法等,学会相关芯⽚实际应⽤及编程,系统中采⽤8086微处理器完成了电⼦秒表系统的独⽴设计。
同时并了解综合问题的程序设计掌握实时处理程序的编制和调试⽅法,掌握⼀般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰。
⼆、设计内容设计⼀个可任意启动/停⽌的电⼦秒表,要求⽤6位LED数码显⽰,计时单位为1/100秒。
利⽤功能键进⾏启/停控制。
其功能为:上电后计时器清0,当第⼀次(或奇数次)按下启/停键时开始计数。
第2次(或偶数次)按下该键时停⽌计时,再⼀次按启/停键时清零后重新开始计时。
可⽤开关控制,也可⽤按键控制三、设计要求1、基本要求:1)设计可以显⽰1~60秒的⽆存储功能的秒表,最⼩单位为毫秒。
2)通过键盘按键控制秒表清零、暂停、继续,退出等。
其中数字0控制清零,数字1控制继续和退出。
2、提⾼要求:1)秒表可以分组存储、批量显⽰、倒计时等。
2)采⽤图像显⽰,界⾯精美,设置报警声等四、设计原理与硬件电路1、整体设计思想使⽤8253⼯作在⽅式0计数,对1/100S计数,并讲计数值写⼊bl中并与100⽐较若不相等,则将计数值装换为10进制后送8255控制端显⽰,如相等则1S计数程序加1之后并与59⽐较若不相等则将计数值装换为10进制后送8255控制端显⽰,如相等则1min计数程序加1之后并与59⽐较若不相等则将计数值装换为10进制后送8255控制端显⽰,如相等则计数程序加1之后产⽣溢出,跳转清零程序将计数清零,同时数码管清零。
2、使⽤各芯⽚的作⽤及⼯作原理1)定时器/计数器8253⽤系统8253定时器提供的55ms定时单位,设计秒表定时程序。
计时秒表课程设计计时秒表系统的设计

课程设计说明书系别:机电学院专业:电气操纵及其自动化学生姓名:设计题目:计时秒表系统的设计起讫日期:12月24日~1月4日设计地址:学校指导教师:刘世林目录一、设计目的及要求………………………………p3二、单片机的进展概况………………………………p4三、系统硬件电路设计………………………………p6一、计时秒表电路设计二、整体设计框图1)振荡电路2)复位电路3)显示电路4)按键电路四、程序设计说明………………………………………p13五、程序流程图…………………………………………p14六、程序清单……………………………………………p15七、仿真结果……………………………………………p18八、收成与致谢…………………………………………p19一、设计目的及要求1.本次课程设计目的:通过本次课程设计,让学生把握所学的微型运算机的应用系统硬件设计、程序设计与调试、重要可编程芯片的工作进程,加深对微型运算机工作原理的明白得,并学会将所学的知识应用到实际中,达到在应用中把握知识的目的。
2.本课程设计课题任务的内容和要求(包括原始数据、技术参数、设计要求等):此题要求以8086/单片机为CPU,设计制作一个计时用秒表。
1、能够实现计时秒表的功能,包括开始计时、停止、清零等。
2、能对计不时刻进行数码显示。
3、设计操纵器的硬件,并编写相应的软件。
3.对本课程设计工作任务及工作量的要求(包括课程设计计算说明书(论文)、图纸、实物样品等):1、搭建微机应用系统硬件,编写相应的软件程序,并进行综合调试,完成知足设计要求的小型微机应用系统;2、提供设计说明书一份,应包括封面、设计课题、目的与要求、方案论证、设计进程说明等;3、附设计原理图一张(最好利用Protel作图);4.要紧参考文献:1 戴梅萼,史嘉权,微型运算机技术及应用。
北京:清华大学出版社,2003 年2 《微型运算机系统原理及应用(第四版)》,周明德,清华大学出版社,2002年3 《80x86微型运算机组成、原理及接口》,顾滨,机械工业出版社,2001年4 《16/32位微机原理、汇编语言及接口技术(第2版)》,钱小捷,机械工业出版社,2005年5 微型运算机原理及应用(第三版)》,郑学坚,清华大学 2001年二、单片机的进展概况单片机以其高靠得住性、高性价比、低电压、低功耗等一系列优势,近几年取得迅猛进展和大范围推行,普遍应用于工业操纵系统,数据搜集系统、智能化仪器仪表,及通信设备、日常消费类产品、玩具等。
8086秒表课程设计

8086秒表课程设计一、课程目标知识目标:1. 学生能理解8086微处理器的内部结构与工作原理,掌握其时钟计数器功能。
2. 学生能掌握秒表的设计原理,包括启动、停止、计时的基本操作。
3. 学生能了解并运用相关的汇编指令,完成秒表的编程与调试。
技能目标:1. 学生能运用所学知识,设计并实现一个基于8086处理器的秒表程序。
2. 学生能通过编程实践,提高问题分析、程序设计及调试的能力。
3. 学生能通过团队协作,提升沟通与协作能力。
情感态度价值观目标:1. 学生在课程学习中,培养对计算机硬件及编程的兴趣,提高学习积极性。
2. 学生在实践操作中,培养动手能力、创新意识和解决问题的自信心。
3. 学生通过课程学习,认识到科技进步对生活的影响,增强社会责任感和使命感。
课程性质:本课程为计算机硬件及汇编语言课程的一部分,以实践操作为主,注重培养学生的动手能力和编程思维。
学生特点:学生为高中二年级学生,已具备一定的计算机硬件和汇编语言知识,具备基本的编程能力。
教学要求:结合学生特点,课程以任务驱动法为主,引导学生主动探究,注重理论与实践相结合,提高学生的实际操作能力。
通过课程目标的分解,确保学生达到预期的学习成果,为后续课程学习奠定基础。
二、教学内容本课程教学内容主要包括以下几部分:1. 8086微处理器内部结构及工作原理回顾:重点复习时钟计数器部分,为学生设计秒表奠定基础。
2. 秒表设计原理:讲解秒表的启动、停止、计时的基本原理,引导学生理解其与硬件计数器的关联。
3. 汇编指令学习:结合教材,复习与秒表编程相关的重要指令,如MOV、ADD、SUB、JMP等。
4. 秒表编程与调试:指导学生运用所学知识,设计并实现一个基于8086处理器的秒表程序。
5. 任务驱动实践:制定以下教学进度:a. 第一周:回顾8086微处理器知识,学习秒表设计原理。
b. 第二周:学习汇编指令,编写秒表程序。
c. 第三周:调试秒表程序,进行优化。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
郑州科技学院微机原理课程设计(论文)题目_基于8086的秒表设计与实现_学生姓名程昭昭专业班级计科一班学号*********所在系信息工程学院指导教师王清珍完成时间2013年12月13日目录摘要 (3)1 99秒秒表设计背景及目的要求 (3)1.1 99秒秒表设计背景 (3)1.2设计目的 (3)1.3硬件选择 (2)1.4设计内容 (2)2 设计方案及基本原理 (2)2.1 预备知识 (2)2.2 LED显示原理 (4)2.3 元器件选择 (4)2.4 系统设计 (4)2.5硬件工作原理 (5)2.6 硬件连接 (4)3 设计流程 (5)3.1设计步骤 (5)3.2程序代码 (6)4 程序 (7)4.1 main.c主程序 (7)4.2 key.asm ——键盘扫描子程序 (11)5 调试结果及分析 (24)5.1 调试结果 (24)5.2 结果分析 (25)6 结论与分析 (25)7 参考与文献 (25)摘要本设计是设计一个芯片控制的多功能秒表系统。
近年来随着科技的飞速发展,单的应用正在不断的走向深入,同时带动着传统控制检测日新月异更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面的知识是不够的,还要根据具体的硬件结构,以及针对具体的应用对象的软件结合,加以完善。
秒表的出现,解决了传统的由于人为因素造成的误差和不公平性。
将软、硬件有机地结合起来,使得系统能够实现两位LED显示,显示时间为00~99秒,每秒自动加1,能正确地进行加、减(倒)计时,快加,快减,可以同时记录4个相对独立的时间,通过上翻下翻来查看这4个不同的计时值,可谓功能强大。
其中软件系统采用汇编语言编写程序,包括显示程序,加减计数程序,快加快减程序,中断,延时程序,按键消抖程序等,并在WAVE中调试运行,硬件系统利用PROTEUS强大的功能来实现,简单切易于观察,在仿真中就可以观察到实际的工作状态。
关键词: AT89C51 99秒【设计题目】99秒秒表设计1 99秒秒表设计背景及目的要求1.1 99秒秒表设计背景目前,单片机正朝着高性能和对品种方向发展,趋势是进一步向着CMO化,低功耗,小体积,大存量,高性能,低价格和外国电路内装化等几个方面发展。
单片机应用的重要意义还在于他从根本上改变了传统的控制系统设计思想和设计方法。
从前必须由模拟电路或数字电路实现的大部分功能功能,现在已能用单片机通过软件方法来实现了。
这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
单片机模块中最常见的是秒表、数字钟等显示时间类的装置,此装置是一种用数字电路实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。
此设计利用凌阳科技公司的凌阳16位单片机SPCE061A为主控芯片,充分利用61板上面的三个按键,完成一个简易的现实系统——99秒秒表。
61板是一套完整的16位单片机开发系统,可直接把程序下载到61板上进行调试和封装。
集成度高、运算速度快、体积小、运算可靠、价格低廉,在过程控制、数据采集、机电一体化、智能仪器仪表、网络技术等方面得到广泛应用。
1.2 设计目的随着单片机应用的日益广泛,在校学生加强对单片机的认识和动手能力,已经是非常重要的一项锻炼。
课程设计就是为加强实践机会、培养学生动手能力的一个重要环节,将理论知识与实际联系起来的一个关键机会。
本课程设计的基本要求是:1. 掌握LED数码管原理及使用方法。
2. 掌握61板的使用方法。
3. 初步掌握SPCE061A单片机汇编语言一般编程技巧。
4. 初步掌握61板系统调试的一般步骤及方法。
1.3硬件选择装有Windows系统和μ’nSP™ IDE仿真环境的PC机一台,μ’nSP™十六位单片机实验箱一个。
本设计用到的实验箱硬件模块为:SPCE061A核心及周边电路模块(包含32个I/O口),LED数码管。
做此实验用51板也可以,因为51板也提供了相应的LED模组,因为实验室里面给我们提供了61板,所以我决定选用SPCE061A 单片机实验箱。
1.4 设计内容本装置将实现0-99的计数,每一秒钟,计数器将加1,在数码管上显示当前计数值,并可用键盘按制计数的起始,以及归零。
具体要求如下:1. 开机时数码管显示00。
2. 每一秒钟,计数器自动加1。
3. 按键控制计数,分别控制开始计时、停止计时和归零,功能分配如下:表1-1按键功能分配2 设计方案及基本原理2.1 预备知识1.熟悉凌阳单片机的工作原理。
(1)I/O口的使用原理和设置;(2)定时器或时基的设置、使用;(3)中断的设定。
2.了解数码管的显示原理。
3.熟悉键盘扫描原理。
4.熟悉汇编语言或C语言。
2.2 LED显示原理静态显示就是显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后就不再管,直到下一次显示数据需要更新时再传送一次新数据,显示数据稳定,占用很少的CPU时间。
动态显示需要CPU时刻对显示器件进行数据刷新,显示数据有闪烁感,占用的CPU时间多。
这两种显示方式各有利弊;静态显示虽然数据稳定,占用很少的CPU时间,但每个显示单元都需要单独的显示驱动电路,使用的硬件较多;动态显示虽然有闪烁感,占用的CPU时间多,但使用的硬件少,能节省线路板空间。
基本的半导体数码管是由七个条状发光二极管芯片排列而成的,可实现0~9的显示。
LED数码管是由发光二级管显示字段组成的显示器,有8段和“米”字段之分,这种显示器有共阳级和共阴极两种。
所谓共阳方式是指笔画显示器各段发光管的阳极(即P区)是公共的,而阴极互相隔离。
所谓共阴方式是笔画显示器各段发光管的阴极(即N区)是公共的,而阳极是互相隔离的。
2.3 元器件选择61板一个,共阳极2位LED数码管一个,电路板一个,8050三极管二个,1k的电阻8个,33k电阻2个,导线若干,排针(10位)2个。
2.4 系统设计根据设计题目的要求分析,并考虑到题目的可扩展性,可将系统分成两大部分:1. 时间的产生和显示。
2. 按键控制计数起始、归零。
根据系统的功能现选择61板作为单片机控制处理部分,利用一2位LED作为显示部分,而按键采用61板上自带的三个按键,如图2-1所示。
图2-1 系统框图2.5硬件工作原理两位数的显示采用的是一个2位共阳极LED 数码管(LG5621AH),连接方法是SPCE061A的IOB0-IOB6接LED焊接板的A-G,小数显示部分可以省略不要;IOB8-IOB9分别接LED的位选COM1、COM2,电路原理图如图2-4。
LED与SPCE061A的引脚连接如表2-1。
采用凌阳大学计划的LED键盘模组和61板搭配可以很容易的完成这个课程设计的题目。
它的连结图如图所示,IOB的低八位控制数码管显示段位,高八位控制点亮哪一个数码管。
表2-1 LED引脚连接表2.6 硬件连接采用凌阳大学计划的LED键盘模组和61板搭配可以很容易的完成这个课程设计的题目。
它的连结图如图所示,IOB 的低八位控制数码管显示段位,高八位控制点亮哪一个数码管。
图2-2 LED 键盘模组和61板连接图3 3.1设计步骤根据设计要求的功能,程序主要分为三部分,即:(1)计时显示部分;(2)秒计时部分;(3)按键控制部分。
(4)程序主流程主要完成键盘扫描、计时处理、键值分支控制的任务,流程图如图所示:图3-1 主程序流程图显示部分是在IRQ4的1KHz中断中控制显示的,采用动态扫描的方式,1KHz的时基中断每1ms进一次中断,在中断中对2ms计数器i进行累加,当i从0累加到2时,则刚好为2ms,此时更新一个位的LED显示,并对i进行清零;当下一次累计到2ms时,则会再更新显示下一位LED数码管,当更新到最后一位时,返回重第一位开始更新;依此循环更新显示,而更新显示的数据保存在缓冲区当中,用户需要更新显示的数据时,只需要改变对应的缓冲区中的数据即可。
具体流程图如下。
秒计时采用IRQ5的2Hz 时基中断进行计时,流程图如图3-3所示。
键盘输入利用61板自带的三个按键,输入的端口为IOA0—IOA2。
图3-2 IRQ4 1KHz 时基中断流程 图3-3IRQ5 2Hz 时基中断流程图4 程序ctrl_port EQU 0106H A_PORT EQU 0100H B_PORT EQU 0102H c_port equ 0104h count equ 0206hcount0 equ 0200hcount1 equ 0202hINTR EQU 0304HINTR1 EQU 0306HDCOUNT EQU 6data segmentLEDTAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71 HBUF DB 0,0,0,0,0,0buff db 20 dup(?)DAT1 DB 0DAT2 DB 0DAT3 DB 1dat4 db 0data endsCODE SEGMENTASSUME CS:CODE,ds:data START: CLIPUSH DSMOV SI,2*4MOV AX,0MOV DS,AXMOV [SI],OFFSET INTB MOV 2[SI], SEG INTB POP DSMOV AL,00010011BMOV DX,INTROUT DX,ALMOV AL,00000010BMOV DX,INTR1OUT DX,ALMOV AL,00000001BMOV DX,INTR1OUT DX,ALSTImov ax,datamov ds,axmov al,00110111b ;8253初始化 mov dx,countout dx,almov dx,count0mov ax,500hout dx,almov al,ahout dx,almov al,01110111bmov dx,countout dx,almov dx,count1mov ax,50hout dx,almov al,ahout dx,alMOV AL,10000001B ;8255初始化, MOV DX,CTRL_PORTOUT DX,ALback: MOV DX,C_PORTin al,dxtest al,00000010bjz b2 ;判断是否清0again: MOV DX,C_PORTin al,dxtest al,00000001bjz b1 ;判断是暂停还是继续? mov cx,6jia6: inc siloop jia6MOV AL,00000000BMOV DX,C_PORTOUT DX,ALMOV AL,DAT1 ;DTA1中是秒CMP AL,100JZ A1MOV BL,10DIV BLMOV BUF,AH ;秒的个位MOV BUF+1,AL ;秒的十位CALL DISPLAY_DECINC DAT1JMP backA1: MOV DAT1,0 ;满60秒,对DAT1清0 MOV AL,0MOV AH,0MOV BUF,AHMOV BUF+1,ALCALL DISPLAY_DEC ;先显示00,再进位INC DAT2MOV AL,DAT2 ;DAT2中是分CMP AL,60JZ A2MOV BL,10DIV BLMOV BUF+2,AH ;分的个位MOV BUF+3,AL ;分的十位CALL DISPLAY_DECMOV CX,60LOOP AGAINA2: MOV DAT2,0 ;满60分对DAT2清0 MOV AL,0MOV AH,0MOV BUF+2,AHMOV BUF+3,ALCALL DISPLAY_DEC ;先显示00:00再进位 MOV AL,DAT3 ;DAT3中是时CMP AL,24JZ A3MOV BL,10DIV BLMOV BUF+4,AH ;时的个位MOV BUF+5,AL ;时的十位CALL DISPLAY_DECMOV CX,60DEC CXJZ backA3: INC DAT3JMP backb1: CALL DISPLAY_DECmov al,01110000b ;对8253送GATE1控制信号 mov dx,c_portout dx,alcall cunchuCALL DELAYjmp backb2:mov dx,c_portin al,dxtest al,00000100bjnz licall xianshicjcall display_decmov cx,1jz next2mov si,6dec cxnext2: call delayjmp backli: mov buf,0 ;清0 mov buf+1,0mov buf+2,0mov buf+3,0mov buf+4,0mov buf+5,0mov dat2,0mov dat3,1call display_dec; mov bx,1000;jz backmov al,10110000b ;对8253送GATE0控制信号 mov dx,c_portout dx,alCALL DELAY;dec bxjmp backDISPLAY_DEC PROCDA:MOV DI,2DISPAGAIN1:MOV BL,BUFMOV BH,0LEA SI,LEDTAB ;以十进制显示MOV AL,[BX][SI] ;取个位段码not al ;共阳MOV DX,A_PORTOUT DX,AL ;用数码管显示个位 MOV AL,11100000B ;位选,1点亮MOV AH,0MOV DX,B_PORTOUT DX,ALCALL DELAYMOV AL,0H ;清屏MOV DX,B_PORTOUT DX,ALCALL DELAY1CALL DELAY1LEA SI,LEDTABMOV BL,BUF+1MOV BH,0MOV AL,[BX][SI] ;取十位段码not alMOV DX,A_PORTOUT DX,AL ;用数码管显示十位 MOV AL,11010000BMOV DX,B_PORTOUT DX,ALCALL DELAYMOV AL,0HMOV DX,B_PORTOUT DX,ALCALL DELAY1LEA SI,LEDTABMOV BL,BUF+2MOV BH,0MOV AL,[BX][SI] ;取分个位段码 not alMOV DX,A_PORTOUT DX,AL ;用数码管显示分个位MOV AL,11001000BMOV DX,B_PORTOUT DX,ALCALL DELAYMOV AL,0HMOV DX,B_PORTOUT DX,ALCALL DELAY1CALL DELAY1LEA SI,LEDTABMOV BL,BUF+3MOV BH,0MOV AL,[BX][SI] ;取分十位段码not alMOV DX,A_PORTOUT DX,AL ;用数码管显示分十位MOV AL,11000100BMOV DX,B_PORTOUT DX,ALCALL DELAYMOV AL,0HMOV DX,B_PORTOUT DX,ALCALL DELAY1LEA SI,LEDTABMOV BL,BUF+4MOV BH,0MOV AL,[BX][SI] ;取时个位段码not alMOV DX,A_PORTOUT DX,AL ;用数码管显示时个位MOV AL,11000010BMOV DX,B_PORTOUT DX,ALCALL DELAYMOV AL,0HMOV DX,B_PORTOUT DX,ALCALL DELAY1CALL DELAY1LEA SI,LEDTABMOV BL,BUF+5MOV BH,0MOV AL,[BX][SI] ;取时十位段码not alMOV DX,A_PORTOUT DX,AL ;用数码管显示时十位MOV AL,11000001BMOV DX,B_PORTOUT DX,ALCALL DELAYMOV AL,0HMOV DX,B_PORTOUT DX,ALCALL DELAY1DEC DIJNZ DISPAGAIN1 RETDISPLAY_DEC ENDPDELAY PROCMOV CX,1dhLOOP $RETDELAY ENDPDELAY1 PROCMOV CX,3hLOOP $RETDELAY1 ENDPcunchu procpush ax push bx push cxmov al,bufmov ah,buf+1mov bl,buf+2mov bh,buf+3mov cl,buf+4mov ch,buf+5mov buff[si],al mov buff[si+1],ah mov buff[si+2],bl mov buff[si+3],bh mov buff[si+4],cl mov buff[si+5],ch pop axpop bxpop cxretcunchu endp xianshicj procpush axpush bxpush cxmov al,buff[si] mov ah,buff[si+1] mov bl,buff[si+2] mov bh,buff[si+3] mov cl,buff[si+4] mov ch,buff[si+5] mov buf,almov buf+1,ahmov buf+2,blmov buf+3,bh mov buf+4,cl mov buf+5,ch pop axpop bxpop cxret xianshicj endp INTB PROC FAR PUSH AXPUSH BXPUSH CXMOV SI,6 MOV AL,20H OUT 20H,ALPOP CXPOP BXPOP AXIRETINTB ENDP CODE ENDSEND START电路图5.1 调试结果本装置将实现0-99的计数,每一秒钟,计数器将加1,在数码管上显示当前计数值,并可用键盘按制计数的起始,以及归零。