河南农业大学-10级电子时钟(汇编语言)实验报告

合集下载

电子钟实验报告

电子钟实验报告

电子钟前言单片机自1976年由Intel公司推出MCS-48开始,迄今已有二十多年了。

由于单片机集成度高、功能强、可靠性高、体积小、功耗地、使用方便、价格低廉等一系列优点,目前已经渗入到人们工作和生活的方方面面,几乎“无处不在,无所不为”。

单片机的应用领域已从面向工业控制、通讯、交通、智能仪表等迅速发展到家用消费产品、办公自动化、汽车电子、PC机外围以及网络通讯等广大领域。

单片机有两种基本结构形式:一种是在通用微型计算机中广泛采用的,将程序存储器和数据存储器合用一个存储器空间的结构,称为普林斯顿结构。

另一种是将程序存储器和数据存储器截然分开,分别寻址的结构,一般需要较大的程序存储器,目前的单片机以采用程序存储器和数据存储器截然分开的结构为多。

本文讨论的单片机多功能定时器的核心是目前应用极为广泛的51系列单片机,配置了外围设备,构成了一个可编程的计时定时系统,具有体积小,可靠性高,功能强等特点。

不仅能满足所需要求而且还有很多功能可供开发,有着广泛的应用领域。

第1章电子钟功能及总体方案的介绍 .............. 错误!未定义书签。

1.1电子钟功能介绍 ............................. 错误!未定义书签。

1.1.1基本功能要求............................ 错误!未定义书签。

1.1.2扩展功能要求............................ 错误!未定义书签。

1.2方案介绍 ................................... 错误!未定义书签。

1.2.1计时方案................................ 错误!未定义书签。

1.2.2键盘/显示方案........................... 错误!未定义书签。

第2章电子钟的工作原理 ........................ 错误!未定义书签。

电子时钟实验报告

电子时钟实验报告

电⼦时钟实验报告综合实验报告(电⼦钟)⼀、实验⽬的主要⽬的是回顾《微机原理与应⽤》以及其他课程所学知识,并能灵活运⽤到实验当中。

掌握8253A、7段数码管,8259A、8255A的应⽤。

⼆、实验设备STAR 系列实验仪⼀套、PC 机⼀台。

三、实验内容利⽤STAR ES598PCI实验仪设计⼀个具有时、分、秒显⽰功能的电⼦时钟,并定义⼀个启动键,当按下该键时时钟从当前设定值开始⾛时,时间数据可⽤数码管显⽰。

(1) 利⽤8253计数器对标准时钟信号计数,分别实现时、分、秒计时(2) 键盘设定⼀个按键,当按键按下则从已设定的时间开始计时(已设定的时间值可在显⽰缓冲区中预置)(3) 时、分、秒的数值均显⽰在数码管上四、实验步骤1、主机连线说明:E5 区:CLK —— B2 区:2ME5 区:CS、A0 —— A3 区:CS5、A0E5 区:A、B、C、D —— G5 区:A、B、C、DB3 区:CS、A0 —— A3 区:CS1、A0B3 区:INT、INTA —— ES8088:INTR、INTAB3 区:IR0 —— C5 区:OUT0C5 区:CS(8253)、A0、A1 —— A3 区:CS2、A0、A1C5 区:GATE0 —— C1 区:VCCC5 区:CLK0 —— B2 区:62.5K2、运⾏程序,按G5 区的F 键,设置时钟初值;3、观察G5 区数码管上显⽰的时间是否正确。

