微机原理课程设计(电子时钟)

合集下载

微机原理课程设计电子闹钟

微机原理课程设计电子闹钟

电子钟设计1任务要求1.1显示位置:屏幕中央.1.2日期显示格式"时:分:秒.1.312/24时制可调.1.4在显示屏上显示提示语“CURRENT TIME IS:”和当前时间.2工作原理1时钟起始时间的设置先调用DOS操作系统模块9,在显示屏上显示提示语“TIME SYSTEM IS:”,输入时制12或24后,显示“CURRENT TIME IS:”,再调用DOS操作系统模块10,提示要输入时钟的起始时间,输入时间的格式是“时:分:秒”。

输入的时间以字符串形式存放在已定义的存储器缓存区内,继而调用TRAN1转换子程序和MUL10乘10子程序,将存放在存储器缓存区内的ASCII字符转换为压缩BCD码,并将时、分、秒的值放在寄存器CH、DH、DL中。

2延时程序调用延时TIME延时中断服务程序,累加到存放秒值的寄存器DL中,并进行十进制调整。

在累加的过程中,不断地对时、分、秒值进行比较,秒不能等于60,分不能等于60,时不能等于24。

秒等于限制值时,则使秒值为0分值加1;分等于限制值时,则使分值为0时值加1;时等于限制值时,则使时值为0;时、分、秒值都不超过限制值时,就转显示屏输出。

3时间显示调用DOS操作系统模块9,可用来显示存储器内字符串。

由于显示的字符必须为ASCII码,因为要调用TRAN2转换子程序将寄存器CH、DH、DL内压缩BCD码字符串转换成ASCII字符串,字符串最后以字符“$”结束,并按时、分、秒的顺序送存储器缓冲区内。

调用DOS 操作系统模块9,(DS:DX)应指向字符串首址。

程序一旦进入运行,就将不间断地在显示屏显示时间,要想程序停止运行,可同时在键盘按下CTRL和BREAK二键。

