基于8086的秒表设计与实现
微机课程设计数字秒表

目录1.中文摘要 (1)2.方案论证 (3)3.总体设计方案 (3)3.1硬件系统设计 (4)3.1.1 8086简介 (5)3.1.2 8255简介 (6)3.1.3 8083简介 (8)3.1.4 硬件系统原理图 (9)3.2软件系统设计 (10)3.2.1 软件设计要求及介绍 (11)3.2.2 程序设计流程 (12)3.2.3 程序清单 (13)4.实验结果及分析 (24)5.总结体会 (25)6.参考文献 (26)一、中文摘要微机原理与接口技术是一门实践性很强的电子信息工程专业的技术基础课程。
因此,微机接口课程设计是一项实践性很强的实训环节,结合运用所学的汇编语言及8086微处理芯片设计一个电子秒表,通过实践能够加深对汇编语言的理解以及对8086微处理器、8253可编程定时器、8259A可编程中断控制器、8255A可编程并行I/O接口芯片等的基本功能的认识。
本实验利用8253可编程定时器等芯片的定时和记数的原理,结合实验箱上的集成电路芯片8086、LED数码管以及实验箱上的按键来设计秒表。
将软、硬件有机地结合起来,要求实现计时单位为1/100秒,利用功能键进行启/停控制,上电后计时器清0,当第一次按下KEY1启/停键时开始计数,按一下KEY2键清零,重新开始计时,在系统能够正确地进行计时,使5位LED数码管能够正确地显示时间。
关键字:电子秒表、百分之一秒、停启控制。
二、方案论证根据课程设计的要求和我们所要增加的功能写好程序流程图,在程序流程图的基础上,结合芯片的功能写出相应的程序。
然后再进行程序调试和相应的修改,以达到能够实现所要求实现的功能的目的。
在微机原理定汇编调试软件上编辑源程序,并进行汇编,在汇编成功无误后,选择端口进行调试,然后装入程序,至此,本次设计的软件工作准备完毕。
再根据硬件原理设计图完成各芯片之间的连接,打开实验箱电源开关总体进行调试。
在整个实验过程中,在8253可编程定时器CLK端输出管脚处接上一个计数的频率为10KHZ的时钟信号,由8253定时/计数器产生0.01秒的中断并进行计数,可编程并行I/O接口芯片8255A将偏移地址写入内存单元,进中断更新数据,然后将内存数据送给LED数码管显示。
基于秒表的设计与实现毕业设计

毕业设计(论文)题目:数字电子秒表的设计与实现摘要近年来随着科技的飞速发展,单片机的应用正在不断的走向深入。
本文阐述了基于单片机的数字电子秒表设计。
本设计主要特点是计时精度达到0.001s,解决了传统的由于计时精度不够造成的误差和不公平性,是各种体育竞赛的必备设备之一。
另外硬件部分设置了查看按键,可以对秒表上一次计时时间进行保存,供使用者查询。
用PROTEUS强大的功能来实现,简单切易于观察,在仿真中就可以观察到实际的工作状态。
关键字:单片机;数字电子秒表;仿真AbstractWith the rapid development of science and technology in recent years, SCM applications are constant-depth manner. In this paper, based on single chip design of digital electronic stopwatch. The main characteristics of this design timing accuracy of 0.001s, to solve the traditional result of a lack accuracy due to timing errors and unfair,and is a variety of sports competitions, one of the essential equipment. In addition the hardware part of the set View button on the stopwatch can be the last time to save time for user queries.The design of the multi-function stopwatch system uses STC89C52 microcontroller as the central device, and use its timer / counter timing and the count principles, combined with display circuit, LED digital tube, as well as the external interrupt circuit to design a timer. The software and hardware together organically, allowing the system to achieve two LED display shows the time from 0 to 99.999 seconds, Timing accuracy of 0.001 seconds, Be able to correctly time at the same time to record a time, and the next time after the last time the time to search.automatically added a second in which software systems using assembly language programming, including the display program, timing, interrupt service, external interrupt service routine, delay procedures, key consumer shaking procedures, and WA VE in the commissioning, operation, hardware system uses to achieve PROTEUS powerful, simple and easy to observe the cut in the simulation can be observed on the actual working condition.Keyword:LED display;High-precision stopwatch;STC89C52目录绪论 (1)1 硬件设计 (4)1.1 总体方案的设计 (4)1.2 单片机的选择 (5)1.3 显示电路的选择与设计 (8)1.4 按键电路的选择与设计 (11)1.5 时钟电路的选择与设计 (12)1.6 复位电路的选择与设计 (14)1.7 系统总电路的设计 (17)2 软件设计 (20)2.1 程序设计思想 (20)2.2 系统资源的分配 (20)2.3 主程序设计 (21)2.4 中断程序设计 (22)3 数字电子秒表的安装与调试 (27)3.1 软件的仿真与调试 (27)3.2 硬件的安装与调试 (27)3.3 系统程序的烧录 (28)3.4 数字电子秒表的精度调试 (29)结论 (31)致谢 (32)参考文献 (33)附录A 资料翻译 (34)A.1英文原文 (34)A.2 中文翻译 (41)附录B 程序 (47)附录C 电路原理图 (54)附录D 硬件实物图 (55)绪论秒表计时器是电器制造,工业自动化控制、国防、实验室及科研单位理想的计时仪器,它广泛应用于各种继电器、电磁开关,控制器、延时器、定时器等的时间测试。
基于8086的秒表设计与实现

