微机原理课设_指针式屏显电子钟
计算机时钟模拟显示软件设计 微机原理课程设计

武汉理工大学《微机原理与接口技术》课程设计说明书课程设计任务书学生姓名:黎健专业班级:电气0804指导教师:张锐工作单位:自动化学院题目: 计算机时钟模拟显示软件设计初始条件:1.用于调试程序的IBM兼容PC机一台;2.安装DOS/WIN98操作系统或运行于DOS/ WIN98兼容方式;3.EDIT 等文本编辑器输入80x86汇编程序,MASM 5.0编译及链接程序。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.使用汇编语言设计一个运行于计算机的时钟模拟显示软件,软件应实现模拟显示时钟,要求至少有一种动态时钟显示效果如七段码管形状显示或旋转指针式指示效果等。
可以附加显示花边背景和日期信息。
2.说明书撰写格式应符合《课程设计说明书统一书写格式》。
时间安排:1.程序框图设计,3天2.编程,4天3.调试,3天4.编写设计报告,4天指导教师签名:年月日系主任(或责任教师)签名:年月日1武汉理工大学《微机原理与接口技术》课程设计说明书摘要汇编语言是面向机器的程序设计语言。
在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码。
这样用符号代替机器语言的二进制代码,就把机器语言变成了汇编语言。
作为最基本的编程语言之一,汇编语言的重要性毋庸置疑,因为它能够完成许多其它语言所无法完成的功能。
尤其在和硬件关系非常密切的程序或要提高运算速度的程序,即使是C语言也会有些力不从心,而汇编语言能够很好的扬长避短,最大限度地发挥硬件的性能。
最重要的是微机原理和接口技术是一门实践性强的学科,不但要求有较高的理论水平,而且还要求有实际的动手能力,其中很多的原量、规则、现象等仅仅靠学习教科书是无法完全掌握的,必须通过实践才能比较直观和深刻的理解。
本次课程设计我们组做的是计算机时钟模拟显示软件设计,要求和系统时钟一致。
程序运行成功后,页面出现数字式的时钟,数字钟的钟面为一个规则的矩形。
当从键盘上输入t时,其显示时间的格式是:××时:××分:××秒,小时为24进制,分钟和秒都是60进制;当从键盘上输入d时,其显示时间的格式是:××××年××月××日。
微机原理课程设计-数字时钟

微机原理课程设计设计题目:电子时钟班级:08电信系机电五班姓名及学号:薛鹏(***********)目录一、摘要二、引言三、电子时钟的设计:1.设计目的2.设计任务3.电路原理图四、程序设计(1)设计思路(2)设计流程图(3) 源代码五、软件调试六、设计总结和心得体会摘要:近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。
因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。
一、引言单片机是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。
单片机是把主要计算机功能部件都集成在一块芯片上的微型计算机。
它是一种集计数和多中接口于一体的微控制器,被广泛应用在智能产品和工业自动化中。
现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。
8086是Inter系列的16位微处理器,芯片上有2.9万个晶体管,采用HMOS工艺制造,用单一的+5V电源,时钟频率为5MHz~10MHz。
微机原理课程设计--数字时钟