4程序堆图5程序清单DATA SEGMENTBUFFER DB 10 ;设置输入字符串用缓冲区 DB ?DB 10 DUP(?)TS DB 'TIME SYSTEM IS:$'CT DB 'CURRENT TIME IS:$'PM DB 'PM $'AM DB 'AM $'KEEPIP DW 0KEEPCS DW 0SR DB ?HOUR DB ?DAT ENDSSTA SEGMENT PARA STACK 'STACK'STAPN DB 100 DUP(?)TOP EQU LENGTH STAPNSTA ENDSCOD SEGMENTSTART PROC FARASSUME CS:COD,DS:DAT,SS:STAMOV AX,DATAMOV DS,AXMOV AX,STAMOV SS,AXMOV AX,TOPMOV SP,AXMOV AH,35H ;设置1CH中断MOV AL,1CHINT 21H ;段地址放入ES,偏移地址放入BXMOV KEEPIP,BX ;保偏移地址存MOV KEEPCS,ES ;保存段地址PUSH DSMOV DX,OFFSET TIMEMOV AX,SEG TIMEMOV DS,AXMOV AL,1CHMOV AH,25H ;设置中断功能调用INT 21HPOP DSMOV DX,OFFSET TS ;DOS功能模块,显示字符串MOV AH,9INT 21HMOV AH,1 ;DOS功能模块,从键盘输入字符INT 21HMOV AH,1INT 21HMOV SR,ALMOV DL,0AH ;"换行"MOV AH,2INT 21HMOV DL,0DH ;"回车"MOV AH,2INT 21HMOV DX,OFFSET CT ;DOS功能模块,显示字符串,提示从键盘输入MOV AH,9INT 21HMOV DX,OFFSET BUFFERMOV AH,10 ;DOS功能模块,从键盘输入字符串到缓冲区INT 21HMOV BX,OFFSET BUFFER+2CALL TRAN1 ;将输入的ASCII码转换为BCD码INC BXINC BXCALL TRAN1INC BXINC BXCALL TRAN1MOV BX,OFFSET BUFFER+2MOV AL,[BX]CALL MUL10 ;将BCD码转换为压缩的BCD码MOV CH,ALINC BXINC BXMOV AL,[BX]CALL MUL10MOV DH,ALINC BXINC BXMOV AL,[BX]CALL MUL10MOV DL,ALAGAIN: PUSH CXMOV CX,18STI ;开中断W: CMP CX,0JNE WCLIPOP CXMOV AL,DLADD AL,1 ;"秒"加1DAAMOV DL,ALCMP AL,60H ;"秒"与60比较JNE DISPY ;小于60S,转显示程序MOV DL,0 ;等于60S, "秒"值为0,"分"+1MOV AL,DHADD AL,1DAAMOV DH,ALCMP AL,60H ;"分"于60比较JNE DISPYMOV DH,0MOV AL,CHADD AL,1DAAMOV CH,ALMOV AL, SRCMP AL,32HJNE NEXTJMP DISPYNEXT: MOV AL,CHMOV HOUR,CHCMP AL,24HJNE DISPYMOV CH,0DISPY: CALL IOCLRCALL IOSET1CALL STARCALL IOSET2CALL STARCALL IOSETMOV BX,OFFSET BUFFERMOV AL,SRCMP AL,32HJNE NEXT2CALL AD12MOV AL,HOURJMP NEXT1NEXT2: MOV AL,CH ;"时"值转换成ASCII码NEXT1: CALL TRAN2 ;将压缩BCD码转换成ASCII码MOV AL,':'MOV [BX],ALINC BXMOV AL,DH ;"分"值转换成ASCII码CALL TRAN2INC BXMOV AL,':'MOV [BX],ALINC BXMOV AL,DL ;"秒"值转换成ASCII码CALL TRAN2INC BXMOV AL,'$' ;显示字符串结束码MOV [BX],ALPUSH BXPUSH CXPUSH DXMOV DX,OFFSET BUFFERMOV AH,9 ;DOS功能模块,显示字符串INT 21HPOP DXPOP CXPOP BXJMP AGAINCLIPUSH DSMOV DX,KEEPIPMOV AX,KEEPCSMOV DS,AXMOV AH,25HMOV AL,1CHINT 21HPOP DSSTIRETSTART ENDPMUL10 PROC ;将BCD码转换为压缩的BCD码ADD AL,ALDAAMOV CL,ALADD AL,ALDAAADD AL,ALADD AL,CLDAAMOV CL,ALINC BXMOV AL,[BX]ADD AL,CLRETMUL10 ENDPTRAN1 PROC ;ASCII码转换成BCD码MOV AL,[BX]AND AL,0FHMOV [BX],ALINC BXMOV AL,[BX]AND AL,0FHMOV [BX],ALRETTRAN1 ENDPTRAN2 PROC ;将压缩BCD码转换成ASCII码MOV CL,ALSHR AL,1SHR AL,1SHR AL,1SHR AL,1OR AL,30HMOV [BX],ALINC BXMOV AL,CLAND AL,0FHOR AL,30HMOV [BX],ALRETTRAN2 ENDPIOCLR PROC ;调用BIOS,清除全屏幕PUSH CXPUSH DXPUSH BXPUSH AXMOV AX,0600HMOV BH,02SUB CX,CXMOV DX,184FHINT 10HPOP BXPOP DXPOP CXRETIOCLR ENDPTIME PROCDEC CXIRETTIME ENDP ;调用BIOS,设置屏幕光标在中央PUSH DXPUSH BXPUSH AXMOV AH,02SUB BH,BHMOV DX, 0C23HINT 10HPOP AXPOP BXPOP DXRETIOSET ENDPIOSET1 PROCPUSH AXPUSH BXPUSH DXMOV DX,0A1AHMOV BH,00MOV AH,02INT 10HPOP DXPOP BXPOP AXRETIOSET1 ENDPIOSET2 PROCPUSH AXPUSH BXPUSH DXMOV DX,0E1AHMOV BH,00MOV AH,02INT 10HPOP BXPOP AXRETIOSET2 ENDPSTAR PROCPUSH AXPUSH BXPUSH CXPUSH DXMOV AL,3DHMOV BH,0MOV BL,0CHCMP HOUR,24HJNZ XMOV HOUR,0HX: MOV CX,WORD PTR HOUR INT 10HPOP DXPOP CXPOP BXPOP AXRETSTAR ENDPAD12 PROCPUSH DXMOV HOUR,CH MOV AL,SRCMP AL,32HJNE ZHMOV AL,HOURCMP AL,24HJNE NEXT3MOV CH,0MOV HOUR,CHJMP S12NEXT3: CMP AL,12HJBE S12MOV DX,OFFSET PMMOV AH,9INT 21HMOV AL,HOURMOV DH,12HSUB AL,DHDASMOV HOUR,ALJMP ZHS12: CMP AL,12HJNE ZMOV DX,OFFSET PMMOV AH,9INT 21HJMP ZHZ: MOV DX,OFFSET AMMOV AH,9INT 21HZH: POP DXRETAD12 ENDPCOD ENDSEND STAR6设计时遇到的问题及解决方法在课程设计中遇到的最大的困难是如何利用软、硬件配合的方式产生中断,对中断向量表的装载还比较模糊,对中断的初始化、具体设置、中断返回还不是很清楚,程序设计一度陷入停滞状态,不知如何是好.于是我又重新翻阅了我们的学习课本,也就是电子工业出版社的《微机原理与接口技术(基于16位机)》,重点研究了第9章《中断》,通过对这一章的学习,我终于对中断有了详细的认识,在设计程序时也容易了很多。