五、实验流程图设置时间⼦程序:8253⼦程序:六、实验程序.MODEL TINYEXTRN Display8:NEAR, GetKeyA:NEAR, GetKeyB:NEAR IO8259_0 EQU 0F000HIO8259_1 EQU 0F001HCon_8253 EQU 0E003HT0_8253 EQU 0E000H.STACK 200.DATAhalfsec DB 0 ;0.5秒计数Sec DB 0 ;秒Min DB 0 ;分hour DB 0 ;时buffer DB 8 DUP(0) ;显⽰缓冲区,8个字节buffer1 DB 8 DUP(0) ;显⽰缓冲区,8个字节bNeedDisplay DB 0 ;需要刷新显⽰number DB 0 ;设置哪⼀位时间bFlash DB 0 ;设置时是否需要刷新.CODESTART: MOV AX,@DATAMOV DS,AXMOV ES,AXNOPmov sec,0 ;时分秒赋为00:00:00mov min,0mov hour,0MOV bNeedDisplay,1 ;显⽰初始值CALL Init8253CALL Init8259CALL WriIntverSTIMAIN: CALL GetKeyA ;按键扫描JNB Main1CMP AL,0FH ;设置时间JNZ Main1CALL SetTimeMain1: CMP bNeedDisplay,0JZ MAINCALL Display_LED ;显⽰时分秒MOV bNeedDisplay,0 ;1s定时到刷新转速Main2: JMP MAIN ;循环进⾏实验内容介绍与测速功能测试SetTime PROC NEAR LEA SI,buffer1CALL TimeToBufferMOV Number,0Key: CMP bFlash,0JZ Key2LEA SI,buffer1LEA DI,bufferMOV CX,8REP MOVSBCMP halfsec,0JNZ FLASHMOV BL,numberNOT BLAND BX,07HLEA SI,bufferMOV BYTE PTR [SI+BX],10H ;当前设置位置产⽣闪烁效果FLASH: LEA SI,buffer CALL Display8MOV bFlash,0Key2: CALL GetKeyAJNB KeyCMP AL,0EH ;放弃设置JNZ Key1JMP ExitKey1: CMP AL,0FHJZ SetTime8SetTime1: CMP AL,10JNB Key ;⽆效按键CMP number,0JNZ SetTime2CMP AL,3 ;调整时的⼗位数JNB KeyMOV buffer1 + 7,ALJMP SetTime7SetTime2: CMP number,1JNZ SetTime3CMP buffer1 + 7,2JB SetTime2_1 ;修改后可以在设置时间时,设置时钟为04到09之间的数值 CMP AL,4 JNB KeySetTime2_1: MOV buffer1 + 6,ALINC numberJMP SetTime7SetTime3: CMP number,3JNZ SetTime4CMP AL,6 ;调整分的⼗位数JNB KeyMOV buffer1 + 4,ALJMP SetTime7SetTime4: CMP number,4JNZ SetTime5MOV buffer1 + 3,AL ;调整分的个位数INC numberJMP SetTime7SetTime5: CMP number,6JNZ SetTime6CMP AL,6 ;调整秒的⼗位数JB SetTime5_1JMP KeySetTime5_1: MOV buffer1 + 1,ALJMP SetTime7SetTime6: MOV buffer1,AL ;调整秒的个位数SetTime7: INC numberCMP number,8JNB SetTime8MOV bFlash,1 ;需要刷新JMP KeySetTime8: MOV AL,buffer1 + 1 ;确认MOV BL,10MUL BLADD AL,buffer1MOV sec,AL ;秒MOV AL,buffer1 + 4MUL BLADD AL,buffer1 + 3MOV min,AL ;分MOV AL,buffer1 + 7MUL BLADD AL,buffer1 + 6CMP al,18h ;修改后可以解决时间设置时,时钟设置为24以上的数值 JNB exit MOV hour,AL ;时JMP ExitExit: RETSetTime ENDP;hour min sec转化成可显⽰格式TimeToBuffer PROC NEARMOV AL,secXOR AH,AHMOV BL,10DIV BLMOV [SI],AHMOV [SI + 1],AL ;秒MOV BYTE PTR [SI + 2],10H ;这位不显⽰MOV AL,minXOR AH,AHDIV BLMOV [SI + 3],AHMOV [SI + 4],AL ;分MOV BYTE PTR [SI + 5],10H ;这位不显⽰MOV AL,hourXOR AH,AHDIV BLMOV [SI + 6],AHMOV [SI + 7],AL ;时RETTimeToBuffer ENDP;显⽰时分秒Display_LED PROC NEAR LEA SI,bufferCALL TimeToBufferLEA SI,bufferCALL Display8 ;显⽰RETDisplay_LED ENDP;0.5s产⽣⼀次中断Timer0Int: PUSH AXPUSH DXMOV bFlash,1INC halfsecCMP halfsec,2JNZ Timer0Int1MOV bNeedDisplay,1MOV halfsec,0INC secCMP sec,60JNZ Timer0Int1MOV sec,0INC minCMP min,60JNZ Timer0Int1MOV min,0INC hourCMP hour,24JNZ Timer0Int1MOV hour,0Timer0Int1: MOV DX,IO8259_0 MOV AL,20HOUT DX,ALPOP DXPOP AXIRETInit8253 PROC NEARMOV DX,Con_8253MOV AL,34HOUT DX,AL ;计数器T0设置在模式2状态,HEX计数 MOV DX,T0_8253 MOV AL,12HOUT DX,ALMOV AL,7AHOUT DX,AL ;CLK0=62.5kHz,0.5s定时RETInit8253 ENDPInit8259 PROC NEARMOV DX,IO8259_0MOV AL,13HOUT DX,ALMOV DX,IO8259_1MOV AL,08HOUT DX,ALMOV AL,09HOUT DX,ALMOV AL,0FEHOUT DX,ALRETInit8259 ENDPWriIntver PROC NEARPUSH ESMOV AX,0MOV ES,AXMOV DI,20HLEA AX,Timer0IntSTOSWMOV AX,CSSTOSWPOP ESRETWriIntver ENDPEND START七、实验结果⼋、实验⼼得通过这两天的实习使我对微机原理有了更深⼊的了解,原来只是停留在想象中的,就像⼀些编写的程序也只是通过⾃我检查来看程序是否错误,有些问题很难发现,但是通过这两天的实习,使原本空洞的知识进⼊了实际的操作中,特别是对对电⼦钟的实验发现微机原理可以实验很多东西,我们现实中的很多东西都是通过微机原理的编程实现的,⽐如⼗字路⼝的红绿灯、数字式温度计、语⾳模块、光照强度的测试……,切实体验到了微机原理的功能强⼤以及它的重要性。