课程设计报告课程设计名称:数字时钟系:三系学生姓名:梁文化阿龙班级:通信班学号: ************ 成绩: 100 指导教师: * * 开课时间: 2013-2014 学年 1 学期一.设计题目:数字时钟二.主要内容:编程实现时钟功能,按秒刷新,要求定位在屏幕右上角。
三.具体要求:在课程设计时,1人一组,设计报告由学生独立完成,不得互相抄袭。
教师的主导作用主要在于指明设计思路,启发学生独立设计的思路,解答疑难问题和按设计进度进行阶段审查。
学生必须发挥自身学习的主动性和能动性,主动思考问题、分析问题和解决问题,而不应处处被动地依赖指导老师。
学生在设计中可以引用所需的参考资料,避免重复工作,加快设计进程,但必须和题目的要求相符合,保证设计的正确。
学生学会掌握和使用各种已有的技术资料,不能盲目地、机械地抄袭资料,必须具体分析,使设计质量和设计能力都获得提高。
学生要在老师的指导下制定好自己各环节的详细设计进程计划,按给定的时间计划保质保量的完成个阶段的设计任务。
设计中可边设计,边修改,软件设计与硬件设计可交替进行,问题答疑与调试和方案修改相结合,提高设计的效率,保证按时完成设计工作并交出合格的设计报告。
四.进度安排五.成绩评定考核方法:现场验收(占50%),课程设计报告(占50%)。
考核内容:学习态度(出勤情况,平时表现等)、方案合理性、程序编制质量、演示效果、设计报告质量。
成绩评定:优,良,中,及格,不及格。
特别说明:如发现抄袭,按照不及格处理。
目录一.课题的功能模块的划分 (4)二.主要功能实现 (5)三.心得体会 (7)四.源程序 (8)五.上机调试 (10)六.主要参考资料 (10)一.课题的功能模块的划分显示系统时间程序可以大致分为三个模块:1.利用1ch号功能来重定位中断程序的入口地址2.调用21号中断的31h程序结束并驻留功能,使得显示时间的子程序常驻内存3.显示系统时间模块功能模块图如下:Y二.主要功能实现1.重定位入口地址;重定位中断程序的入口地址lea dx,showtimemov ax,seg showtimemov ds,axmov ax,251chint 21h2.程序驻留并结束;调用21号中断的31h程序结束并驻留功能mov ax,3100hmov dx,proclenint 21h3.显示系统时间showtime procpush axpush bxpush dspush esmov ax,csmov ds,axmov ax,0b800hmov es,axmov ax,2c00h ;调用21h号中断的2ch功能int 21h;输出时钟mov bl,':'mov bh,chcall adjustmov es:[120],almov es:[120+2],ahmov es:[120+4],bl;输出分钟mov bh,clcall adjustmov es:[120+6],almov es:[120+8],ahmov es:[120+10],bl;输出秒钟mov bh,dhcall adjustmov es:[120+12],almov es:[120+14],ahpop espop dspop bxpop axiretshowtime end显示系统时间的流程图如下:三.心得体会为期一周的课程设计就要结束了,回想这一周,我经历了许多,懂得了许多。
南京工程学院_微机课程设计_电子钟

目录
一、方案说明:软硬件系统工作原理说明,能够实现的功能说 明等............................................................................................. - 1 -
(一、)【设计要求】........................................................... - 1 (二、)【设计原理说明】................................................... - 1 -
CONTROL COUNT0 COUNT1 COUNT2 MD8255 PA8255 CTL8255 OUTBIT OUTSEG CS8259A CS8259B DATA CNT LEDBUF NUM DELAYT ZHOU HOUR MINUTE SECOND LEDMAP:
DATA SSEG
SSEG CODE
;段控制口
EQU 0D000H
;8259 地址
EQU 0D001H
SEGMENT
DB 0
DB 8 DUP(?)
;显示缓冲
DB 1 DUP(?)
;显示的数据
DB 1 DUP(?)
DB 1
DB 0
DB 0
DB 0
;八段管显示码
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
软件上主要是对时、分、秒、天的扫描显示,主要是在 DISPLAYLED 函数 里体现出来:首先将 10000000B 送至 OUTBIT 端口,即确定 LED 的哪一位显示, 再把 BX 中存储在内存中的翻译好的显示码送至 OUTSEG 短口,来确定显示什么 字符。依次将BX加1而CL减一,直至CL为0跳转而字符的译码则是在 STSRT 函数中的 LP 中完成的,以小时 HOUR 为例,将HOUR存入AH中再DIV以1 0,按“余高商低”的规则,AH中存的是小时的个位AL中村的是小时的十位, 将AL转换成显示码,并存入显示缓冲区。其他分、秒、天类似。
微机原理课程设计——电子时钟设计51318

