微机原理课程设计电子时钟的设计.doc
课程设计电子时钟设计

电子时钟设计意义
电子时钟是现代电子产品中不可或缺的一部分,广泛应用于计时、定时、提醒等场 景。
电子时钟设计涉及到电子技术、计算机技术和信号处理技术等多个领域,是综合性 很强的设计项目。
通过电子时钟设计,可以培养学生的实践能力、创新能力和团队协作能力,提高学 生的综合素质。
设计任务和要求
01
02
03
04
设计并实现一个具有基本计时 功能的电子时钟,包括时、分
、秒的显示和计时功能。
实现电子时钟的校时功能,能 够手动调整时间。
实现电子时钟的定时功能,能 够在指定时间触发提醒或执行
特定操作。
设计要求电路结构简单、性能 稳定、功耗低、成本低廉。
02
电子时钟设计原理
Chapter
时钟工作原理
振荡器产生稳定频率
均正常实现。
性能测试
评估电子时钟的性能指 标,如时间精度、功耗
等。
可靠性测试
长时间运行测试,观察 电子时钟是否出现异常 情况,以评估其可靠性
。
兼容性测试
测试电子时钟在不同环 境下的适应性,如温度
、湿度等环境变化。
06
总结与展望
Chapter
设计成果总结
实现了基本的电子时钟功能
包括时、分、秒的显示,以及日期的显示。
通过石英晶体振荡器或其他振荡 器产生稳定的频率信号,作为时 钟的基准信号。
计数器计数
各级时间单位的信号分别送到相 应的计数器进行计数,实现时间 的累计。
01 02 03 04
分频器进行分频
将振荡器产生的频率信号通过分 频器进行分频,得到秒、分、时 等各级时间单位的信号。
显示模块显示时间
将计数器的计数值送到显示模块 ,通过数码管、液晶显示屏等方 式显示出来。
课程设计-8086电子时钟设计

微机原理及其接口技术课程设计题目: 8086电子时钟设计前言课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识解决实际工程设计和应用问题的能力的重要教学环节,它具有动乎、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一种较好方法。
《微机接口技术》是一门应用性、综合性、实践性较强的课程,没有实际的有针对性的设计环节,学生就不能很好的理解和掌握所学的技术知识,更缺乏解决实际问题的能力。
所以通过有针对性的课程设计,使学生学会系统地综合运用所学的理论知识,提高学生在微机应用方面的开发与设计本领,系统的掌握微机硬软件设计方法。
时钟就是一种对时间进行累计的工具,即计时。
计时的本质就是计数,只不过这里的“数”的单位是时间单位,如果把一小片一小片计时单位累计起来,就可获得一段时间。
因此,使用计数器对时钟脉冲进行计数,就是时钟实现的基本原理;再用LED数码管显示出来,并设计出几个按键用于对时钟进行调整,这样,一个完整的时钟就设计完成了。
本次课程设计要求利用8253定时器设计一个具有时、分、秒显示的电子时钟,并定义一个启动键,当按下该键的时候,时钟从当前的设定值(可以在缓冲区中设置)开始走时。
同时,再定义三个按键,分别对时、分、秒进行校正。
目录目录 -------------------------------------------------------------------------------- 21、电子时钟功能介绍 ------------------------------------------------------------------------------------- 32、电子时钟系统总体方案设计------------------------------------------------------------------------- 42.1方案比较 ------------------------------------------------------------------------------------------- 42.2方案选择 ------------------------------------------------------------------------------------------- 53、电子时钟的工作原理---------------------------------------------------------------------------------- 53.1实现时钟计时的基本方法 --------------------------------------------------------------------- 53.2电子钟的时间显示------------------------------------------------------------------------------- 64、硬件设计-------------------------------------------------------------------------------------------------- 64.1硬件设计电路图---------------------------------------------------------------------------------- 64.1.1主电路模块 --------------------------------------------------------------------------------- 64.1.2 LED显示模块 ----------------------------------------------------------------------------- 74.1.3按键模块 ------------------------------------------------------------------------------------ 84.1.4总体电路图 --------------------------------------------------------------------------------- 84.2硬件设计所用芯片介绍------------------------------------------------------------------------- 84.2.2 8253芯片的内部结构及引脚 -------------------------------------------------------- 104.2.3 8255A芯片的内部结构及引脚 ------------------------------------------------------ 125、软件设计------------------------------------------------------------------------------------------------ 135.1电子时钟部分程序流程框图 ---------------------------------------------------------------- 135.1.1主程序流程框图------------------------------------------------------------------------------ 135.1.2键扫子程序流程框图 ----------------------------------------------------------------------- 145.1.3中断处理程序流程框图 -------------------------------------------------------------------- 145.2电子时钟总体程序----------------------------------------------------------------------------- 156、总结与体会 -------------------------------------------------------------------------------------------- 16 参考文献 ------------------------------------------------------------------------ 17附录1 ---------------------------------------------------------------------------- 18附录2 ---------------------------------------------------------------------------- 19 1、电子时钟功能介绍可调整运行的电子钟具有三种工作状态:"P.”状态、运行状态、调整状态。
微机原理秒表时钟课程设计