《汇编语言》实验报告

《汇编语言》实验报告

《汇编语言》实验报告实验名称:汇编语言实验报告实验目的:通过实验了解汇编语言的基本概念、语法结构和程序设计方法,掌握汇编语言的编写方法。

实验时间:2024年1月1日实验地点:实验室一、实验背景汇编语言是计算机硬件和软件之间的桥梁,通过汇编语言可以直接操作计算机的底层硬件。

汇编语言是一种低级语言,使用汇编语言可以实现对计算机内存、寄存器等硬件资源的直接操作,从而实现程序的功能。

本实验通过编写汇编语言程序,加深对汇编语言的理解。

二、实验过程1. 确定实验环境:使用DOSBox模拟DOS环境进行汇编程序编写和调试。

2. 编写第一个汇编程序:编写一个简单的汇编程序,将字符串“Hello, World!”输出到屏幕上。

3.程序分析:a.定义要输出的字符串,将字符串存储在数据段中。

b.设置段寄存器,将数据段地址加载到DS寄存器中。

c.设置显示模式和光标位置。

d.将字符串逐个字符输出到屏幕上。

e.关闭显示模式。

4. 编译运行:使用汇编语言的编译器将汇编程序转换成机器码,并在DOSBox中运行程序。

5.调试程序:根据程序运行结果和分析,调试程序中存在的错误,并进行改正。

三、实验结果与分析经过多次编写和调试,我们成功实现了将字符串“Hello, World!”输出到屏幕上的功能。

通过程序分析和调试过程,加深了对汇编语言的理解和掌握。

四、实验总结通过本次实验,我们深入了解了汇编语言的基本概念、语法结构和程序设计方法。

通过实际编写汇编语言程序,对汇编语言的编写方法有了更加深入的认识。

同时,通过调试程序的过程,我们也提高了自身的问题解决能力和分析能力。

在今后的学习和工作中,我们将继续学习和深入研究汇编语言,提高自己的编程能力和创新思维能力。

总体而言,本次实验给我们带来了很大的收获,我们以后将更加努力地学习汇编语言,提高自己的编程水平,为以后的学习和工作做好充分的准备。

电子时钟设计实验报告

电子时钟设计实验报告

编号符号引脚说明编号符号引脚说明1 VSS 电源地9 D2 Data I/O2 VDD 电源正极10 D3 Data I/O3 V L 液晶显示偏压信号11 D4 Data I/O4 R S 数据/命令选择端12 D5 Data I/O5 R/W 读/写选择端13 D6 Data I/O6 E 使能信号14 D7 Data I/O7 D0 Data I/O 15 BLA背光源正极8 D1 Data I/O 16 BLK 背光源负极单片机电子时钟设计报告一、设计任务本次课程设计的电子时钟电路,是基于单片机STC89C52、时钟芯片和液晶显示,运用C语言编程实现。

电子时钟可以显示日期的年、月、日和时间的时、分、秒,具有复位功能。

二、系统硬件设备及芯片简介数字电子钟系统设计已经成熟,但是目前系统设计时基本都是采用 LED 作为显示电路,造成硬件电路复杂、功耗高、产品体积庞大等特点;液晶显示模块由于具有低功耗、寿命长、体积小、显示内容丰富、价格低、接口控制方便等优点,因此在各类电子产品中被极广泛地推广和应用。

字符型液晶显示模块是一类专门用于显示字母、数字、符号等点阵式液晶显示模块。

本系统设计采用字符型液品显示模块 LCD1602 作为显示器件,这样不仅简化了系统的硬件设计,而且极大地提高了系统的可靠性。

1 LCD1602 简介字符型液晶显示模块 LCD1602 已经是单片机应用设计中最常用的信息显示器件。

LCD1602 可以显示两行,每行16 个字符,采用+5V 电源供电,外围电路配置简单,价格便宜,具有很高的性价比。

2 LCD1602 功能介绍2.1 引脚功能LCD1602 采用标准 14 脚(无背光)或 16 脚(带背光)接口,各引脚功能见表 1。

表1 引脚功能2.2 LCD1602 读写指令LCD1602 读写指令较多且较复杂,具体使用可以查相关资料,下面仅列出最常用的的一些命令:①写指令 38H:显示模式设置;②写指令 08H:显示关闭;③写指令 01H:显示清屏;④写指令 06H:显示光标移动设置;⑤写指令 0CH:显示开及光标设置。