基于8086的秒表设计与实现————————————————————————————————作者:————————————————————————————————日期:郑州科技学院微机原理课程设计(论文)题目_基于8086的秒表设计与实现_学生姓名程昭昭专业班级计科一班学号201115003所在系信息工程学院指导教师王清珍完成时间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强大的功能来实现,简单切易于观察,在仿真中就可以观察到实际的工作状态。
8086定时器课程设计

8086定时器课程设计一、课程目标知识目标:1. 理解8086定时器的基本工作原理,掌握其编程控制方法。
2. 学会使用8086定时器进行计时和延时功能的设计。
3. 掌握定时器中断处理程序的编写,了解其在实际应用中的作用。
技能目标:1. 能够独立编写8086定时器的初始化、启动、停止和计数值读取等程序。
2. 能够运用定时器实现精确的时间控制和事件调度。
3. 能够分析并解决定时器编程过程中遇到的问题,提高调试和优化程序的能力。
情感态度价值观目标:1. 培养学生对计算机硬件编程的兴趣,激发其探究精神。
2. 增强学生的团队合作意识,提高沟通与协作能力。
3. 让学生认识到编程在现实生活中的应用价值,培养其社会责任感和创新精神。
课程性质:本课程为计算机硬件编程课程,以8086定时器为载体,使学生掌握计算机硬件编程的基本方法和技巧。
学生特点:学生已具备一定的汇编语言基础,对计算机硬件编程有一定了解,但实际操作经验不足。
教学要求:结合学生特点,注重理论与实践相结合,强化动手实践,培养解决实际问题的能力。
通过课程学习,使学生能够将所学知识应用于实际项目中,提高其编程水平和综合素养。
二、教学内容1. 定时器原理概述:介绍8086定时器的基本构成、工作原理及计数模式。
- 相关教材章节:第三章 计数器与定时器2. 定时器编程基础:- 定时器的初始化和配置方法。
- 定时器的启动、停止和计数值读取。
- 相关教材章节:第四章 定时器编程3. 定时器中断处理:- 中断向量表的设置和中断处理程序的编写。
- 定时器中断的应用场景及示例程序。
- 相关教材章节:第五章 中断处理与定时器应用4. 定时器应用案例:- 实现精确延时功能。
- 定时器实现事件调度。
- 相关教材章节:第六章 定时器应用案例5. 实践操作与调试:- 编写、运行和调试定时器程序。
- 分析并解决编程过程中遇到的问题。
- 相关教材章节:实验指导书教学内容安排与进度:第一周:定时器原理概述、编程基础。
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. 计时器应用案例分析:分析计时器在计算机系统中的应用案例,如电子时钟、倒计时等,使学生了解计时器的实际应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于8086的秒表设计与实现————————————————————————————————作者:————————————————————————————————日期:郑州科技学院微机原理课程设计(论文)题目_基于8086的秒表设计与实现_学生姓名程昭昭专业班级计科一班学号201115003所在系信息工程学院指导教师王清珍完成时间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按键功能分配按键功能描述KEY1 开始计时KEY2 停止计时KEY3 归零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所示。
秒IOB图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引脚连接表SPCE061A LED模块SPCE061A LED模块IOB8 A IOB0 COM1IOB9 B IOB1 COM2IOB10 CIOB11 DIOB12 EIOB13 FIOB14 G2.6 硬件连接采用凌阳大学计划的LED键盘模组和61板搭配可以很容易的完成这个课程设计的题目。
它的连结图如图所示,IOB 的低八位控制数码管显示段位,高八位控制点亮哪一个数码管。
图2-2 LED 键盘模组和61板连接图3 设计流程图AD[0..15]READY 22INTR 18NMI 17RESET 21CLK 19MN/MX 33HOLD/GT131HLDA/GT030A[16..19]M/IO/S028ALE/QS025DT/R/S127INTA/QS124TEST 23BHE 34DEN/S226RD 32WR/LOCK 29U98086D08D17D26D35D44D53D62D71RD 22WR 23A019A120CS 21CLK09GATE011OUT010CLK115GATE114OUT113CLK218GATE216OUT217U98253A3.1设计步骤根据设计要求的功能,程序主要分为三部分,即:61板IOA0 IOB8 IOA8显示 显示按键状数数数数数数发光二(1)计时显示部分;(2)秒计时部分;(3)按键控制部分。
(4)程序主流程主要完成键盘扫描、计时处理、键值分支控制的任务,流程图如图所示:开初始化数据、以扫描键盘,针对Key1 Key2 Key3计时数据处理,格式图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 0106HA_PORT EQU 0100HB_PORT EQU 0102Hc_port equ 0104h 是计时器计时 计时 结IRQ42ms 计数器更新显示一位结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,71HBUF 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],almov 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。