微机原理秒表时钟课程设计一、课程目标知识目标:1. 学生能理解微机原理中秒表时钟的基本工作原理,掌握其硬件组成和软件编程方法。
2. 学生能够掌握秒表时钟的设计思路,了解其功能模块的划分和实现。
3. 学生能够了解微机原理在实际应用中的重要性,认识到秒表时钟在日常生活和工程领域的应用价值。
技能目标:1. 学生能够运用所学知识,设计并实现一个简单的秒表时钟程序,具备基本的编程能力。
2. 学生能够通过分析问题、解决问题,培养创新思维和动手实践能力。
3. 学生能够熟练使用相关硬件设备,提高实际操作能力。
情感态度价值观目标:1. 学生通过本课程的学习,培养对微机原理的兴趣,激发学习热情,形成积极的学习态度。
2. 学生能够认识到团队合作的重要性,学会与他人协作,培养团队精神和沟通能力。
3. 学生能够在实际操作过程中,培养耐心、细心和责任心,养成良好的学习习惯。
课程性质:本课程为实践性课程,注重理论联系实际,培养学生的动手能力和创新意识。
学生特点:本年级学生已具备一定的微机原理基础知识,具有较强的学习能力和求知欲,喜欢动手实践。
教学要求:结合学生特点,以实际操作为主线,注重培养学生的编程能力和团队协作能力,提高学生的实际应用能力。
在教学过程中,关注学生的学习进度,及时调整教学策略,确保课程目标的达成。
将课程目标分解为具体的学习成果,便于后续教学设计和评估。
二、教学内容本课程教学内容主要包括以下几部分:1. 微机原理基础知识回顾:引导学生复习已学过的微机原理基础知识,如微处理器、存储器、输入输出接口等,为后续学习秒表时钟设计打下基础。
相关教材章节:第一章 微机原理概述2. 秒表时钟硬件组成:讲解秒表时钟的硬件组成,包括时钟芯片、微处理器、显示模块等,分析各部分的功能和相互关系。
相关教材章节:第三章 微机接口技术3. 秒表时钟软件编程:介绍秒表时钟的软件编程方法,包括编程语言选择、程序结构设计、功能模块划分等。
相关教材章节:第五章 嵌入式系统编程4. 实践操作:安排学生进行实际操作,设计并实现一个简单的秒表时钟程序,培养学生的动手能力和编程技巧。
微机课程设计电子钟