VHD语言数字时钟实验设计

VHD语言数字时钟实验设计

河南农业大学课程设计报告设计题目:VHD语言实现数字钟实验报告学院:理学院专业:电子信息科学与技术学号:08班级:07级电科(2)班姓名:贾秋峰电子邮件日期:2011年01月成绩:指导教师:河南农业大学理学院课程设计任务书学生姓名贾秋峰指导教师贾树恒林爱英学生学号08 专业电子信息科学与技术题目VHD语言实现数字钟实验报告任务与要求一、设计实验说明:1、数字时钟主要由:分频器、扫描显示译码器、六十进制计数器(或十进制计数器与6进制计数器组成)、六十进制计数器(或十进制计数器与6进制计数器组成)、十二进制计数器(或二十四进制计数器)电路组成。

在整个时钟中最关键的是如何获得一个精确的1H Z计时脉冲,2、数字时钟显示由时(12或24进制任选)、分(60进制)、秒(60进制)组成,利用扫描显示译码电路在六个数码管显示。

二、数字时钟组成及功能:1、分频率器:用来产生1H Z计时脉冲;2、十二或二十四进制计数器:对时进行计数3、六十进制计数器:对分和秒进行计数;4、六进制计数器:分别对秒十位和分十位进行计数;5、十进制计数器:分别对秒个位和分个位进行计数;6、扫描显示译码器:完成对7字段数码管显示的控制;三、系统硬件要求:1、时钟信号为5MHz;2、FPGA芯片型号EPM7128LC84—15、EP1K30TC144—3或EP1K100QC208—3(根据实验箱上FPGA芯片具体选择);3、8个7段扫描共阴级数码显示管;4、按键开关(清零、启动、保持);四、硬件实现将时序仿真正确的文件下载到实验箱中的EPM7128LC84—15、EP1K30TC144—3或EP1K100QC208—3中,通过合适的管脚分配,将相应的管脚连接起来,验证设计是否完成设计要求;五、要求1、精确显示时、分、秒。

2、数字时钟要求:具有对时、分、秒置数功能(利用秒脉冲置数或利用拨码开关、键盘直接置数);3、能够完成整点报时功能。

(选作)开始日期年月日完成日期年月日课程设计所在单位理学院电子科学系VHD语言实现数字钟实验报告一.实验目的在MAX+plusII软件平台上,熟练运用VHDL语言。

电子时钟实验报告

电子时钟实验报告

电子时钟实验报告电子时钟实验报告_电子时钟电子时钟实验报告一、实验目的学习8051定时器时间计时处理、按键扫描及LED数码管显示的设计方法。

二、设计任务及要求利用实验平台上4个LED数码管,设计带有闹铃功能的数字时钟,要求:1.在4位数码管上显示当前时间,显示格式为“时时分分”;2.由LED闪动做秒显示;3.利用按键可对时间及闹玲进行设置,并可显示闹玲时间。

当闹玲时间到蜂鸣器发出音乐,按停止键使可使闹玲声停止。

三、工作原理及设计思路利用单片机定时器完成计时功能,定时器0计时中断程序每隔5ms中断一次并当作一个计数,每中断一次计数加1,当计数200次时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。

为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要数据锁存器等较多硬件,可采用动态显示法实现LED显示。

闹铃声由交流蜂鸣器产生,电路如右图,当P1.7输出不同频率的方波,蜂鸣器便会发出不同的声音。

四、电路设计及描述(1) 硬件连接部分:在ZKS-03单片机综合实验仪上有四位共阳LED数码管,其标号分别为LED1~LED4。

为了节省MCU的I/O口,采用串行接口方式,它仅占用系统2个I/O口,即P1.0口和P1.1口,一个用作数据线SDA,另一个用作时钟信号线CLK,它们都通过跳线选择器JP1相连。

由于采用共阳LED数码管,它的阴极分别通过限流电阻R20~R27连接到控制KD_0~KD_Q7。

这样控制8个发光二极管,就需要8个I/O口。

但由于单片机的I/O口资源是有限的,因此常采用实验电路所示的串并转换电路来扩充系统资源。

串并转换电路其实质是一个串入并处的移位寄存器,串行数据再同步移位脉冲CLK的作用下经串行数据线SDA把数据移位到KD_0~KD_Q7端,这样仅需2根线就可以分别控制8个发光二极管的亮灭。

而P0口只能作地址/数据总线,P2口只能作地址总线高8位,P3.0、P3.1作为串行输入、输出接口,实验仪上单片机可用作I/O的口仅有:P1.0--P1.7 ,8位;P3.2、P3.3、P3.4、P3.5 ,4位。

汇编语言课程设计-电子闹钟教学总结

汇编语言课程设计-电子闹钟教学总结

