微机原理+课程设计+数字钟
微机原理课程设计-数字时钟
微机原理课程设计设计题目:电子时钟班级: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。
微机原理课程设计电子闹钟
电子闹钟学院:姓名:学号:班级:一.系统的硬件设计和软件设计1.总体设计本系统采用单片机AT89S51作为本设计的核心控制元件,使得电路的可靠性比较高,功能也比较强大,利用7段共阴LED作为显示器件。
接入共阴LED显示器,可显示时,分钟,秒,单片机外围接有定时报警系统,定时时间到,扬声器发出报警声,提示预先设定时间到,从而控制电器的起停。
电路由下列部分组成:时钟电路、复位电路、控制电路、LED显示,报警电路,芯片选用AT89S51 单片机。
系统基本框图:2.硬件设计(1).单片机AT89C51AT89C51是一个低电压,高性能CMOS型 8位单片机,片内含4KB的可反复擦写的Flash只读程序存储器(ROM)和128 B的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C51提供了高性价比的解决方案。
AT89C51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
主要功能特性:兼容MCS-51指令系统可编程UARL通道两个16位可编程定时/计数器1个串行中断两个外部中断源共6个中断源可直接驱动LED51单片机引脚图()时钟电路单片机的时钟产生方法有两种内部时钟方式和外部时钟方式。
本系统中单片机采用内部时钟方式。
最常用的内部时钟方式是采用外接晶体和电容组成的并联谐振回路。
振荡晶体可在~之间。
电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小和振荡电路起振速度有少许影响,一般可在~之间取值。
单片机的时钟电路如图()数码管显示电路单片机中通常使用7段LED,LED是发光二极管显示器的缩写。
微机原理与接口技术课程设计报告电子钟
微机原理与接口技术课程设计报告——电子钟实验学院:计算机学院指导教师:***一实验任务及要求任务:1、掌握综合使用基本输入输出设备、通用接口芯片、专用接口芯片的方法;2、掌握实时处理程序的编制和调试方法。
要求设计一个定时显示装置,用实验仪左侧的六个LED数码管显示时间,时间显示格式为24小时制。
分秒值为59分55秒时开始报时,每秒钟蜂鸣器鸣叫一声,到整点报时停止。
用小键盘控制时钟的启停和时钟的设置,键的定义参见上图键值具体定义如下:G键(启停键)——程序启动后,按下该键时钟启动;再次按下该键,暂停计时,显示当前时间。
S键(设置键)——按下S键后,为时钟设置时、分、秒初始值。
二硬件连线键盘的控制、LED显示模块:采用74系列模块控制键盘的行信号Q_0、Q_1、Q_2、Q_3分别与开放的输入信号Q0、Q1、Q2、Q3相连,键盘的列信号P_0、P_1、P_2和开放的输出信号P0、P1、P2相连。
74芯片的片选信号CS1接地址译码信号340H, CS2接地址译码信号360H。
时间的精确定时:用8254定时器0产生25ms的中断信号;8254的片选CS连地址输出端320H,A0,A1分别连地址总线A2,A3,GATE0连+5V,CLK0连74LS393分频输出的47K输出端,OUT0连接到8259的IRQ0整点报时控制:由8255模块控制;PC0直接与蜂鸣器相连,CS_4连接到实验仪中部的地址输出端CS_4中断处理模块:由8259控制8259的片选CS-1连地址输出300H,INT1连总线输入INTR,8259模块的INT-A连总线的INTA,8259的SP/1连+5V, 8259的IRQ0连接到8254的OUT0。
三、程序流程图主程序初始化各阶段寄存器及相关变量初始化8254、8259、8255芯片设置中断向量、开放8259中断屏蔽开放处理器中断中断服务程序保护现场判断时间是否不小于59分55秒报时扫描键盘G 键?调用启停子程序S COUNT COUNT=40? ADDONE 子程序COUNT 清0显示时间,调用显示时间子程序结束中断(发EOI 命令)恢复现场中断返回四、实验源代码.486pDATA SEGMENT AT 0 USE16ORG 1000HHOUR DW ?Y YN YMIN DW ?SEC DW ?SLL DB ?COUNT DB ?DATA ENDSCODE SEGMENT USE16ASSUME CS:CODE,DS:DATAORG 1500HBEG:JMP STARTTAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,00H ;0~F 的共阴极七段译码表00H表示不显示任何东西KEYCOD DB 0EEH,0DEH,0BEH,0EDH,0DDH,0BDH,0EBH,0DBH,0BBH,0E7H,0D7H,0B7H ;行列编码值KEYV AL DB 0,1,2,3,4,5,6,7,8,9,0AH,0BH ;所有键的键面值PORT1 EQU 340H ;数码管段选端口PORT2 EQU 360H ;数码管位选端口,键盘矩阵的行列端口START: MOV EAX,60000000HMOV CR0,EAXMOV AX,DATAMOV DS,AXMOV HOUR,0203H ;小时分钟以及秒的初始化MOV MIN,0509HMOV SEC,0502HLEA BX,TABMOV SLL,0 ;开始暂停标志位置0MOV COUNT ,0 ;中断次数计数初始值为0;8255初始化,用于产生报时的脉冲MOV EAX,80808080H;控制字MOV DX,20CH ;后面的是4个8255的控制端口20C-20F (这个地址由实验台决定)OUT DX,EAX ;初始化8255,A、B、C口均为方式0输出MOV DX,20BHMOV AL,0FFHOUT DX,AL;8254初始化,用于产生周期为25ms的中断MOV AL,00110110B ;计数器0,先低后高,方式三,二进制MOV DX,32cH ;写往控制口OUT DX,ALMOV DX,320H ;计数器0写初值:47KHz*25msMOV AX,1175OUT DX,ALMOV AL,AHOUT DX,AL;8259初始化CLI :关中断MOV DX,300H ;ICW1MOV AL,00010011BOUT DX,ALMOV DX,308H ;ICW2MOV AL,08H ;IR0中断类型号为08HOUT DX,ALMOV AL,00000001B ;ICW4OUT DX,ALMOV AL,0FEH ;IR0开屏蔽OUT DX,ALXOR AX,AX ;装载中断向量MOV ES,AXMOV DI,08H*4MOV AX,OFFSET INTSRMOV ES:[DI],AXMOV AX,SEG INTSRMOV ES:[DI+2],AXSTI ;开中断JMP $INTSR PROC ;中断服务程序CMP MIN,0509H ;比较当前时间是否在59分55秒~00分00秒之间JL NEXT1CMP SEC,0505HJL NEXT1MOV DX,20BHMOV AL,00H ;蜂鸣器低有效,报时OUT DX,ALJMP NEXT2NEXT1: CMP MIN,0JNE NEXT3CMP SEC,0JNE NEXT3MOV DX,20BHMOV AL,00H ;蜂鸣器低有效,报时OUT DX,ALJMP NEXT2NEXT3: MOV DX,20BHMOV AL,0FFHOUT DX,ALNEXT2: CMP COUNT,20 ;用8255产生0.5ms的蜂鸣JLE NEXT4MOV DX,20BHMOV AL,0FFHOUT DX,ALNEXT4:CMP SLL,0JZ LOBCALL TSTARTLOB: CALL KEYCHECK ;检测有无键按下CMP AL,0AH ;启停键按下,调用启停程序JNZ NEXT5CALL TSTARTJMP NEXT6NEXT5: CMP AL,0BH ;设置键按下,调用设置时间程序JNZ NEXT6CALL SETTIMENEXT6: INC COUNT ;当COUNT直为40时,加一秒,之后置0 CMP COUNT,40 ;25ms*40=1sJB NEXT7CALL ADDONEMOV COUNT,0NEXT7: CALL SHOW ;显示时间MOV AL,20H ;发EOI命令,结束中断MOV DX,300HOUT DX,ALIRETINTSR ENDPTSTART PROC ;控制时间暂停和开始。
微机原理课程设计--数字时钟
课程设计报告课程设计名称:数字时钟系:三系学生姓名:梁文化阿龙班级:通信班学号: ************ 成绩: 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. 学生能理解微机原理中秒表时钟的基本工作原理,掌握其硬件组成和软件编程方法。
2. 学生能够掌握秒表时钟的设计思路,了解其功能模块的划分和实现。
3. 学生能够了解微机原理在实际应用中的重要性,认识到秒表时钟在日常生活和工程领域的应用价值。
技能目标:1. 学生能够运用所学知识,设计并实现一个简单的秒表时钟程序,具备基本的编程能力。
2. 学生能够通过分析问题、解决问题,培养创新思维和动手实践能力。
3. 学生能够熟练使用相关硬件设备,提高实际操作能力。
情感态度价值观目标:1. 学生通过本课程的学习,培养对微机原理的兴趣,激发学习热情,形成积极的学习态度。
2. 学生能够认识到团队合作的重要性,学会与他人协作,培养团队精神和沟通能力。
3. 学生能够在实际操作过程中,培养耐心、细心和责任心,养成良好的学习习惯。
课程性质:本课程为实践性课程,注重理论联系实际,培养学生的动手能力和创新意识。
学生特点:本年级学生已具备一定的微机原理基础知识,具有较强的学习能力和求知欲,喜欢动手实践。
教学要求:结合学生特点,以实际操作为主线,注重培养学生的编程能力和团队协作能力,提高学生的实际应用能力。
在教学过程中,关注学生的学习进度,及时调整教学策略,确保课程目标的达成。
将课程目标分解为具体的学习成果,便于后续教学设计和评估。
二、教学内容本课程教学内容主要包括以下几部分:1. 微机原理基础知识回顾:引导学生复习已学过的微机原理基础知识,如微处理器、存储器、输入输出接口等,为后续学习秒表时钟设计打下基础。
相关教材章节:第一章 微机原理概述2. 秒表时钟硬件组成:讲解秒表时钟的硬件组成,包括时钟芯片、微处理器、显示模块等,分析各部分的功能和相互关系。
相关教材章节:第三章 微机接口技术3. 秒表时钟软件编程:介绍秒表时钟的软件编程方法,包括编程语言选择、程序结构设计、功能模块划分等。
相关教材章节:第五章 嵌入式系统编程4. 实践操作:安排学生进行实际操作,设计并实现一个简单的秒表时钟程序,培养学生的动手能力和编程技巧。
(完整word版)微机原理课程设计(电子时钟)(word文档良心出品)
电子时钟课程设计一:设计背景电子数字钟的应用十分广泛,通过计时精度很高的石英晶振(也可采用卫星传递的时钟标准信号),采用相应进制的计数器,转化为二进制数,经过译码和显示电路准确地将时间“时”“分”“秒”用数字的方式显示出来。
与传统的机械钟相比,它具有走时准确,显示直观,无机械传动,无需人的经常调整等优点。
它广泛用于电子表、车站、码头、广场等公共场所的大型远距离时间显示电子钟。
二:数字钟电路设计思路1.选用8253计数器2进行1s的定时,其输出OUT1与8259的IRQ0相连,当定时到1s时产生一个中断服务程序进行时、分、秒的计数,并送入相应的存储单元;8255的A口接七段数码管的位选信号,B口接数码管的段选信号。
时、分、秒的数值通过对8255的编程可送到七段数码管上显示。
2.此程序主要由四部分组成:第一部分为最主要的部分定义显示界面;第二部分为利用延时程序,并将调用的二进制表示的时间数转换成ASCII码,并将时间数存入内存区;第三部分将存在系统内存区的时间数用七段数码管显示出来;第四部分利用循环程序分别对秒个位、秒十位、分个位、分十位与相应的规定值进行比较,结合延时程序来实现电子钟数字的跳变,从而形成走时准确的电子钟。
该程序实现了准确显示秒和分,读数准确,走时精准。
此电子钟能准确的从0时0分0秒走时到23时59分59秒,然后能自动回复到0时0分0秒循环走时。
3.基本工作原理:系统设计的电子时钟主要由显示模块、时钟控制模块和时钟运算模块三大部分组成。
以8086微处理器作CPU,用8253做定时器产生时钟频率提供一个频率为10kHz的时钟信号,要求每隔10ms完成一次扫描键盘的工作。
在写入控制字与计数初值后,每到10ms定时器就启动工作,即当计数器减到1时,输出端OUT0输出一个CLK周期的低电平,向CPU申请中断,当达到100次时,则输出端OUT1输出1s,向CPU申请中断,由8255控制一个数码管显示,当计数到60s时,则输出端OUT2向CPU申请中断,由另一数码管显示1min,同理由数码管显示1h.CPU处理,使数码管的显示发生变化。
微机原理课程设计-闹钟
微机原理课程设计说明书学院:电力学院姓名:学号:专业:______________________指导老师:目录一、设计意义 (1)二、设计任务 (1)1、设计要求 (1)2、设计原理 (1)三、硬件设计 (2)四、软件设计 (4)1、设计过程 (5)2、程序流程图 (5)3、功能模块 (5)五、设计心得 (8)附录 (9)1.设计意义“微机原理与接口技术”是一门实践性和实用性都很强的课程,学习的目的在于应用。
本课程设计是配合“微机原理与接口技术”课堂教学的一个重要的实践教学环节,它能起到巩固课堂和书本上所学知识,加强综合能力,提高系统设计水平,启发创新思想的效果。
2.设计任务一、设计要求1.从键盘输入闹铃时间(如09:45)2.程序开始记时,并在屏幕上显示时间(如08: 30: 21)并实时刷新3.时间到,则发出闹铃声,声音维持数秒,同时屏幕显示响铃提示;同时时间停止刷新;4.能处理输入错误(如闹钟响铃时间应为数字,但用户错误输入非数值型的字符)二、设计原理分析1.显示系统时间1)使用DOS功能调用(INT 21H)中的2CH中断截取系统时间,再调用显示时间的子程序把时间显示出来(例如显示当前时间为16:30:45并且如果时间数少于两位数就要在其前面加0后显示出来如04: 07: 03);2)利用端口61H中的PB4每15.08微秒触发一次的特点,通过适当的循环次数进行循环从而实现延时1秒钟;3)在延时后再循环执行步骤1从而实现时间每一秒的刷新,在屏幕上不断显示当前的时间;2.设置闹钟响铃时间与输入时的容错处理方法1)在数据段定义好字型变量HOUR、MINUTE分别用于存放响铃时的小时数与分钟数;2)设置闹钟响铃时间由于形式为12:45 (小时:分钟)为了方便进行容错处理,可以分别用一段代码实现每一位数的输入,总共需要输入五位数字。
例如,输入前两位的小时数时,在输入第一位时,判断输入的是否是从0到2范围里的一个数字,如果不是就显示错误信息并停止程序的运行;在输入小时的第二位数时,判断输入的是否是0到9范围里的一个数字,如果不是就显示错误信息并停止程序的运行;在输入第三位时(应该是冒号)再判断是否是冒号,如果不是就显示错误信息并停止程序的运行;输入第四位(即分钟数的第一位)判断输入的是否是0到5数字里的一个,如果不是就显示错误信息并停止程序的运行;输入最后一位判断是否是0到9的范围中的一个数字,如果不是就显示错误信息并停止程序的运行等等;3)每次输入如果确定输入无误就使用书本中处理输入一个十进制数常用的方法把输入的数存储到寄存器中,再把它存入相应的变量中如小时数存到变量HOUR中,分钟数存入变量MINUTE中;3.当到达闹钟响铃时间时响铃1)每次在截取系统时间前先把寄存器BX清零,截取时间后把截取到的系统时间分别与变量HOUR与变量MINUTE进行比较,如果相等,就使寄存器BX加1,这样再执行完截取系统时间后检查BX是否为2,如果是2就表示已经到达设定好的闹铃时间,就跳出显示时间的死循环,跳到响铃的循环去;2)响铃是使用DOS功能调用(INT 21H)中的2H,同时把7H放到DL寄存器中,执行一次后延时三秒(延时的方法同显示时间时所用延时方法一样)再执行一次共循环执行40次从而实现了响铃几秒钟的功能;3 .硬件设计音乐播放1. 8253功能结构:Intel8253是8086/8088微机系统常用的定时器/计数器芯片,它具有定时计数两大功能。
微机原理数字钟的设计
目录一、设计要求 (1)二、设计目的 (1)三、设计的具体实现 (1)1、系统概述 (1)2、单元电路设计 (2)2.1、8255初始化: (3)2.2、8253初始化: (3)2.3、8259初始化: (4)3、软件程序设计和调试 (5)3.1、主程序流程图: (5)3.2、电子时钟中断处理程序流程图: (6)3.3、显示模块流程图: (7)3.4、程序代码: (7)四、结论与展望 (14)五、心得体会及建议 (14)六、附录 (15)七、参考文献 (15)电子时钟的设计报告一、设计要求利用8259A中断控制器、8253定时/计数器、8255A接口芯片以及键盘和数码显示电路,设计一个电子时钟,由8253中断定时,小键盘控制电子时钟的启停及初始值的预置。
电子时钟的显示格式HH:MM:SS由左到右分别为时、分、秒,最大记时59:59:59超过这个时间时分秒位都清零从00:00:00重新开始。
1. 电子时钟具有二十四小时循环记时功能,走时要准。
2. 显示格式,时:分:秒。
3. 利用8253作为定时器。
二、设计目的通过本次课程设计学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。
通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使设计者的设计水平和对所学知识的应用能力以及分析问题解决问题的能力得到全面提高。
1. 熟练掌握8086/88教学系统的基本操作和调试程序的各种指令。
2. 掌握8259中断控制器的工作原理和应用编程方法,练习编写中断程序的方法。
3. 掌握8255的各种工作方式及其应用编程。
4. 掌握8253定时/计数器的工作原理、工作方式及其应用编程。
5. 熟悉编程及调试程序的方法。
6. 练习LED-KEYBOARD UNIT的使用方法和数码管的显示编程方法。
三、设计的具体实现1、系统概述基本工作原理:系统设计的电子时钟主要由显示模块、时钟控制模块和时钟运算模块三大部分组成。
微机原理数字钟课程设计报告
课程名称微机原理与接口技术任课教师设计题目数字钟设计班级姓名学号日期2010年12月5日目录计时时钟的设计 (3)1 设计需求分析与解决方案 (3)1.1 设计需求分析 (3)1.1.1 题目要求 (3)1.1.2 根据要求提出的问题 (3)1.2 解决问题方法及思路 (3)1.2.1 硬件设计选择部分 (3)1.2.2 软件设计分析 (5)2 硬件设计 (5)2.1 选择芯片8255 (5)2.1.1 芯片8255 A在本设计中的功能作用 (5)2.1.2 芯片8255的功能分析 (5)2.1.3 8255部分技术参数 (6)2.1.4 8255与外设相连的逻辑图(见图2-3) (7)2.2 选择器件LED (7)2.2.1 LED在本设计中的作用 (7)2.2.2 LED功能分析 (7)2.2.3 LED技术参数 (8)2.3 硬件设计思路及连接图 (9)2.3.1 硬件设计思路 (9)2.3.2 硬件接线原理图(见图2-7) (9)3 软件设计思路及程序控制流程框图 (10)3.1 软件设计思路 (10)3.2 程序流程图的相关说明 (10)3.3 程序控制流程框图(见图3-1) (10)3.4 程序清单 (12)4 上机调试过程 (17)4.1 硬件调试 (17)4.2 软件调试 (17)4.3 联机调试 (17)4.4 调试结果及问题的提出 (18)4.4.1 调试结果 (18)4.4.2 提出问题 (18)5 设计结果分析、问题讨论及总结体会 (18)5.1 课程设计结果及分析 (18)5.2 问题讨论 (18)5.3 总结体会 (19)6 参考文献 (20)计时时钟的设计1 设计需求分析与解决方案1.1 设计需求分析1.1.1 题目要求设计一个接口与七段LED显示器,显示一个计时时钟,显示初值为0,每隔一秒改变一次显示值,60s为一分钟,60min为一小时,LED显示器循环显示时、分、秒的动态值。
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方波。
合工大微机原理课程设计第6题数字钟
overD: JMP con8
recoverLED: cli ;实现从BUF知LEDbuf功能的具体代码区
push si
push cx
PUSH BX
mov LedBuf+3,00h
mov LedBuf+4,00h
mov LedBuf+5,00h
mov si,0
;;;;;;;;;;;;;;;;;;;;;;;;初始化;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
push ax
push dx
MOV DX,port33
MOV AL,36H
OUT DX,AL
MOV DX,port00
MOV AL,00H
OUT DX,AL
5. 按“E”表示时钟开始运行。
6. 程序运行时,首先按“D”设置闹铃时间,然后按“C”设置时钟的时间,再按“E”让时钟开始运行。当当前时间运行到闹铃时间时,整个七段数码管屏幕闪烁字符“8”。
注:下面的代码在设置闹钟时会产生时间误差。读者有兴趣尝试的话可以自己改改,只需要调整调整几个缓冲区,使设置闹钟时使后台依然接受中断即可,设完闹钟使其恢复即可。
CBuf db 6 dup(0fh)
buf db 6 dup(?) ;临时存放时刻
buttonC DB 02H ;若C键被按则置1
buttonD DB 03H ;若D键被按则置1
buttonE DB 00H ;若E键被按则置1
jnz overd ;若SI不等06h即小于6,则跳到con8处,继续获取键值,直至6位闹钟设置完毕
MOV BUTTOND,00H ;闹钟设置完毕,使D键标志失效,使其不会继续设置闹钟,并将取出BUF内时间标志置1
微机原理课程设计简单电子钟设计
A1
CLK0
OUT0
GATE0
图3.4 实验接线图
3.2 主程序流程图
主程序的流程图是对整个程序的逻辑的图象表示。首先是设置8254、8255、8259的各个端口地址。接着初始化各个芯片,开始计时,并通过8259中断控制时间的正确显示。在整个过程中都在检测是否有铵键响应。有则停止,没有则返回继续执行。
INC AX
MOV MSEC,AX
1、中断工作原理,定时计数原理,并行通信原理工作原理。
2、掌握8259芯片,8254芯片,8255芯片功能,结构。
3、掌握8259芯片,8254芯片,8255芯片的编程。
4、能运用所提到的芯片,设计系统并进行程序开发,满足用户需求。
1.3设计要求
1、总体内容:设计一电子时钟,能在数码管上显示时间并计时。
2、接口设计:根据题目和所用的接口电路芯片设计出完整的接口电路,并在实验系统上完成电路的连接和调试通过.
3、程序设计:要求画出程序框图,设计出全部程序并给出程序设计说明和程序注释。
4、前期完成的实验有:8259A中断控制器实验,8254定时计数器实验,8255并行接口实验。
1.4电子时钟
电子时钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。传统的设计方法有两种,一是利用组合逻辑电路和时序电路等中小规模集成电路来设计;一是利用单片机编程技术来设计。这两种设计都存在硬件复杂,设计周期长,成本高等缺点。并且本学期通过对《微型计算机原理及应用》的学习,利用掌握的知识进行实践是必要的,以巩固基础知识,培养独立操作能力。而本次课程设计要实现的功能为:利用定时器从0开始进行计时,将计时的结果显示在数码管上。每隔1秒,秒钟计时一次,到60秒,分钟加1,到60分小时加1。根据需要,需选择的芯片有8254,8259,8255,系统时钟频率1.041667MHz;
微机原理课设数字闹钟.概要
摘要由于计算机应用越来越广泛,要求与计算机接口的外围设备越来越多,越来越复杂。
微机接口采用硬件与软件相结合的方法,使微处理器与外部世界进行最佳耦合与匹配,以在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/8088CPU设计一个多功能时钟。
要求实现,日常使用时正确显示的是时、分、秒;根据需要,还可以作为秒表使用;还可以显示日期。
目录一、设计内容要求二、设计思想三、程序流程图(1)时间显示部分(2)日期显示部分(3)数字显示部分四、实验连线图(1)总体线路图(2)8284应用电路(3)74LS138片选部分(4)8255与七段数码管搭配部分电路图(5)8259功能选择部分(6)数据存储部分(7)计数电路(8)CPU的部分连接部分五、连线描述六、按键功能介绍七、心得体会八、参考文献一、设计内容与要求1、设计目的:1) 进一步建立微机系统概念、加深对系统理解和认识,提高微机系统的应用水平。
2) 进一步学习和掌握汇编语言程序的编写和应用的方法,通过较大规模程序的编写,提高汇编语言程序的水平和学习程序调试方法。
3) 进一步熟悉接口、熟悉键盘控制和七段数码管及其他芯片的使用。
2、设计任务:用8086/8088CPU设计一个多功能时钟。
要求实现,日常使用时正确显示的是时、分、秒;根据需要,还可以作为秒表使用;还可以显示日期。
二、设计思想1. 先在数据段开辟存储单元,用来存放时、分、秒、年、月、日等的信息。
这些存储单元分别对应时、分、秒,日期的年、月、日的十位和个位。
调用子程序的清屏部分。
2. 在主程序中分别对8259、8255、8259、8253进行初始化编程。
根据系统功能要求,设置操作字与方式控制字。
3. 8255的A口工作在方式0输出,B口工作在方式0输出,为基本的输入输出方式。
这部分与七段数码管搭配,显示结果。
4. 在中断服务程序中对中断次数进行统计。
当时钟在日常状态和切换到秒表功能时,当产生1次中断时,将秒的个位加1,判断是否到10,如到了则十位加1,个位清零;再判断十位是否到6,如到了则十位清零,分的个位加1,同理对分、时做相应的处理。
该电子钟为12进制的。
当电子表切换到日期功能时,先判断是否是闰年,然后判断是否是二月,最后判断是单月份还是双月份,然后根据闰年366天,闰年2月29天,不是闰年28天,当月份31天,双月份30天进行进位。
微机原理实时时钟课程设计报告书
西南科技大学微机原理课程设计题目电子实时时钟软件设计1任务实现如图所示电子日历时钟功能。
2基本要求1)可通过M键切换显示模式:日期(年、月、日)、时间(小时、分、秒)、秒表(小时、分、秒、1/100秒)、闹钟(小时、分)。
2)在秒表显示模式.可通过I键切换(启动/暂停)计时.当暂停计时时可通过A键复位。
3)在闹钟显示模式.有两种输入方式方式一:直接按格式输入时间方式二:可通过A键依次使On/Off标志、小时、分、秒闪烁或变色.这时可通过I 键切换On/Off标志或加1调整。
4)可通过esc键结束程序。
3扩展要求1)在日期显示模式.可通过A键依次使年、月、日闪烁或变色.这时可通过I键加1调整。
2)在时间显示模式.可通过A键依次使小时、分、秒闪烁或变色.这时可通过I键加1调整。
3)调整和秒表操作不影响日期和时间的准确性。
4)自定义的其它扩展功能说明:本程序为西科微机原理课程设计题目.下面的代码只实现了基本要求部分.并且秒表还存在部分问题(秒表模式修改了定时器0.结束后对时间略有影响.测试闹钟时可以直接在秒表模式下.按q键跳过秒表模式).代码仅供参考.欢迎对其繁琐处进行修改.调试。
各部分程序流程图:主函数流程图时间与日期的刷新子过程时间日期显示子过程闹钟设定子过程该过程与代码略有不同.处理on/off 位是后来添加的代码.流程图没有加入AI键输入时间方式:时间调整输入DATA SEGMENTUIS DB 0DH,0AH,10 dup(0),50 DUP('*'),'$'UIE DB 0DH,0AH,10 dup(0),50 DUP('*'),'$';界面字符MSG1 DB "THE DATA IS $"MSG2 DB "THE TIME IS $"MSGIN DB "PLEASE CHOOSE INPUT METHODS:",0DH,0AHDB 21 DUP(" "),"PRESS A FOR A/I METHOD,OR FOR DIRECT METHOD$" MSGDIR DB "PLEASE INPUT LIKE THIS: OO:00",0DH,0AHDB 21 DUP(" "),"PRESS ENTER TO CONFIRM $" MSGWARN DB "ERROR!PLEASE ENTER AGAIN$"MSGAI DB "PRESS a TO CHANGE POSITION ",0DH,0AHDB 21 DUP(" "),"i TO CHANGE VALUE,ENTER TO CONFIRM $" MSGSEC DB "PRESS i TO START AND STOP ",0DH,0AHDB 21 DUP(" "),"q TO QUIT,a TO CLEAR IF IT HAS STOPED $" NULINE DB 25 DUP(?),'$' ;清空行KSBUF DB 6,0,6 DUP(?)KEYNUM DB ?MODE DB ?DAY DB ?MON DB ?YEAR DW ?SEC DB ?MSEC DB ?MIN DB ?HOUR DB ?BEEPHOUR DB 0 ,0BEEPMIN DB 0,0SWIOFF DB "FF$"SWION DB "N $"SETSTR DB "00:00 OFF/ON",'$'WSTR DB "00:00:00 ",'$'BFLAG DB 0SFLAG DB 0INISEG DW 0INIOFF DW 0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXCALL CLEARCALL CREATUIMOV MODE,0CALL SOUNDAGAIN: CALL REFRESH ;刷新时间日期;******BFALG 为闹钟与秒表标志位。
微机原理课设数字闹钟.概要
摘要由于计算机应用越来越广泛,要求与计算机接口的外围设备越来越多,越来越复杂。
微机接口采用硬件与软件相结合的方法,使微处理器与外部世界进行最佳耦合与匹配,以在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。
微机原理课程设计报告_数字时钟的实现(附代码)
合肥工业大学计算机与信息学院课程设计课程:微机原理与接口技术设计专业班级:计算机科学与技术x班学号:姓名:一、设计题目及要求:【课题6】数字时钟1.通过8253 定时器作产生秒脉冲定时中断。
在中断服务程序中实现秒、分、小时的进位(24小时制)。
2.在七段数码管上显示当前的时分秒(例如,12 点10 分40 秒显示为121040)。
3.按“C”可设置时钟的时间当前值(对准时间)。
二、设计思想:总体思想:1、功能概述:实验箱连线:本实验建立在Dais实验箱基础上完成的基本连线及程序如下:138译码器:A,B,C,D,分别连接A2,A3,A4,GS;y0连接8253的CS片选信号;y1连接8259的CS片选信号;8253连线:分频信号T2接8253的CLK0;8253的OUT0接8259的IR7;8253的gate信号接+5V;8259连线:8259的数据线接入数据总线;本程序包括显示模块,键盘扫描模块,时间计数模块,设置模块等几个模块,(1)程序运行后,LED显示000000初始值,并且开始计数(2)按C键进行设置初始时间,考虑到第一个数只能是0,1,2,当第一个数显示2时第二个数只能显示0~4,同理下面各位应满足时钟数值的合理的取值;(3)在手动输入初始值时,按D键进行回退1位修改已设置值,连续按D键可以全部进行删除修改。
2、主程序设计主程序中完成通过调用子程序完成对8253及8259的初始化,对8259进行中断设置。
主要在显示子程序和键盘子处理程序之间不断循环,8253每一秒给8259一个刺激,当8259接受到刺激后会给CPU一个中断请求,CPU会转去执行中断子程序,而中断子程序设置成时间计数加,即完成电子表的整体设计。
详细流程图见图三-1。
3、LED显示子程序设计本程序显示部分用了6个共阳极LED作为显示管,显示程序要做到每送一次段码就送一次位码,每送一次位码后,将位码中的0右移1位作为下次的位码,从而可以实现从左到右使6个LED依次显示出相应的数字。
微机原理课程设计数字时钟
微机原理课程设计学生姓名:学号:专业班级:电子信息工程课程名称:微型计算机原理及应用学年学期: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)。
目录一、设计要求 (1)二、设计所用芯片。
2三、设计思想。
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2四、设计所用芯片结构 (3)1、8259A芯片的内部结构及引脚 (3)2、8279芯片的内部结构及引脚 (4)3、8253芯片的内部结构及引脚 (5)五、系统各个模块设计 (6)1、系统总体设计 (6)2、主控模块 (7)3、CPU模块 (7)4、定时模块 . . . . . . . . . . . . . . . . . . . . . . . . 95、中断处理模块。
96、显示模块和小键盘模块 (10)六、程序流程图 (12)1、主程序流程图 (12)2、定时中断服务程序流程图 (14)七、设计总结 (15)附录一:参考书目 (15)附录二:总体图 . . . . . . . . . . . . . . . . . . . . . . . .15 附录三:源代码............17一、设计要求利用试验平台提供的硬件资源设计一个电子表。
该电子表以时、分、秒的形式实时显示当前时间,且具有校表功能,利用小键盘与标准时间校准。
掌握8255、8259、8253芯片使用方法和编程方法,通过本次课程设计,学以致用,进一步理解所学的相关芯片的原理、内部结构、使用方法等,学会相关芯片实际应用及编程,系统中采用8088微处理器完成了电子钟的小系统的独立设计。
同时并了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰。
二、设计所用芯片8253定时器:用于产生秒脉冲,其输出信号可作为中断请示信号送IRQ2。
8279接口芯片:实现键盘输入和显示输出。
8259中断控制器:用于产生中断。
LED:六个LED用于显示时:分:秒值。
小键盘:用于控制设置。
三、设计思想1、设计思想本系统设计的电子时钟以8088微处理器作为CPU,用8253做定时计数器产生时钟频率,8279做可编程并行接口显示时钟和键盘电路,8259做中断控制器产生中断。
在此系统中,8253的功能是定时,接入8253的CLK信号为周期性时钟信号。
8253采用计数器0,工作于方式2,使8253的OUT0端输出周期性的负脉冲信号。
即每隔20ms,8253的OUT0端就会输出一个负脉冲的信号,此信号接8259的IR2,当中断到50次数后,CPU即处理,使液晶显示器上的时间发生变化。
其中8259只需初始化ICW1,其功能是向8259表明IRx输入是电平触发方式还是上升沿触发方式,是单片8259还是多片8259。
8259接收到信号后,产生中断信号送CPU处理。
2、设计原理利用定时器8253和8259以及键盘和数码显示电路,设计一个电子时钟,由8253中断定时,小键盘控制电子时钟的启停及初始值的预置。
电子时钟的显示格式HH:MM:SS由左到右分别为时、分、秒,最大记时59:59:59超过这个时间时分秒位都清零从00:00:00重新开始。
设计一个定时显示装置,用六个数码管显示时间,用小键盘控制计时,设置和显示时间。
系统一运行就从00点00分00秒开始计时,并在数码管上显示时、分、秒当前值,而且,可以用键盘设置当前时间。
基本工作原理:每百分之一秒对百分之一秒寄存器的内容加一,并依次对秒、分、小时寄存器的内容加一;六个数码管动态显示时、分、秒的当前值。
C键:置初值,显示00:00:00G键:显示动态变化(启动表);D键:显示静态不变(表停止);E键:终止程序,返回DOS;P键:设置时:分:秒的值四、设计所用芯片结构1、8259A芯片的内部结构及引脚中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。
它将中断源优先排队、辨别中断源以及提供中断矢量的电路集中于一片中。
因此无需附加任何电路,只需对8259A编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。
在MD微机系统中,8259芯片工作于单片方式。
8259A引脚图8259引脚图如图3.3,各引脚功能如下。
D7~D0——八条双向数据线;WR(低电平有效)——写输入信号;RD(低电平有效)——读输入信号;CS(低电平有效)——片选输入信号;A0——地址信号;INT——中断请求信号;INTA(低电平有效)——中断响应信号;CAS0~CAS2——级联信号,形成一条专用8259A总线,以便多片8259A的级联;SP/EN——从编程/允许级联。
在缓冲方式中,可用做输出信号以控制总线缓冲器的接收和发送。
在非缓冲方式中,作为输入信号用于表示主片还是从片;IR0~IR7——外部中断请求输入线。
要求输入的中断请求信号是由低电平到高电平的上升沿(并保持高电平到CPU 响应时为止)或者是高电平。
8259中断矢量地址与中断信号之间的关系如表3.1所示:中断序号 0 1 2 3 4 5 6 7 功能调用 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH 矢量地址 20H ~ 23H 24H ~ 27H 28H ~ 2BH 2CH ~ 2FH 30H~ 33H34H ~ 37H 38H ~ 3BH 3CH ~ 3FH 说明 时钟 键盘 可用 可用 串行口 可用 可用 可用2、8279芯片的内部结构及引脚Intel8279是一种通用的可编程序的键盘、显示接口器件,单片器件就能够完成键盘输入和显示控制两种功能。
键盘部分提供一种扫描的工作方式,可以和具有64个按键的矩阵键盘相连接,能对键盘不断扫描,自动消抖,自动识别按下的键并给出编码,能对双键或n 键同时按下实行保护。
显示部分为发光二极管、荧光管及其它显示器提供了按扫描方式工作的显示接口,它为显示器提供多路复用信号,可以显示多达16位的字符或数字。
8259A 中断矢量表DB0~DB7:双向数据总线,用来传送8279与CPU之间的数据和命令。
CLK:时钟输入线,用以产生内部定时的时钟脉冲。
RESET:复位输入线,8279复位后被置为字符显示左端输入,二键闭锁的触点回弹型式,程序时钟前置分频器被置为31,RESET信号为高电平有效。
CS:片选输入线,低电平有效,单片机在CS端为低时可以对8279读/写操作。
A0:缓冲器低位地址,当A0为高电平时,表示数据总线上为命令或状态,当为低电平时,表示数据总线上为命令或状态,当为低电平时,表示数据总线上为数据。
RD:读信号输入线,低电平有效,将缓冲器读出,数据送往外部总线。
WR:写信号输入线,低电平有效,将缓立器读出,将数据从外部数据总线写入8279的缓冲器。
3、8253芯片的内部结构及引脚8253可编程定时/计数器是Intel公司生产的通用外围芯片之一,有3个独立的十六位计数器,技术频率范围为0~2MHZ,它所有的技术方式和操作方式都通过编程控制。
8253的功能用途是:(1)延时中断(2)可编程频率发生器(3)事件计数器(4)二进倍频器(5)实时时钟(6)数字单稳(7)复杂的电机控制器8253有六种工作方式:(1)方式0:计数结束中断(2)方式1:可编程频率发生器(3)方式2:频率发生器(4)方式3:方波频率发生器(5)方式4:软件触发的选通信号(6)方式5:硬件触发的选通信号8253引脚图如图3.3示,各引脚功能如下。
D7~D0——八条双向数据线;WR(低电平有效)——写输入信号;RD(低电平有效)——读输入信号;CS(低电平有效)——片选输入信号;A0、A1——片内寄存器地址输入信号;CLK——计数输入,用于输入定时基准脉冲或计数脉冲;OUT——输出信号,以相应的电平指示计数的完成,或输出脉冲波形;GATE——选通输入(门控输入),用于启动或禁止计数器的操作,以使计数器和计测对象同步。
2、8253端口地址8253端口地址表五、系统各个模块设计1、系统总体设计本系统设计的电子钟以8088微处理器作为CPU,用8253做定时计数器产生时钟频率,8279做可编程并行接口显示时钟和键盘电路,8259做中断控制器产生中断。
在此系统中,8253的功能是定时,接入8253的CLK信号为周期性时钟信号。
8253采用计数器0,工作于方式2,使8253的OUT0端输出周期性的负脉冲信号。
即每隔20ms,8253的OUT0端就会输出一个负脉冲的信号,此信号接8259的IR2,当中断到50次数后,CPU即处理,使液晶显示器上的时间发生变化。
程序由以下模块组成:系统共有5个功能模块,分别为,主控模块,显示模块,定时模块,中断模块,小键盘模块。
系统总体框图如下:系统总体框图2、主控模块主控模块是系的核心模块,对8253、8279进行初始化,设置中断向量,扫描键盘根据按键值作相应的处理。
主要由软件实现。
它的主要功能是调用其它模块对系统工作进行协调,它的主要功能是读小键盘输入键值并执行要做的工作,如果键值为C则将显示初始值00:00:00置入显示缓冲,并调用显示模块显示。
如果键值为G则开中断,(中断程序为秒最低位加一)。
如果键值为D则关中断,停止动态显示。
如健值为P则连续六次调用小键盘模块,将键值依次存入显示缓冲。
并调用显示模块显示。
如果健值为E,则终止程序,返回DOS。
3、CPU模块8088最小工作模式,作为整个电子表的核心控制部分。
在8088最小模式中,硬件连接上有如下特点:(1) MN/MX 端接+5V,决定了8088工作在最小模式。
(2)有1片8284A,作为时钟发生器。
(3)有3片8282,用来作为地址锁存器。
8282是典型的锁存器芯片,因为它是8位的,所以需要3片8282作为锁存器。
(4)当系统中所连的存储器和外设系统较多时,需要增加数据总线的驱动能力,这时,要用两片8286作为总线收发器。
8088 构成的CPU4、定时模块定时模块是为8259提供中断请求信号的。
由一片8253实现,选用定时器0#,工作在方式3,由于时钟应该1秒走动一次,所以输出值应为1S,其输出信号可作为8259的中断请求信号。
定时模块原理图5、中断处理模块中断模块实现动态显示的,硬件为一片8259,由于中断请求信号为每秒一次,中断程序该为时间按秒增加,并显示,只要开中断,便可实现每秒显示时间增加一秒,从而达到动态显示的效果。
中断模块原理图6、显示模块和小键盘模块显示模块是将显示缓冲区的数值送到LED显示的功能模块,显示缓冲区是由六个字节构成,分别保存小时的高位和低位,分钟的高位和低位,秒钟的高位和低位。
硬件上由六个LED构成,软件上由扫描显示的方法实现。
小键盘模块送入主控模块的子功能模块。
由软件和硬件实现,硬件上由小键盘和8279互连,将小键值由8279送入主控模块。