微机原理课设---指针式的屏显电子钟

微机原理课设---指针式的屏显电子钟

微机原理与接口技术(B)课程设计设计题目:指针式的屏显电子钟专业软件工程班级软件122学生指导教师起始时间2015-06-29——2015-07-032015 年春季学期设计任务题目:指示针的屏显电子钟1)在屏幕上显示一个适当大小的椭圆形界面,椭圆形轨道上,均匀的分布着60个“点”,代表1秒~60秒的位置,凡是5倍数的“点”,应当比其他的“点”稍大。

2)以椭圆的中心为轴,画一条线代表“秒针”,采用定时中断的方式,每过一秒钟,秒钟移动一个位置,同时系统发出“嘀——嗒”的声音,如果相应的“点”能改变颜色,则动感更强。

3)定时源可以使用系统的定时源。

按下“Esc”键之后,结束演示。

个人分工:曹晗:设计API函数框架的调用和代码的编写,设计表盘上画点的算法,以及代码编写。

翟李欣:设计系统总体的流程图,编写计算圆点坐标以及程序中的画线函数。

评语(教师填写)目录一、实验目的 (3)二、实验内容及要求 (3)三、课设基本思想 (3)四、系统程序流程图 (5)五、个人分工 (6)1.分工一 (6)2.分工二 (11)六、程序源代码 (16)七、实验结果 (32)八、心得体会 (33)九、参考文献 (34)一、实验目的1)学习系统驻留的方法。

2)了解BIOS中时间参数的调用方法。

3)了解屏幕画图的方法对于本次应用的科目微机原理与接口技术来说,因为需要应用Win32 汇编语言技术来编写代码实现功能,所以要掌握这门语言。

并且要用到Windows API 接口的许多函数,所以要掌握一部分函数的调用方法及实现的功能。

检验和提高汇编语言程序设计能力,和微机原理与接口技术应用方面的分析问题与解决问题的能力,掌握32位汇编语言,完成软件的设计要求、编码和测试等。

二、实验内容及要求1)在屏幕上显示一个适当大小的椭圆形界面,椭圆形轨道上,均匀的分布着60个“点”,代表1秒~60秒的位置,凡是5倍数的“点”,应当比其他的“点”稍大。

基于微机原理电子时钟课程设计报告书

基于微机原理电子时钟课程设计报告书

目录一、课程设计要求及目的 (2)二、开发环境及设备 (2)1、设计环境 (2)2、设计所用设备 (2)三、设计思想与原理 (2)1、设计思想 (2)2、设计原理 (3)1、容 (3)2、要求 (3)3、设计环境 (4)4、设计所用设备 (4)三、设计所用芯片结构 (4)1、8259A芯片的部结构及引脚 (4)2、8255芯片的部结构及引脚 (5)3、8255端口地址 (6)4、8254芯片的部结构及引脚 (6)5、8254引脚图如图3示,各引脚功能如下。

(7)四、具体模块设计 (8)1、概述 (8)2、主程序模块 (8)3、小键盘模块 (9)4、显示模块 (10)5、定时模块 (10)6、中断处理模块 (10)7、芯片引脚 (11)五、程序流程图 (12)1、主程序流程图如图6所示 (12)2、键盘扫描程序流程图:(KEY)如图7所示 (13)3、中断处理程序流程图如图8所示: (14)六、心得体会 (15)附录一:参考书目 (15)附录二相关程序 (16)一、课程设计要求及目的1、用8255的A口驱动六个七段数码管(LED)的字段,C口驱动六位七段数码管(LED)的为控制端,右侧两位显示分值,左侧两位显示秒值,2、数码管采用动态扫描方式,用8253做定时器(采用查询方式),每位显示的时间<5ms,扫描频率>50HZ。