电子闹钟一、课题内容和要求题目描述:利用汇编语言实现一个可以在显示器上显示时、分、秒的电子时钟,并能提供整点报时功能。

基本要求:(1)设计一个基本的具有显示时、分、秒的电子时钟。

(2)到整点或预定的报警时间,能够以不同的音乐进行报时,可以自行设置闹钟报警时间;(3)实物演示时要求讲出程序原理和设计思想;(4)程序运行良好、界面清晰。

提高要求:设计一个具有钟面、分针、秒针的指针式钟表,在圆盘上有均匀分布的60 根刻度,对应小时的刻度用不同颜色的长刻度区别,并且将12、3、6、9 对应的拉丁文绘制于表盘外。

设计提示:(1)指针式钟表的绘制。

将屏幕设置成图形显示方式,通过画点、画线,画圆等基本程序完成钟表的绘制。

表盘圆周上刻度线段两端点坐标计算是钟表绘制的核心部分。

(2)秒针、分针、时针的转动。

是经过一定的延时时间,通过在下一位置重新画一个,在原来的位置用背景色覆盖的方法实现。

(3)音乐的演奏。

利用CPU支持的外围电路8254与8255,通过汇编程序改变8255 的PB0,PB1 口,接通扬声器,使得计算机能够发出一定频率的声音, 同时通过8254的与8255连接的2号计数器控制指定频率, 从而达到控制扬声器的音乐的效果。

通过建立适当的延时程序达到一定时间后则改变2号计数器产生的方波的频率,实现音乐程序的演奏。

二、需求和思路分析经分析本次程序设计的主要内容主要分为如下的几个模块:当前时间的获取并显示, 码制转换,设定闹钟报鸣的时间, 不同频率的闹铃声,钟表的绘制和并实现动态等模块。

其中钟表的绘制和动态走动部分比较难是本次课程设计的提高部分, 且改模块可单独形成一个模块, 所以放到最后进行考虑1时间的获取可以用INT 21H的2CH功能,该功能调用DOS寸间调用功能, 功能号:2CH,小时,分钟,秒数分别保存在,保存的形式是以二进制的形式,故显示时要2码制转化利用ASCII码与二进制码的关系ASCII==进制+30H3闹钟鸣叫主要利用8254的二号计数器和8255的PB0和PB1来设定4 闹钟的表盘,指针的绘制,并实现时针,分针,秒针的走动。

电子时钟实验报告

电子时钟实验报告

电子时钟实验报告电子时钟实验报告引言:电子时钟是一种使用数字显示时间的现代化设备,它在我们的日常生活中起着重要的作用。

本次实验旨在通过制作一个简单的电子时钟,了解其工作原理和基本构造,并对其进行测试和改进。

一、实验材料和设备本次实验所需材料和设备包括:电子元件(电阻、电容、二极管等)、集成电路、面包板、电源、示波器、万用表等。

二、实验步骤1. 准备工作首先,我们需要准备好所需的电子元件和设备,并将它们连接在面包板上。

确保连接正确无误后,将面包板连接到电源上。

2. 时钟电路设计我们设计的电子时钟采用了数字时分秒的显示方式。

为了实现这一功能,我们使用了一个集成电路来控制时钟的计时和显示功能。

通过连接电阻和电容,我们可以调整时钟的频率和精度。

3. 时钟电路测试在完成时钟电路的设计后,我们需要进行测试以确保其正常工作。

首先,我们使用示波器来观察时钟信号的波形,并检查其频率和稳定性。

然后,我们使用万用表来测量电压和电流,确保电路中没有异常。

4. 时钟显示改进为了提高时钟的显示效果,我们可以对电子时钟进行改进。

例如,我们可以增加背光功能,使时钟在光线较暗的环境下也能清晰可见。

此外,我们还可以增加闹钟功能,使时钟能够发出声音提醒我们。

5. 结果分析通过实验,我们成功制作了一个简单的电子时钟,并对其进行了测试和改进。

我们发现,该时钟具有较高的准确性和稳定性,能够准确显示时间。

同时,通过添加背光和闹钟功能,我们提高了时钟的实用性和便利性。

6. 实验总结本次实验使我们更加深入地了解了电子时钟的工作原理和构造。

通过实践,我们不仅学会了如何制作一个简单的电子时钟,还了解了如何测试和改进它。

这对我们理解电子时钟的应用和发展具有重要意义。

结论:通过本次实验,我们成功制作了一个简单的电子时钟,并对其进行了测试和改进。

我们深入了解了电子时钟的工作原理和构造,并发现其具有较高的准确性和稳定性。

通过实践,我们不仅学会了如何制作一个电子时钟,还了解了如何测试和改进它。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