微机课程设计电子钟一、课程目标知识目标:1. 学生能理解电子钟的基本原理,掌握电子时钟系统的组成及其工作方式。
2. 学生能够运用所学的微机知识,设计并实现一个具有基本计时功能的电子钟。
3. 学生能够了解并描述常见电子时钟电路图,分析电路中各元件的作用。
技能目标:1. 学生能够运用编程软件,如Arduino或51单片机等,编写控制程序,驱动电子钟运行。
2. 学生通过实际动手操作,掌握电子元件的焊接和电路板的搭建,提高实践操作能力。
3. 学生能够通过小组合作,进行问题分析和解决方案的设计,提升团队协作和沟通能力。
情感态度价值观目标:1. 学生通过电子钟的设计与制作,培养创新思维和问题解决能力,增强自信心和成就感。
2. 学生在实践过程中,能够体会到学习的乐趣,培养对科学技术的兴趣和探索精神。
3. 学生通过小组合作,学会尊重他人意见,培养团队精神和责任感。
课程性质:本课程为实践性课程,强调理论联系实际,注重培养学生的动手操作能力和创新思维。
学生特点:学生为初中生,具有一定的微机基础,好奇心强,喜欢动手实践。
教学要求:教师应引导学生主动参与,注重启发式教学,鼓励学生提出问题、解决问题,关注学生的个体差异,促进每个学生的全面发展。
通过课程目标的分解,将学习成果具体化,便于教学设计和评估。
二、教学内容本课程教学内容紧密结合课程目标,以确保学生能够系统地掌握电子钟设计与制作相关知识。
1. 理论知识:- 电子时钟原理:介绍时钟信号、晶振、分频器等基本概念。
- 电路元件:学习并认识LED、电阻、电容、二极管、三极管等常见电子元件。
- 微控制器:了解Arduino或51单片机的基本结构、工作原理及编程方法。
2. 实践操作:- 电路设计:学习如何绘制电子钟电路图,选择合适的电子元件。
- 程序编写:根据电子钟功能需求,编写相应的控制程序。
- 电路搭建:动手焊接电路板,搭建电子钟硬件系统。
3. 教学大纲:- 第一阶段:电子时钟原理学习,认识电路元件。
(完整word版)单片机课程设计,校园作息时间系统

湖南工程学院课程设计课程名称微机原理与应用课题名称单片机作息时间控制器专业自动化班级0702学号200701020216姓名罗琦指导教师王迎旭、李晓秀、林国汉2010年 6 月20日湖南工程学院课程设计任务书课程名称微机原理与应用课题单片机作息时间控制器专业班级自动化0702学生姓名罗琦学号200701020216指导老师王迎旭、李晓秀、林国汉审批任务书下达日期2010年 6 月7日任务完成日期2010年 6 月20日、目录第一章引言 (7)1.1简介及技术要求 (7)1。
2计时方案 (7)1.3键盘/显示方案 (7)第二章硬件设计.........................................................8 2.1 电路原理图 (8)2。
2 系统工作流程 (9)2。
3 系统使用说明 (10)第三章系统软件设计 (10)3。
1 软件设计 (10)3。
2 系统工作流程 (11)第四章程序模块设计 (15)4.1主程序模块 (16)4。
2定时中断服务程序模块 (18)4.3扫描显示模块 (22)4.4键扫描子程序 (23)4。
5键值处理子程序 (27)4.6移位键处理程序模块 (30)第五章调试及分析 (32)第六章课程总结 (33)参考文献 (34)附录 (35)第1章引言因为单片机的种类多,而型号杂,也是我们学习中的困难,所以就MCS—51系列的产品来说,就是一个典型的学习方法.对于类似汇编的单片机编程过程,也是一个十分有趣的过程.为了更好的说明,我以上介绍先从应用电路切入,同时介绍它们的使用方法,以便能快速掌握它们的应用。
1。
1简介及技术要求校园作息时间控制系统主要用于学校,对一些以24小时为周期的开关量进行自动控制。
如上下课打铃及扩音设备的开与关、教学楼照明的定时开与关、学生宿舍灯及校园路灯的定时开关的控制。
技术要求如下:(1)定时准确,月误差《=10%。
单片机原理与应用课程设计电子时钟