3以5ms为基本时间单位,计数产生秒时间值,秒计数到60时对分计数,分计数到60时对时计数。

二、开发环境及设备1、设计环境PC机一台、windows XP系统、实验箱、导线若干。

2、设计所用设备8254定时器:用于产生秒脉冲,其输出信号可作为中断请示信号送IRQ2。

8255并口:用做接口芯片,和小键盘相连。

8259中断控制器:用于产生中断。

LED:七个LED用于显示时:分:秒值。

小键盘:用于控制设置。

三、设计思想与原理1、设计思想本系统设计的电子时钟以8088微处理器作为CPU,用8254做定时计数器产生时钟频率,8255做可编程并行接口显示时钟和键盘电路,8259做中断控制器产生中断。

微机原理课设(电子时钟)

微机原理课设(电子时钟)

学院:计算机科学技术专业:计算机科学与技术(工)班级:计08-1班*名:***学号:27指导教师:**2011年7月1日微机原理与汇编语言课程设计任务书一、题目:电子表二、设计的目的1. 掌握利用PC机的的中断及中断服务程序的编写方法;2. 掌握定时器/计数器8253的工作原理及编程方法。

三、设计要求编写程序,利用主机内的8253-2的计数器0产生10m的方波输出,此输出送至IRQ0使8259A每10ms产生1次中断,100次后秒加1,然后调整时、分、秒并在屏幕上显示。

程序从按下任意键开始显示数据区存放的时间值,运行中按下空格键即停止运行,并返回DOS。

要求每人独立完成课程设计。

四、设计内容采用PC系列微机现有的硬件和软件资源编写汇编语言程序,在显示器上显示XX(时):XX(分):XX(秒),每秒钟更新1次。

五、课程设计工作量一般每人的程序量应在100行有效程序行以上。

不得抄袭,否则给不及格成绩。

六、课程设计工作计划2011年6月27日1-2节指导教师讲课,学生准备文献资料;2011年6月28日~2011年7月01日每人完成自己程序并能独立演示;2011年7月01日下午验收,学生撰写课程设计报告。

指导教师签字:专业主任签章:微机原理与汇编语言课程设计指导教师评语与成绩目录第1章概述 ..................................................................................................... 错误!未定义书签。

选题来源 .............................................................................................. 错误!未定义书签。

选题目的 .............................................................................................. 错误!未定义书签。

微机原理课程设计报告(电子时钟)

微机原理课程设计报告(电子时钟)

1.设计目的培养和锻炼在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力。

通过课程设计,要求熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,得到微机开发应用方面的初步训练。

掌握8255、8259、8253等芯片使用方法和编程方法,通过本次课程设计,学以致用,进一步理解所学的相关芯片的原理、内部结构、使用方法等,学会相关芯片实际应用及编程,系统中采用8086微处理器完成了电子秒表系统的独立设计。

同时并了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰。

2.设计内容设计一个可任意启动/停止的电子秒表,要求用6位LED数码显示,计时单位为1/100秒。

利用功能键进行启/停控制。

其功能为:上电后计时器清0,当第一次(或奇数次)按下启/停键时开始计数。

第2次(或偶数次)按下该键时停止计时,再一次按启/停键时清零后重新开始计时。

可用开关控制,也可用按键控制。

(开关控制☆)(按键控制★)3.设计要求一.基本要求1)设计可以显示1~60秒的无存储功能的秒表,最小单位为毫秒。

2)通过键盘按键控制秒表清零、暂停、继续,退出等。

其中数字0控制清零,数字1控制继续和退出二.提高要求:1)秒表可以分组存储、批量显示、倒计时等。

2)采用图像显示,界面精美,设置报警声等4.设计原理与硬件电路一.整体设计思想使用8253工作在方式0计数,对1/100S计数,并讲计数值写入bl中并与100比较若不相等,则将计数值装换为10进制后送8255控制端显示,如相等则1S计数程序加1之后并与59比较若不相等则将计数值装换为10进制后送8255控制端显示,如相等则1min计数程序加1之后并与59比较若不相等则将计数值装换为10进制后送8255控制端显示,如相等则计数程序加1之后产生溢出,跳转清零程序将计数清零,同时数码管清零。