姓名成绩LLGKFGS河南农业大学课程设计报告题目:电子时钟显示设计课程:微型计算机原理专业:电子信息工程班级: 10电信(1)班学生姓名: LL GKF GS学号:指导教师: ZJH完成日期: 2012.12.30机电工程学院目 录第一章 前言 (3)1.1实习目的…………………………………………………………………………………31.2实习要求 (3)1.3设计所需设备 (3)第二章 软件系统介绍 (4)2.1 DOS及BIOS功能调用 (4)2.2 DOS及BIOS功能中断的用途和好处 (4)2.3 DOS及BIOS功能中断的调用方法 (4)2.4介绍中断技术 (4)第三章 系统介绍…………………………………………………………………………………53.1流程图 (5)3.2程序设计原理 (5)第四章 实习设计分析 (7)第五章 系统实现………………………………………………………………………………85.1程序源代码清单及详细注释 (8)5.2实验结果…………………………………………………………………………………第六章总结................................................................................................参考文献 (14)第一章前言1.1实习目的汇编语言是面向机器的程序设计语言。

在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码。

这样用符号代替机器语言的二进制代码,就把机器语言变成了汇编语言。

汇编语言能够最大限度的发挥硬件的性能。

本次实习主要是为了了解定时/计数器和中断的使用。

掌握微机常用的输入输出方式及接口技术。

掌握一定的汇编语言,增强自己动手的能力。

掌握程序设计的一般方法和步骤,能调试和修改程序。

1.2实习要求根据实习的要求,可知需要设计的计算机时钟模拟显示程序是基于汇编语言的WINDOWS应用程序设计,程序运行成功后,页面出现数字式的时钟。

首先在数据段开辟一显示缓冲区,用来存储系统时间。

调用DOS中断,返回系统时间,并将来返回的二进制时间转换成ASCII码,方便时间显示时的调用。

分别将来小时数、分钟数、秒数存入显示缓冲区,并最终存入一结束字符号’$’。

调用DOS字符串显示功能将时间显示出来。

并调用屏幕I/O中断,定位光标的开始位置,结合着将时间显示在我们预先定义好的位置上。

由于获取了的系统时间不会自动刷新,所以我们要设计成刷新的方式来不断获取系统的时间,这样就形成了会跳动的电子钟了。

时间显示的刷新要配合延时程序进行,为了得到良好的显示效果,延时程序要尽量接近1秒,但又不能超过一秒,所以本程序调用了一段较精确的时间延迟程序,屏幕显示延迟一段时间后再跳回到初始位置,再显示,由此循环下去。

程序的最后还设计一了个按“ESC”键就退出的功能,采取了判断键值的方法。

为了显示的美观,还设计一个字符图界面,通过显示字符串的方法显示出来。

本程序具有很强的扩展功能,我们可以在此基础上进行一些输入、输出扩展,显示的扩展,比如可以做成计时器,并设计一个精美的运动的图形界面,时间到了会自动调用PC喇叭发出报警声等等。

但是由于时间的原因,所以只做了核心的部分,这不得不说是一个遗憾。

此模拟时钟外观简洁明了,功能和实际运用到的时钟的基本功能一样,用起来非常方便、快捷。

1.3设计所需设备PC机 emu8086模拟仿真软件第二章 软件系统介绍一、DOS及BIOS功能调用系统软件中提供的功能调用有两种,一种称为DOS功能调用(也叫低级调用)。

用户程序在调用这些系统服务程序时,不是用CALL命令,而是采用软中断指令INT n来实现。

另外,用户程序也不必与这些服务程序代码连接,因为这些系统服务程序在系统启动时已被加载到内存中,程序入口也被放到中断向量表中。

DOS和BIOS功能调用,会使编写的程序简单、清晰,可读性好 而且代码紧凑,调试方便。

通过调用DOS系统的8好功能实现控制字符的输入,通过调用延时程序实现十分之一秒的定时。

通过调用DOS系统的2号功能实现光标定位,调用DOS系统的2号实现符号输出,通过调用DOS系统的9号功能实现字符串的输出。

二、DOS及BIOS功能中断的用途和好处DOS是PC机上最重要的操作系统,它和BIOS一样包括有近百个设备管理、目录管理和文件管理程序,是一个功能齐全、使用方便的中断例行程序的集合。

使用DOS操作比使用相应功能的BIOS操作更简易,而且对硬件的依赖性更少些。

BIOS是系统提供的基本输入输出例行程序,它包括系统加电自检,引导装入,主要I/O设备的处理程序以及接口控制等功能模块。

BIOS有两个基本用途:一是给不同系列的微处理器提供兼容的I/O服务,使程序员在编程时不必考虑不同型号机器的具体差别。

二是给程序员提供文件化的,直接对硬件进行操作的子功能,程序员可不必了解硬件操作的具体细节。

所以利用BIOS功能编写程序简单方便,可读性好。

三、DOS及BIOS功能中断的调用方法BIOS功能与DOS功能都是通过软件中断调用的。