2010级微机原理课程设计实验报告设计题目:电子时钟设计班级:电信10102班分组名单:2012-6-28目录第一章设计部分1.1 设计目的 (1)1.2设计要求 (1)1.3设计思路 (1)第二章实现部分2.1、分析论证2.1.1显示模块 (1)2.1.2时钟运算模块 (1)2.1.3对时模块 (2)2.2、原理说明 (2)2.3、设计电路图 (2)2.3.18086最小工作方式 (2)2.3.2秒脉冲发生器 (3)2.3.3时、分调整电路 (3)2.3.4.显示电路 (4)2.4、元件功能说明2.4.1.8253的主要功能 (4)2.4.2.D触发器74ls273管脚排列图及功能表介绍 (5)2.4.3单向总线驱动器74ls244功能介绍 (5)2.5、程序清单 (6)2.6、调试过程遇到问题及解决方法 (9)第三章电子时钟使用说明3.1电子时钟按键说明第四章学习心得附录参考文献 (9)第一章设计部分1.1 设计目的学习掌握protues软件功能及其使用方法熟练掌握TND86/88教学系统的基本操作和调试程序的各种指令。
熟练掌握8086CPU的使用与编程调试程序的方法。
掌握8253定时/计数器的工作原理、工作方式及其应用编程。
练习7SEG-MPX8-CA-RED数码管的显示编程方法。
1.2、设计要求利用8253定时器设计一个具有时、分、秒显示的电子时钟,并定义一个启动键,当按下该键时时钟从当前设定值(可在显示缓冲区中予置)开始走时。
1.3、设计思路电子时钟主要由显示模块、对时模块和时钟运算模块三大部分组成。
其中对时模块和时钟运算模块要对时、分、秒的数值进行操作,并且秒计算到60时,要自己清零并向分进1;分计算到60时,要自己清零并向时进1;时计算到24时,要清零。
这样,才能循环记时。
显示时利用7段显示器显示六位十进制数据。
前两个显示小时,中间两个显示分钟,后两个显示秒。
时钟的运算是利用中断来实现的,利用8253的模式三输出一定频率的方波作为触发中断的条件。
微机原理电子钟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,并建立“新日”标志,开始第二天计时。
微机原理课设数字闹钟.概要
摘要由于计算机应用越来越广泛,要求与计算机接口的外围设备越来越多,越来越复杂。
微机接口采用硬件与软件相结合的方法,使微处理器与外部世界进行最佳耦合与匹配,以在CPU与外部世界之间实现高效、可靠的信息交换。
因此,接口技术是硬件与软件的综合技术。
微机控制即微型计算机原理控制。
是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。
它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。
这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。
本文通过对一个基于微型计算机的能实现电子时钟的设计学习,详细介绍了微型计算机原理控制的应用中的数据转换显示,LED显示原理,微型计算机控制的定时中断原理。
从而达到学习、了解微机原理控制的相关指令在各方面的应用。
系统由8254、8255、8259等构成,能实现时钟显示的功能,能进行分、秒的显示。
程序主要由以下四个模块组成:主控模块,定时模块,中断模块,显示模块。
主程序模块:主控模块是系的核心模块,对8254、8255、8259进行初始化,设置中断向量。
调用中断子程序和显示子程序由软件实现。
该时钟程序由00:00:00开始计时,通过8254的分频产生10MS的方波。
定时模块:定时模块是为8259提供中断请求信号的。
由一片8254实现,选用定时器0#,工作在方式3,由于时钟应该1秒走动一次,所以输出值应为1S,其输出信号可作为8259的中断请求信号。
中断处理模块:中断模块实现动态显示的。
中断程序为时间按秒增加,并显示,只要开中断,便可实现每秒显示时间增加一秒,从而达到动态显示的效果。
显示模块:显示模块是将显示缓冲区的数值送到LED显示的功能模块,显示缓冲区是由六个字节构成,分别保存小时的高位和低位,分钟的高位和低位,秒钟的高位和低位。
硬件上由六个LED构成,软件上由扫描显示的方法实现。
关键词简单电子钟、并行接口8255、8254、8259、LED1 设计原理1.1 设计原理此次设计是通过对计数器8254设定计数值对脉冲进行计数,在程序里8254工作于计数器0,方式3。
微机原理课设数字闹钟.概要
摘要由于计算机应用越来越广泛,要求与计算机接口的外围设备越来越多,越来越复杂。
微机接口采用硬件与软件相结合的方法,使微处理器与外部世界进行最佳耦合与匹配,以在CPU与外部世界之间实现高效、可靠的信息交换。
因此,接口技术是硬件与软件的综合技术。
微机控制即微型计算机原理控制。
是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。
它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。
这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。
本文通过对一个基于微型计算机的能实现电子时钟的设计学习,详细介绍了微型计算机原理控制的应用中的数据转换显示,LED显示原理,微型计算机控制的定时中断原理。
从而达到学习、了解微机原理控制的相关指令在各方面的应用。
系统由8254、8255、8259等构成,能实现时钟显示的功能,能进行分、秒的显示。
程序主要由以下四个模块组成:主控模块,定时模块,中断模块,显示模块。
主程序模块:主控模块是系的核心模块,对8254、8255、8259进行初始化,设置中断向量。
调用中断子程序和显示子程序由软件实现。
该时钟程序由00:00:00开始计时,通过8254的分频产生10MS的方波。
定时模块:定时模块是为8259提供中断请求信号的。
由一片8254实现,选用定时器0#,工作在方式3,由于时钟应该1秒走动一次,所以输出值应为1S,其输出信号可作为8259的中断请求信号。
中断处理模块:中断模块实现动态显示的。
中断程序为时间按秒增加,并显示,只要开中断,便可实现每秒显示时间增加一秒,从而达到动态显示的效果。
显示模块:显示模块是将显示缓冲区的数值送到LED显示的功能模块,显示缓冲区是由六个字节构成,分别保存小时的高位和低位,分钟的高位和低位,秒钟的高位和低位。
硬件上由六个LED构成,软件上由扫描显示的方法实现。
关键词简单电子钟、并行接口8255、8254、8259、LED1 设计原理1.1 设计原理此次设计是通过对计数器8254设定计数值对脉冲进行计数,在程序里8254工作于计数器0,方式3。
课程设计电子时钟设计
微机原理及其接口技术课程设计题目: 8086电子时钟设计前言课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识解决实际工程设计和应用问题的能力的重要教学环节,它具有动乎、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一种较好方法。
《微机接口技术》是一门应用性、综合性、实践性较强的课程,没有实际的有针对性的设计环节,学生就不能很好的理解和掌握所学的技术知识,更缺乏解决实际问题的能力。
所以通过有针对性的课程设计,使学生学会系统地综合运用所学的理论知识,提高学生在微机应用方面的开发与设计本领,系统的掌握微机硬软件设计方法。
时钟就是一种对时间进行累计的工具,即计时。
计时的本质就是计数,只不过这里的“数”的单位是时间单位,如果把一小片一小片计时单位累计起来,就可获得一段时间。
因此,使用计数器对时钟脉冲进行计数,就是时钟实现的基本原理;再用LED数码管显示出来,并设计出几个按键用于对时钟进行调整,这样,一个完整的时钟就设计完成了。
本次课程设计要求利用8253定时器设计一个具有时、分、秒显示的电子时钟,并定义一个启动键,当按下该键的时候,时钟从当前的设定值(可以在缓冲区中设置)开始走时。
同时,再定义三个按键,分别对时、分、秒进行校正。
目录目录---------------------------------------------------- 21、电子时钟功能介绍------------------------------------- 32、电子时钟系统总体方案设计----------------------------- 42.1方案比较------------------------------------------ 42.2方案选择------------------------------------------ 43、电子时钟的工作原理----------------------------------- 53.1实现时钟计时的基本方法---------------------------- 53.2电子钟的时间显示---------------------------------- 54、硬件设计---------------------------------------------- 64.1硬件设计电路图------------------------------------ 64.1.1主电路模块----------------------------------- 64.1.2 LED显示模块--------------------------------- 64.1.3按键模块------------------------------------- 64.1.4总体电路图----------------------------------- 64.2硬件设计所用芯片介绍------------------------------ 64.2.2 8253芯片的内部结构及引脚-------------------- 84.2.3 8255A芯片的内部结构及引脚------------------- 95、软件设计--------------------------------------------- 105.1电子时钟部分程序流程框图------------------------- 105.1.1主程序流程框图--------------------------------- 105.1.2键扫子程序流程框图----------------------------- 105.1.3中断处理程序流程框图--------------------------- 105.2电子时钟总体程序--------------------------------- 106、总结与体会------------------------------------------- 10参考文献----------------------------------------------- 11附录1-------------------------------------------------- 12附录2-------------------------------------------------- 121、电子时钟功能介绍可调整运行的电子钟具有三种工作状态:"P.”状态、运行状态、调整状态。
微机原理课程设计数字时钟
微机原理课程设计学生姓名:学号:专业班级:电子信息工程课程名称:微型计算机原理及应用学年学期:2 0 1 2 — 2 0 13 学年第 1 学期指导教师:2 0 1 2 年 1 2月目录一、课设题目及目的 (4)二、设计任务 (4)三、总框图及设计流程 (4)四、源程序清单 (6)五、调试结果及显示 (19)六、课程设计总结及体味 (21)一、课设题目及目的实习题目:数字时钟程序实习目的:通过实习,使我们进一步弄懂所学到的课本知识,巩固和深化对8086系统的指令系统、中断系统、键盘/显示系统、程序设计、应用开辟等基本理论知识的理解,提高汇编语言应用于技术的实践操作技能,掌握汇编语言应用系统设计、研制的方法,培养利用科技革新、开辟和创新的基本能力,为毕业后从事与其相关的工作打下一定的基础。
二、课设任务1、在屏幕上显示一数字时钟,显示格式为HH:MM:SS2、能够实现时间的校准,按键H提示修改小时,按键M提示修改分钟,按键S提示修改秒3、按键Q退出返回到DOS三、总框图及流程开始调用清屏子程序显示系统时间四.源程序清单DATA SEGMENT;数据段开始 MESS1 DB ' *****************电子时钟***************** ',0AH,0DH DB ' *****按h 修改小时,m 修改分,s 修改秒******** ',0AH,0DH DB ' *****************按q 退出****************** ',0AH,0DH,'$' MESS2 DB '修改小时','$' MESS3 DB '修改分钟','$' MESS4 DB '修改秒钟','$' T_BUFF DB 20 DB ? DB 20 DUP(?) HOR DB ? MIN DB ? SEC DB ?键盘输入判断条件调用设置闹钟子程序Yshm修改小时修改分修改秒flag db ?DATA ENDSSTACK SEGMENTDB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,SS:STACK,DS:DATASTART:MOV AX,DA TAMOV DS,AXCALL CLEAR ;调用清屏子程序PUSH BX ;置光标位置,AH=2,BH=0,DH跟DL分别为行号与列号,并入栈保护BX MOV AH,2;0~1用于此程序最下边的在下面的两个置光标位置MOV BH,0MOV DH,0;行MOV DL,0;列INT 10HPOP BXMOV DX,OFFSET MESS1MOV AH,09HINT 21HDISPLAY: ;时间显示部份MOV BX,OFFSET T_BUFF ;送T_BUFF的偏移地址到BXMOV AH,2CH ;调用DOS时间调用功能,功能号:2CH,小时,分钟,秒数分别保存在CH,CL,DH中INT 21HMOV HOR,CHMOV MIN,CLMOV SEC,DHCALL TRANS_TIMEPUSH BX ;置光标位置,AH=2,BH=0,DH跟DL分别为行号与列号,并入栈保护BX MOV AH,2;0~1用于此程序最下边的在下面的两个置光标位置MOV BH,0MOV DH,17;行MOV DL,31;列INT 10HPOP BXLEA DX,t_buff;送T_BUFF偏移地址到DX,并调用DOS显示功能,功能号为9 MOV AH,9INT 21H;至此当前时间的显示功能结束!mov ah,2;0~1用于此程序最下边的在下面的两个置光标位置mov bh,0mov dh,18;行mov dl,0;列int 10hcall delay1mov ah,1 ;调用键盘I/O中断功能号1,获取键值到ALint 16hCMP AL,'h'JE SETTIMECMP AL,'m'JE SETTIMECMP AL,'s'JE SETTIMECMP AL,'q'JE quit ;是q键,退出程序JMP displayquit:mov ah,4chint 21hretSETTIME PROCPUSH AXPUSH BXPUSH CXPUSH DXPUSHFmov flag,alMOV AH,0CHINT 21Hcmp flag,'h'je N1CMP FLAG,'m'je N2cmp flag,'s'je N3jmp NN1: PUSH BX ;置光标位置,AH=2,BH=0,DH跟DL分别为行号与列号,并入栈保护BX MOV AH,2;0~1用于此程序最下边的在下面的两个置光标位置MOV BH,0MOV DH,19;行MOV DL,31;列INT 10HPOP BXMOV DX,OFFSET MESS2MOV AH,09HINT 21Hmov ah,2;0~1用于此程序最下边的在下面的两个置光标位置mov bh,0mov dh,17;行mov dl,31;列int 10hjmp NN2: PUSH BX ;置光标位置,AH=2,BH=0,DH跟DL分别为行号与列号,并入栈保护BX MOV AH,2;0~1用于此程序最下边的在下面的两个置光标位置MOV BH,0MOV DH,19;行MOV DL,31;列INT 10HPOP BXMOV DX,OFFSET MESS3MOV AH,09HINT 21Hmov ah,2;0~1用于此程序最下边的在下面的两个置光标位置mov bh,0mov dh,17;行mov dl,34;列int 10hjmp NN3: PUSH BX ;置光标位置,AH=2,BH=0,DH跟DL分别为行号与列号,并入栈保护BX MOV AH,2;0~1用于此程序最下边的在下面的两个置光标位置MOV BH,0MOV DH,19;行MOV DL,31;列INT 10HPOP BXMOV DX,OFFSET MESS4MOV AH,09HINT 21Hmov ah,2;0~1用于此程序最下边的在下面的两个置光标位置mov bh,0mov dh,17;行mov dl,37;列int 10hjmp NN: MOV DX,OFFSET T_BUFFMOV AH,0AHINT 21HCALL GETTIMEcmp flag,'h'je L1CMP FLAG,'m'je L2cmp flag,'s'je L3jmp LL1: MOV CH,ALMOV HOR,ALjmp LL2: MOV CL,ALMOV MIN,ALjmp LL3: MOV DH,ALMOV SEC,ALjmp LL: MOV AH,2DHMOV CL,MINMOV DH,SECMOV DL,0INT 21Hpopfpop dxPOP cXPOP bXPOP aXJMP STARTRETSETTIME ENDPGETTIME PROCLEA BX, T_BUFFADD BX,2MOV DH,[BX]INC BXMOV DL,[BX]AND DH,0FHAND DL,0FHMOV CL,10MOV AL,DHMUL CLADD AL,DLRETGETTIME ENDP;******************************************************** ;******************************************************** TRANS_TIME PROCMOV CL,10MOV AL,HORMOV AH,0DIV CLADD AL,30HADD AH,30HINC BXMOV [BX],AHINC BXMOV AL,':'MOV [BX],ALINC BXMOV AL,MINMOV AH,0DIV CLADD AL,30HADD AH,30HMOV [BX],ALINC BXMOV [BX],AHINC BXMOV AL,':'MOV [BX],ALINC BXMOV AL,SECMOV AH,0DIV CLADD AL,30HADD AH,30HMOV [BX],ALINC BXMOV [BX],AHINC BXMOV AL,'$';将字符串的结束位送至显示缓冲区的最后一位MOV [BX],ALRETTRANS_TIME ENDP;******************************************************** ;********************************************************;*****************************************************; 清屏子程序;******************************************************** CLEAR PROC NEARPUSH AX ;入栈保护现场PUSH BXPUSH CXPUSH DXMOV AX,0600H;AH=06(滚动)AL=00(全屏空白)MOV BH,0cH;设置背景颜色(1蓝色)和前景颜色(F白色)SUB CX,CXMOV DX,5F5FHINT 10HPOP DX;出栈恢复现场POP CXPOP BXPOP AXRETCLEAR ENDPDELAY1 PROC;精确延迟时间子程序MOV DX,02FFH;循环次数UP:XOR CX,CXA:NOPLOOP ADEC DXJNZ UPRETDELAY1 ENDPCODE ENDSEND START11五.调试结果及显示六.课程设计总结及体味在这次的课程设计中,我们选择的题目是电子时钟设计,在设计的过程中,我们进行了相关资料的查询。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理及应用 课程设计
设计题目: 指针式的屏显电子钟
专 业 网 络 工 程 班 级 网 络 081 学 生 刘妙曲 指导教师 王 理
2011 年 2 学期 2
目 录 一、 实验目的 …………………………………………..3 二、 实验内容及要求……………………………………3 三、 课设基本思想………………………………………3 四、 程序流程图…………………………………………4 五、 实验结果…………………..……………………….6 六、 程序源代码…………………………………………6 七、 课设心得体会………………………………………14 八、 参考文献……………………………………………14 3
一、实验目的 1)学习系统驻留的方法。 2)了解BIOS中时间参数的调用方法。 3)了解屏幕画图的方法 对于本次应用的科目微机原理与接口技术来说,因为需要应用Win32 汇编语言技术来编写代码实现功能,所以要掌握这门语言。并且要用到Windows API 接口的许多函数,所以要掌握一部分函数的调用方法及实现的功能。检验和提高汇编语言程序设计能力,和微机原理与接口技术应用方面的分析问题与解决问题的能力,掌握32位汇编语言,完成软件的设计要求、编码和测试等。
二、实验内容及要求 1)在屏幕上显示一个适当大小的椭圆形界面,椭圆形轨道上,均匀的分布着60个“点”,代表1秒~60秒的位置,凡是5倍数的“点”,应当比其他的“点”稍大。 2)以椭圆的中心为轴,画一条线代表“秒针”,采用定时中断的方式,每过一秒钟,秒钟移动一个位置,同时系统发出“嘀——嗒”的声音,如果相应的“点”能改变颜色,则动感更强。 3)定时源可以使用系统的定时源。 4)按下“Esc”键之后,结束演示。
三. 课设基本思想
1)屏幕应设置为图形方式,采用模块化编程模式,主模块显示椭圆形表盘,
并且处理时钟中断,每过一秒钟,转入一次子模块,子模块负责秒针移动的位置。 2)在着手本课题设计之前,学习掌握真设计方法,掌握顺时针方向画圆的技术,灵活运用,就可以设计出秒针的移动程序。 3)系统驻留的方法及BIOS中时间参数的调用方法见统驻留时间程序。 屏幕设置为图形方式,采用模块化编程,主模块显示界面信息,每个子模块负责一个功能,然后通过模块调用来实现。 圆及画线子模块显示圆形表盘,及时、分、秒针,然后调用秒针移动子模块式电子钟能够运行。 动子模块中,首先通过cos和sin两个功能模块来确定秒针移动的度数,其次分别对秒、分、时进行擦除重写操作,再分别对表盘及圆心进行刷新,这样就实现了时、分、秒针的动态变化。
四. 程序流程图 4
开始 显示信息 调用画线子模块画出时分秒针 调用系统实时时钟显示 模块Clk显示系统时间
调用擦除、重写及角度确 定子模块进行指针移动
调用renovate及enovate 进行表盘及圆心的刷新
接收键盘字符 是否为q 结束 Y
N 5
五、实验结果 六、程序源代码 包含的库文件及数据段的定义如下: .386 .model flat, stdcall option casemap :none
include windows.inc ; Include 文件定义 include user32.inc includelib user32.lib include kernel32.inc includelib kernel32.lib include Gdi32.inc includelib Gdi32.lib
.data? hInstance dd ? hWinMain dd ? dwCenterX dd ? ;圆心X 6
dwCenterY dd ? ;圆心Y dwRadius dd ? ;半径 ICO_MAIN equ 1000h ; Equ 等值定义 ID_TIMER equ 1 .const szClassName db '指针式屏显电子钟',0
(2)计算时钟的位置、大小的_CalcClockParam子程序: _CalcClockParam proc local @stRect:RECT invoke GetClientRect,hWinMain,addr @stRect mov eax,@stRect.right sub eax,@stRect.left ;eax = 宽度 mov ecx,@stRect.bottom sub ecx,@stRect.top ;ecx = 高度 .if ecx > eax ; 比较客户区宽度和高度,以小的值作为时钟的直径 mov edx,eax ;高度 > 宽度 sub ecx,eax shr ecx,1 mov dwCenterX,0 mov dwCenterY,ecx .else mov edx,ecx sub eax,ecx shr eax,1 mov dwCenterX,eax mov dwCenterY,0 .endif shr edx,1 mov dwRadius,edx add dwCenterX,edx add dwCenterY,edx ret _CalcClockParam endp
(3)计算时钟圆周上某个角度对应的 X 坐标, X = 圆心X + Sin(角度) * 半径的子程序_CalcX:
_dwPara180 dw 180 _CalcX proc _dwDegree,_dwRadius ;输入参数是角度_dwDegree和半径_dwRadius 7
local @dwReturn fild dwCenterX fild _dwDegree fldpi fmul ;角度*Pi fild _dwPara180 fdivp st(1),st ;角度*Pi/180 fsin ;Sin(角度*Pi/180) fild _dwRadius fmul ;半径*Sin(角度*Pi/180) fadd ;X+半径*Sin(角度*Pi/180) fistp @dwReturn mov eax,@dwReturn ret _CalcX endp
计算时钟圆周上某个角度对应的 Y 坐标,类似于上面计算X坐标,Y = 圆心Y - Cos(角度) * 半径
(4)按照 _dwDegreeInc 的步进角度,画 _dwRadius 为半径的小圆点(刻度)程序:
_DrawDot proc _hDC,_dwDegreeInc,_dwRadius local @dwNowDegree,@dwR local @dwX,@dwY mov @dwNowDegree,0 mov eax,dwRadius sub eax,10 mov @dwR,eax .while @dwNowDegree <= 360 finit invoke _CalcX,@dwNowDegree,@dwR ; 计算小圆点的圆心坐标 mov @dwX,eax invoke _CalcY,@dwNowDegree,@dwR mov @dwY,eax mov eax,@dwX ;画点 mov ebx,eax mov ecx,@dwY mov edx,ecx sub eax,_dwRadius add ebx,_dwRadius sub ecx,_dwRadius add edx,_dwRadius 8
invoke Ellipse,_hDC,eax,ecx,ebx,edx mov eax,_dwDegreeInc add @dwNowDegree,eax .endw ret _DrawDot endp
(5) 画 _dwDegree 角度的线条,半径=时钟半径-参数_dwRadiusAdjust(指针)子程序:
_DrawLine proc _hDC,_dwDegree,_dwRadiusAdjust local @dwR local @dwX1,@dwY1,@dwX2,@dwY2
mov eax,dwRadius sub eax,_dwRadiusAdjust mov @dwR,eax invoke _CalcX,_dwDegree,@dwR ; 计算线条两端的坐标 mov @dwX1,eax invoke _CalcY,_dwDegree,@dwR mov @dwY1,eax add _dwDegree,180 invoke _CalcX,_dwDegree,10 mov @dwX2,eax invoke _CalcY,_dwDegree,10 mov @dwY2,eax invoke MoveToEx,_hDC,@dwX1,@dwY1,NULL invoke LineTo,_hDC,@dwX2,@dwY2 ret _DrawLine endp
(6)调用API函数显示系统当前时间及画电子钟的指针程序: _ShowTime proc _hWnd,_hDC local @stTime:SYSTEMTIME pushad