二.使用各芯片的作用及工作原理1、定时器/计数器8253用系统8253定时器提供的55ms定时单位,设计秒表定时程序。

微机原理课程设计电子闹钟

微机原理课程设计电子闹钟

电子闹钟学院:姓名:学号:班级:一.系统的硬件设计和软件设计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 ;控制时间暂停和开始。

(完整word版)微机原理课程设计(电子时钟)(word文档良心出品)

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

电子时钟课程设计一:设计背景电子数字钟的应用十分广泛,通过计时精度很高的石英晶振(也可采用卫星传递的时钟标准信号),采用相应进制的计数器,转化为二进制数,经过译码和显示电路准确地将时间“时”“分”“秒”用数字的方式显示出来。

与传统的机械钟相比,它具有走时准确,显示直观,无机械传动,无需人的经常调整等优点。

它广泛用于电子表、车站、码头、广场等公共场所的大型远距离时间显示电子钟。

二:数字钟电路设计思路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,同理由数码管显示处理,使数码管的显示发生变化。

电子时钟的显示格式HH:MM:SS由左到右分别为时、分、秒,并依次对秒、分、小时寄存器的内容加一,六个数码管动态显示时、分、秒的当前值。

最大记时23:59:59超过这个时间时分秒位都清零从00:00:00重新开始。

8253芯片介绍8253是NMOS工艺制成的可编程计数器/定时器,有几种芯片型号,外形引脚及功能都是兼容的,只是工作的最高计数速率有所差异,例如8253(),8253-5(5MHz) 8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。

每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。

每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。

每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。