在中断调用前需要把功能号装入AH寄存器,把子功能号装入AL寄存器,除此而外,通常还需在CPU寄存器中提供专门的调用参数。

一般地说,调用DOS或BIOS功能时,有以下几个基本步骤:(1)把调用参数装入指定的寄存器中;(2)如需功能号,把它装入AH;(3)如需子功能号,把它装入AL;(4)按中断号调用DOS或BIOS中断;(5)检查返回参数是否正确。

四、介绍中断技术简单来说,中断是一种使CPU中止正在执行的程序而转去处理特殊事件的操作。

这些引起中断的事件称为中断源,它们可能是来自外设的输入输出请求,也可能是计算机的一些异常事故或其它内部原因。

更具体地,我们定义CPU中断为这样一个过程:在特定的事件(中断源,也称中断请求信号)触发下引起CPU暂停正在运行的程序(主程序),转而先去处理一段为特定事件而编写的处理程序(中断处理程序),等中断处理程序处理完成后,再回到主程序被打断的地方继续运行。

一方面,有了中断功能,PC系统就可以使CPU和外设同时工作,使系统可以及时地响应外部事件。

而且有了中断功能,CPU可允许多个外设同时工作。

这样就大大提高了CPU的利用率,也提高了数据输入、输出的速度。

另一方面,有了中断功能,就可以使CPU及时处理各种软硬件故障。

计算机在运行过程中,往往会出现事先预料不到的情况或出现一些故障,如电源掉电、存储出错,运算溢出等等。

计算机可以利用中断系统自行处理,而不必停机或报告工作人。

第三章系统介绍(1)流程图清屏调用DOS中断取系统时间2进制转ACSII码将转换好的系统时间存入时间显示缓冲区显示时间与界面ESC键按下?调用延时子程序返回DOS程序结束YN(二).程序设计原理:调用DOS中断,返回系统时间,并将来返回的二进制时间转换成ASCII码,方便时间显示时的调用。

分别将来小时数、分钟数、秒数存入显示缓冲区,并最终存入一结束字符号’$’。

调用DOS字符串显示功能将时间显示出来。

并调用屏幕I/O中断,定位光标的起始位置,结合着将时间显示在我们预先定义好的位置上。

由于获取了的系统时间不会自动刷新,所以我们要设计成刷新的方式来不断获取系统的时间,这样就形成了会跳动的电子钟了。

时间显示的刷新要配合延时程序进行,为了得到良好的显示效果,延时程序要尽量接近1秒,但又不能超过一秒,所以本程序调用了一段较精确的时间延迟程序,屏幕显示延迟一段时间后再跳回到初始位置,再显示,由此循环下去。

程序的最后还设计一了个按“ESC”键就退出的功能,采取了判断键值的方法。

为了显示的美观,还设计一个字符图界面,通过显示字符串的方法显示出来。

本程序具有很强的扩展功能,我们可以在此基础上进行一些输入、输出扩展,显示的扩展,比如可以做成计时器,并设计一个精美的运动的图形界面,时间到了会自动调用PC喇叭发出报警声等等。

但是由于时间的原因,所以只做了核心的部分,这不得不说是一个遗憾。

本设计借用EMU 8086仿真平台。

第四章:实习设计分析(一)程序原理:程序先调用系统时间,然后将返回的二进制数转化成ASCII码,再通过dos显示功能显示出来,并通过循环不断刷新显示的时间。

在二进制转化成ASCII码的过程中,我进一步地了解到,在转化过程中,二进制数首先转化为双四位的BCD码,再将高四位低四位分别相加30H,从而转化为ASCII码,此时要对照书本的附录了解电脑cup如何将ASCII码的信息转换成显示字符。

(二)时间刷新:我们的程序是不断对显示屏进行刷新的,所以我们调用了bctd程序,这是一个精确的计时程序,计数时间约为1秒,然后我们用了jmp display指令,刷新显示屏,从而达到时间的每秒显示。

(三)屏幕显示:开始做完程序的时候由于采用了光标定位的方法,发现运行了程序后显示光标不停地在不同的位置上跳动,严重影响了程序的可看性。

检查了解到光标的跳动跟程序的刷新频率还有人眼的视觉残象成影原理有关,只要系统的刷新频率大于1/25秒,那么人眼就会认为图象在改变,这跟电影为什么要设成25帧/秒的播放速率的原理是一样的。

这样一来,就必须设计一较为精确的延时程序来改善画面的显示了,只要不让屏幕刷新得太快就可以打到要求,具体的显示时间是通过延时程序里的DX值决定的,通过调整DX的值,我们发现当DX等于04FF的时候显示效果是最好的。

(四)系统退出:开始本程序是使用了DOS中断的键盘功能调用,可是当加了比较跳转指令后整个程序就停了在那里,最后换成了键盘I/O功能调用,问题得到解决。