课程设计说明书题目:单片机原理及应用课程设计(电子时钟)摘要本次设计时钟电路,电子时钟。
格式如下:利用CPU的定时器和实验仪上提供的数码显示电路,设计一个XX XX XX 由左向右分别为:时,分,秒。
并拓展功能—闹钟。
关键字:数码管蜂鸣器8031目录第 1 章绪论⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 5第 2 章设计要求⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 5 第 3 章设计方案(包括原程序及其拓展功能)⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 5 第4 章硬件部分⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯64.18031 单片机4.2复位电路64.3时钟电路64.4显示电路74.5蜂鸣器电路8第5章软件部分⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯95.1主程序模块⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯911 5.2100us 定时中断服务程序5.3程序(C语言)⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯12 心得体会⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯18 参考文献⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯18第一章绪论单片机是将CPU、定时器/ 计数器以及输入输出(I/O) 接口等计算机的主要部件集成在一块的集成电路芯片,作为微机系统它还可以实现模/ 数转换、脉宽调制、计数器捕获/比较逻辑、高速I/O 口和WDT各种控制功能。
通过在MCS-51系列的单片机中增设了全双工串行口I/O 、片内数据存储器采用寻址范围为256kb的8位地址、均有四种工作方式的2个16位的定时/ 计数器、增加了中断系统、增设了颇具特色的布尔处理机、让单片机具有较强的指令寻址和运算功能这些技术,使单片机拥有了完善的外部并行总线(AB、DB、CB)具有多机识别功能的串行通信接口,规范了功能单元的特殊功能寄存器控制模式及适应控制器特点的布尔处理系统和指令系统,位发展具有良好兼容性的新一代单片机奠定了良好的基础。
电子时钟的设计及程序
电子时钟的设计及程序一.设计目的:1.理解掌握定时/计数器和中断的使用方法。
2.掌握微机常用的输入输出方式及接口技术。
3.掌握一定的汇编语言知识,培养自己的动手操作能力。
4.学习程序设计的基本思路和方法。
二.程序内容:第一部分:定义显示界面。
第二部分:调用系统时间,并将调用的用二进制表示的时间数转换成ASCII码,并将时间数存入内存区。
第三部分:将存在系统内存区的时间数用显示字符串的形式显示出来。
第四部分:获取键盘的按键值,以ESC键退出系统返回DOS。
三.程序设计原理:首先在数据段开辟一显示缓冲区,用来存储系统时间。
调用DOS中断,返回系统时间,并将来返回的二进制时间转换成ASCII码,方便时间显示时的调用。
分别将来小时数、分钟数、秒数存入显示缓冲区,并最终存入一结束字符号’$’。
调用DOS字符串显示功能将时间显示出来。
并调用屏幕I/O中断,定位光标的开始位置,结合着将时间显示在我们预先定义好的位置上。
由于获取了的系统时间不会自动刷新,所以我们要设计成刷新的方式来不断获取系统的时间,这样就形成了会跳动的电子钟了。
调用延时TIME延时中断服务程序,累加到存放秒值的寄存器DL中,并进行十进制调整。
在累加的过程中,不断地对时、分、秒值进行比较,秒不能等于60,分不能等于60,时不能等于24。
秒等于限制值时,则使秒值为0分值加1;分等于限制值时,则使分值为0时值加1;时等于限制值时,则使时值为0;时、分、秒值都不超过限制值时,就转显示屏输出。
时间显示的刷新要配合延时程序进行,为了得到良好的显示效果,延时程序要尽量接近1秒,但又不能超过一秒,所以本程序调用了一段较精确的时间延迟程序。
利用BIOSS设计窗口,选择适当的背景和前景等,使屏幕显示更加完美。
程序一旦进入运行,就将不间断地在显示屏显示时间,要想程序停止运行,可同时在键盘按下ESC键返回DOS系统。
四.程序流程图如下:DATA SEGMENT ;设置数据段BUF1 DB 'THE TIME IS NOW: $'BUF5 DB ' @@@@@ ^^^^^^^ @@@@@@ $'BUF6 DB ' &&&&&& ####### &&&&&& $'BUF7 DB ' 00 >o o < 00 $'BUF8 DB ' 00 (::) 00 $'BUF9 DB ' 00 ~~ 00 $'BUF10 DB ' 00 !! 00 $'BUF3 DB 'CLASS:040402206 $'BUF4 DB 'NAME:hu ling wei $'BUF2 DB 10DB 10 DUP(?)DATA ENDSSTACK SEGMENT STACK ;设置堆栈段STACK ENDSCODE SEGMENT ;设置代码段ASSUME CS:CODE,DS:DATA,SS:STACKCURSOR MACRO ROW,CLM ;设置光标位置MOV AH,2MOV BH,0MOV DH,ROWMOV DL,CLMINT 10HENDMWIN MACRO ROWL,CLML,ROWR,CLMR,COLOR ;设置窗口,位置,颜色MOV AH,6MOV AL,0MOV CH,ROWLMOV CL,CLMLMOV DH,ROWRMOV DL,CLMRMOV BH,COLORINT 10HENDMASCBCD MACRO REGINC BXINC BXMOV REG,[BX]MOV CL,4SHL REG,CLINC BXMOV AL,[BX]AND AL,0FHOR REG,ALENDMBCDASC MACRO REGINC BXINC BXMOV AL,REGMOV CL,4SHR AL,CLOR AL,30HMOV [BX],ALINC BXMOV AL,REGAND AL,0FHOR AL,30HENDMINCBCD MACRO REG,COUNT ;BCD数加1 MOV AL,REGINC ALDAAMOV REG,ALCMP AL,COUNTJNZ DISPYMOV REG,0ENDMSTRDSPY MACRO ADRSLEA DX,ADRSMOV AH,9INT 21HENDMCLOCK PROC FARSTART: PUSH DS ;显示字符串MOV AX,0PUSH AXMOV AX,DATAMOV DS,AXWIN 0,0,24,79,7WIN 6,9,18,70,01000001B ;设置窗口CURSOR 6,25 ;设置光标STRDSPY BUF5 ;显示字符串CURSOR 7,25 ;设置光标STRDSPY BUF6CURSOR 8,25STRDSPY BUF7CURSOR 9,25STRDSPY BUF8CURSOR 10,25STRDSPY BUF9CURSOR 11,25STRDSPY BUF10CURSOR 6,9STRDSPY BUF3CURSOR 7,9STRDSPY BUF4CURSOR 14,32STRDSPY BUF1CURSOR 15,36LEA DX,BUF2MOV AH,0AHINT 21H ;从键盘接收当前时间LEA BX,BUF2ASCBCD CH ;小时值ASCII到BCD;存CHASCBCD DH ;分值ASCII到BCD;存DHASCBCD DL ;秒值ASCII到BCD;存DLTIMER: CALL DELY ;延时1秒INCBCD DL,60H ;(DL)+1,并判;大于等于60?INCBCD DH,60H ;(DH)+1,并判;大于等于60?INCBCD CH,24H ;(CH)+1,并判;大于等于60?DISPY: LEA BX,BUF2BCDASC CH ;时值BCD转到ASCIIBCDASC DH ;分值BCD转到ASCIIBCDASC DL ;秒值BCD转到ASCIIINC BXMOV AL,'$'MOV [BX],ALPUSH DXCURSOR 15,36 ;设置光标STRDSPY BUF2+2 ;显示时,分,秒值POP DXMOV AH,01HINT 16HCMP AL,1BHJZ XXOR AL,ALJMP TIMERX:MOV AH,4CHINT 21HRETDELY PROCPUSH CXPUSH CXMOVE 4600X1:DEC CX,0FFFFHX2:DEC CXJNE X2DEC AXJNE X1POP AXPOP CXRETDELY ENDPCLOCK ENDPCODE ENDPEND START1)编译源文件,命名为HULINGWEI。
可任意启动停止的电子秒表的设计
可任意启动/停止的电子秒表的设计一、课程设计目的和任务<<微机原理与接口技术〉〉是一门实践性很强的电子信息工程专业的技术基础课程.因此,微机接口课程设计是一项实践性很强的实训环节,结合运用所学的汇编语言及8086微处理芯片设计一个电子秒表,通过实践能够加深对汇编语言的理解以及对8086微处理器、8253可编程定时器、8259A可编程中断控制器、8255A可编程并行I/O接口芯片等的基本功能的认识。
从而在设计过程中,提高学生的实践编程能力和硬件设计能力.也可以进一步巩固和融会贯通所学的汇编语言,并且可以培养学生查找资料的能力和自己分析问题解决问题的能力。
本实验利用8253可编程定时器等芯片的定时和记数的原理,结合实验箱上的集成电路芯片8086、LED数码管以及实验箱上的按键来设计秒表。
将软、硬件有机地结合起来,要求实现计时单位为1/100秒,利用功能键进行启/停控制,上电后计时器清0,当第一次按下KEY1启/停键时开始计数,按一下KEY2键清零,重新开始计时,在系统能够正确地进行计时,使6位LED 数码管能够正确地显示时间。
二、分析与设计1.设计任务分析:可任意启动/停止的电子秒表的实现用按键中断来控制整个程序,当按一下KEY1启动电子秒表,再按一下暂停,按一下KEY2键清零,用六个七段数码管显示时间。
整个程序涉及到8255、8253和8259三个芯片。
给8253的CLK0提供一个频率为10KHZ的时钟信号, 8253的OUT0连接8259的IRQ7,8253的GATE2连接正5伏电压,采用计数器0每隔0.01秒产生一次中断并且计数,写入以偏移地址4000H开始的6个内存单元,然后利用8255将内存单元的数据输出到七段数码管.由于按键中断优先于8259的7号中断,所以程序只有在按一下KEY1才启动电子秒表,再按一下暂停,按一下KEY2键清零,如果超出了60分,整个程序自动重新开始。
2.设计方案论证:根据课程设计的要求和我们所要增加的功能写好程序流程图,在程序流程图的基础上,结合芯片的功能写出相应的程序。
毕业设计84吉林建筑工程学院电子时钟显示程序设计
目录一、课程设计的目的----------------------(2)二、课程设计的题目----------------------(2)三、课程设计的主要内容--------------------(2)(一)、程序论述----------------------(2)(二)、程序设计的步骤-------------------(2)(三)程序流程图----------------------(2)(四)程序------------------------(4)(五)结果显示-----------------------(14)四、总结----------------------------(14)(一)、本设计主要用到的DOS、BIOS调用及功能---------(14)(二)、心得体会----------------------(15)五、参考文献--------------------------(16)一、课程设计的目的:本次《微型计算机原理及应用》课程设计我选择了用汇编语言做电子时钟,其主要目的是加强软件编程能力。
通过本次设计复习并熟练掌握微机原理中的基本操作指令、DOS 中断功能调用以及BIOS中断功能调用。
最主要的是使用汇编语言编程来实现现实中许多电子产品的功能。
二、课程设计的题目:电子时钟显示程序设计三、课程设计的主要内容:(一)、程序论述本次《微型计算机原理及应用》课程设计我做的题目是“电子时钟显示程序设计”,是使用汇编语言编程实现电子时钟显示的功能。
主要提供了系统时间的调用,设置时间及显示时间等功能。
在我所做的程序中主要以下面的内用运行。
主程序首先注册新的中断处理程序从系统中取得时间,然后持续等待,直到在中断程序中检测到有按键时间的发生,然后主程序取消中断处理程序。
判断输入的键,然后根据相应的按键提供相应的设置功能。
中断处理程序每次得到系统定时器中断时间、,判断是否到达1秒,如果到达则更新时间,存入数据区,然后更新数据的显示。
微机原理电子钟55ms
课程设计报告课程名称:微机原理与接口技术课程设计第一章需求分析1.1课程设计题目:数字钟1.2课程设计任务及要求:在屏幕上显示时:分:秒(HH:MM:SS)。
按下非空格键开始计时,并显示00:00:00,每过1秒,SS增1,到60秒MM增1,到60分HH增1,到24后回归到00:00:00重新计时。
当按下空格键时,程序结束并返回DOS,数字钟消失。
1.3课程设计思想数字钟的设计包括两个方面,一是计时,一是显示。
①计时利用INT 1CH 调用次数来实现。
INT 1CH是每秒钟被定时器硬件中断8调用18.2次,在程序的数据段中设立1个计数单元COUNT,令INT 1CH用户中断服务程序每次对它加1,若计到18次,则为1秒。
这样一直累加下去,直到计满24小时,然后清零,又重新开始。
②时间显示利用DOS系统功能调用功能,将时、分、秒计时的内容送到屏幕显示。
本题是利用系统的定时器资源,用户不用设计硬件电路。
系统BIOS已对定时器进行了初始化,不需再写定时器的初始化程序段。
程序分主程序和中断服务程序两部分:主程序包括对INT 1CH向量的获取、修改和恢复,数字钟的显示、启动和停止退出控制。
主程序的主体是一个循环结构:判断有无键按下,有键按下是否为空格键,若是空格键则退出循环转到程序结束处理;否则,显示数字钟的HH:MM:SS。
中断服务程序主要是对计数单元加1及秒、分、小时进位的调整。
服务程序不写中断结束指令,以IRET指令返回。
1.4软硬件运行环境及开发工具根据BIOS对8253初始化的规定,装入计数初值后,定时的计数通道0就自动地从输出端OUT0向8259A的IRQ0每隔55ms申请1次中断,并进入硬件中断8的服务程序。
中断8中断服务程序的功能有三项:①对日时钟双字计数区(地址为0040:006C)进行加1计数,以实现日时钟的计时功能。
当计数到001800B0H时(以55ms 为计时单位),即到24小时,双字计数区复位到0,并建立“新日”标志,开始第二天计时。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《微机原理》课程设计 ——电子时钟的设计(2005-6-24)
山东科技大学机电学院js02-2 20号 一.课程设计题目:电子钟 1. 设计目的:了解定时/计数器和中断的使用。 2. 设计所需设备:PC机。
3. 设计任务:编写程序,在PC机上显示时间。 二.程序内容: 第一部分:定义显示界面。 第二部分:调用系统时间,并将调用的用二进制表示的时间数转换成ASCII码,并将时间数存入内存区。 第三部分:将存在系统内存区的时间数用显示字符串的形式显示出来。 第四部分:获取键盘的按键值,判断键值并退出系统。
三.程序设计原理: 首先在数据段开辟一显示缓冲区,用来存储系统时间。调用DOS中断,返回系统时间,并将来返回的二进制时间转换成ASCII码,方便时间显示时的调用。分别将来小时数、分钟数、秒数存入显示缓冲区,并最终存入一结束字符号’$’。调用DOS字符串显示功能将时间显示出来。并调用屏幕I/O中断,定位光标的开始位置,结合着将时间显示在我们预先定义好的位置上。由于获取了的系统时间不会自动刷新,所以我们要设计成刷新的方式来不断获取系统的时间,这样就形成了会跳动的电子钟了。时间显示的刷新要配合延时程序进行,为了得到良好的显示效果,延时程序要尽量接近1秒,但又不能超过一秒,所以本程序调用了一段较精确的时间延迟程序,屏幕显示延迟一段时间后再跳回到初始位置,再显示,由此循环下去。程序的最后还设计一了个按“ESC”键就退出的功能,采取了判断键值的方法。为了显示的美观,还设计一个字符图界面,通过显示字符串的方法显示出来。本程序具有很强的扩展功能,我们可以在此基础上进行一些输入、输出扩展,显示的扩展,比如可以做成计时器,并设计一个精美的运动的图形界面,时间到了会自动调用PC喇叭发出报警声等等。。。但是由于时间的原因,所以只做了核心的部分,这不得不说是一个遗憾。本程序使用了未来汇编,与VISUAL ASM开发平台。
四.程序设计心得: 本程序虽然只花了一天的时间,但是也收获颇多。其实本程序的设计思路并不难想,核心代码的设计所花的时间也不长。但是调试的时间却占了差不多70%的时间,在本程序设计的初期曾经走了不少弯路碰见过不少难题,所幸的是在我们的坚持下最终把难题一一击破。下面就列举下我们遇见过的比较繁琐的难题: 1. 进制转换问题。开始我们的思路是想将AL的内容除于10,然后分别讲除数跟商分别加上30H转换成ASCII码并保存在AH跟AL里面。但是写完调试的时候系统自动弹出一个对话框,要求关闭,可是用自带的编译器却可以通过,百思不得其解,最后上网找了资料才发现是编译系统跟操作系统不兼容的问题,本人的操作系统是最新的WIN2003,纯32位的系统,跟16位的软件有不兼容也是有可能的。但我本人又不想重装个WIN98来调试程序,于是就放弃这种方法,改用逻辑移位,调整的方式来实现了。 2. 屏幕显示问题。开始做完程序的时候由于采用了光标定位的方法,发现运行了程序后显示光标不停地跳动,而且在不同的位置上跳动,严重影响了程序的可观赏性。检查发现原来光标的跳动跟程序的刷新频率跟人眼的视觉残象成影原理有关,只要系统的刷新频率大于1/25秒,那么人眼就会认为图象在改变,这跟电影为什么要设成25帧/秒的播放速率的原理是一样的。这样一来,就必须设计一较为精确的延时程序来改善画面的显示了,只要不让屏幕刷新得太快就可以打到要求了,具体的显示时间是通过延时程序里的DX值决定的,通过调整DX的值,我们发现当DX等于04FF的时候显示效果是最好的。 3. 系统退出问题。开始本程序是使用了DOS中断的键盘功能调用,可是当我们加了比较跳转指令后整个程序就停了在那里,具体原因不是很清楚。最后换成了键盘I/O功能调用,问题迎刃而解了。希望能跟老师一起探讨这个问题。
我的心得体会 我们所设计的程序原理是:程序先调用系统时间,然后将返回的二进制数转化成ASCII码,再通过dos显示功能显示出来,并通过循环不断刷新显示的时间. 我从这次程序设计过程中学会,理解了几点我以前不熟悉的知识: 首先在二进制转化成ASCII码的过程中,我进一步地了解到,在转化过程中,二进制数首先转化为双四位的BCD码,再将高四位低四位分别相加30H,从而转化为ASCII码,此时要对照书本P416的附录1了解电脑cup如何将ASCII码的信息转换成显示字符。 其次,了解了如何对其他经典程序的灵活应用。我们的程序是不断对显示屏进行刷新的,所以我们调用了bctd程序,这是一个精确的计时程序,计数时间约为1秒,然后我们用了jmp display指令,刷新显示屏,从而达到时间的每秒显示。 通过了这次程序设计,使我更深刻地理解了微机的原理与应用技术,特别是在对中断技术的理解与应用方面,更好地理解了微机的工作情况与运行方式。 可以这样说,如果没有此课程设计,我对微机的原理与应用技术,仍旧停滞于表面了解、一知半解甚至不知其解的状态,这样就谈不上学知识、长见闻、提高自身学术素质与理论水平的方方面面。但也让作者感到自身的知识和理论水平要作更高层次的课程设计,远远不足,还需要不懈地学习与提高,更需要指导老师与在此方面的高手不吝赐教!
参考资料: 《微型计算机原理及应用》第四版 周明德 清华大学出版社 《微机原理及接口技术实验指导书》岳克宁 主编 《全国计算机等级考试辅导教程与同步试题训练(3级PC技术)》 冶金工业出版社
五.流程图: 六.程序源码: ;name: ELECTRONIC CLOCK ;design by zengqingyu class1 and moxiaolei class3 data segment
mess1 db ' \\\|///
清屏 调用DOS中断 取系统时间
2进制转ACSII码
将转换好的系统时间存入时间显示缓冲区
显示时间与界面
ESC键按下? 调用延时子程序
返回DOS 程序结束
Y N ',0ah,0dh db ' \\ .-.- // ',0ah,0dh db ' ( .@.@ ) ',0ah,0dh db ' +-----------oOOo-----(_)-----oOOo-------------+ ',0ah,0dh db ' + ASM ASSIGNMENT + ',0ah,0dh db ' + ELECTRONIC CLOCK + ',0ah,0dh db ' + Design by Kevin & Ray + ',0ah,0dh db ' + version:1.0 + ',0ah,0dh db ' + + ',0ah,0dh db ' + + ',0ah,0dh db ' + Press ESC button to quit + ',0ah,0dh db ' +-------------------------Oooo----------------+ ','$' mess2 db 'The time is now:',0ah,0dh,'$' t_buff db 20 ;在数据段开辟一时间显示缓冲区 data ends
stack segment db 100 dup(?) stack ends
code segment assume cs:code,ss:stack,ds:data main: call clear ;调用清屏子程序
display: ;----------------------------时间显示部分-------------- mov ax,seg data mov ds,ax mov bx,offset t_buff ;送t_buff的偏移地址到BX mov ah,2ch ;调用DOS时间调用功能,功能号:2cH,小时,分钟,秒数分别保存在CH,CL,DH中 int 21h mov al,ch ;小时数设定 mov ah,0 call bctd ;调用进制转换子程序 push ax and al,0f0h ;选取al高四位 mov cl,4 ;设置右循环的次数 rol al,cl ;右循环 or al,30h ;加30h得到ACSII码 mov [bx],al ;将得到的结果送到t_buff缓冲区 inc bx ;BX自加1,指针指向下一个缓冲区的下一个地址
pop ax and al,0fh ;选取低四位,道理同上 or al,30h mov [bx],al ;将转换后的低四位值送入缓冲区的第二个地址 inc bx ;---------------------------------------------------------- mov al,':' ;显示分号 mov [bx],al inc bx ;------------------------------------------------------- mov ah,2ch int 21h
mov al,cl ;分钟数设定 mov ah,0 call bctd push ax and al,0f0h mov cl,4 rol al,cl or al,30h
mov [bx],al inc bx pop ax and al,0fh or al,30h mov [bx],al inc bx ;------------------------------------------------------------------------- mov al,':' ;显示;号 mov [bx],al inc bx