8253芯片8255芯片介绍8255特性:①一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口.②具有24个可编程设置的I/O口,即使3组8位的I/O口为PA口,PB口和PC口.它们又可分为两组12位的I/O口,A组包括A口及C口 (高4位,PC4~PC7),B组包括B口及C口(低4位,PC0~PC3).A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I /O3种模式;B组只能设置为基本I/O或闪控式I/O两种模8255芯片式,而这些操作模式完全由控制寄存器的控制字决定. 8255引脚功能:RESET:复位输入线 , CS:芯片选择信号线 , RD:读信号线 , WR:写入信号 , D0~D7:三态双向数据总线 ,PA0~PA7:端口A输入输出线 ,PB0~PB7:端口B输入输出线, PC0~PC7:端口C输入输出线, A0,A1:地址选择线三:程序流程图三、电子表原理图:四:程序代码D8279 equ 200H C8279 equ 202H C8253 equ 20bH D82530 equ 208H D82531 equ 209H C82590 equ 210HC82591 equ 211Hdata segmentHOUR db 00MINUTE db 00SECOND db 008STAT db 00LEDdb 31H,06H,5bH,4fH,66H,6dH,7dH,27H,7fH,6fH,00H,00H DISBUF db 8 dup(0)data endsstack segment stackdw 100 dup()stack endscode segmentassume cs:code,ds:dataSTART: MOV AX,DATAMOV DS,AXCLIMOV AL,13HMOV DX,C82590OUT DX,ALMOV AL,8MOV DX,C82591OUT DX,ALMOV AL,1OUT DX,ALMOV AX,0MOV ES,AXLEA AX,INT0MOV AX,CSMOV ES:[4*8+2],AXMOV DX,C8253MOV AL,36HOUT DX,ALMOV DX,D82530MOV AX,10000OUT DX,ALMOV AL,AHOUT DX,ALMOV DX,C8253MOV AL,36HOUT DX,ALMOV DX,D82531MOV AX,100OUT DX,ALMOV AL,AHOUT DX,ALMOV DX,C8279MOV AL,00HOUT DX,ALMOV AL,34HOUT DX,ALMOV AL,0D2HOUT DX,ALMOV STAT,0MOV DX,C82591MOV AL,0FEHOUT DX,ALWAIT1: MOV DX,C8279 IN AL,DXMOV AH,ALAND AL,80HJNE WAIT1MOV AL,AHAND AL,0FHCMP AL,00HJE WAIT1MOV AL,40HOUT DX,ALCHK: MOV DX,D8279IN AL,DXCMP AL,33HJNE BBBMOV DX,C82591MOV AL,0FFHOUT DX,ALMOV AL,STATINC ALMOV STAT,ALCMP AL,1JNZ AA1MOV SI,OFFSET DISPBUFMOV CX,4MOV AL,00BB0: MOV [SI],ALINC SILOOP BB0CALL DISPJMP CHKAA1: CMP AL,2JNZ AA2MOV SI,OFFSET DISPBUFMOV AL,00MOV [SI],ALINC SIMOV [SI],ALADD SI,2MOV [SI],ALINC SIMOV [SI],ALCALL DISPJMP CHKAA2: CMP AL,3JNZ AA3MOV SI,OFFSET DISPBUF+2MOV CX,4MOV AL,00BB1: MOV [SI],ALINC SILOOP BB1CALL DISPJMP CHKAA3: MOV STAT,00MOV AL,0FEHMOV DX,C82591OUT DX,ALCALL FULLSFMCALL DISPJMP CHK BBB: CMP AL,3BHJE BBB0JMP CCCBB0: MOV AL,STATCMP AL,1JNZ BBB1MOV AL,HOURADD AL,1DAAMOV HOUR,ALCALL FULLSH1CALL DISPJMP BBBBBB1: MOV AL,STATCMP AL,2JNZ BBB3MOV AL,MINUTEADD AL,1DAAMOV MINUTE,ALCALL FULLFENCALL DISPJMP BBBBBB3: MOV AL,STAT CMP AL,3JZ BBB4JMP DDDBBB4: MOV AL,SECOND ADD AL,1DAAMOV SECOND,AL CALL FULLMIAO CALL DISPJMP BBBCCC: CMP AL,3AHJE CC0JMP DDDCC0: MOV AL,STATCMP AL,1JNZ CCC1MOV AL,HOURSUB AL,1DASMOV AL,HOURSUB AL,1ADD AL,1DAAMOV SECOND,AL CMP AL,60HJNZ FANHUIMOV SECOND,0 MOV AL,MINUTE ADD AL,1DAAMOV MINUTE,AL CMP AL,60HJNZ FANHUIMOV MINUTE,0 MOV AL,HOUR ADD AL,1DAAMOV HOUR,ALCMP AL,24H JNZ FANHUI MOV HOUR,0 CALL FULLSFM CALL DISPPOP SIPOP DIPOP BXPOP AXIRETFULL SFM PROC NEAR LEA DI,DISBUF LEA BX,LEDLEA SI,SECOND MOV CX,3AA4:MOV AL,[SI] AND AL,0FHXLATMOV [DI],AL INC DIMOV AL,[SI] PUSH CXMOV CL,4SHR AL,CLAND AL,0FH XLATMOV [DI],ALINC DIPOP CXINC SILOOP AA4RETFULL SFM ENDPFULL SHI PROC NEAR LEA SI,DISBUF MOV AL,0MOV CX,4CCC0: MOV [SI],ALINC SILOOP CCC0LEA BX,LEDMOV AL,HOURAND AL,0FHXLATMOV [SI],ALXLATMOV [SI],ALMOV AL,HOURMOV CL,4SHR AL,CLAND AL,0FHXLATINC SIMOV [SI],AL RETFULL SHI ENDPFULL FEN PROC NEAR LEA SI,DISBUF MOV AL,0MOV [SI],ALINC SIMOV [SI],ALINC SILEA BX,LEDMOV AL,MINUTE AND AL,0FHXLATMOV [SI],AL MOV AL,MINUTE MOV CL,4SHR AL,CLAND AL,0FHXLATINC SIMOV [SI],AL RETFULL FEN ENDPFULL MIAO PROC NEAR LEA SI,DISBUF LEA BX,LEDMOV AL,SECOND AND AL,0FHXLATMOV [SI],AL MOV AL,SECOND MOV CL,4SHR AL,CLAND AL,0FHXLATINC SIMOV [SI],ALMOV AL,0INC SIMOV [SI],ALINC SIMOV [SI],ALINC SIMOV [SI],ALINC SIMOV [SI],ALRETFULL MIAO ENDPDISP PROC NEARMOV CX,8MOV DX,D8279 LEA SI,DISBUF DISIMOV AL,[SI]OUT DX,ALINC SILOOP DISI RET CODE ENDSEND START。

相关文档
最新文档