5第五章:系统实现一、程序源代码清单及详细注释;name: ELECTRONIC CLOCK;design by lianglong gongshuai gaokefandata segmentmess1 db 'Press ESC button to quit ',0ah,0dhdb ' ',0ah,0dhdb ' ',0ah,0dhdb ' ',0ah,0dhdb ' ELECTRONIC CLOCK ',0ah,0dhdb ' ********** ',0ah,0dh db ' ********** ',0ah,0dhdb ' Henan Agricultural University',0ah,0dhdb ' design by lianglong gongshuai gaokefan ',0ah,0dhdb ' ',0ah,0dhdb ' ',0ah,0dhdb ' ','$'mess2 db '',0ah,0dh,'$'t_buff db 20 ;在数据段开辟一时间显示缓冲区data endsstack segmentdb 100 dup(?)stack endscode segmentassume cs:code,ss:stack,ds:datamain:call clear ;调用清屏子程序display: ;----------------------------时间显示部分--------------mov ax, datamov ds,axmov bx,offset t_buff ;送t_buff的偏移地址到BXmov ah,2ch ;调用DOS时间调用功能,功能号:2cH,小时,分钟,秒数分别保存在CH,CL,DH中int 21hmov al,ch ;小时数设定mov ah,0call bctd ;调用进制转换子程序push axand al,0f0h ;选取al高四位mov cl,4 ;设置右循环的次数rol al,cl ;右循环or al,30h ;加30h得到ACSII码mov [bx],al ;将得到的结果送到t_buff缓冲区inc bx ;BX自加1,指针指向下一个缓冲区的下一个地址pop axand al,0fh ;选取低四位,道理同上or al,30hmov [bx],al ;将转换后的低四位值送入缓冲区的第二个地址inc bx;----------------------------------------------------------mov al,':' ;显示分号mov [bx],alinc bx;-------------------------------------------------------mov ah,2chint 21hmov al,cl ;分钟数设定mov ah,0call bctdpush axand al,0f0hmov cl,4rol al,clor al,30hmov [bx],alinc bxpop axand al,0fhor al,30hmov [bx],alinc bx;-------------------------------------------------------------------------mov al,':' ;显示;号mov [bx],alinc bx;-------------------------------------------------------------------------mov ah,2ch ;秒设定int 21hmov al,dhmov ah,0call bctdpush axand al,0f0hmov cl,4rol al,clor al,30hmov [bx],alinc bxpop axand al,0fhor al,30hmov [bx],alinc bx;----------------------------------------------------------------------mov al,'$' ;将字符串的结束位送至显示缓冲区的最后一位mov [bx],al;------------------------------------------------------------------------push bx ;置光标位置 ,AH=2,BH=0,DH跟DL分别为行号与列号,并入栈保护BXmov ah,2mov bh,0mov dh,11mov dl,33int 10hpop bxlea dx,t_buff ;送t_buff偏移地址到DX,并调用DOS显示功能,功能号为9 mov ah,9int 21hpush bx ;置光标位置mov ah,2mov bh,0mov dh,0mov dl,0int 10hpop bxlea dx,mess1mov ah,9int 21hpush bx ;置光标位置mov ah,2mov bh,0mov dh,17mov dl,21int 10hpop bxlea dx,mess2mov ah,9int 21h;-----------------------------call delay1mov ah,1 ;按任意键结束,调用键盘I/O中断功能号1,获取键值到AL int 16hcmp al,1bhjz quit ;是ESC键的话就跳转jmp displayquit:mov ah,4chint 21hret;-------------------------------bctd proc near;二进制转BCD码子程序;AX输入参数;AX输出参数,存放调整过的BCD码;mov dx,axmov ax,0mov cx,16 ;设循环次数bctd1:clc ;清进位标志Crcl dx,1 ;通过进位的循环右移adc al,al ;带进位加法daa ;加法的十进制调整xchg al,ah ;交换高,低八位adc al,aldaaxchg al,ahloop bctd1 ;循环,次数保存在CX里retbctd endp;-------------------------------------------clear proc nearpush ax ;入栈保护现场push bxpush cxpush dxmov ax,0600h;ah=06(滚动)al=00(全屏空白) mov bh,6ah ;背景颜色(6),绿色前景(a)sub cx,cxmov dx,5f5fhint 10hpop dx ;出栈恢复现场pop cxpop bxpop axretclear endp;-----------------------------------------delay1 PROC ;精确延迟时间子程序MOV DX,04ffh ;循环次数up: XOR CX,CXa: NOPLOOP aDEC DXJNZ upRETdelay1 ENDP;----------------------------code endsend main二、实验结果点击运行后,出现运行结果如下:第六章总结心得体会:经过以上步骤,课程设计所要求设计的电子钟显示设计软件便成功完成了,它能显示数字式的时钟,并且能设置初值和时钟进制。

相关文档
最新文档